[
  {
    "path": ".codecov.yml",
    "content": "codecov:\n  # Removed hardcoded token for security reasons.\n  # The token should be set via CI/CD secrets instead.\n  # Example for GitHub Actions:\n  #   - name: Upload coverage to Codecov\n  #     run: codecov -t ${{ secrets.CODECOV_TOKEN }}\n  #\n  # See: https://docs.codecov.com/docs/adding-the-codecov-token\ncoverage:\n  status:\n    project:\n      default:\n        target: 0\n        threshold: null\n        base: auto\n    patch:\n      default:\n        target: 0\n        threshold: null\n        base: auto\n"
  },
  {
    "path": ".gitattributes",
    "content": "* text eol=lf\n*.png -text\nsamples/order/testdata/* -text\n/internal/website/data/examples.json  linguist-generated=true\n**/testdata/**/*.yaml    linguist-generated=true\n**/testdata/**/*.replay  linguist-generated=true\n*.replay binary\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\n\n---\n\nPlease use a title starting with the name of the affected package, or \\\"all\\\",\nfollowed by a colon, followed by a short summary of the issue. Example:\n`blob/gcsblob: not blobby enough`.\n\nYou can use `go bug` to have a cool, automatically filled out bug template, or\nfill out the template below.\n\n### Describe the bug\n\nA clear and concise description of what the bug is.\n\n### To Reproduce\n\nSteps to reproduce the behavior.\n\n## Expected behavior\n\nA clear and concise description of what you expected to happen.\n\n### Version\n\nWhich version(s) of the Go Cloud modules are you seeing the bug with?\n\n### Additional context\n\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\n\n---\n\nPlease use a title starting with the name of the affected package, or \\\"all\\\",\nfollowed by a colon, followed by a short summary of the feature request.\nExample: `blob/gcsblob: add support for more blobbing`.\n\n### Is your feature request related to a problem? Please describe.\n\nA clear and concise description of what the problem is. Ex. I'm always\nfrustrated when [...]\n\n### Describe the solution you'd like\n\nA clear and concise description of what you want to happen.\n\n### Describe alternatives you've considered\n\nA clear and concise description of any alternative solutions or features you've\nconsidered.\n\n### Additional context\n\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "Please use a title starting with the name of the affected package, or \\\"all\\\",\nfollowed by a colon, followed by a short summary of the issue. Example:\n`blob/gcsblob: fix typo in documentation`.\n\nPlease reference any Issue related to this Pull Request. Example: `Fixes #1`.\n\nSee\n[here](https://blog.github.com/2015-01-21-how-to-write-the-perfect-pull-request/)\nfor tips on good Pull Request description.\n"
  },
  {
    "path": ".github/workflows/tests.yml",
    "content": "# Copyright 2021 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nname: tests\non: [push, pull_request]\njobs:\n  build:\n    strategy:\n      fail-fast: false\n      matrix:\n        # Note: we used to include windows-latest, but it's super\n        # flaky on Github runners, lots of OOMs.\n        os: [ubuntu-latest, macos-latest]\n        # When updating this, make sure to also update the\n        # latest_go_version variable in internal/testing/runchecks.sh.\n        go-version: [1.26.x]\n        include:\n          - go-version: 1.25.x\n            os: ubuntu-latest\n\n    runs-on: ${{ matrix.os }}\n    steps:\n      - name: Install Go\n        uses: actions/setup-go@v6\n        with:\n          go-version: ${{ matrix.go-version }}\n      - name: Checkout code\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 2  # required for codecov\n      - name: Run Tests\n        shell: bash\n        run: 'internal/testing/runchecks.sh'\n      - if: matrix.os == 'ubuntu-latest'\n        name: Build for dragonfly\n        run: |\n          go install ./...\n        env:\n          GOARCH: amd64\n          GOOS: dragonfly\n"
  },
  {
    "path": ".gitignore",
    "content": "# Binaries for programs and plugins\n*.exe\n*.dll\n*.so\n*.dylib\n/internal/contributebot/contributebot\n/internal/cmd/gocdk/gocdk\n/internal/website/gatherexamples/gatherexamples\n/internal/website/public/\n/internal/testing/test-summary/test-summary\n/samples/gocdk-blob/gocdk-blob\n/samples/gocdk-docstore/gocdk-docstore\n/samples/gocdk-pubsub/gocdk-pubsub\n/samples/gocdk-runtimevar/gocdk-runtimevar\n/samples/gocdk-secrets/gocdk-secrets\n/samples/guestbook/guestbook\n/samples/guestbook/gcp/guestbook\n/samples/tutorial/tutorial\n/samples/tutorial/upload\n\n# Test binary, build with `go test -c`\n*.test\n\n# Output of the go coverage tool, specifically when used with LiteIDE\n*.out\n\n# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736\n.glide/\n\n# Go vendor directory\nvendor/\n\n# Populated config files\n/internal/contributebot/dev/\n/internal/contributebot/webhook/app.yaml\n/tests/gcp/app/gcp-test.yaml\n\n# Cryptographic keys\n*.pem\n\n# Terraform Temporary Files\n*.tfstate\n*.tfstate.*\n.terraform/\nterraform.tfvars\n\n# OSX leaves these everywhere on SMB shares\n._*\n\n# OSX stuff\n.DS_Store\n\n# Eclipse files\n.classpath\n.project\n.settings/**\n\n# Files generated by JetBrains IDEs, e.g. Goland\n.idea/\n*.iml\n\n# VSCode files\n.vscode\n\n# Emacs save files\n*~\n\\#*\\#\n.\\#*\n\n# Vim-related files\n[._]*.s[a-w][a-z]\n[._]s[a-w][a-z]\n*.un~\nSession.vim\n.netrwhist\n\n# Mercurial files\n**/.hg\n**/.hg*\n\n# runtimevar/etcdvar tests create this directory.\nruntimevar/etcdvar/default.etcd\n"
  },
  {
    "path": "AUTHORS",
    "content": "# This is the official list of Go Cloud Development Kit authors for copyright\n# purposes.\n# This file is distinct from the CONTRIBUTORS files.\n# See the latter for an explanation.\n\n# Names should be added to this file as one of\n#     Organization's name\n#     Individual's name <submission email address>\n#     Individual's name <submission email address> <email2> <emailN>\n# See CONTRIBUTORS for the meaning of multiple email addresses.\n\n# Please keep the list sorted.\n\nAndrey Chernov <chernov.andrey1988@gmail.com>\nBen Hinchley <benjaminhinchley@gmail.com>\nBoris Popovschi <zyqsempai@mail.ru>\nGerasimos (Makis) Maropoulos <kataras2006@hotmail.com> <omicronmakis@gmail.com>\nGoogle LLC\nOleg Kovalov <iamolegkovalov@gmail.com>\noliverpool <oliverpool@hotmail.fr>\nSendil Kumar N <sendilkumarn@live.com> <sendil.kn@gmail.com>\nSteve Jiang <steve.jiang@gmail.com>\nVishal Saroopchand <Vishal.Saroopchand@microsoft.com> <vsaroopchand@hotmail.com>\nZachary Romero <zacromero3@gmail.com>\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Code of Conduct\n\nThis project is covered under the [Go Code of Conduct][]. In summary:\n\n-   Treat everyone with respect and kindness.\n-   Be thoughtful in how you communicate.\n-   Don’t be destructive or inflammatory.\n-   If you encounter an issue, please mail conduct@golang.org.\n\n[Go Code of Conduct]: https://golang.org/conduct\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# How to Contribute\n\nWe would love to accept your patches and contributions to this project. Here is\nhow you can help.\n\n## Filing issues\n\nFiling issues is an important way you can contribute to the Go Cloud Development\nKit. We want your feedback on things like bugs, desired API changes, or just\nanything that isn't working for you.\n\n### Bugs\n\nIf your issue is a bug, open one\n[here](https://github.com/google/go-cloud/issues/new). The easiest way to file\nan issue with all the right information is to run `go bug`. `go bug` will print\nout a handy template of questions and system information that will help us get\nto the root of the issue quicker. Please start the title of your bug with the\nname of the affected package, followed by a colon, followed by a short summary\nof the issue, like \"blob/gcsblob: not blobby enough\".\n\n### Changes\n\nUnlike the core Go project, we do not have a formal proposal process for\nchanges. If you have a change you would like to see in the Go CDK, please file\nan issue with the necessary details.\n\n### Triaging\n\nThe Go CDK team triages issues at least every two weeks, but usually within two\nbusiness days. Issues that we would like to address, but do not have time for\nare placed into the [Unplanned][] milestone.\n\n[Unplanned]: https://github.com/google/go-cloud/milestone/2\n\n## Contributing Code\n\nWe love accepting contributions! If your change is minor, please feel free\nto submit a [pull request](https://help.github.com/articles/about-pull-requests/).\nIf your change is larger, or adds a feature, please file an issue beforehand so\nthat we can discuss the change. You're welcome to file an implementation pull\nrequest immediately as well, although we generally lean towards discussing the\nchange and then reviewing the implementation separately.\n\nBe sure to take a look at the [internal docs][], which include more information\nabout conventions and design patterns found in the project.\n\n[internal docs]: internal/docs/README.md\n\n### Finding something to work on\n\nIf you want to write some code, but don't know where to start or what you might\nwant to do, take a look at the [Good First Issue] label and our [Unplanned][]\nmilestone. The latter is where you can find issues we would like to address, but\ncan't currently find time for. See if any of the latest ones look interesting!\nIf you need help before you can start work, you can comment on the issue, and we\nwill try to help as best we can.\n\n[Good First Issue]: https://github.com/google/go-cloud/labels/good%20first%20issue\n\n### Contributor License Agreement\n\nContributions to this project can only be made by those who have signed Google's\nContributor License Agreement. You (or your employer) retain the copyright to\nyour contribution, so this simply gives us permission to use and redistribute your\ncontributions as part of the project. Head over to\n<https://cla.developers.google.com/> to see your current agreements on file or\nto sign a new one.\n\nAs a personal contributor, you only need to sign the Google CLA once across all\nGoogle projects. If you've already signed the CLA, there is no need to do it\nagain. If you are submitting code on behalf of your employer, there's\n[a separate corporate CLA that your employer manages for you](https://opensource.google.com/docs/cla/#external-contributors).\n\n### A Warning About Tests\n\nTests that interact with cloud providers are written using a replay method,\nwhere the test is run and actually performs the operations, and the\nrequests/results of the operations are stored in a replay file. This replay file\nis then read back in unit tests on Travis, so the tests get to operate with real\ndata. Unfortunately, while the Go CDK team can generate these replay files\nagainst our test cloud infrastructure, it is not yet possible for external\ncontributors to do the same. We want to improve this process in the future and\nare researching how we can do this. If you have any ideas, please \n[file an issue](https://github.com/google/go-cloud/issues/new)!\n\n#### Writing and running tests against a cloud environment\n\nIf you can create cloud resources, setup your authentication using either `aws`\nor `gcloud` and set the default project as the test project. Most tests will\nhave constants defining the resource names they use (for example, for `blob`\ntests, the bucket name); update the constant and then run `go test -record`. New\nreplay files will be generated. This uses API quota and will create and delete\ncloud resources. Replay files scrub sensitive information.\n[Send your PR](#making-a-pull-request) without the replay files, and we can\ngenerate new ones to be used by others.\n\n### Dependencies\n\nThe Go CDK has a policy to depend only on code licensed under one of the\n[`notice`][notice licenses], [`permissive`][permissive licenses], or\n[`unencumbered`][unencumbered licenses] categories in the\n[Google Open Source Licenses][] documentation. This is enforced with a\nTravis build check that verifies that every dependency is in the\n[`alldeps` file][]. Do not add new direct or indirect dependencies to the Go CDK\nunless you have verified that the dependency is released under an acceptable\nlicense.\n\n[`alldeps` file]: https://github.com/google/go-cloud/blob/master/internal/testing/alldeps\n[notice licenses]: https://opensource.google.com/docs/thirdparty/licenses/#notice\n[permissive licenses]: https://opensource.google.com/docs/thirdparty/licenses/#permissive\n[unencumbered licenses]: https://opensource.google.com/docs/thirdparty/licenses/#unencumbered\n[Google Open Source Licenses]: https://opensource.google.com/docs/thirdparty/licenses/\n\n## Making a pull request\n\n*   Follow the normal\n    [pull request flow](https://help.github.com/articles/creating-a-pull-request/).\n*   Build your changes using Go 1.11 with Go modules enabled. The Go CDK's\n    continuous integration uses Go modules in order to ensure\n    [reproducible builds](https://research.swtch.com/vgo-repro).\n*   Test your changes using `go test ./...`. Please add tests that show the\n    change does what it says it does, even if there wasn't a test in the first\n    place. Don't add the replay files to your commits.\n*   Feel free to make as many commits as you want; we will squash them all into\n    a single commit before merging your change.\n*   Check the diffs, write a useful description (including something like\n    `Fixes #123` if it's fixing a bug) and send the PR out. Please start the\n    title of your pull request with the name of the affected package, followed\n    by a colon, followed by a short summary of the change, like \"blob/gcsblob:\n    add more tests\".\n*   [Travis CI](http://travis-ci.com) will run tests against the PR. This should\n    happen within 10 minutes or so. If a test fails, go back to the coding stage\n    and try to fix the test and push the same branch again. You won't need to\n    make a new pull request, the changes will be rolled directly into the PR you\n    already opened. Wait for Travis again. There is no need to assign a reviewer\n    to the PR, the project team will assign someone for review during the\n    standard [triage](#triaging) process.\n\n## Code review\n\nAll submissions, including submissions by project members, require review. It is\nalmost never the case that a pull request is accepted without some changes\nrequested, so please do not be offended!\n\nWhen you have finished making requested changes to your pull request, please\nmake a comment containing \"PTAL\" (Please Take Another Look) on your pull\nrequest. GitHub notifications can be noisy, and it is unfortunately easy for\nthings to be lost in the shuffle.\n\nOnce your PR is approved (hooray!), the reviewer will squash your commits into a\nsingle commit and then merge the commit onto the Go CDK master branch. Thank\nyou!\n\n## Github code review workflow conventions\n\n(For project members and frequent contributors.)\n\nAs a contributor:\n\n-   Try hard to make each Pull Request as small and focused as possible. In\n    particular, this means that if a reviewer asks you to do something that is\n    beyond the scope of the Pull Request, the best practice is to file another\n    issue and reference it from the Pull Request rather than just adding more\n    commits to the existing PR.\n-   Adding someone as a Reviewer means \"please feel free to look and comment\";\n    the review is optional. Choose as many Reviewers as you'd like.\n-   Adding someone as an Assignee means that the Pull Request should not be\n    submitted until they approve. If you choose multiple Assignees, wait until\n    all of them approve. It is fine to ask someone if they are OK with being\n    removed as an Assignee.\n    -   Note that if you don't select any assignees, ContributeBot will turn all\n        of your Reviewers into Assignees.\n-   Make as many commits as you want locally, but try not to push them to Github\n    until you've addressed comments; this allows the email notification about\n    the push to be a signal to reviewers that the PR is ready to be looked at\n    again.\n-   When there may be confusion about what should happen next for a PR, be\n    explicit; add a \"PTAL\" comment if it is ready for review again, or a \"Please\n    hold off on reviewing for now\" if you are still working on addressing\n    comments.\n-   \"Resolve\" comments that you are sure you've addressed; let your reviewers\n    resolve ones that you're not sure about.\n-   Do not use `git push --force`; this can cause comments from your reviewers\n    that are associated with a specific commit to be lost. This implies that\n    once you've sent a Pull Request, you should use `git merge` instead of `git\n    rebase` to incorporate commits from the master branch.\n-   Travis checks will fail if you haven't run `gofmt -w -s`.\n-   Travis checks will fail if your PR has backwards-incompatible changes,\n    unless one of your commits has the strings `BREAKING_CHANGE_OK` in the first\n    line of the commit message.\n\nAs a reviewer:\n\n-   Be timely in your review process, especially if you are an Assignee.\n-   Try to use `Start a Review` instead of single comments, to reduce email\n    spam.\n-   \"Resolve\" your own comments if they have been addressed.\n-   If you want your review to be blocking, and are not currently an Assignee,\n    add yourself as an Assignee.\n\nWhen squashing-and-merging:\n\n-   Ensure that **all** of the Assignees have approved.\n-   Do a final review of the one-line PR summary, ensuring that it meets the\n    guidelines (e.g., \"blob: add more blobbing\") and accurately describes the\n    change.\n-   Mark breaking changes with `BREAKING_CHANGE` in the commit message (e.g.,\n    \"blob: BREAKING_CHANGE remove old blob\").\n    -   If the PR includes a breaking change, it will be declared via a commit\n        with `BREAKING_CHANGE_OK` in it (see Contributor section above).\n    -   You can omit the marker if the change is technically breaking, but not\n        expected to affect users (e.g., it's a breaking change to an object that\n        wasn't in the last tagged release, or it's a change to a portable API\n        function that's only expected to be used by driver implementations).\n-   Delete the automatically added commit lines; these are generally not\n    interesting and make commit history harder to read.\n"
  },
  {
    "path": "CONTRIBUTORS",
    "content": "# This is the official list of people who can contribute\n# (and typically have contributed) code to the Go CDK repository.\n# The AUTHORS file lists the copyright holders; this file\n# lists people.  For example, Google employees are listed here\n# but not in AUTHORS, because Google holds the copyright.\n#\n# Names should be added to this file only after verifying that\n# the individual or the individual's organization has agreed to\n# the appropriate Contributor License Agreement, found here:\n#\n#     http://code.google.com/legal/individual-cla-v1.0.html\n#     http://code.google.com/legal/corporate-cla-v1.0.html\n#\n# The agreement for individuals can be filled out on the web.\n#\n# When adding J Random Contributor's name to this file,\n# either J's name or J's organization's name should be\n# added to the AUTHORS file, depending on whether the\n# individual or corporate CLA was used.\n\n# Names should be added to this file like so:\n#     Individual's name <submission email address>\n#     Individual's name <submission email address> <email2> <emailN>\n#\n# An entry with multiple email addresses specifies that the\n# first address should be used in the submit logs and\n# that the other addresses should be recognized as the\n# same person when interacting with Git.\n\n# Please keep the list sorted.\n\nAndrey Chernov <chernov.andrey1988@gmail.com>\nBen Hinchley <benjaminhinchley@gmail.com>\nBoris Popovschi <zyqsempai@mail.ru>\nChris Lewis <cflewis@google.com> <cflewis@golang.org> <c@chris.to>\nEno Compton <enocom@google.com>\nGerasimos (Makis) Maropoulos <kataras2006@hotmail.com> <omicronmakis@gmail.com>\nIssac Trotts <issactrotts@google.com> <issac.trotts@gmail.com>\nOleg Kovalov <iamolegkovalov@gmail.com>\noliverpool <oliverpool@hotmail.fr>\nRobert van Gent <rvangent@google.com> <vangent@gmail.com>\nRoss Light <light@google.com> <ross@zombiezen.com>\nSendil Kumar N <sendilkumarn@live.com> <sendil.kn@gmail.com>\nSteve Jiang <steve.jiang@gmail.com>\nTuo Shan <shantuo@google.com> <sturbo89@gmail.com>\nTyler Bui-Palsulich <26876514+tbpg@users.noreply.github.com>\nVishal Saroopchand <Vishal.Saroopchand@microsoft.com> <vsaroopchand@hotmail.com>\nVivek Sekhar <vsekhar@google.com>\nZachary Romero <zacromero3@gmail.com>\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "# The Go Cloud Development Kit (Go CDK)\n\n_Write once, run on any cloud ☁️_\n\n[![Build Status](https://github.com/google/go-cloud/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/google/go-cloud/actions)\n[![Go Report Card](https://goreportcard.com/badge/github.com/google/go-cloud)](https://goreportcard.com/report/github.com/google/go-cloud)\n[![PkgGoDev](https://pkg.go.dev/badge/mod/gocloud.dev)][PkgGoDev]\n[![Coverage](https://codecov.io/gh/google/go-cloud/branch/master/graph/badge.svg)](https://codecov.io/gh/google/go-cloud)\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/google/go-cloud)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n<p align=\"center\">\n  <img width=\"509\" height=\"276\" src=\"internal/website/static/go-cdk-logo-gopherblue.png\" alt=\"\">\n</p>\n\nThe Go Cloud Development Kit (Go CDK) allows Go application developers to\nseamlessly deploy cloud applications on any combination of cloud providers. It\ndoes this by providing stable, idiomatic interfaces for common uses like storage\nand databases. Think `database/sql` for cloud products.\n\nImagine writing this to read from blob storage (like Google Cloud Storage or\nS3):\n\n```go\nctx := context.Background()\nbucket, err := blob.OpenBucket(ctx, \"s3://my-bucket\")\nif err != nil {\n    return err\n}\ndefer bucket.Close()\nblobReader, err := bucket.NewReader(ctx, \"my-blob\", nil)\nif err != nil {\n    return err\n}\n```\n\nand being able to run that code on any cloud you want, avoiding all the ceremony\nof cloud-specific authorization, tracing, SDKs and all the other code required\nto make an application portable across cloud platforms.\n\nThe project works well with a code generator called\n[Wire](https://github.com/google/wire/blob/master/README.md). It creates\nhuman-readable code that only imports the cloud SDKs for services you use. This\nallows the Go CDK to grow to support any number of cloud services, without\nincreasing compile times or binary sizes, and avoiding any side effects from\n`init()` functions.\n\nYou can learn more about the project from our [announcement blog post][], or our\ntalk at Next 2018:\n\n[![Video: Building Go Applications for the Open Cloud (Cloud Next '18)](https://img.youtube.com/vi/_2ZwhvIkgek/0.jpg)][video]\n\n[announcement blog post]: https://blog.golang.org/go-cloud\n[PkgGoDev]: https://pkg.go.dev/mod/gocloud.dev\n[travis]: https://travis-ci.com/google/go-cloud\n[video]: https://www.youtube.com/watch?v=_2ZwhvIkgek\n\n## Installation\n\n```shell\n# First \"cd\" into your project directory if you have one to ensure \"go get\" uses\n# Go modules (or not) appropriately. See \"go help modules\" for more info.\ngo get gocloud.dev\n```\n\nThe Go CDK builds at the latest stable release of Go. Previous Go versions may\ncompile but are not supported.\n\n## Documentation\n\nDocumentation for the project lives primarily on https://gocloud.dev/, including\n[tutorials][].\n\nYou can also browse Go package reference on [pkg.go.dev][PkgGoDev].\n\n[tutorials]: https://gocloud.dev/tutorials/\n\n## Project status\n\nThe APIs are still in alpha, but we think they are production-ready and are\nactively looking for feedback from early adopters. If you have comments or\nquestions please open an issue.\n\nAt this time we prefer to focus on maintaining the existing APIs and drivers,\nand are unlikely to accept new ones into the `go-cloud` repository. The modular\nnature of the Go CDK makes it simple to host new APIs and drivers for existing\nAPIs externally, in separate repositories.\n\nIf you have a new API or driver that you believe are important and mature enough\nto be included, feel free to open an issue to discuss this; our default will\nlikely be to suggest starting in a separate repository. We'll also be happy\nto maintain a list of such external APIs and drivers in this README.\n\n## Current features\n\nThe Go CDK provides generic APIs for:\n\n*   Unstructured binary (blob) storage\n*   Publish/Subscribe (pubsub)\n*   Variables that change at runtime (runtimevar)\n*   Connecting to MySQL (including MariaDB) and PostgreSQL databases (mysql, postgres)\n*   Server startup and diagnostics: request logging, tracing, and health\n    checking (server)\n\n## Contributing\n\nThank you for your interest in contributing to the Go Cloud Development\nKit! :heart:\n\nEveryone is welcome to contribute, whether it's in the form of code,\ndocumentation, bug reports, feature requests, or anything else. We encourage you\nto experiment with the Go CDK and make contributions to help evolve it to meet\nyour needs!\n\nThe GitHub repository at [google/go-cloud][go-cloud] contains some driver\nimplementations for each portable API. We intend to include\n[Google Cloud Platform][gcp], [Amazon Web Services][aws], and [Azure][azure]\nimplementations, as well as prominent open source services and at least one\nimplementation suitable for use in local testing. Unfortunately, we cannot\nsupport every service directly from the project; however, we encourage\ncontributions in separate repositories.\n\nIf you create a repository that implements the Go CDK interfaces for other\nservices, let us know! We would be happy to link to it here and give you a\nheads-up before making any breaking changes.\n\nSee [the contributing guide](./CONTRIBUTING.md) for more details.\n\n[go-cloud]: https://github.com/google/go-cloud\n[gcp]: http://cloud.google.com\n[aws]: http://aws.amazon.com\n[azure]: https://azure.microsoft.com/\n\n## Community\n\nThis project is covered by the Go [Code of Conduct][].\n\n[Code of Conduct]: ./CODE_OF_CONDUCT.md\n\n## Legal disclaimer\n\nThe Go CDK is open-source and released under an [Apache 2.0\nLicense](https://github.com/google/go-cloud/blob/master/LICENSE). Copyright ©\n2018–2019 The Go Cloud Development Kit Authors.\n\nIf you are looking for the website of GoCloud Systems, which is unrelated to the\nGo CDK, visit https://gocloud.systems.\n"
  },
  {
    "path": "allmodules",
    "content": "# This file lists all the modules in our repository; it's used by scripts that\n# have to perform operations for each module.\n#\n# Any line that doesn't begin with a '#' character and isn't empty is treated\n# as a path relative to the top of the repository that has a module in it.\n# The 'released' field specifies whether this is a module we release and tag (a\n# module importable by users).\n#\n# Note: another file that lists all the modules in our repo is\n# the VSCode workspace gocloud.code-workspace - for now it has to be updated\n# manually whenever this file changes.\n\n# module-directory           released\n.                            yes\ndocstore/mongodocstore       yes\ninternal/website             no\npubsub/kafkapubsub           yes\npubsub/natspubsub            yes\npubsub/rabbitpubsub          yes\nruntimevar/etcdvar           yes\nruntimevar/hashivault        yes\nsamples                      no\nsecrets/hashivault           yes\n"
  },
  {
    "path": "aws/aws.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package aws provides fundamental Wire providers for Amazon Web Services (AWS).\npackage aws // import \"gocloud.dev/aws\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/aws/ratelimit\"\n\t\"github.com/aws/aws-sdk-go-v2/aws/retry\"\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n)\n\nconst (\n\trequestChecksumCalculationParamKey = \"request_checksum_calculation\"\n\tresponseChecksumValidationParamKey = \"response_checksum_validation\"\n)\n\n// parseRequestChecksumCalculation parses request checksum calculation mode values.\n// Supports AWS SDK documented values: \"when_supported\", \"when_required\".\nfunc parseRequestChecksumCalculation(value string) (aws.RequestChecksumCalculation, error) {\n\tswitch strings.ToLower(value) {\n\tcase \"when_supported\":\n\t\treturn aws.RequestChecksumCalculationWhenSupported, nil\n\tcase \"when_required\":\n\t\treturn aws.RequestChecksumCalculationWhenRequired, nil\n\tdefault:\n\t\treturn aws.RequestChecksumCalculationWhenSupported, fmt.Errorf(\"invalid value for %q: %q. Valid values are: when_supported, when_required\", requestChecksumCalculationParamKey, value)\n\t}\n}\n\n// parseResponseChecksumValidation parses response checksum validation mode values.\n// Supports AWS SDK documented values: \"when_supported\", \"when_required\".\nfunc parseResponseChecksumValidation(value string) (aws.ResponseChecksumValidation, error) {\n\tswitch strings.ToLower(value) {\n\tcase \"when_supported\":\n\t\treturn aws.ResponseChecksumValidationWhenSupported, nil\n\tcase \"when_required\":\n\t\treturn aws.ResponseChecksumValidationWhenRequired, nil\n\tdefault:\n\t\treturn aws.ResponseChecksumValidationWhenSupported, fmt.Errorf(\"invalid value for %q: %q. Valid values are: when_supported, when_required\", responseChecksumValidationParamKey, value)\n\t}\n}\n\n// NewDefaultV2Config returns a aws.Config for AWS SDK v2, using the default options.\nfunc NewDefaultV2Config(ctx context.Context) (aws.Config, error) {\n\treturn config.LoadDefaultConfig(ctx)\n}\n\n// V2ConfigFromURLParams returns an aws.Config for AWS SDK v2 initialized based on the URL\n// parameters in q. It is intended to be used by URLOpeners for AWS services if\n// UseV2 returns true.\n//\n// https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Config\n//\n// It returns an error if q contains any unknown query parameters; callers\n// should remove any query parameters they know about from q before calling\n// V2ConfigFromURLParams.\n//\n// The following query options are supported:\n//   - region: The AWS region for requests; sets WithRegion.\n//   - anonymous: A value of \"true\" forces use of anonymous credentials.\n//   - profile: The shared config profile to use; sets SharedConfigProfile.\n//   - endpoint: The AWS service endpoint to send HTTP request.\n//   - hostname_immutable: Make the hostname immutable, only works if endpoint is also set.\n//   - dualstack: A value of \"true\" enables dual stack (IPv4 and IPv6) endpoints.\n//   - fips: A value of \"true\" enables the use of FIPS endpoints.\n//   - rate_limiter_capacity: A integer value configures the capacity of a token bucket used\n//     in client-side rate limits. If no value is set, the client-side rate limiting is disabled.\n//     See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/retries-timeouts/#client-side-rate-limiting.\n//   - request_checksum_calculation: Request checksum calculation mode (when_supported, when_required)\n//   - response_checksum_validation: Response checksum validation mode (when_supported, when_required)\nfunc V2ConfigFromURLParams(ctx context.Context, q url.Values) (aws.Config, error) {\n\tvar endpoint string\n\tvar hostnameImmutable bool\n\tvar rateLimitCapacity int64\n\tvar opts []func(*config.LoadOptions) error\n\tfor param, values := range q {\n\t\tvalue := values[0]\n\t\tswitch param {\n\t\tcase \"hostname_immutable\":\n\t\t\tvar err error\n\t\t\thostnameImmutable, err = strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, fmt.Errorf(\"invalid value for hostname_immutable: %w\", err)\n\t\t\t}\n\t\tcase \"region\":\n\t\t\topts = append(opts, config.WithRegion(value))\n\t\tcase \"endpoint\":\n\t\t\tendpoint = value\n\t\tcase \"profile\":\n\t\t\topts = append(opts, config.WithSharedConfigProfile(value))\n\t\tcase \"dualstack\":\n\t\t\tdualStack, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, fmt.Errorf(\"invalid value for dualstack: %w\", err)\n\t\t\t}\n\t\t\tif dualStack {\n\t\t\t\topts = append(opts, config.WithUseDualStackEndpoint(aws.DualStackEndpointStateEnabled))\n\t\t\t}\n\t\tcase \"fips\":\n\t\t\tfips, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, fmt.Errorf(\"invalid value for fips: %w\", err)\n\t\t\t}\n\t\t\tif fips {\n\t\t\t\topts = append(opts, config.WithUseFIPSEndpoint(aws.FIPSEndpointStateEnabled))\n\t\t\t}\n\t\tcase \"rate_limiter_capacity\":\n\t\t\tvar err error\n\t\t\trateLimitCapacity, err = strconv.ParseInt(value, 10, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, fmt.Errorf(\"invalid value for capacity: %w\", err)\n\t\t\t}\n\t\tcase \"anonymous\":\n\t\t\tanon, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, fmt.Errorf(\"invalid value for anonymous: %w\", err)\n\t\t\t}\n\t\t\tif anon {\n\t\t\t\topts = append(opts, config.WithCredentialsProvider(aws.AnonymousCredentials{}))\n\t\t\t}\n\t\tcase requestChecksumCalculationParamKey:\n\t\t\tvalue, err := parseRequestChecksumCalculation(value)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, err\n\t\t\t}\n\n\t\t\topts = append(opts, config.WithRequestChecksumCalculation(value))\n\t\tcase responseChecksumValidationParamKey:\n\t\t\tvalue, err := parseResponseChecksumValidation(value)\n\t\t\tif err != nil {\n\t\t\t\treturn aws.Config{}, err\n\t\t\t}\n\n\t\t\topts = append(opts, config.WithResponseChecksumValidation(value))\n\t\tcase \"awssdk\":\n\t\t\t// ignore, should be handled before this\n\t\tdefault:\n\t\t\treturn aws.Config{}, fmt.Errorf(\"unknown query parameter %q\", param)\n\t\t}\n\t}\n\tif endpoint != \"\" {\n\t\tcustomResolver := aws.EndpointResolverWithOptionsFunc(\n\t\t\tfunc(service, region string, options ...any) (aws.Endpoint, error) {\n\t\t\t\treturn aws.Endpoint{\n\t\t\t\t\tPartitionID:       \"aws\",\n\t\t\t\t\tURL:               endpoint,\n\t\t\t\t\tSigningRegion:     region,\n\t\t\t\t\tHostnameImmutable: hostnameImmutable,\n\t\t\t\t}, nil\n\t\t\t})\n\t\topts = append(opts, config.WithEndpointResolverWithOptions(customResolver))\n\t}\n\n\tvar rateLimiter retry.RateLimiter\n\trateLimiter = ratelimit.None\n\tif rateLimitCapacity > 0 {\n\t\trateLimiter = ratelimit.NewTokenRateLimit(uint(rateLimitCapacity))\n\t}\n\topts = append(opts, config.WithRetryer(func() aws.Retryer {\n\t\treturn retry.NewStandard(func(so *retry.StandardOptions) {\n\t\t\tso.RateLimiter = rateLimiter\n\t\t})\n\t}))\n\n\treturn config.LoadDefaultConfig(ctx, opts...)\n}\n"
  },
  {
    "path": "aws/aws_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage aws_test\n\nimport (\n\t\"context\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/aws/retry\"\n\tgcaws \"gocloud.dev/aws\"\n)\n\nfunc TestV2ConfigFromURLParams(t *testing.T) {\n\tconst service = \"s3\"\n\tconst region = \"us-east-1\"\n\tconst partitionID = \"aws\"\n\tctx := context.Background()\n\ttests := []struct {\n\t\tname         string\n\t\tquery        url.Values\n\t\twantRegion   string\n\t\twantErr      bool\n\t\twantEndpoint *aws.Endpoint\n\t}{\n\t\t{\n\t\t\tname:  \"No overrides\",\n\t\t\tquery: url.Values{},\n\t\t},\n\t\t{\n\t\t\tname:    \"Invalid query parameter\",\n\t\t\tquery:   url.Values{\"foo\": {\"bar\"}},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Region\",\n\t\t\tquery:      url.Values{\"region\": {\"my_region\"}},\n\t\t\twantRegion: \"my_region\",\n\t\t},\n\t\t{\n\t\t\tname:  \"Endpoint and hostname immutable\",\n\t\t\tquery: url.Values{\"endpoint\": {\"foo\"}, \"hostname_immutable\": {\"true\"}},\n\t\t\twantEndpoint: &aws.Endpoint{\n\t\t\t\tPartitionID:       partitionID,\n\t\t\t\tSigningRegion:     region,\n\t\t\t\tURL:               \"foo\",\n\t\t\t\tHostnameImmutable: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"FIPS and dual stack\",\n\t\t\tquery: url.Values{\"fips\": {\"true\"}, \"dualstack\": {\"true\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"anonymous\",\n\t\t\tquery: url.Values{\"anonymous\": {\"true\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Rate limit capacity\",\n\t\t\tquery: url.Values{\"rate_limiter_capacity\": {\"500\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Request checksum calculation when_supported\",\n\t\t\tquery: url.Values{\"request_checksum_calculation\": {\"when_supported\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Request checksum calculation when_required\",\n\t\t\tquery: url.Values{\"request_checksum_calculation\": {\"when_required\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Response checksum validation when_supported\",\n\t\t\tquery: url.Values{\"response_checksum_validation\": {\"when_supported\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Response checksum validation when_required\",\n\t\t\tquery: url.Values{\"response_checksum_validation\": {\"when_required\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Both checksum parameters\",\n\t\t\tquery: url.Values{\"request_checksum_calculation\": {\"when_required\"}, \"response_checksum_validation\": {\"when_supported\"}},\n\t\t},\n\t\t{\n\t\t\tname:    \"Invalid request checksum value\",\n\t\t\tquery:   url.Values{\"request_checksum_calculation\": {\"invalid\"}},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"Invalid response checksum value\",\n\t\t\tquery:   url.Values{\"response_checksum_validation\": {\"invalid\"}},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"Empty request checksum value\",\n\t\t\tquery:   url.Values{\"request_checksum_calculation\": {\"\"}},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"Empty response checksum value\",\n\t\t\tquery:   url.Values{\"response_checksum_validation\": {\"\"}},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:  \"Uppercase request checksum\",\n\t\t\tquery: url.Values{\"request_checksum_calculation\": {\"WHEN_SUPPORTED\"}},\n\t\t},\n\t\t{\n\t\t\tname:  \"Mixed case response checksum\",\n\t\t\tquery: url.Values{\"response_checksum_validation\": {\"When_Required\"}},\n\t\t},\n\t\t// Can't test \"profile\", since AWS validates that the profile exists.\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot, err := gcaws.V2ConfigFromURLParams(ctx, test.query)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif test.wantRegion != \"\" && got.Region != test.wantRegion {\n\t\t\t\tt.Errorf(\"got region %q, want %q\", got.Region, test.wantRegion)\n\t\t\t}\n\n\t\t\t// Check checksum configuration based on query parameters\n\t\t\tif test.query.Has(\"request_checksum_calculation\") {\n\t\t\t\texpectedValue := test.query.Get(\"request_checksum_calculation\")\n\t\t\t\tvar expectedChecksum aws.RequestChecksumCalculation\n\t\t\t\tswitch strings.ToLower(expectedValue) {\n\t\t\t\tcase \"when_supported\":\n\t\t\t\t\texpectedChecksum = aws.RequestChecksumCalculationWhenSupported\n\t\t\t\tcase \"when_required\":\n\t\t\t\t\texpectedChecksum = aws.RequestChecksumCalculationWhenRequired\n\t\t\t\t}\n\t\t\t\tif got.RequestChecksumCalculation != expectedChecksum {\n\t\t\t\t\tt.Errorf(\"got RequestChecksumCalculation %v, want %v\", got.RequestChecksumCalculation, expectedChecksum)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif test.query.Has(\"response_checksum_validation\") {\n\t\t\t\texpectedValue := test.query.Get(\"response_checksum_validation\")\n\t\t\t\tvar expectedChecksum aws.ResponseChecksumValidation\n\t\t\t\tswitch strings.ToLower(expectedValue) {\n\t\t\t\tcase \"when_supported\":\n\t\t\t\t\texpectedChecksum = aws.ResponseChecksumValidationWhenSupported\n\t\t\t\tcase \"when_required\":\n\t\t\t\t\texpectedChecksum = aws.ResponseChecksumValidationWhenRequired\n\t\t\t\t}\n\t\t\t\tif got.ResponseChecksumValidation != expectedChecksum {\n\t\t\t\t\tt.Errorf(\"got ResponseChecksumValidation %v, want %v\", got.ResponseChecksumValidation, expectedChecksum)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif test.wantEndpoint != nil {\n\t\t\t\tif got.EndpointResolverWithOptions == nil {\n\t\t\t\t\tt.Fatalf(\"expected an EndpointResolverWithOptions, got nil\")\n\t\t\t\t}\n\t\t\t\tgotE, err := got.EndpointResolverWithOptions.ResolveEndpoint(service, region)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif !reflect.DeepEqual(gotE, *test.wantEndpoint) {\n\t\t\t\t\tt.Errorf(\"got endpoint %+v, want %+v\", gotE, *test.wantEndpoint)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Unfortunately, we can't look at the options set for the rate limiter.\n\t\t\tr, ok := got.Retryer().(*retry.Standard)\n\t\t\tif !ok {\n\t\t\t\tt.Errorf(\"expected a standard retryer, got %v, expected retry.Standard\", r)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "aws/awscloud/awscloud.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awscloud contains Wire providers for AWS services.\npackage awscloud // import \"gocloud.dev/aws/awscloud\"\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/aws\"\n\t\"gocloud.dev/aws/rds\"\n\t\"gocloud.dev/blob/s3blob\"\n\t\"gocloud.dev/docstore/awsdynamodb/v2\"\n\t\"gocloud.dev/pubsub/awssnssqs\"\n\t\"gocloud.dev/runtimevar/awsparamstore\"\n\t\"gocloud.dev/secrets/awskms\"\n\t\"gocloud.dev/server/xrayserver\"\n)\n\n// AWS is a Wire provider set that includes all Amazon Web Services interface\n// implementations in the Go CDK and authenticates using the default session.\nvar AWS = wire.NewSet(\n\tServices,\n\taws.NewDefaultV2Config,\n\twire.Value(http.DefaultClient),\n)\n\n// Services is a Wire provider set that includes the default wiring for all\n// Amazon Web Services interface implementations in the Go CDK but unlike the\n// AWS set, does not include credentials. Individual services may require\n// additional configuration.\nvar Services = wire.NewSet(\n\ts3blob.Set,\n\tawssnssqs.Set,\n\tawsparamstore.Set,\n\tawskms.Set,\n\trds.CertFetcherSet,\n\tawsdynamodb.Set,\n\txrayserver.Set,\n)\n"
  },
  {
    "path": "aws/awscloud/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awscloud_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\n\t\"github.com/google/wire\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"gocloud.dev/aws/awscloud\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/health\"\n)\n\n// This is an example of how to bootstrap an HTTP server running on\n// Amazon Web Services (AWS). The code in this function would be\n// placed in main().\nfunc Example() {\n\t// Connect and authenticate to AWS.\n\tsrv, cleanup, err := setup(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Set up the HTTP routes.\n\thttp.HandleFunc(\"/\", greet)\n\n\t// Run the server. This behaves much like http.ListenAndServe,\n\t// including that passing a nil handler will use http.DefaultServeMux.\n\tlog.Fatal(srv.ListenAndServe(\":8080\"))\n}\n\n// setup is a Wire injector function that creates an HTTP server\n// configured to send diagnostics to AWS X-Ray. The second return\n// value is a clean-up function that can be called to shut down any\n// resources created by setup.\n//\n// The body of this function will be filled in by running Wire. While\n// the name of the function does not matter, the signature signals to\n// Wire what provider functions to call. See\n// https://github.com/google/wire/blob/master/docs/guide.md#injectors\n// for more details.\nfunc setup(ctx context.Context) (*server.Server, func(), error) {\n\twire.Build(\n\t\t// The AWS set includes all the default wiring for AWS, including\n\t\t// for *server.Server.\n\t\tawscloud.AWS,\n\t\t// Providing nil instructs the server to use the default sampling policy.\n\t\twire.Value(sdktrace.Sampler(nil)),\n\t\t// Health checks can be added to delay your server reporting healthy\n\t\t// to the load balancer before critical dependencies are available.\n\t\twire.Value([]health.Checker(nil)),\n\t)\n\treturn nil, nil, nil\n}\n\n// greet is an ordinary http.HandleFunc.\nfunc greet(w http.ResponseWriter, req *http.Request) {\n\tfmt.Fprintln(w, \"Hello, World!\")\n}\n"
  },
  {
    "path": "aws/rds/rds.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package rds contains Wire providers that are common across RDS.\npackage rds // import \"gocloud.dev/aws/rds\"\n\nimport (\n\t\"context\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"github.com/google/wire\"\n\t\"golang.org/x/net/context/ctxhttp\"\n)\n\n// CertFetcherSet is a Wire provider set that provides the RDS certificate pool\n// by pulling from Amazon's servers.\nvar CertFetcherSet = wire.NewSet(\n\twire.Struct(new(CertFetcher), \"Client\"),\n\twire.Bind(new(CertPoolProvider), new(*CertFetcher)),\n)\n\n// A CertPoolProvider obtains a certificate pool that contains the RDS CA certificate.\ntype CertPoolProvider interface {\n\tRDSCertPool(context.Context) (*x509.CertPool, error)\n}\n\n// caBundleURL is the URL to the public RDS Certificate Authority keys.\nconst caBundleURL = \"https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem\"\n\n// CertFetcher pulls the RDS CA certificates from Amazon's servers. The zero\n// value will fetch certificates using the default HTTP client.\ntype CertFetcher struct {\n\t// Client is the HTTP client used to make requests. If nil, then\n\t// http.DefaultClient is used.\n\tClient *http.Client\n}\n\n// RDSCertPool fetches the RDS CA certificates and places them into a pool.\n// It is safe to call from multiple goroutines.\nfunc (cf *CertFetcher) RDSCertPool(ctx context.Context) (*x509.CertPool, error) {\n\tcerts, err := cf.Fetch(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcertPool := x509.NewCertPool()\n\tfor _, c := range certs {\n\t\tcertPool.AddCert(c)\n\t}\n\treturn certPool, nil\n}\n\n// Fetch fetches the RDS CA certificates. It is safe to call from multiple goroutines.\nfunc (cf *CertFetcher) Fetch(ctx context.Context) ([]*x509.Certificate, error) {\n\tclient := cf.Client\n\tif client == nil {\n\t\tclient = http.DefaultClient\n\t}\n\tresp, err := ctxhttp.Get(ctx, client, caBundleURL)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fetch RDS certificates: %v\", err)\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn nil, fmt.Errorf(\"fetch RDS certificates: HTTP %s\", resp.Status)\n\t}\n\tpemData, err := io.ReadAll(&io.LimitedReader{R: resp.Body, N: 1 << 20}) // limit to 1MiB\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fetch RDS certificates: %v\", err)\n\t}\n\tvar certs []*x509.Certificate\n\tfor len(pemData) > 0 {\n\t\tvar block *pem.Block\n\t\tblock, pemData = pem.Decode(pemData)\n\t\tif block == nil {\n\t\t\tbreak\n\t\t}\n\t\tif block.Type != \"CERTIFICATE\" || len(block.Headers) != 0 {\n\t\t\tcontinue\n\t\t}\n\t\tc, err := x509.ParseCertificate(block.Bytes)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"fetch RDS certificates: %v\", err)\n\t\t}\n\t\tcerts = append(certs, c)\n\t}\n\treturn certs, nil\n}\n"
  },
  {
    "path": "azure/azurecloud/azurecloud.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package azurecloud contains Wire providers for Azure services.\npackage azurecloud // import \"gocloud.dev/azure/azurecloud\"\n\nimport (\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/blob/azureblob\"\n\t\"gocloud.dev/secrets/azurekeyvault\"\n)\n\n// Azure is a Wire provider set that includes the default wiring for all\n// Microsoft Azure services in this repository, but does not include\n// credentials. Individual services may require additional configuration.\nvar Azure = wire.NewSet(\n\tazurekeyvault.Set,\n\tazureblob.Set,\n)\n"
  },
  {
    "path": "azure/azuredb/azuredb.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package azuredb contains Wire providers that are common across Azure Database.\npackage azuredb\n\nimport (\n\t\"context\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"golang.org/x/net/context/ctxhttp\"\n)\n\nconst caBundleURL = \"https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem\"\n\n// A CertPoolProvider returns a certificate pool that contains the Azure CA certificate.\ntype CertPoolProvider interface {\n\tAzureCertPool(context.Context) (*x509.CertPool, error)\n}\n\n// CertFetcher pulls the Azure CA certificates from Digicert's servers. The zero\n// value will fetch certificates using the default HTTP client.\ntype CertFetcher struct {\n\t// Client is the HTTP client used to make requests. If nil, then\n\t// http.DefaultClient is used.\n\tClient *http.Client\n}\n\n// AzureCertPool fetches the Azure CA certificates and places them into a pool.\n// It is safe to call from multiple goroutines.\nfunc (cf *CertFetcher) AzureCertPool(ctx context.Context) (*x509.CertPool, error) {\n\tcerts, err := cf.Fetch(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcertPool := x509.NewCertPool()\n\tfor _, c := range certs {\n\t\tcertPool.AddCert(c)\n\t}\n\treturn certPool, nil\n}\n\n// Fetch fetches the Azure CA certificates. It is safe to call from multiple goroutines.\nfunc (cf *CertFetcher) Fetch(ctx context.Context) ([]*x509.Certificate, error) {\n\tclient := cf.Client\n\tif client == nil {\n\t\tclient = http.DefaultClient\n\t}\n\tresp, err := ctxhttp.Get(ctx, client, caBundleURL)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fetch Azure certificates: %v\", err)\n\t}\n\tdefer resp.Body.Close()\n\tif resp.StatusCode != http.StatusOK {\n\t\treturn nil, fmt.Errorf(\"fetch Azure certificates: HTTP %s\", resp.Status)\n\t}\n\tpemData, err := io.ReadAll(&io.LimitedReader{R: resp.Body, N: 1 << 20}) // limit to 1MiB\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"fetch Azure certificates: %v\", err)\n\t}\n\tvar certs []*x509.Certificate\n\tfor len(pemData) > 0 {\n\t\tvar block *pem.Block\n\t\tblock, pemData = pem.Decode(pemData)\n\t\tif block == nil {\n\t\t\tbreak\n\t\t}\n\t\tif block.Type != \"CERTIFICATE\" || len(block.Headers) != 0 {\n\t\t\tcontinue\n\t\t}\n\t\tc, err := x509.ParseCertificate(block.Bytes)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"fetch Azure certificates: %v\", err)\n\t\t}\n\t\tcerts = append(certs, c)\n\t}\n\treturn certs, nil\n}\n"
  },
  {
    "path": "blob/azureblob/azureblob.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package azureblob provides a blob implementation that uses Azure Storage’s\n// BlockBlob. Use OpenBucket to construct a *blob.Bucket.\n//\n// NOTE: SignedURLs for PUT created with this package are not fully portable;\n// they will not work unless the PUT request includes a \"x-ms-blob-type\" header\n// set to \"BlockBlob\".\n// See https://stackoverflow.com/questions/37824136/put-on-sas-blob-url-without-specifying-x-ms-blob-type-header.\n//\n// # URLs\n//\n// For blob.OpenBucket, azureblob registers for the scheme \"azblob\".\n//\n// The default URL opener will use environment variables to generate\n// credentials and a service URL; see\n// https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob\n// for a more complete descriptions of each approach.\n//   - AZURE_STORAGE_ACCOUNT: The service account name. Required if used along with AZURE_STORAGE KEY, because it defines\n//     authentication mechanism to be azblob.NewSharedKeyCredential, which creates immutable shared key credentials.\n//     Otherwise, \"storage_account\" in the URL query string parameter can be used.\n//   - AZURE_STORAGE_KEY: To use a shared key credential. The service account\n//     name and key are passed to NewSharedKeyCredential and then the\n//     resulting credential is passed to NewClientWithSharedKeyCredential.\n//   - AZURE_STORAGE_CONNECTION_STRING or AZURE_STORAGEBLOB_CONNECTIONSTRING: To use a connection string, passed to\n//     NewClientFromConnectionString.\n//   - AZURE_STORAGE_SAS_TOKEN: To use a SAS token. The SAS token is added\n//     as a URL parameter to the service URL, and passed to\n//     NewClientWithNoCredential.\n//   - If none of the above are provided, azureblob defaults to\n//     azidentity.NewDefaultAzureCredential:\n//     https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#NewDefaultAzureCredential.\n//     See the documentation there for the credential types it supports, including\n//     CLI creds, environment variables like AZURE_CLIENT_ID, AZURE_TENANT_ID, etc.\n//\n// In addition, the environment variables AZURE_STORAGE_ACCOUNT, AZURE_STORAGE_DOMAIN,\n// AZURE_STORAGE_PROTOCOL, AZURE_STORAGE_IS_CDN, and AZURE_STORAGE_IS_LOCAL_EMULATOR\n// can be used to configure how the default URLOpener generates the Azure\n// Service URL via ServiceURLOptions. These can all be configured via URL\n// parameters as well. See ServiceURLOptions and NewDefaultServiceURL\n// for more details.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n//\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Escaping\n//\n// Go CDK supports all UTF-8 strings; to make this work with services lacking\n// full UTF-8 support, strings must be escaped (during writes) and unescaped\n// (during reads). The following escapes are performed for azureblob:\n//   - Blob keys: ASCII characters 0-31, 34 (\"\\\"\"), 35 (\"#\"), 37 (\"%\"), 63 (\"?\"),\n//     92 (\"\\\"), and 127 are escaped to \"__0x<hex>__\".\n//     Additionally, the \"/\" in \"../\" and a trailing \"/\" in a key (e.g., \"foo/\") are escaped in the same way.\n//   - Metadata keys: Per https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata,\n//     Azure only allows C# identifiers as metadata keys. Therefore, characters\n//     other than \"[a-z][A-z][0-9]_\" are escaped using \"__0x<hex>__\". In addition,\n//     characters \"[0-9]\" are escaped when they start the string.\n//     URL encoding would not work since \"%\" is not valid.\n//   - Metadata values: Escaped using URL encoding.\n//\n// # As\n//\n// azureblob exposes the following types for As:\n//   - Bucket: *container.Client\n//   - Error: *azcore.ResponseError. You can use bloberror.HasCode directly though.\n//   - ListObject: container.BlobItem for objects, container.BlobPrefix for \"directories\"\n//   - ListOptions.BeforeList: *container.ListBlobsHierarchyOptions\n//   - Reader: azblobblob.DownloadStreamResponse\n//   - Reader.BeforeRead: *azblob.DownloadStreamOptions\n//   - Attributes: azblobblob.GetPropertiesResponse\n//   - CopyOptions.BeforeCopy: *azblobblob.StartCopyFromURLOptions\n//   - WriterOptions.BeforeWrite: *azblob.UploadStreamOptions\n//   - SignedURLOptions.BeforeSign: *sas.BlobPermissions\npackage azureblob\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azidentity\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob\"\n\tazblobblob \"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/bloberror\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blockblob\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\n\t\"gocloud.dev/internal/escape\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n)\n\nconst (\n\tdefaultPageSize        = 1000            // default page size for ListPaged (Azure default is 5000)\n\tdefaultUploadBuffers   = 5               // configure the number of rotating buffers that are used when uploading (for degree of parallelism)\n\tdefaultUploadBlockSize = 8 * 1024 * 1024 // configure the upload buffer size\n)\n\n// ptrVal returns the value pointed to by p, or the zero value if p is nil.\nfunc ptrVal[T any](p *T) (v T) {\n\tif p != nil {\n\t\tv = *p\n\t}\n\treturn\n}\n\nfunc init() {\n\tblob.DefaultURLMux().RegisterBucket(Scheme, new(lazyOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tNewDefaultServiceURLOptions,\n\tNewServiceURL,\n\tNewDefaultClient,\n)\n\n// Options sets options for constructing a *blob.Bucket backed by Azure Blob.\ntype Options struct{}\n\n// ServiceURL represents an Azure service URL.\ntype ServiceURL string\n\n// ContainerName represents an Azure blob container name.\ntype ContainerName string\n\n// ServiceURLOptions sets options for constructing a service URL for Azure Blob.\ntype ServiceURLOptions struct {\n\t// AccountName is the account name the credentials are for.\n\tAccountName string\n\n\t// SASToken will be appended to the service URL.\n\t// See https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1#shared-access-signature-parameters.\n\tSASToken string\n\n\t// StorageDomain can be provided to specify an Azure Cloud Environment\n\t// domain to target for the blob storage account (i.e. public, government, china).\n\t// Defaults to \"blob.core.windows.net\". Possible values will look similar\n\t// to this but are different for each cloud (i.e. \"blob.core.govcloudapi.net\" for USGovernment).\n\t// Check the Azure developer guide for the cloud environment where your bucket resides.\n\t// See the docstring for NewServiceURL to see examples of how this is used\n\t// along with the other Options fields.\n\tStorageDomain string\n\n\t// Protocol can be provided to specify protocol to access Azure Blob Storage.\n\t// Protocols that can be specified are \"http\" for local emulator and \"https\" for general.\n\t// Defaults to \"https\".\n\t// See the docstring for NewServiceURL to see examples of how this is used\n\t// along with the other Options fields.\n\tProtocol string\n\n\t// IsCDN can be set to true when using a CDN URL pointing to a blob storage account:\n\t// https://docs.microsoft.com/en-us/azure/cdn/cdn-create-a-storage-account-with-cdn\n\t// See the docstring for NewServiceURL to see examples of how this is used\n\t// along with the other Options fields.\n\tIsCDN bool\n\n\t// IsLocalEmulator should be set to true when targeting Local Storage Emulator (Azurite).\n\t// See the docstring for NewServiceURL to see examples of how this is used\n\t// along with the other Options fields.\n\tIsLocalEmulator bool\n}\n\n// NewDefaultServiceURLOptions generates a ServiceURLOptions based on environment variables.\nfunc NewDefaultServiceURLOptions() *ServiceURLOptions {\n\tisCDN, _ := strconv.ParseBool(os.Getenv(\"AZURE_STORAGE_IS_CDN\"))\n\tisLocalEmulator, _ := strconv.ParseBool(os.Getenv(\"AZURE_STORAGE_IS_LOCAL_EMULATOR\"))\n\taccountName := os.Getenv(\"AZURE_STORAGE_ACCOUNT\")\n\tprotocol := os.Getenv(\"AZURE_STORAGE_PROTOCOL\")\n\tconnectionString := os.Getenv(\"AZURE_STORAGE_CONNECTION_STRING\")\n\tif connectionString == \"\" {\n\t\tconnectionString = os.Getenv(\"AZURE_STORAGEBLOB_CONNECTIONSTRING\")\n\t}\n\tif connectionString != \"\" {\n\t\t// Parse the connection string to get a default account name and protocol.\n\t\t// Format: DefaultEndpointsProtocol=https;AccountName=some-account;AccountKey=very-secure;EndpointSuffix=core.windows.net\n\t\tfor part := range strings.SplitSeq(connectionString, \";\") {\n\t\t\tkeyval := strings.Split(part, \"=\")\n\t\t\tif len(keyval) == 2 {\n\t\t\t\tif accountName == \"\" && keyval[0] == \"AccountName\" {\n\t\t\t\t\taccountName = keyval[1]\n\t\t\t\t} else if protocol == \"\" && keyval[0] == \"DefaultEndpointsProtocol\" {\n\t\t\t\t\tprotocol = keyval[1]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn &ServiceURLOptions{\n\t\tAccountName:     accountName,\n\t\tSASToken:        os.Getenv(\"AZURE_STORAGE_SAS_TOKEN\"),\n\t\tStorageDomain:   os.Getenv(\"AZURE_STORAGE_DOMAIN\"),\n\t\tProtocol:        protocol,\n\t\tIsCDN:           isCDN,\n\t\tIsLocalEmulator: isLocalEmulator,\n\t}\n}\n\n// withOverrides returns o with overrides from urlValues.\n// See URLOpener for supported overrides.\nfunc (o *ServiceURLOptions) withOverrides(urlValues url.Values) (*ServiceURLOptions, error) {\n\tretval := *o\n\tfor param, values := range urlValues {\n\t\tif len(values) > 1 {\n\t\t\treturn nil, fmt.Errorf(\"multiple values of %v not allowed\", param)\n\t\t}\n\t\tvalue := values[0]\n\t\tswitch param {\n\t\tcase \"domain\":\n\t\t\tretval.StorageDomain = value\n\t\tcase \"protocol\":\n\t\t\tretval.Protocol = value\n\t\tcase \"cdn\":\n\t\t\tisCDN, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tretval.IsCDN = isCDN\n\t\tcase \"localemu\":\n\t\t\tisLocalEmulator, err := strconv.ParseBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tretval.IsLocalEmulator = isLocalEmulator\n\t\tcase \"storage_account\":\n\t\t\tretval.AccountName = value\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unknown query parameter %q\", param)\n\t\t}\n\t}\n\treturn &retval, nil\n}\n\n// NewServiceURL generates a URL for addressing an Azure Blob service\n// account. It uses several parameters, each of which can be specified\n// via ServiceURLOptions.\n//\n// The generated URL is \"<protocol>://<account name>.<domain>\"\n// with the following caveats:\n//   - If opts.SASToken is provided, it is appended to the URL as a query\n//     parameter.\n//   - If opts.IsCDN is true, the <account name> part is dropped.\n//   - If opts.IsLocalEmulator is true, or the domain starts with \"localhost\"\n//     or \"127.0.0.1\", the account name and domain are flipped, e.g.:\n//     http://127.0.0.1:10000/myaccount\nfunc NewServiceURL(opts *ServiceURLOptions) (ServiceURL, error) {\n\tif opts == nil {\n\t\topts = &ServiceURLOptions{}\n\t}\n\taccountName := opts.AccountName\n\tif accountName == \"\" {\n\t\treturn \"\", errors.New(\"azureblob: Options.AccountName is required\")\n\t}\n\tdomain := opts.StorageDomain\n\tif domain == \"\" {\n\t\tdomain = \"blob.core.windows.net\"\n\t}\n\tprotocol := opts.Protocol\n\tif protocol == \"\" {\n\t\tprotocol = \"https\"\n\t} else if protocol != \"http\" && protocol != \"https\" {\n\t\treturn \"\", fmt.Errorf(\"invalid protocol %q\", protocol)\n\t}\n\tvar svcURL string\n\tif strings.HasPrefix(domain, \"127.0.0.1\") || strings.HasPrefix(domain, \"localhost\") || opts.IsLocalEmulator {\n\t\tsvcURL = fmt.Sprintf(\"%s://%s/%s\", protocol, domain, accountName)\n\t} else if opts.IsCDN {\n\t\tsvcURL = fmt.Sprintf(\"%s://%s\", protocol, domain)\n\t} else {\n\t\tsvcURL = fmt.Sprintf(\"%s://%s.%s\", protocol, accountName, domain)\n\t}\n\tif opts.SASToken != \"\" {\n\t\tsvcURL += \"?\" + opts.SASToken\n\t}\n\treturn ServiceURL(svcURL), nil\n}\n\n// lazyOpener obtains credentials and creates a client on the first call to OpenBucketURL.\ntype lazyOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n}\n\nfunc (o *lazyOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\to.init.Do(func() {\n\t\tcredInfo := newCredInfoFromEnv()\n\t\topts := NewDefaultServiceURLOptions()\n\t\to.opener = &URLOpener{\n\t\t\tMakeClient:        credInfo.NewClient,\n\t\t\tServiceURLOptions: *opts,\n\t\t}\n\t})\n\treturn o.opener.OpenBucketURL(ctx, u)\n}\n\ntype credTypeEnumT int\n\nconst (\n\tcredTypeDefault credTypeEnumT = iota\n\tcredTypeSharedKey\n\tcredTypeSASViaNone\n\tcredTypeConnectionString\n)\n\ntype credInfoT struct {\n\tCredType credTypeEnumT\n\n\t// For credTypeSharedKey.\n\tAccountName string\n\tAccountKey  string\n\n\t// For credTypeConnectionString\n\tConnectionString string\n}\n\nfunc newCredInfoFromEnv() *credInfoT {\n\taccountName := os.Getenv(\"AZURE_STORAGE_ACCOUNT\")\n\taccountKey := os.Getenv(\"AZURE_STORAGE_KEY\")\n\tsasToken := os.Getenv(\"AZURE_STORAGE_SAS_TOKEN\")\n\tconnectionString := os.Getenv(\"AZURE_STORAGE_CONNECTION_STRING\")\n\tif connectionString == \"\" {\n\t\tconnectionString = os.Getenv(\"AZURE_STORAGEBLOB_CONNECTIONSTRING\")\n\t}\n\tcredInfo := &credInfoT{\n\t\tAccountName: accountName,\n\t}\n\tif accountName != \"\" && accountKey != \"\" {\n\t\tcredInfo.CredType = credTypeSharedKey\n\t\tcredInfo.AccountKey = accountKey\n\t} else if sasToken != \"\" {\n\t\tcredInfo.CredType = credTypeSASViaNone\n\t} else if connectionString != \"\" {\n\t\tcredInfo.CredType = credTypeConnectionString\n\t\tcredInfo.ConnectionString = connectionString\n\t} else {\n\t\tcredInfo.CredType = credTypeDefault\n\t}\n\treturn credInfo\n}\n\nfunc (i *credInfoT) NewClient(svcURL ServiceURL, containerName ContainerName) (*container.Client, error) {\n\t// Set the ApplicationID.\n\tazClientOpts := &container.ClientOptions{}\n\tazClientOpts.Telemetry = policy.TelemetryOptions{\n\t\tApplicationID: useragent.AzureUserAgentPrefix(\"blob\"),\n\t}\n\n\tcontainerURL, err := url.JoinPath(string(svcURL), string(containerName))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch i.CredType {\n\tcase credTypeDefault:\n\t\tcred, err := azidentity.NewDefaultAzureCredential(nil)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed azidentity.NewDefaultAzureCredential: %v\", err)\n\t\t}\n\t\treturn container.NewClient(containerURL, cred, azClientOpts)\n\tcase credTypeSharedKey:\n\t\tsharedKeyCred, err := azblob.NewSharedKeyCredential(i.AccountName, i.AccountKey)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed azblob.NewSharedKeyCredential: %v\", err)\n\t\t}\n\t\treturn container.NewClientWithSharedKeyCredential(containerURL, sharedKeyCred, azClientOpts)\n\tcase credTypeSASViaNone:\n\t\treturn container.NewClientWithNoCredential(containerURL, azClientOpts)\n\tcase credTypeConnectionString:\n\t\treturn container.NewClientFromConnectionString(i.ConnectionString, string(containerName), azClientOpts)\n\tdefault:\n\t\treturn nil, errors.New(\"internal error, unknown cred type\")\n\t}\n}\n\n// Scheme is the URL scheme gcsblob registers its URLOpener under on\n// blob.DefaultMux.\nconst Scheme = \"azblob\"\n\n// URLOpener opens Azure URLs like \"azblob://mybucket\".\n//\n// The URL host is used as the bucket name.\n//\n// The following query options are supported:\n//   - domain: Overrides Options.StorageDomain.\n//   - protocol: Overrides Options.Protocol.\n//   - cdn: Overrides Options.IsCDN.\n//   - localemu: Overrides Options.IsLocalEmulator.\ntype URLOpener struct {\n\t// MakeClient must be set to a non-nil value.\n\tMakeClient func(svcURL ServiceURL, containerName ContainerName) (*container.Client, error)\n\n\t// ServiceURLOptions specifies default options for generating the service URL.\n\t// Some options can be overridden in the URL as described above.\n\tServiceURLOptions ServiceURLOptions\n\n\t// Options specifies the options to pass to OpenBucket.\n\tOptions Options\n}\n\n// OpenBucketURL opens a blob.Bucket based on u.\nfunc (o *URLOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\topts, err := o.ServiceURLOptions.withOverrides(u.Query())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsvcURL, err := NewServiceURL(opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tclient, err := o.MakeClient(svcURL, ContainerName(u.Host))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn OpenBucket(ctx, client, &o.Options)\n}\n\n// bucket represents a Azure Storage Account Container, which handles read,\n// write and delete operations on objects within it.\n// See https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction.\ntype bucket struct {\n\tclient *container.Client\n\topts   *Options\n}\n\n// NewDefaultClient returns an Azure Blob container client\n// with credentials from the environment as described in the package\n// docstring.\nfunc NewDefaultClient(svcURL ServiceURL, containerName ContainerName) (*container.Client, error) {\n\treturn newCredInfoFromEnv().NewClient(svcURL, containerName)\n}\n\n// OpenBucket returns a *blob.Bucket backed by Azure Storage Account. See the package\n// documentation for an example and\n// https://godoc.org/github.com/Azure/azure-storage-blob-go/azblob\n// for more details.\nfunc OpenBucket(ctx context.Context, client *container.Client, opts *Options) (*blob.Bucket, error) {\n\tb, err := openBucket(ctx, client, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn blob.NewBucket(b), nil\n}\n\nfunc openBucket(ctx context.Context, client *container.Client, opts *Options) (*bucket, error) {\n\tif client == nil {\n\t\treturn nil, errors.New(\"azureblob.OpenBucket: client is required\")\n\t}\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\treturn &bucket{\n\t\tclient: client,\n\t\topts:   opts,\n\t}, nil\n}\n\n// Close implements driver.Close.\nfunc (b *bucket) Close() error {\n\treturn nil\n}\n\n// Copy implements driver.Copy.\nfunc (b *bucket) Copy(ctx context.Context, dstKey, srcKey string, opts *driver.CopyOptions) error {\n\tdstKey = escapeKey(dstKey, false)\n\tdstBlobClient := b.client.NewBlobClient(dstKey)\n\tsrcKey = escapeKey(srcKey, false)\n\tsrcBlobClient := b.client.NewBlobClient(srcKey)\n\tcopyOptions := &azblobblob.StartCopyFromURLOptions{}\n\tif opts.BeforeCopy != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tswitch v := i.(type) {\n\t\t\tcase **azblobblob.StartCopyFromURLOptions:\n\t\t\t\t*v = copyOptions\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeCopy(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tresp, err := dstBlobClient.StartCopyFromURL(ctx, srcBlobClient.URL(), copyOptions)\n\tif err != nil {\n\t\treturn err\n\t}\n\tnErrors := 0\n\tcopyStatus := *resp.CopyStatus\n\tfor copyStatus == azblobblob.CopyStatusTypePending {\n\t\t// Poll until the copy is complete.\n\t\ttime.Sleep(500 * time.Millisecond)\n\t\tpropertiesResp, err := dstBlobClient.GetProperties(ctx, nil)\n\t\tif err != nil {\n\t\t\t// A GetProperties failure may be transient, so allow a couple\n\t\t\t// of them before giving up.\n\t\t\tnErrors++\n\t\t\tif ctx.Err() != nil || nErrors == 3 {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tcopyStatus = *propertiesResp.CopyStatus\n\t}\n\tif copyStatus != azblobblob.CopyStatusTypeSuccess {\n\t\treturn fmt.Errorf(\"Copy failed with status: %s\", copyStatus)\n\t}\n\treturn nil\n}\n\n// Delete implements driver.Delete.\nfunc (b *bucket) Delete(ctx context.Context, key string) error {\n\tkey = escapeKey(key, false)\n\tblobClient := b.client.NewBlobClient(key)\n\t_, err := blobClient.Delete(ctx, nil)\n\treturn err\n}\n\n// reader reads an azblob. It implements io.ReadCloser.\ntype reader struct {\n\tbody  io.ReadCloser\n\tattrs driver.ReaderAttributes\n\traw   *azblobblob.DownloadStreamResponse\n}\n\nfunc (r *reader) Read(p []byte) (int, error) {\n\treturn r.body.Read(p)\n}\n\nfunc (r *reader) Close() error {\n\treturn r.body.Close()\n}\n\nfunc (r *reader) Attributes() *driver.ReaderAttributes {\n\treturn &r.attrs\n}\n\nfunc (r *reader) As(i any) bool {\n\tp, ok := i.(*azblobblob.DownloadStreamResponse)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = *r.raw\n\treturn true\n}\n\n// NewRangeReader implements driver.NewRangeReader.\nfunc (b *bucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tkey = escapeKey(key, false)\n\tblobClient := b.client.NewBlobClient(key)\n\tdownloadOpts := azblob.DownloadStreamOptions{}\n\tif offset != 0 {\n\t\tdownloadOpts.Range.Offset = offset\n\t}\n\tif length >= 0 {\n\t\tdownloadOpts.Range.Count = length\n\t}\n\tif opts.BeforeRead != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif p, ok := i.(**azblobblob.DownloadStreamOptions); ok {\n\t\t\t\t*p = &downloadOpts\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeRead(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tblobDownloadResponse, err := blobClient.DownloadStream(ctx, &downloadOpts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tattrs := driver.ReaderAttributes{\n\t\tContentType: ptrVal(blobDownloadResponse.ContentType),\n\t\tSize:        getSize(blobDownloadResponse.ContentLength, ptrVal(blobDownloadResponse.ContentRange)),\n\t\tModTime:     *blobDownloadResponse.LastModified,\n\t}\n\tvar body io.ReadCloser\n\tif length == 0 {\n\t\tbody = http.NoBody\n\t} else {\n\t\tbody = blobDownloadResponse.Body\n\t}\n\treturn &reader{\n\t\tbody:  body,\n\t\tattrs: attrs,\n\t\traw:   &blobDownloadResponse,\n\t}, nil\n}\n\nfunc getSize(contentLength *int64, contentRange string) int64 {\n\tvar size int64\n\t// Default size to ContentLength, but that's incorrect for partial-length reads,\n\t// where ContentLength refers to the size of the returned Body, not the entire\n\t// size of the blob. ContentRange has the full size.\n\tif contentLength != nil {\n\t\tsize = *contentLength\n\t}\n\tif contentRange != \"\" {\n\t\t// Sample: bytes 10-14/27 (where 27 is the full size).\n\t\tparts := strings.Split(contentRange, \"/\")\n\t\tif len(parts) == 2 {\n\t\t\tif i, err := strconv.ParseInt(parts[1], 10, 64); err == nil {\n\t\t\t\tsize = i\n\t\t\t}\n\t\t}\n\t}\n\treturn size\n}\n\n// As implements driver.As.\nfunc (b *bucket) As(i any) bool {\n\tp, ok := i.(**container.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = b.client\n\treturn true\n}\n\n// As implements driver.ErrorAs.\nfunc (b *bucket) ErrorAs(err error, i any) bool {\n\tswitch v := err.(type) {\n\tcase *azcore.ResponseError:\n\t\tif p, ok := i.(**azcore.ResponseError); ok {\n\t\t\t*p = v\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (b *bucket) ErrorCode(err error) gcerrors.ErrorCode {\n\tvar rErr *azcore.ResponseError\n\tif errors.As(err, &rErr) {\n\t\tswitch bloberror.Code(rErr.ErrorCode) {\n\t\tcase bloberror.AuthenticationFailed:\n\t\t\treturn gcerrors.PermissionDenied\n\t\tcase bloberror.BlobAlreadyExists,\n\t\t\tbloberror.ConditionNotMet,\n\t\t\tbloberror.TargetConditionNotMet,\n\t\t\tbloberror.SourceConditionNotMet:\n\t\t\t// the documented error code is a variation of \"ConditionNotMet\", but \"BlobAlreadyExists\" has also been observed\n\t\t\treturn gcerrors.FailedPrecondition\n\t\tcase bloberror.BlobNotFound:\n\t\t\treturn gcerrors.NotFound\n\t\t}\n\n\t\tif rErr.StatusCode == http.StatusNotFound {\n\t\t\treturn gcerrors.NotFound\n\t\t}\n\t}\n\n\tif strings.Contains(err.Error(), \"no such host\") {\n\t\t// This happens with an invalid storage account name; the host\n\t\t// is something like invalidstorageaccount.blob.core.windows.net.\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n\n// Attributes implements driver.Attributes.\nfunc (b *bucket) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\tkey = escapeKey(key, false)\n\tblobClient := b.client.NewBlobClient(key)\n\tblobPropertiesResponse, err := blobClient.GetProperties(ctx, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmd := make(map[string]string, len(blobPropertiesResponse.Metadata))\n\tfor k, v := range blobPropertiesResponse.Metadata {\n\t\t// See the package comments for more details on escaping of metadata\n\t\t// keys & values.\n\t\tif v != nil {\n\t\t\tmd[escape.HexUnescape(k)] = escape.URLUnescape(*v)\n\t\t}\n\t}\n\tvar eTag string\n\tif blobPropertiesResponse.ETag != nil {\n\t\teTag = string(*blobPropertiesResponse.ETag)\n\t}\n\treturn &driver.Attributes{\n\t\tCacheControl:       ptrVal(blobPropertiesResponse.CacheControl),\n\t\tContentDisposition: ptrVal(blobPropertiesResponse.ContentDisposition),\n\t\tContentEncoding:    ptrVal(blobPropertiesResponse.ContentEncoding),\n\t\tContentLanguage:    ptrVal(blobPropertiesResponse.ContentLanguage),\n\t\tContentType:        ptrVal(blobPropertiesResponse.ContentType),\n\t\tSize:               ptrVal(blobPropertiesResponse.ContentLength),\n\t\tCreateTime:         *blobPropertiesResponse.CreationTime,\n\t\tModTime:            *blobPropertiesResponse.LastModified,\n\t\tMD5:                blobPropertiesResponse.ContentMD5,\n\t\tETag:               eTag,\n\t\tMetadata:           md,\n\t\tAsFunc: func(i any) bool {\n\t\t\tp, ok := i.(*azblobblob.GetPropertiesResponse)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = blobPropertiesResponse\n\t\t\treturn true\n\t\t},\n\t}, nil\n}\n\n// ListPaged implements driver.ListPaged.\nfunc (b *bucket) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\tpageSize := opts.PageSize\n\tif pageSize == 0 {\n\t\tpageSize = defaultPageSize\n\t}\n\n\tvar marker *string\n\tif len(opts.PageToken) > 0 {\n\t\tpt := string(opts.PageToken)\n\t\tmarker = &pt\n\t}\n\n\tpageSize32 := int32(pageSize)\n\tprefix := escapeKey(opts.Prefix, true)\n\tazOpts := container.ListBlobsHierarchyOptions{\n\t\tMaxResults: &pageSize32,\n\t\tPrefix:     &prefix,\n\t\tMarker:     marker,\n\t}\n\tif opts.BeforeList != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(**container.ListBlobsHierarchyOptions)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = &azOpts\n\t\t\treturn true\n\t\t}\n\t\tif err := opts.BeforeList(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tazPager := b.client.NewListBlobsHierarchyPager(escapeKey(opts.Delimiter, true), &azOpts)\n\tresp, err := azPager.NextPage(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpage := &driver.ListPage{}\n\tpage.Objects = []*driver.ListObject{}\n\tsegment := resp.ListBlobsHierarchySegmentResponse.Segment\n\tfor _, blobPrefix := range segment.BlobPrefixes {\n\t\tpage.Objects = append(page.Objects, &driver.ListObject{\n\t\t\tKey:   unescapeKey(ptrVal(blobPrefix.Name)),\n\t\t\tSize:  0,\n\t\t\tIsDir: true,\n\t\t\tAsFunc: func(i any) bool {\n\t\t\t\tv, ok := i.(*container.BlobPrefix)\n\t\t\t\tif ok {\n\t\t\t\t\t*v = *blobPrefix\n\t\t\t\t}\n\t\t\t\treturn ok\n\t\t\t},\n\t\t})\n\t}\n\tfor _, blobInfo := range segment.BlobItems {\n\t\tpage.Objects = append(page.Objects, &driver.ListObject{\n\t\t\tKey:     unescapeKey(ptrVal(blobInfo.Name)),\n\t\t\tModTime: *blobInfo.Properties.LastModified,\n\t\t\tSize:    *blobInfo.Properties.ContentLength,\n\t\t\tMD5:     blobInfo.Properties.ContentMD5,\n\t\t\tIsDir:   false,\n\t\t\tAsFunc: func(i any) bool {\n\t\t\t\tv, ok := i.(*container.BlobItem)\n\t\t\t\tif ok {\n\t\t\t\t\t*v = *blobInfo\n\t\t\t\t}\n\t\t\t\treturn ok\n\t\t\t},\n\t\t})\n\t}\n\tif resp.NextMarker != nil {\n\t\tpage.NextPageToken = []byte(*resp.NextMarker)\n\t}\n\tif len(segment.BlobPrefixes) > 0 && len(segment.BlobItems) > 0 {\n\t\tsort.Slice(page.Objects, func(i, j int) bool {\n\t\t\treturn page.Objects[i].Key < page.Objects[j].Key\n\t\t})\n\t}\n\treturn page, nil\n}\n\n// SignedURL implements driver.SignedURL.\nfunc (b *bucket) SignedURL(ctx context.Context, key string, opts *driver.SignedURLOptions) (string, error) {\n\tif opts.ContentType != \"\" || opts.EnforceAbsentContentType {\n\t\treturn \"\", gcerr.New(gcerr.Unimplemented, nil, 1, \"azureblob: does not enforce Content-Type on PUT\")\n\t}\n\n\tkey = escapeKey(key, false)\n\tblobClient := b.client.NewBlobClient(key)\n\tperms := sas.BlobPermissions{}\n\tswitch opts.Method {\n\tcase http.MethodGet:\n\t\tperms.Read = true\n\tcase http.MethodPut:\n\t\tperms.Create = true\n\t\tperms.Write = true\n\tcase http.MethodDelete:\n\t\tperms.Delete = true\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unsupported Method %s\", opts.Method)\n\t}\n\n\tif opts.BeforeSign != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tv, ok := i.(**sas.BlobPermissions)\n\t\t\tif ok {\n\t\t\t\t*v = &perms\n\t\t\t}\n\t\t\treturn ok\n\t\t}\n\t\tif err := opts.BeforeSign(asFunc); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\tstart := time.Now().UTC()\n\texpiry := start.Add(opts.Expiry)\n\treturn blobClient.GetSASURL(perms, expiry, &azblobblob.GetSASURLOptions{StartTime: &start})\n}\n\ntype writer struct {\n\tctx        context.Context\n\tclient     *blockblob.Client\n\tuploadOpts *azblob.UploadStreamOptions\n\n\t// Ends of an io.Pipe, created when the first byte is written.\n\tpw *io.PipeWriter\n\tpr *io.PipeReader\n\n\t// Alternatively, upload is set to true when Upload was\n\t// used to upload data.\n\tupload bool\n\n\tdonec chan struct{} // closed when done writing\n\t// The following fields will be written before donec closes:\n\terr error\n}\n\n// escapeKey does all required escaping for UTF-8 strings to work with Azure.\n// isPrefix indicates whether the  key is a full key, or a prefix/delimiter.\nfunc escapeKey(key string, isPrefix bool) string {\n\treturn escape.HexEscape(key, func(r []rune, i int) bool {\n\t\tc := r[i]\n\t\tswitch {\n\t\t// Azure does not work well with backslashes in blob names.\n\t\tcase c == '\\\\':\n\t\t\treturn true\n\t\t// Azure doesn't handle these characters (determined via experimentation).\n\t\tcase c < 32 || c == 34 || c == 35 || c == 37 || c == 63 || c == 127:\n\t\t\treturn true\n\t\t// Escape trailing \"/\" for full keys, otherwise Azure can't address them\n\t\t// consistently.\n\t\tcase !isPrefix && i == len(key)-1 && c == '/':\n\t\t\treturn true\n\t\t// For \"../\", escape the trailing slash.\n\t\tcase i > 1 && r[i] == '/' && r[i-1] == '.' && r[i-2] == '.':\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n}\n\n// unescapeKey reverses escapeKey.\nfunc unescapeKey(key string) string {\n\treturn escape.HexUnescape(key)\n}\n\n// NewTypedWriter implements driver.NewTypedWriter.\nfunc (b *bucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\tkey = escapeKey(key, false)\n\tblobClient := b.client.NewBlockBlobClient(key)\n\tif opts.BufferSize == 0 {\n\t\topts.BufferSize = defaultUploadBlockSize\n\t}\n\tif opts.MaxConcurrency == 0 {\n\t\topts.MaxConcurrency = defaultUploadBuffers\n\t}\n\n\tmd := make(map[string]*string, len(opts.Metadata))\n\tfor k, v := range opts.Metadata {\n\t\t// See the package comments for more details on escaping of metadata\n\t\t// keys & values.\n\t\te := escape.HexEscape(k, func(runes []rune, i int) bool {\n\t\t\tc := runes[i]\n\t\t\tswitch {\n\t\t\tcase i == 0 && c >= '0' && c <= '9':\n\t\t\t\treturn true\n\t\t\tcase escape.IsASCIIAlphanumeric(c):\n\t\t\t\treturn false\n\t\t\tcase c == '_':\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\t\tif _, ok := md[e]; ok {\n\t\t\treturn nil, fmt.Errorf(\"duplicate keys after escaping: %q => %q\", k, e)\n\t\t}\n\t\tescaped := escape.URLEscape(v)\n\t\tmd[e] = &escaped\n\t}\n\tuploadOpts := &azblob.UploadStreamOptions{\n\t\tBlockSize:   int64(opts.BufferSize),\n\t\tConcurrency: opts.MaxConcurrency,\n\t\tMetadata:    md,\n\t\tHTTPHeaders: &azblobblob.HTTPHeaders{\n\t\t\tBlobCacheControl:       &opts.CacheControl,\n\t\t\tBlobContentDisposition: &opts.ContentDisposition,\n\t\t\tBlobContentEncoding:    &opts.ContentEncoding,\n\t\t\tBlobContentLanguage:    &opts.ContentLanguage,\n\t\t\tBlobContentMD5:         opts.ContentMD5,\n\t\t\tBlobContentType:        &contentType,\n\t\t},\n\t}\n\tif opts.IfNotExist {\n\t\tetagAny := azcore.ETagAny\n\t\tuploadOpts.AccessConditions = &azblob.AccessConditions{\n\t\t\tModifiedAccessConditions: &azblobblob.ModifiedAccessConditions{\n\t\t\t\tIfNoneMatch: &etagAny,\n\t\t\t},\n\t\t}\n\t}\n\tif opts.BeforeWrite != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(**azblob.UploadStreamOptions)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = uploadOpts\n\t\t\treturn true\n\t\t}\n\t\tif err := opts.BeforeWrite(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &writer{\n\t\tctx:        ctx,\n\t\tclient:     blobClient,\n\t\tuploadOpts: uploadOpts,\n\t\tdonec:      make(chan struct{}),\n\t}, nil\n}\n\n// Write appends p to w.pw. User must call Close to close the w after done writing.\nfunc (w *writer) Write(p []byte) (int, error) {\n\t// Avoid opening the pipe for a zero-length write;\n\t// the concrete can do these for empty blobs.\n\tif len(p) == 0 {\n\t\treturn 0, nil\n\t}\n\tif w.pw == nil {\n\t\t// We'll write into pw and use pr as an io.Reader for the\n\t\t// Upload call to Azure.\n\t\tw.pr, w.pw = io.Pipe()\n\t\tw.open(w.pr, true)\n\t}\n\treturn w.pw.Write(p)\n}\n\n// Upload reads from r. Per the driver, it is guaranteed to be the only\n// write call for this writer.\nfunc (w *writer) Upload(r io.Reader) error {\n\tw.upload = true\n\tw.open(r, false)\n\treturn nil\n}\n\n// r may be nil if we're Closing and no data was written.\n// If closePipeOnError is true, w.pr will be closed if there's an\n// error uploading to Azure.\nfunc (w *writer) open(r io.Reader, closePipeOnError bool) {\n\tgo func() {\n\t\tdefer close(w.donec)\n\n\t\tif r == nil {\n\t\t\tr = http.NoBody\n\t\t}\n\t\t_, w.err = w.client.UploadStream(w.ctx, r, w.uploadOpts)\n\t\tif w.err != nil {\n\t\t\tif closePipeOnError {\n\t\t\t\tw.pr.CloseWithError(w.err)\n\t\t\t\tw.pr = nil\n\t\t\t}\n\t\t}\n\t}()\n}\n\n// Close completes the writer and closes it. Any error occurring during write will\n// be returned. If a writer is closed before any Write is called, Close will\n// create an empty file at the given key.\nfunc (w *writer) Close() error {\n\tif !w.upload {\n\t\tif w.pr != nil {\n\t\t\tdefer w.pr.Close()\n\t\t}\n\t\tif w.pw == nil {\n\t\t\t// We never got any bytes written. We'll write an http.NoBody.\n\t\t\tw.open(nil, false)\n\t\t} else if err := w.pw.Close(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t<-w.donec\n\treturn w.err\n}\n"
  },
  {
    "path": "blob/azureblob/azureblob_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage azureblob\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob\"\n\tazblobblob \"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/blob\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/blob/drivertest\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\n// Prerequisites for -record mode\n// 1. Sign-in to your Azure Subscription at http://portal.azure.com.\n//\n// 2. Create a Storage Account.\n//\n// 3. Locate the Access Key (Primary or Secondary) under your Storage Account > Settings > Access Keys.\n//\n// 4. Set the environment variables AZURE_STORAGE_ACCOUNT, AZURE_STORAGE_KEY to\n//    the storage account name and your access key.\n//\n// 5. Create a container in your Storage Account > Blob. Update the bucketName\n// constant to your container name.\n//\n// Here is a step-by-step walkthrough using the Azure Portal\n// https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal\n//\n// 5. Run the tests with -record.\n\nconst (\n\tbucketName  = \"go-cloud-bucket\"\n\taccountName = \"gocloudblobtests\"\n)\n\ntype harness struct {\n\tclientFn   func(bucketName string) (*container.Client, error)\n\tcloser     func()\n\thttpClient *http.Client\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tvar key string\n\tif *setup.Record {\n\t\tname := os.Getenv(\"AZURE_STORAGE_ACCOUNT\")\n\t\tif name != accountName {\n\t\t\tt.Fatalf(\"Please update the accountName constant to match your settings file so future records work (%q vs %q)\", name, accountName)\n\t\t}\n\t\tkey = os.Getenv(\"AZURE_STORAGE_KEY\")\n\t} else {\n\t\t// In replay mode, we use fake credentials.\n\t\tkey = base64.StdEncoding.EncodeToString([]byte(\"FAKECREDS\"))\n\t}\n\tcredential, err := azblob.NewSharedKeyCredential(accountName, key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\thttpClient, done := setup.NewAzureTestBlobClient(ctx, t)\n\t// Hack to work around the fact that SignedURLs for PUTs are not fully\n\t// portable; they require a \"x-ms-blob-type\" header. Intercept all\n\t// requests, and insert that header where needed.\n\thttpClient.Transport = &requestInterceptor{httpClient.Transport}\n\tclientOptions := container.ClientOptions{}\n\tclientOptions.Transport = httpClient\n\tserviceURL := fmt.Sprintf(\"https://%s.blob.core.windows.net\", accountName)\n\tclientFn := func(bucketName string) (*container.Client, error) {\n\t\treturn container.NewClientWithSharedKeyCredential(serviceURL+\"/\"+bucketName, credential, &clientOptions)\n\t}\n\treturn &harness{clientFn: clientFn, closer: done, httpClient: httpClient}, nil\n}\n\n// requestInterceptor implements a hack for the lack of portability for\n// SignedURLs for PUT. It adds the required \"x-ms-blob-type\" header where\n// Azure requires it.\ntype requestInterceptor struct {\n\tbase http.RoundTripper\n}\n\nfunc (ri *requestInterceptor) RoundTrip(req *http.Request) (*http.Response, error) {\n\tif req.Method == http.MethodPut && strings.Contains(req.URL.Path, \"blob-for-signing\") {\n\t\treqClone := *req\n\t\treqClone.Header.Add(\"x-ms-blob-type\", \"BlockBlob\")\n\t\treq = &reqClone\n\t}\n\treturn ri.base.RoundTrip(req)\n}\n\nfunc (h *harness) HTTPClient() *http.Client {\n\treturn h.httpClient\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Bucket, error) {\n\tclient, err := h.clientFn(bucketName)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn openBucket(ctx, client, nil)\n}\n\nfunc (h *harness) MakeDriverForNonexistentBucket(ctx context.Context) (driver.Bucket, error) {\n\tclient, err := h.clientFn(\"bucket-does-not-exist\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn openBucket(ctx, client, nil)\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc TestConformance(t *testing.T) {\n\t// See setup instructions above for more details.\n\t// Disable the conformance tests, we don't have an Azure account anymore.\n\t// drivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyContentLanguage{}})\n}\n\nfunc BenchmarkAzureblob(b *testing.B) {\n\tname := os.Getenv(\"AZURE_STORAGE_ACCOUNT\")\n\tkey := os.Getenv(\"AZURE_STORAGE_KEY\")\n\tcredential, err := azblob.NewSharedKeyCredential(name, key)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tcontainerURL := fmt.Sprintf(\"https://%s.blob.core.windows.net/%s\", accountName, bucketName)\n\tclient, err := container.NewClientWithSharedKeyCredential(containerURL, credential, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tbkt, err := OpenBucket(context.Background(), client, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, bkt)\n}\n\nvar language = \"nl\"\n\n// verifyContentLanguage uses As to access the underlying Azure types and\n// read/write the ContentLanguage field.\ntype verifyContentLanguage struct{}\n\nfunc (verifyContentLanguage) Name() string {\n\treturn \"verify ContentLanguage can be written and read through As\"\n}\n\nfunc (verifyContentLanguage) BucketCheck(b *blob.Bucket) error {\n\tvar u *container.Client\n\tif !b.As(&u) {\n\t\treturn errors.New(\"Bucket.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) ErrorCheck(b *blob.Bucket, err error) error {\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeRead(as func(any) bool) error {\n\tvar u *azblob.DownloadStreamOptions\n\tif !as(&u) {\n\t\treturn fmt.Errorf(\"BeforeRead As failed to get %T\", u)\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeWrite(as func(any) bool) error {\n\tvar azOpts *azblob.UploadStreamOptions\n\tif !as(&azOpts) {\n\t\treturn errors.New(\"Writer.As failed\")\n\t}\n\tazOpts.HTTPHeaders.BlobContentLanguage = &language\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeCopy(as func(any) bool) error {\n\tvar co *azblobblob.StartCopyFromURLOptions\n\tif !as(&co) {\n\t\treturn errors.New(\"BeforeCopy.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeList(as func(any) bool) error {\n\tvar azOpts *container.ListBlobsHierarchyOptions\n\tif !as(&azOpts) {\n\t\treturn errors.New(\"BeforeList.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeSign(as func(any) bool) error {\n\tvar azOpts *sas.BlobPermissions\n\tif !as(&azOpts) {\n\t\treturn errors.New(\"BeforeSign.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) AttributesCheck(attrs *blob.Attributes) error {\n\tvar resp azblobblob.GetPropertiesResponse\n\tif !attrs.As(&resp) {\n\t\treturn errors.New(\"Attributes.As returned false\")\n\t}\n\tif got := *resp.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) ReaderCheck(r *blob.Reader) error {\n\tvar resp azblobblob.DownloadStreamResponse\n\tif !r.As(&resp) {\n\t\treturn errors.New(\"Reader.As returned false\")\n\t}\n\tif got := *resp.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) ListObjectCheck(o *blob.ListObject) error {\n\tif o.IsDir {\n\t\tvar prefix container.BlobPrefix\n\t\tif !o.As(&prefix) {\n\t\t\treturn errors.New(\"ListObject.As for dir returned false\")\n\t\t}\n\t\treturn nil\n\t}\n\tvar item container.BlobItem\n\tif !o.As(&item) {\n\t\treturn errors.New(\"ListObject.As for object returned false\")\n\t}\n\tif got := *item.Properties.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\nfunc TestOpenBucket(t *testing.T) {\n\ttests := []struct {\n\t\tdescription string\n\t\tnilClient   bool\n\t\taccountName string\n\t\twant        string\n\t\twantErr     bool\n\t}{\n\t\t{\n\t\t\tdescription: \"nil client results in error\",\n\t\t\tnilClient:   true,\n\t\t\taccountName: \"myaccount\",\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"success\",\n\t\t\taccountName: \"myaccount\",\n\t\t\twant:        \"foo\",\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.description, func(t *testing.T) {\n\t\t\tvar client *container.Client\n\t\t\tvar err error\n\t\t\tif !test.nilClient {\n\t\t\t\tclient, err = container.NewClientWithNoCredential(\"\", nil)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Create portable type.\n\t\t\tb, err := OpenBucket(ctx, client, nil)\n\t\t\tif b != nil {\n\t\t\t\tdefer b.Close()\n\t\t\t}\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenerFromEnv(t *testing.T) {\n\ttests := []struct {\n\t\taccountName       string\n\t\taccountKey        string\n\t\tsasToken          string\n\t\tconnectionString  string\n\t\tconnectionString2 string\n\t\tdomain            string\n\t\tprotocol          string\n\t\tisCDN             bool\n\t\tisLocalEmulator   bool\n\n\t\twant     *credInfoT\n\t\twantOpts *ServiceURLOptions\n\t}{\n\t\t{\n\t\t\t// Shared key.\n\t\t\taccountName: \"myaccount\",\n\t\t\taccountKey:  \"fakecreds\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:    credTypeSharedKey,\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t\tAccountKey:  \"fakecreds\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// SAS Token.\n\t\t\taccountName: \"myaccount\",\n\t\t\tsasToken:    \"a-sas-token\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:    credTypeSASViaNone,\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t\tSASToken:    \"a-sas-token\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Connection string.\n\t\t\taccountName:      \"myaccount\",\n\t\t\tconnectionString: \"a-connection-string\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:         credTypeConnectionString,\n\t\t\t\tAccountName:      \"myaccount\",\n\t\t\t\tConnectionString: \"a-connection-string\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Connection string provides default protocol and account name.\n\t\t\tconnectionString: \"DefaultEndpointsProtocol=https;AccountName=another-account\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:         credTypeConnectionString,\n\t\t\t\tConnectionString: \"DefaultEndpointsProtocol=https;AccountName=another-account\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName: \"another-account\",\n\t\t\t\tProtocol:    \"https\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Alternate connection string.\n\t\t\taccountName:       \"myaccount\",\n\t\t\tconnectionString2: \"a-connection-string\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:         credTypeConnectionString,\n\t\t\t\tAccountName:      \"myaccount\",\n\t\t\t\tConnectionString: \"a-connection-string\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Default.\n\t\t\taccountName: \"anotheraccount\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:    credTypeDefault,\n\t\t\t\tAccountName: \"anotheraccount\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName: \"anotheraccount\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Setting protocol and domain.\n\t\t\taccountName: \"myaccount\",\n\t\t\tprotocol:    \"http\",\n\t\t\tdomain:      \"foo.bar.com\",\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:    credTypeDefault,\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName:   \"myaccount\",\n\t\t\t\tProtocol:      \"http\",\n\t\t\t\tStorageDomain: \"foo.bar.com\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Local emulator.\n\t\t\taccountName:     \"myaccount\",\n\t\t\tisLocalEmulator: true,\n\t\t\twant: &credInfoT{\n\t\t\t\tCredType:    credTypeDefault,\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\twantOpts: &ServiceURLOptions{\n\t\t\t\tAccountName:     \"myaccount\",\n\t\t\t\tIsLocalEmulator: true,\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Setenv(\"AZURE_STORAGE_ACCOUNT\", test.accountName)\n\t\tt.Setenv(\"AZURE_STORAGE_KEY\", test.accountKey)\n\t\tt.Setenv(\"AZURE_STORAGE_SAS_TOKEN\", test.sasToken)\n\t\tt.Setenv(\"AZURE_STORAGE_CONNECTION_STRING\", test.connectionString)\n\t\tt.Setenv(\"AZURE_STORAGEBLOB_CONNECTIONSTRING\", test.connectionString2)\n\t\tt.Setenv(\"AZURE_STORAGE_DOMAIN\", test.domain)\n\t\tt.Setenv(\"AZURE_STORAGE_PROTOCOL\", test.protocol)\n\t\tif test.isCDN {\n\t\t\tt.Setenv(\"AZURE_STORAGE_IS_CDN\", \"true\")\n\t\t} else {\n\t\t\tt.Setenv(\"AZURE_STORAGE_IS_CDN\", \"\")\n\t\t}\n\t\tif test.isLocalEmulator {\n\t\t\tt.Setenv(\"AZURE_STORAGE_IS_LOCAL_EMULATOR\", \"true\")\n\t\t} else {\n\t\t\tt.Setenv(\"AZURE_STORAGE_IS_LOCAL_EMULATOR\", \"\")\n\t\t}\n\n\t\tgot := newCredInfoFromEnv()\n\t\tif diff := cmp.Diff(got, test.want); diff != \"\" {\n\t\t\tt.Errorf(\"unexpected diff in credInfo: %s\", diff)\n\t\t}\n\t\tgotOpts := NewDefaultServiceURLOptions()\n\t\tif diff := cmp.Diff(gotOpts, test.wantOpts); diff != \"\" {\n\t\t\tt.Errorf(\"unexpected diff in Options: %s\", diff)\n\t\t}\n\n\t}\n}\n\nfunc TestNewServiceURL(t *testing.T) {\n\ttests := []struct {\n\t\topts             ServiceURLOptions\n\t\tquery            url.Values\n\t\twant             ServiceURL\n\t\twantErrOverrides bool\n\t\twantErrURL       bool\n\t}{\n\t\t{\n\t\t\t// Unknown query parameter.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"foo\": {\"bar\"},\n\t\t\t},\n\t\t\twantErrOverrides: true,\n\t\t},\n\t\t{\n\t\t\t// Duplicate query parameter.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"domain\": {\"blob.core.usgovcloudapi.net\", \"blob.core.windows.net\"},\n\t\t\t},\n\t\t\twantErrOverrides: true,\n\t\t},\n\t\t{\n\t\t\t// Missing account name.\n\t\t\topts:       ServiceURLOptions{},\n\t\t\twantErrURL: true,\n\t\t},\n\t\t{\n\t\t\t// Account name set in the query\n\t\t\topts: ServiceURLOptions{},\n\t\t\tquery: url.Values{\n\t\t\t\t\"storage_account\": {\"testaccount\"},\n\t\t\t},\n\t\t\twant: \"https://testaccount.blob.core.windows.net\",\n\t\t},\n\t\t{\n\t\t\t// Basic working case.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\twant: \"https://myaccount.blob.core.windows.net\",\n\t\t},\n\t\t{\n\t\t\t// SASToken.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t\tSASToken:    \"my-sas-token\",\n\t\t\t},\n\t\t\twant: \"https://myaccount.blob.core.windows.net?my-sas-token\",\n\t\t},\n\t\t{\n\t\t\t// Setting domain from ServiceURLOptions.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName:   \"myaccount\",\n\t\t\t\tStorageDomain: \"blob.core.usgovcloudapi.net\",\n\t\t\t},\n\t\t\twant: \"https://myaccount.blob.core.usgovcloudapi.net\",\n\t\t},\n\t\t{\n\t\t\t// Setting domain from the URL.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName:   \"myaccount\",\n\t\t\t\tStorageDomain: \"overridden\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"domain\": {\"blob.core.usgovcloudapi.net\"},\n\t\t\t},\n\t\t\twant: \"https://myaccount.blob.core.usgovcloudapi.net\",\n\t\t},\n\t\t{\n\t\t\t// Setting protocol from ServiceURLOptions.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t\tProtocol:    \"http\",\n\t\t\t},\n\t\t\twant: \"http://myaccount.blob.core.windows.net\",\n\t\t},\n\t\t{\n\t\t\t// Setting protocol from the URL.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t\tProtocol:    \"https\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"protocol\": {\"http\"},\n\t\t\t},\n\t\t\twant: \"http://myaccount.blob.core.windows.net\",\n\t\t},\n\t\t{\n\t\t\t// Setting IsCDN from ServiceURLOptions.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t\tIsCDN:       true,\n\t\t\t},\n\t\t\twant: \"https://blob.core.windows.net\",\n\t\t},\n\t\t{\n\t\t\t// Setting IsCDN from the URL.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"cdn\": {\"true\"},\n\t\t\t},\n\t\t\twant: \"https://blob.core.windows.net\",\n\t\t},\n\t\t{\n\t\t\t// Local emulator, implicit from domain.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName:   \"myaccount\",\n\t\t\t\tProtocol:      \"http\",\n\t\t\t\tStorageDomain: \"localhost:10001\",\n\t\t\t},\n\t\t\twant: \"http://localhost:10001/myaccount\",\n\t\t},\n\t\t{\n\t\t\t// Local emulator, implicit from domain through URL parameter.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName: \"myaccount\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"protocol\": {\"http\"},\n\t\t\t\t\"domain\":   {\"127.0.0.1:10001\"},\n\t\t\t},\n\t\t\twant: \"http://127.0.0.1:10001/myaccount\",\n\t\t},\n\t\t{\n\t\t\t// Local emulator, explicit through ServiceURLOptions.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName:     \"myaccount\",\n\t\t\t\tStorageDomain:   \"mylocalemulator\",\n\t\t\t\tIsLocalEmulator: true,\n\t\t\t},\n\t\t\twant: \"https://mylocalemulator/myaccount\",\n\t\t},\n\t\t{\n\t\t\t// Local emulator, explicit through URL parameter.\n\t\t\topts: ServiceURLOptions{\n\t\t\t\tAccountName:   \"myaccount\",\n\t\t\t\tStorageDomain: \"mylocalemulator\",\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"localemu\": {\"true\"},\n\t\t\t},\n\t\t\twant: \"https://mylocalemulator/myaccount\",\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\topts, err := test.opts.withOverrides(test.query)\n\t\tif (err != nil) != test.wantErrOverrides {\n\t\t\tt.Fatalf(\"withOverrides got err %v want error %v\", err, test.wantErrOverrides)\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tgot, err := NewServiceURL(opts)\n\t\tif (err != nil) != test.wantErrURL {\n\t\t\tt.Errorf(\"NewServiceURL got err %v want error %v\", err, test.wantErrURL)\n\t\t}\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"got %q want %q\", got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestOpenBucketFromURL(t *testing.T) {\n\tt.Setenv(\"AZURE_STORAGE_ACCOUNT\", \"my-account\")\n\tt.Setenv(\"AZURE_STORAGE_KEY\", \"bXlrZXk=\") // mykey base64 encoded\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"azblob://mybucket\", false},\n\t\t// With storage domain.\n\t\t{\"azblob://mybucket?domain=blob.core.usgovcloudapi.net\", false},\n\t\t// With duplicate storage domain.\n\t\t{\"azblob://mybucket?domain=blob.core.usgovcloudapi.net&domain=blob.core.windows.net\", true},\n\t\t// With protocol.\n\t\t{\"azblob://mybucket?protocol=http\", false},\n\t\t// With invalid protocol.\n\t\t{\"azblob://mybucket?protocol=ftp\", true},\n\t\t// With Account.\n\t\t{\"azblob://mybucket?storage_account=test\", false},\n\t\t// With CDN.\n\t\t{\"azblob://mybucket?cdn=true\", false},\n\t\t// With invalid CDN.\n\t\t{\"azblob://mybucket?cdn=42\", true},\n\t\t// With local emulator.\n\t\t{\"azblob://mybucket?localemu=true\", false},\n\t\t// With invalid local emulator.\n\t\t{\"azblob://mybucket?localemu=42\", true},\n\t\t// Invalid parameter.\n\t\t{\"azblob://mybucket?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tb, err := blob.OpenBucket(ctx, test.URL)\n\t\tif b != nil {\n\t\t\tdefer b.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "blob/azureblob/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage azureblob_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/azureblob\"\n)\n\nfunc ExampleOpenBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tconst (\n\t\t// The storage container to access.\n\t\tcontainerName = \"my-container\"\n\t)\n\n\t// Construct the service URL.\n\t// There are many forms of service URLs, see ServiceURLOptions.\n\topts := azureblob.NewDefaultServiceURLOptions()\n\tserviceURL, err := azureblob.NewServiceURL(opts)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// There are many ways to authenticate to Azure.\n\t// This approach uses environment variables as described in azureblob package\n\t// documentation.\n\t// For example, to use shared key authentication, you would set\n\t// AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_KEY.\n\t// To use a SAS token, you would set AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_SAS_TOKEN.\n\t// You can also construct a client using the azblob constructors directly, like\n\t// azblob.NewServiceClientWithSharedKey.\n\tclient, err := azureblob.NewDefaultClient(serviceURL, containerName)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a *blob.Bucket.\n\tb, err := azureblob.OpenBucket(ctx, client, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Now we can use b to read or write files to the container.\n\tdata, err := b.ReadAll(ctx, \"my-key\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t_ = data\n}\n\nfunc Example_openBucketFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/blob/azureblob\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// blob.OpenBucket creates a *blob.Bucket from a URL.\n\t// This URL will open the container \"my-container\" using default\n\t// credentials found in environment variables as documented in\n\t// the package.\n\t// Assuming AZURE_STORAGE_ACCOUNT is set to \"myaccount\",\n\t// and other options aren't set, the service URL will look like:\n\t// \"https://myaccount.blob.core.windows.net/my-container\".\n\tbucket, err := blob.OpenBucket(ctx, \"azblob://my-container\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n\n\t// Another example, against a local emulator.\n\t// Assuming AZURE_STORAGE_ACCOUNT is set to \"myaccount\",\n\t// the service URL will look like:\n\t// \"http://localhost:10001/myaccount/my-container\".\n\tlocalbucket, err := blob.OpenBucket(ctx, \"azblob://my-container?protocol=http&domain=localhost:10001\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer localbucket.Close()\n}\n"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCoCXoOugAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"263b7cb086987c42\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B72624DD\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vo7q9sPVKY0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326ea65-501e-0022-2659-59dd3d000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b0c2271384f1ba35\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B72624DD\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326ea81-501e-0022-3f59-59dd3d000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4958b3f90ff42b91\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B72624DD\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326ea96-501e-0022-5359-59dd3d000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"3ade4c5a78464254\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=mydir\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326eab1-501e-0022-6e59-59dd3d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5teWRpcjwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPm15ZGlyLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"92bb4ce2fe59cf71\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=mydir%2Fas-test\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326eac5-501e-0022-0159-59dd3d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5teWRpci9hcy10ZXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+bXlkaXIvYXMtdGVzdDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5XZWQsIDA3IEZlYiAyMDI0IDAwOjA3OjA0IEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5XZWQsIDA3IEZlYiAyMDI0IDAwOjA3OjA0IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQzI3NzBCNzI2MjRERDwvRXRhZz48Q29udGVudC1MZW5ndGg+MTE8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5Yclk3dStBZTd0Q1R5eUs3ajFyTnd3PT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"14ae09b3f7f54dda\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key-does-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326eadb-501e-0022-1759-59dd3d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjkzMjZlYWRiLTUwMWUtMDAyMi0xNzU5LTU5ZGQzZDAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDc6MDQuMzMzNjA0Nlo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"99d0ff29b9a3532b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B73D7A0F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"1a08d5cd-b2c2-425d-9d53-4ebf7e80652c\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326eaef-501e-0022-2a59-59dd3d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d158d20bf63fb935\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326eb1e-501e-0022-5859-59dd3d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a7c2e1ede335ea4f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9326eb3a-501e-0022-7259-59dd3d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestAs/verify_ContentLanguage_can_be_written_and_read_through_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCnNM6o9QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"01721fa428e61498\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"nl\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B6FCF804\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vo7q9sPVKY0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef84252-001e-005d-0b59-5912a6000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a7694ffd8490b83d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B6FCF804\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef84282-001e-005d-3959-5912a6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8bf2231dfb60c2bd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B6FCF804\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef842a6-001e-005d-5c59-5912a6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"f180d69676c1b7c9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=mydir\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:03 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef842cf-001e-005d-0559-5912a6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5teWRpcjwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPm15ZGlyLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"40688ac858bc60be\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=mydir%2Fas-test\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef842f4-001e-005d-2a59-5912a6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5teWRpci9hcy10ZXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+bXlkaXIvYXMtdGVzdDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5XZWQsIDA3IEZlYiAyMDI0IDAwOjA3OjAzIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5XZWQsIDA3IEZlYiAyMDI0IDAwOjA3OjAzIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQzI3NzBCNkZDRjgwNDwvRXRhZz48Q29udGVudC1MZW5ndGg+MTE8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2U+bmw8L0NvbnRlbnQtTGFuZ3VhZ2U+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WHJZN3UrQWU3dENUeXlLN2oxck53dz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"e83287343cdc46ce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key-does-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef8431c-001e-005d-5259-5912a6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjZlZjg0MzFjLTAwMWUtMDA1ZC01MjU5LTU5MTJhNjAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDc6MDQuMDY0MTQwMlo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"8d127e157ee5ebb5\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B711405A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"37af6199-5347-4d3f-af0f-4f9f6c4756a1\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef8433e-001e-005d-7459-5912a6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"983526e9b3abd7ac\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef84385-001e-005d-3b59-5912a6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d61ab5e3f854200d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:04 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ef843ab-001e-005d-6159-5912a6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestAttributes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB3AyjflwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"07d79e112173f31e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"inline\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"en\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"SGVsbG8gV29ybGQh\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099E0B43E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"peH8Xsgc5QI=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb2518f-c01e-006d-0359-59ac69000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9099cbc51fadb608\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/not-found\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb25196-c01e-006d-0859-59ac69000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9d849cfb58368608\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb2519e-c01e-006d-0e59-59ac69000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5d6522afd6f2795c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb251a7-c01e-006d-1559-59ac69000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"874738484cf4a9d1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099E0B43E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb251ac-c01e-006d-1a59-59ac69000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fd98b60aafcc104c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099E0B43E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb251af-c01e-006d-1d59-59ac69000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQh\"\n      }\n    },\n    {\n      \"ID\": \"67a95fc9e9c49265\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"SGVsbG8gV29ybGQh\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099F3EB4C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"peH8Xsgc5QI=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb251b6-c01e-006d-2259-59ac69000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"291af2e2795f3fde\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099F3EB4C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb251b8-c01e-006d-2459-59ac69000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2680d47826e7406a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4eb251bb-c01e-006d-2759-59ac69000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestCanceledWrite/BlobExists.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCiBLAKEwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3d7ad495cc57c2ad\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3865400\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vo7q9sPVKY0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4be00b01-d01e-003c-1759-5931e5000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2731ae1b79161b62\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3865400\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4be00b08-d01e-003c-1c59-5931e5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"a4aaa3ea871ace92\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3865400\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4be00b10-d01e-003c-2259-5931e5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"2223836ab248b04b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4be00b1b-d01e-003c-2a59-5931e5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestCanceledWrite/EmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMChNFKfDgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6e9395cdc202785a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"92be14ee-101e-006e-7559-594d0d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjkyYmUxNGVlLTEwMWUtMDA2ZS03NTU5LTU5NGQwZDAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6NTcuOTUzNDE3Nlo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"17768546db354bf1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"92be14f8-101e-006e-7d59-594d0d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjkyYmUxNGY4LTEwMWUtMDA2ZS03ZDU5LTU5NGQwZDAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6NTcuOTcyNDA2MVo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestCanceledWrite/NonEmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMChOjAhtgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e07ece6d59da230b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5dc61a7a-c01e-0030-2459-59a6ed000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjVkYzYxYTdhLWMwMWUtMDAzMC0yNDU5LTU5YTZlZDAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6NTguMDQ4Nzc3OFo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"09faf066d14d05fe\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5dc61a85-c01e-0030-2b59-59a6ed000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjVkYzYxYTg1LWMwMWUtMDAzMC0yYjU5LTU5YTZlZDAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6NTguMDY4NzY1MVo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestConcurrentWriteAndRead.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCiDd39qwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"35faf9bb0b90a459\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key5\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"YfRaKQkG0Wv1UeeMsD1f+Q==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"YfRaKQkG0Wv1UeeMsD1f+Q==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A45EEC\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"nDUBXIJsdys=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"80b9adee-b01e-0015-3759-590f91000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"90273f42e536a416\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key12\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"VkGQ+3LJseHAFopbb+BYvg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"VkGQ+3LJseHAFopbb+BYvg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A374AC\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"rz0qlyRkeGI=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"b7910625-301e-0034-7b59-592bea000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ff9e31c2d535e7bb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key9\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"kfsiuKRZ73D7CzauKodAhg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"kfsiuKRZ73D7CzauKodAhg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A45EEC\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"fb4JIMHbjS0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c80655ca-601e-0074-1859-592cd2000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e8c86a57285e0806\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key0\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"Yg8LZ6kff3QVG8W+dFtxEA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"Yg8LZ6kff3QVG8W+dFtxEA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A17938\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"TrYi62fTgmQ=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c6b7d4fb-601e-0064-1359-59e9ba000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"47a7a68a5318a47a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key17\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"32eeXsj7ZyhCl0o20wPQ/w==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"32eeXsj7ZyhCl0o20wPQ/w==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A26369\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"v6kY2Ee1eCA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fc0d49d0-401e-005c-6d59-594d7a000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"80d670b0daa1350d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key14\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"NlFDUFM0TpF1S+MXE1PxDg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"NlFDUFM0TpF1S+MXE1PxDg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A437E4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"bEbvZqMjdxU=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8232c10a-301e-0046-0259-592ca5000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"35d86e59500abe24\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"H06jyF3ZsJDOcwyB5gg+zw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"H06jyF3ZsJDOcwyB5gg+zw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A1EE44\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"yEGoCGhcnIo=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fb4f5b57-401e-002e-4859-594a35000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ae2c68ddada02447\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key15\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"qHqy3TOCPLWABZ/YTEeiAg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"qHqy3TOCPLWABZ/YTEeiAg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A1EE44\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"ODJGMkkTnLQ=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"7183feb5-601e-004b-3959-59e471000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9d050226ccfc3ade\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key1\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"qo85ln3rRBpudISWOUWpYA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"qo85ln3rRBpudISWOUWpYA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"GsKLv43jacU=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"7f19919b-501e-0050-1d59-59da72000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"07f3cf75031f4576\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key10\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"AXKK1JVcZ791KxchIXYNNg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"AXKK1JVcZ791KxchIXYNNg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"6rFlhaysafs=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"87762cce-f01e-002b-7f59-5998ee000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9b36985b9de1ac64\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key11\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"AbDmWR96f1VIFnW4JQ5/SA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"AbDmWR96f1VIFnW4JQ5/SA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vsXM0Uacglo=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"395524dc-501e-000d-0659-59d0f6000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cc9a0d78b1ea1b8b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key19\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"2w9S4aRqKABHoeAhyiAJMA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"2w9S4aRqKABHoeAhyiAJMA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A3E9D0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"fNLdKcDyd1c=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f149b5a4-801e-007c-0f59-5936dd000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a39417c1066e986a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key6\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"lko2uDqoJrgEyYNnvcJ6vw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"lko2uDqoJrgEyYNnvcJ6vw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4FB11\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"Czpt+e8bk/0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f4beaff0-f01e-0049-4259-595ac9000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"20eb4c7fe547675a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key13\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"SsTzFZ3m7R1NrIc42UKW+Q==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"SsTzFZ3m7R1NrIc42UKW+Q==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A485F7\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"+0mDw85Uk8M=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a431884f-601e-0080-3959-59e724000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c12d8dddbd959410\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key2\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"ZUHn/UhoC5tg7AVev6McAg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"ZUHn/UhoC5tg7AVev6McAg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"jc3nGuCUjRM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"56e8fa50-001e-002f-5f59-5915e9000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4b5f7a6bbc22547a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key3\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"7tBPOyKIo0omYOmbN3Ht7w==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"7tBPOyKIo0omYOmbN3Ht7w==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4FB11\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"2blOTgqkZrI=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2b3e4806-b01e-003a-3c59-59025a000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a44153651eaec20d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key8\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"qPZPE0uAGBNKE6LhEQTA8Q==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"qPZPE0uAGBNKE6LhEQTA8Q==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4D408\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"KcqgdCvrZow=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6a2d0c30-801e-0021-2359-593c59000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c0aad7b8e8f4e0f6\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key16\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"65n9CjdrJkNQEaG4fFWMgQ==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"65n9CjdrJkNQEaG4fFWMgQ==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4ACFF\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"692xjK2Fk4E=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"41c4e666-a01e-0036-5159-599552000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"753addf13ba893a4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key18\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"wZvI1MtOgANGQD0gzZ4NUg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"wZvI1MtOgANGQD0gzZ4NUg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4FB11\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"KKZ0fSrCnPY=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2597e5c4-f01e-0082-4d59-59599c000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e4525c468c961e68\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key7\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"kbuiTp5JEugjwAkgztPoXA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"kbuiTp5JEugjwAkgztPoXA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A59738\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"X07ErQUreFw=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df382daf-c01e-001f-2859-59ab26000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"26fe097b8dfc0dd9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"H06jyF3ZsJDOcwyB5gg+zw==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A1EE44\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fb4f5b71-401e-002e-6159-594a35000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA==\"\n      }\n    },\n    {\n      \"ID\": \"07deadfa1fa50a87\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key1\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"qo85ln3rRBpudISWOUWpYA==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c6b7d51f-601e-0064-3559-59e9ba000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==\"\n      }\n    },\n    {\n      \"ID\": \"5f04ee03f54cc943\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key13\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"SsTzFZ3m7R1NrIc42UKW+Q==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A485F7\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c6b7d52f-601e-0064-4359-59e9ba000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ==\"\n      }\n    },\n    {\n      \"ID\": \"dedf915bb1654380\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key2\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"ZUHn/UhoC5tg7AVev6McAg==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fb4f5b80-401e-002e-6f59-594a35000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg==\"\n      }\n    },\n    {\n      \"ID\": \"d17cf656d5d64521\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key14\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"NlFDUFM0TpF1S+MXE1PxDg==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A437E4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c6b7d539-601e-0064-4d59-59e9ba000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg==\"\n      }\n    },\n    {\n      \"ID\": \"8d7807162b60f184\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key10\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"AXKK1JVcZ791KxchIXYNNg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fb4f5b88-401e-002e-7759-594a35000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==\"\n      }\n    },\n    {\n      \"ID\": \"c6bfcbf1e1a2b857\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key5\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"YfRaKQkG0Wv1UeeMsD1f+Q==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A45EEC\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c6b7d548-601e-0064-5959-59e9ba000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ==\"\n      }\n    },\n    {\n      \"ID\": \"0afd2bf72ee252b2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key16\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"65n9CjdrJkNQEaG4fFWMgQ==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4ACFF\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fb4f5b8f-401e-002e-7e59-594a35000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA==\"\n      }\n    },\n    {\n      \"ID\": \"1ec32073ef487318\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key17\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"32eeXsj7ZyhCl0o20wPQ/w==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A26369\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"de1d6d10-501e-006f-1259-5912d1000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ==\"\n      }\n    },\n    {\n      \"ID\": \"6dca688273167df4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key9\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"kfsiuKRZ73D7CzauKodAhg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A45EEC\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e9dfb127-901e-0012-4459-5963f2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ==\"\n      }\n    },\n    {\n      \"ID\": \"75c7c90a95321532\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key19\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"2w9S4aRqKABHoeAhyiAJMA==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A3E9D0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fbd8baf5-b01e-002a-4059-59c732000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw==\"\n      }\n    },\n    {\n      \"ID\": \"27714b93c7c1d3a0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key6\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"lko2uDqoJrgEyYNnvcJ6vw==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4FB11\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"241ca3e9-201e-0038-3859-59bce2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg==\"\n      }\n    },\n    {\n      \"ID\": \"2185cabf029d51a7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key7\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"kbuiTp5JEugjwAkgztPoXA==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A59738\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a0c1845f-801e-0053-1a59-593b16000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==\"\n      }\n    },\n    {\n      \"ID\": \"df34ad02c8238aaf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key0\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"Yg8LZ6kff3QVG8W+dFtxEA==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A17938\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"52966d83-801e-006c-1059-59f3b5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\n      }\n    },\n    {\n      \"ID\": \"ff47e414d7444d0e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key18\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"wZvI1MtOgANGQD0gzZ4NUg==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4FB11\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"20ff1db7-a01e-0009-6559-595df1000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg==\"\n      }\n    },\n    {\n      \"ID\": \"c8381a049bf86db2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key12\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"VkGQ+3LJseHAFopbb+BYvg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A374AC\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ca36575d-e01e-0008-4859-59022d000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA==\"\n      }\n    },\n    {\n      \"ID\": \"4fa11485a6df10c4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key8\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"qPZPE0uAGBNKE6LhEQTA8Q==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4D408\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6b619a89-901e-004f-3659-596976000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA==\"\n      }\n    },\n    {\n      \"ID\": \"613e20421f735bda\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key3\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"7tBPOyKIo0omYOmbN3Ht7w==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A4FB11\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d5a00ca0-701e-0068-2059-597eb2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==\"\n      }\n    },\n    {\n      \"ID\": \"469ce3073f304ba7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key11\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"AbDmWR96f1VIFnW4JQ5/SA==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A54925\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e389d7eb-801e-000e-0d59-593192000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw==\"\n      }\n    },\n    {\n      \"ID\": \"3aba728c3505516c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key15\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Md5\": [\n            \"qHqy3TOCPLWABZ/YTEeiAg==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3A1EE44\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"7f537300-901e-0060-4559-5964bd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw==\"\n      }\n    },\n    {\n      \"ID\": \"ab3481045a6727db\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key19\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e60-001e-0062-5359-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"95605225d1d308a6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key18\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e67-001e-0062-5859-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"23562f8d5b876fdf\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key17\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e6a-001e-0062-5b59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ee72eb93c46a680a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key16\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e6f-001e-0062-6059-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e212bc4636ab58ad\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key15\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e75-001e-0062-6659-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aaa999d25bce69c4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key14\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e78-001e-0062-6959-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b404c4503de3d99d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key13\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e7c-001e-0062-6d59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"704a8e6bcfc73833\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key12\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e7f-001e-0062-6f59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6fa0a007dbd6a2b2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key11\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e83-001e-0062-7259-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"70f2bdd3f69545ed\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key10\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e8b-001e-0062-7a59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3f66aaae92580d04\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key9\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e97-001e-0062-0659-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b56e9b960633df9f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key8\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322e9b-001e-0062-0a59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ea9c9b34ce96414d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key7\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322ea7-001e-0062-1159-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ff4054568c1eec2e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key6\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322ea8-001e-0062-1259-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"243f09f5ac2a8b42\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key5\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322eb0-001e-0062-1859-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9233cdde09f73837\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322eb6-001e-0062-1e59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b9e2e7fada0f2558\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key3\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322ebe-001e-0062-2659-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4c05cbd8a7672aeb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key2\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322ec5-001e-0062-2d59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3cb9ad0e1886bd94\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key1\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322ecb-001e-0062-3359-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"768387140a4f7510\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key0\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a9322ed3-001e-0062-3b59-59da05000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestCopy/NonExistentSourceFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjNq/IsgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e1c4cf9539dee835\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/does-not-exist\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba760d19-d01e-0061-4c59-593b61000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOmJhNzYwZDE5LWQwMWUtMDA2MS00YzU5LTU5M2I2MTAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6NTkuOTkwNTcwNFo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestCopy/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjO5aflwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f87109358f7e8773\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"inline\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"en\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"SGVsbG8gV29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4AB4855\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"YeJLfssylmU=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f536-d01e-004e-6659-5936aa000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d4ffcb5836b6da9c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4AB4855\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Mon, 15 Jul 2019 16:10:26 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f542-d01e-004e-7159-5936aa000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"92681aca7bed74d4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"10\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"oPqafXJA1cXuvXCJlDDFlw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"Y2xvYmJlciBtZQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"oPqafXJA1cXuvXCJlDDFlw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4B1FE0F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"Y9mFmC2gxu4=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f548-d01e-004e-7659-5936aa000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7476d61943289e82\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4B77B87\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"e437369d-5f58-4180-abbe-0ca024fb430b\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f556-d01e-004e-0359-5936aa000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c9ce25461774a3b8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4B77B87\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"e437369d-5f58-4180-abbe-0ca024fb430b\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"11/11\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Mon, 15 Jul 2019 16:10:27 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f563-d01e-004e-0f59-5936aa000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"0da5cf2b94221cd2\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4B77B87\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"e437369d-5f58-4180-abbe-0ca024fb430b\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"11/11\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Mon, 15 Jul 2019 16:10:27 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f56a-d01e-004e-1659-5936aa000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3c60641b36f7af56\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4C29D78\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"9293ce53-a728-4ab7-9f32-ad32faf2d398\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f575-d01e-004e-2159-5936aa000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5d8bc5c645d4c114\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4C29D78\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"9293ce53-a728-4ab7-9f32-ad32faf2d398\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"11/11\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Mon, 15 Jul 2019 16:10:27 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f58a-d01e-004e-3559-5936aa000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"702a5e60fd35c8c5\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4C29D78\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"9293ce53-a728-4ab7-9f32-ad32faf2d398\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"11/11\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-copying-src\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Mon, 15 Jul 2019 16:10:27 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"47d5f591-d01e-004e-3c59-5936aa000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestDelete/NonExistentFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCkEG+1GAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d588121abef3d1b8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/does-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fcf22d3f-901e-0002-5259-59a69a000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOmZjZjIyZDNmLTkwMWUtMDAwMi01MjU5LTU5YTY5YTAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDc6MDAuMzUxMTg4N1o8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestDelete/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCkFXB3sQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"85f0eeebf2720b02\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-deleting\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PiWWCnnbxptnTNTsZ6csYg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"SGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PiWWCnnbxptnTNTsZ6csYg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4E1929E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:07:00 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"2yoxP9BZ4jg=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa6d4d-301e-001b-6959-592621000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a4e23bb89bbdc031\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-deleting\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa6d54-301e-001b-7059-592621000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"84cf6fe201e4935a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-deleting\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa6d60-301e-001b-7b59-592621000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOmQwZmE2ZDYwLTMwMWUtMDAxYi03YjU5LTU5MjYyMTAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDc6MDAuNDcyMTI3N1o8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"754a67873654dd01\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-deleting\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa6d64-301e-001b-7f59-592621000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOmQwZmE2ZDY0LTMwMWUtMDAxYi03ZjU5LTU5MjYyMTAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDc6MDAuNDkxMTE2OFo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestDirsWithCharactersBeforeDelimiter.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB1FLqo7gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"abd22e504b0fd97c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1c7-801e-0043-1059-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxL3Rlc3RGaWxlMWRpcjE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VHVlLCAwOCBGZWIgMjAyMiAyMzo1MToxMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VHVlLCAwOCBGZWIgMjAyMiAyMzo1MToxMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDlFQjVERTI5Rjk1MDc8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvdGVzdEZpbGUxZGlyMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMkE1MTI3ODwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vdDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQkNCNEE4RDMxMzE3RDwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC90L3Q8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VHVlLCAwOCBGZWIgMjAyMiAyMzo1MToxMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VHVlLCAwOCBGZWIgMjAyMiAyMzo1MToxMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDlFQjVERTI5NDczMEM8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMjkwMDZERjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"583c2eaa4d2a0cb8\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-dirs-with-chars-before-delimiter%2Ft-%2Ft.\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277098E2551A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1d1-801e-0043-1759-59fe7e000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"43851d7608e91a18\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=10\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1d5-801e-0043-1b59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMkE5Q0NCRjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9OYW1lPjwvQmxvYlByZWZpeD48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvPC9OYW1lPjwvQmxvYlByZWZpeD48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VHVlLCAwOCBGZWIgMjAyMiAyMzo1MToxMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VHVlLCAwOCBGZWIgMjAyMiAyMzo1MToxMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDlFQjVERTI5MDA2REY8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"6b2b142871f46d54\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=9\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1df-801e-0043-2459-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz45PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMjkwMDZERjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"b89dfc8addcf9b05\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=8\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1ea-801e-0043-2d59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz44PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMjkwMDZERjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"38eb44572e16b462\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=7\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1f8-801e-0043-3a59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz43PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMjkwMDZERjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"d092bb8a00744621\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=6\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db1ff-801e-0043-4159-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz42PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMjkwMDZERjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"a699936fe4fdfbf5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=5\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db209-801e-0043-4b59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz41PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXI+MiExMjghTURBd01EVXhJV0pzYjJJdFptOXlMV1JwY25NdGQybDBhQzFqYUdGeWN5MWlaV1p2Y21VdFpHVnNhVzFwZEdWeUwzUmxjM1JHYVd4bE1TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS08L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"a47586c7663543df\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21128%21MDAwMDUxIWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMSEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=5\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db20f-801e-0043-5159-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTI4IU1EQXdNRFV4SVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1JsYzNSR2FXeGxNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+NTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyOTAwNkRGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"49fefdaf7b109090\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=4\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db216-801e-0043-5859-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz40PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITEyNCFNREF3TURRM0lXSnNiMkl0Wm05eUxXUnBjbk10ZDJsMGFDMWphR0Z5Y3kxaVpXWnZjbVV0WkdWc2FXMXBkR1Z5TDNRdmRDOTBJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"8f6c50104f418ba0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21124%21MDAwMDQ3IWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvdC90ITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaIQ--\\u0026maxresults=4\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db21f-801e-0043-6159-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTI0IU1EQXdNRFEzSVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1F2ZEM5MElUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS08L01hcmtlcj48TWF4UmVzdWx0cz40PC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyOTAwNkRGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"76b659999ddc706c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=3\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db224-801e-0043-6659-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz4zPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXI+MiExMjAhTURBd01EUTJJV0pzYjJJdFptOXlMV1JwY25NdGQybDBhQzFqYUdGeWN5MWlaV1p2Y21VdFpHVnNhVzFwZEdWeUwzUXRMM1FoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"92dc6fbe0d63fc53\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21120%21MDAwMDQ2IWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtL3QhMDAwMDI4ITk5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OVoh\\u0026maxresults=3\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db22b-801e-0043-6d59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTIwIU1EQXdNRFEySVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1F0TDNRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaDwvTWFya2VyPjxNYXhSZXN1bHRzPjM8L01heFJlc3VsdHM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UdWUsIDA4IEZlYiAyMDIyIDIzOjUxOjExIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEOUVCNURFMjkwMDZERjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"fa455440bfe94e25\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db233-801e-0043-7559-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz4yPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITE0MCFNREF3TURZd0lXSnNiMkl0Wm05eUxXUnBjbk10ZDJsMGFDMWphR0Z5Y3kxaVpXWnZjbVV0WkdWc2FXMXBkR1Z5TDJScGNqSXZkR1Z6ZEVacGJHVXhaR2x5TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"1e232989bf24e00e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21140%21MDAwMDYwIWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvdGVzdEZpbGUxZGlyMiEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db239-801e-0043-7b59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTQwIU1EQXdNRFl3SVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMMlJwY2pJdmRHVnpkRVpwYkdVeFpHbHlNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MjwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITEyNCFNREF3TURRM0lXSnNiMkl0Wm05eUxXUnBjbk10ZDJsMGFDMWphR0Z5Y3kxaVpXWnZjbVV0WkdWc2FXMXBkR1Z5TDNRdmRDOTBJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"85b66a06606cf32a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21124%21MDAwMDQ3IWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvdC90ITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaIQ--\\u0026maxresults=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db240-801e-0043-0159-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTI0IU1EQXdNRFEzSVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1F2ZEM5MElUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS08L01hcmtlcj48TWF4UmVzdWx0cz4yPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyOTAwNkRGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"adf77f8fbb309f0b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db243-801e-0043-0459-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWF4UmVzdWx0cz4xPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyQTlDQ0JGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjIhMTQwIU1EQXdNRFl3SVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMMlJwY2pFdmRHVnpkRVpwYkdVeFpHbHlNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"babae1bbd2786a83\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21140%21MDAwMDYwIWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjEvdGVzdEZpbGUxZGlyMSEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db245-801e-0043-0659-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTQwIU1EQXdNRFl3SVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMMlJwY2pFdmRHVnpkRVpwYkdVeFpHbHlNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXI+MiExNDAhTURBd01EWXdJV0pzYjJJdFptOXlMV1JwY25NdGQybDBhQzFqYUdGeWN5MWlaV1p2Y21VdFpHVnNhVzFwZEdWeUwyUnBjakl2ZEdWemRFWnBiR1V4WkdseU1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS08L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"8ce1599d1635af39\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21140%21MDAwMDYwIWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvdGVzdEZpbGUxZGlyMiEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db24c-801e-0043-0c59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTQwIU1EQXdNRFl3SVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMMlJwY2pJdmRHVnpkRVpwYkdVeFpHbHlNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXI+MiExMjAhTURBd01EUTJJV0pzYjJJdFptOXlMV1JwY25NdGQybDBhQzFqYUdGeWN5MWlaV1p2Y21VdFpHVnNhVzFwZEdWeUwzUXRMM1FoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"6c94f3791976cd05\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21120%21MDAwMDQ2IWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtL3QhMDAwMDI4ITk5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OVoh\\u0026maxresults=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db250-801e-0043-1059-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTIwIU1EQXdNRFEySVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1F0TDNRaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaDwvTWFya2VyPjxNYXhSZXN1bHRzPjE8L01heFJlc3VsdHM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITEyNCFNREF3TURRM0lXSnNiMkl0Wm05eUxXUnBjbk10ZDJsMGFDMWphR0Z5Y3kxaVpXWnZjbVV0WkdWc2FXMXBkR1Z5TDNRdmRDOTBJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"c7727fbf1ee76c46\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21124%21MDAwMDQ3IWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvdC90ITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaIQ--\\u0026maxresults=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db255-801e-0043-1559-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTI0IU1EQXdNRFEzSVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1F2ZEM5MElUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS08L01hcmtlcj48TWF4UmVzdWx0cz4xPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITEyOCFNREF3TURVeElXSnNiMkl0Wm05eUxXUnBjbk10ZDJsMGFDMWphR0Z5Y3kxaVpXWnZjbVV0WkdWc2FXMXBkR1Z5TDNSbGMzUkdhV3hsTVNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"5279852eaab7c436\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21128%21MDAwMDUxIWJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMSEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"573db25d-801e-0043-1d59-59fe7e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci88L1ByZWZpeD48TWFya2VyPjIhMTI4IU1EQXdNRFV4SVdKc2IySXRabTl5TFdScGNuTXRkMmwwYUMxamFHRnljeTFpWldadmNtVXRaR1ZzYVcxcGRHVnlMM1JsYzNSR2FXeGxNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlR1ZSwgMDggRmViIDIwMjIgMjM6NTE6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ5RUI1REUyOTAwNkRGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestIfNotExist.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7go60lHj5a+AA8\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8f999f472d82297e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-if-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"If-None-Match\": [\n            \"*\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"Date\": [\n            \"Mon, 10 Nov 2025 09:53:54 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DE203F0F3E178C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Mon, 10 Nov 2025 09:53:54 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"wOkxZJKwY/U=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ca9aa03-101e-0055-7027-5298a3000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"dc41a4555ab17ee0\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-if-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"If-None-Match\": [\n            \"*\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 409,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"220\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Mon, 10 Nov 2025 09:53:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobAlreadyExists\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ca9b627-101e-0055-3a27-5298a3000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYkFscmVhZHlFeGlzdHM8L0NvZGU+PE1lc3NhZ2U+VGhlIHNwZWNpZmllZCBibG9iIGFscmVhZHkgZXhpc3RzLgpSZXF1ZXN0SWQ6NmNhOWI2MjctMTAxZS0wMDU1LTNhMjctNTI5OGEzMDAwMDAwClRpbWU6MjAyNS0xMS0xMFQwOTo1Mzo1OC4xNDg5NzM0WjwvTWVzc2FnZT48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"2975553d1d753272\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-if-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Mon, 10 Nov 2025 09:54:02 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"false\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ca9c1c3-101e-0055-7127-5298a3000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK+Le0BggAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"61ba13c2677736b3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8BD2746\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61dd95-601e-0074-6829-982cd2000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ef672aa6a71993e9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8BD2746\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61dd9d-601e-0074-6f29-982cd2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"acc854af83c13bae\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8BD2746\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61dda6-601e-0074-7629-982cd2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2a941d2d12a1efb8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8BD2746\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61ddad-601e-0074-7d29-982cd2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"db6885931c2c7be7\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8C9F6A8\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"7f4ec50b-d0da-4e2a-b9b8-a397a40d051a\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61ddb4-601e-0074-0429-982cd2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7743af85aa1de79b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8C9F6A8\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"7f4ec50b-d0da-4e2a-b9b8-a397a40d051a\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61ddbb-601e-0074-0b29-982cd2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"7f0583082beeb762\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61ddc2-601e-0074-1229-982cd2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8d4de367bfdb19ed\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c61ddce-601e-0074-1e29-982cd2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK/AFHY1wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2b4f37be6f1940b6\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8E124D3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677e3-401e-0063-6d29-9885d9000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d10207c381b3880a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8E124D3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677e8-401e-0063-7029-9885d9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d0faf17042ed7c69\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8E124D3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677f0-401e-0063-7629-9885d9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"02e95e17066eb832\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8E124D3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677f2-401e-0063-7829-9885d9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"940466b3f8c6f7c4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8EDA622\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"67074147-f6b1-4cad-9577-e1439e7e9fec\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677f5-401e-0063-7b29-9885d9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2fb7eca5ca842c5e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8EDA622\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"67074147-f6b1-4cad-9577-e1439e7e9fec\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677f6-401e-0063-7c29-9885d9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4bcbab2e82433776\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677f9-401e-0063-7f29-9885d9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fea9587df001c642\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"740677ff-401e-0063-0429-9885d9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK/Deb0YQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"52de825322dae101\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E902FFCB\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b13-f01e-0082-1729-98599c000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8fbbd75ff8db2119\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E902FFCB\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b17-f01e-0082-1a29-98599c000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6001cb81b48014cc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E902FFCB\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b1e-f01e-0082-2029-98599c000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f3411d7c1610a71e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E902FFCB\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b21-f01e-0082-2329-98599c000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bcc7355a4bd9a27d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.%2F-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E90E96E0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"5e829744-6791-4503-ba41-5aa125db0c8e\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b24-f01e-0082-2529-98599c000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7b51c167feb3e280\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.%2F-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E90E96E0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"5e829744-6791-4503-ba41-5aa125db0c8e\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b2c-f01e-0082-2d29-98599c000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"85939eda7410fc68\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.%2F-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b2f-f01e-0082-3029-98599c000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"de565421c9efe4fb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%20%21__0x22____0x23__$__0x25__\\u0026%27%28%29%2A+%2C-.__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d6807b31-f01e-0082-3229-98599c000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-4.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK9AyqergAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1a5c3464d714cc70\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7B700B2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0cd-b01e-0005-5b29-98caf9000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5d39cdd9574a9e80\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7B700B2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0d1-b01e-0005-5e29-98caf9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"78ca74066af6dd20\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7B700B2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0d6-b01e-0005-6229-98caf9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3b9c3b4dc140b394\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7B700B2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0d8-b01e-0005-6429-98caf9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"dafb250106d39988\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7C2E5E4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"3f832248-e13f-416c-8109-f6c0c8c582ab\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0df-b01e-0005-6b29-98caf9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bd86008479a452a0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7C2E5E4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"3f832248-e13f-416c-8109-f6c0c8c582ab\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0e5-b01e-0005-7129-98caf9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e085ce9795d54f72\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0e9-b01e-0005-7529-98caf9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a3b32274b10d90f2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys:%3B%3C=%3E__0x3f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ba5ef0ee-b01e-0005-7a29-98caf9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK7N03TdwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"01a9919ee9741fc4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E70B9730\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a716-f01e-0004-3e29-989525000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f6df458c8d4fbd04\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E70B9730\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a720-f01e-0004-4529-989525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4a96b8215b43f286\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E70B9730\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a72a-f01e-0004-4d29-989525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c30d2ad65f428153\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E70B9730\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a734-f01e-0004-5729-989525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8156d280ab351949\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E71977EA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"56237f37-e9f3-4184-b86f-ec6b498d0268\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a73e-f01e-0004-6029-989525000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"036084c3f67a5604\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E71977EA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"56237f37-e9f3-4184-b86f-ec6b498d0268\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a742-f01e-0004-6429-989525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4ea336b86084db14\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a744-f01e-0004-6629-989525000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8337c1841ba8e984\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys@\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0f79a74f-f01e-0004-6f29-989525000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-6.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK8ChDYvAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"685c13bd8e74b4e9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E72FBBCA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432ce8-d01e-0071-6a29-98fe09000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"33a28e8eb03d4d1c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E72FBBCA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432cf3-d01e-0071-7129-98fe09000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"2fbc2e0b7ca6dbbc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E72FBBCA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432cf7-d01e-0071-7429-98fe09000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c0e3bfabd2b3a9bf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E72FBBCA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432cfa-d01e-0071-7729-98fe09000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"c1b2e5fb4aaf8feb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E73C6423\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"28b8d42c-ff7e-49ce-9dd8-eb0bc99d21e0\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432cfd-d01e-0071-7a29-98fe09000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4aaad6e1d721d0ad\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E73C6423\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"28b8d42c-ff7e-49ce-9dd8-eb0bc99d21e0\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432d02-d01e-0071-7f29-98fe09000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4e08f77f3bf5a763\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432d05-d01e-0071-0229-98fe09000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"34a29b8dec7c1cb1\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%5B__0x5c__%5D%5E_\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c432d06-d01e-0071-0329-98fe09000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-7.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK/GnzE5wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"afdaa3570249e3d9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E923A282\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760ce9-601e-0016-2429-98eef5000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ae4fcaedab32d480\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E923A282\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760cf8-601e-0016-3129-98eef5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9aee9a0a8c7d964e\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E923A282\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760d02-601e-0016-3929-98eef5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2e8a45dd4b660350\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E923A282\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760d09-601e-0016-4029-98eef5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"12714614d8bd260a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E92FFCBE\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"8ed18886-1a28-459b-bc42-2e87622f5a71\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760d0f-601e-0016-4629-98eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"18bbb7e9557dbeca\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E92FFCBE\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"8ed18886-1a28-459b-bc42-2e87622f5a71\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:35 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760d15-601e-0016-4c29-98eef5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"af37c679f2becda8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760d1c-601e-0016-5329-98eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1f01b986b86128b0\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%60\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9c760d24-601e-0016-5929-98eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/ascii-8.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK+E9kiZAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"404163511f6d897e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8792337\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324c6-b01e-0015-0f29-980f91000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"afa37dd93a4164ae\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8792337\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324c9-b01e-0015-1129-980f91000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e6d6f03f05bc503a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8792337\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324cd-b01e-0015-1429-980f91000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c98b25f7cad42d4e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8792337\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324ce-b01e-0015-1529-980f91000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"936dfbda8f35faee\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E884E156\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"f0b039da-3ed1-4fea-b590-a6e87b9513ee\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324d0-b01e-0015-1729-980f91000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"08ef887fe3c92045\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E884E156\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"f0b039da-3ed1-4fea-b590-a6e87b9513ee\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324d9-b01e-0015-1f29-980f91000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"1e665070e1f6d9f4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324e4-b01e-0015-2929-980f91000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"57f75b4966a18237\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%7B%7C%7D~__0x7f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2ca324ea-b01e-0015-2d29-980f91000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/backslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK9M7fq/gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"41a16099906d40bc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E83371B4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b2c6-201e-005a-2729-987ec5000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3523502640c915e5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E83371B4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b2d1-201e-005a-3129-987ec5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"667ccf2d21dcced5\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E83371B4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b2df-201e-005a-3d29-987ec5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5c1d693f3a2b1a08\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E83371B4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b2ef-201e-005a-4b29-987ec5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"fe074b6727e3a613\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8408F33\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"daff5004-b053-46a9-aabe-f081b354c083\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b2f2-201e-005a-4e29-987ec5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"32d04d999ccd9891\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8408F33\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"daff5004-b053-46a9-aabe-f081b354c083\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b2fc-201e-005a-5829-987ec5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"96622a19a902ea21\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b309-201e-005a-6329-987ec5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0b6870d0e241479e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x5c__bar__0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bbb6b318-201e-005a-7129-987ec5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/dotdotbackslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK7KFi4+gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"391b6b8c79543337\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E6E835E0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227b9f-b01e-0077-5a29-98cdb6000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e64f167b4d8eb047\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E6E835E0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227baa-b01e-0077-6429-98cdb6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"46f25e32cdaf7b22\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E6E835E0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227bb9-b01e-0077-7229-98cdb6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"61f7038b9de1e396\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E6E835E0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227bc0-b01e-0077-7829-98cdb6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"88dc3bc81192a083\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E6F50537\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"881a063d-e8ca-442c-a49d-5dd37ee9b1c3\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227bca-b01e-0077-0229-98cdb6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8abd2362e663bbed\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E6F50537\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"881a063d-e8ca-442c-a49d-5dd37ee9b1c3\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227bd7-b01e-0077-0f29-98cdb6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ffdbf0cfdf18c62e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227be2-b01e-0077-1a29-98cdb6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8b1fcd16445757b0\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c__..__0x5c__bar__0x5c__..__0x5c__..__0x5c__baz..__0x5c__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9e227beb-b01e-0077-2329-98cdb6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/dotdotslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK9Jqg6XQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"262934c579e79f9b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E81148B0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddc1-901e-0070-5429-98a1d5000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9d96f1d4452d9f36\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E81148B0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddc4-901e-0070-5629-98a1d5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"16809e2554eb4b6b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E81148B0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddc7-901e-0070-5829-98a1d5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"eff28e735e4aa3be\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E81148B0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddc8-901e-0070-5929-98a1d5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5fd0f7f52706bb36\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E81DF10C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"4362fcc1-2cf0-47c6-98bd-a978ccdcf1e2\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddca-901e-0070-5b29-98a1d5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2e87c8babfd62fa8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E81DF10C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"4362fcc1-2cf0-47c6-98bd-a978ccdcf1e2\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddce-901e-0070-5f29-98a1d5000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5497dae89a50c659\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddd1-901e-0070-6129-98a1d5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6d8241de6ce037fa\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4a04ddd3-901e-0070-6329-98a1d5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/fwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK9EGi/5AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6935a675545a0f4e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7D8B49E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca3e-301e-0024-4d29-98ee82000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7bc62ad882825ccf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7D8B49E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca4a-301e-0024-5729-98ee82000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"43bdbe9c2fb5be82\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7D8B49E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca53-301e-0024-5d29-98ee82000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cf94e1549813710c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7D8B49E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca59-301e-0024-6329-98ee82000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a8c0cda285785fbc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7E50EEF\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"877e9715-266a-423e-95f1-0bc9f36ac26e\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca60-301e-0024-6a29-98ee82000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f555e67682957b60\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7E50EEF\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"877e9715-266a-423e-95f1-0bc9f36ac26e\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca68-301e-0024-7129-98ee82000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"628c36562a489e0e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca6d-301e-0024-7629-98ee82000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ece2b87ee3184c74\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2Fbar%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ec0fca75-301e-0024-7e29-98ee82000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/non-UTF8_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK7HVicvwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/quote.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK8JH3r7QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ec53a75d9cc0b744\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7734AC4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce18-701e-001a-6129-9879fd000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4c0458e9d4a85d71\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7734AC4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce25-701e-001a-6d29-9879fd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b762090197b20d99\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7734AC4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce2c-701e-001a-7329-9879fd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a415a52f06d8e8a2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7734AC4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce34-701e-001a-7a29-9879fd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"55e3b42c23059d46\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E77F7DF3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"7f12b301-b32d-4b4c-a3a6-b79501b24192\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce36-701e-001a-7c29-9879fd000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"42568ade31bdfc63\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E77F7DF3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"7f12b301-b32d-4b4c-a3a6-b79501b24192\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce39-701e-001a-7f29-9879fd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"53ee6f2d57f5e93c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce3e-701e-001a-0329-9879fd000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6077716e9b40a730\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo__0x22__bar__0x22__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9760ce3f-701e-001a-0429-9879fd000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/repeatedbackslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK8F1g/5QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0a55a460b7dbc0e7\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E75196D1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbd9ea-101e-0033-7d29-984789000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4240b64f338790fc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E75196D1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbd9f7-101e-0033-0929-984789000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5900bdd0b16d716c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E75196D1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbda09-101e-0033-1929-984789000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7eb50a161cc45db0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E75196D1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbda16-101e-0033-2529-984789000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"724b079ed9bf6bf0\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E75DCA01\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"3a9ddc1f-4663-4b87-ac6b-ef82d13461d2\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbda21-101e-0033-2f29-984789000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f0d38aa4f6f99940\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E75DCA01\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"3a9ddc1f-4663-4b87-ac6b-ef82d13461d2\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbda2b-101e-0033-3929-984789000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ccd71be54801833f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbda35-101e-0033-4229-984789000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"361e1173752ec439\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys..__0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6ddbda3f-101e-0033-4c29-984789000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/repeatedfwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK9HbCbqAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3dd8c4bb33030b3d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7F9F375\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"020288c9-701e-0078-4b29-98bbda000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a5dc9264f49f690d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7F9F375\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"020288d6-701e-0078-5729-98bbda000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b2338004d08aa3cc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7F9F375\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"020288de-701e-0078-5e29-98bbda000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ede57b4da6ba5137\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7F9F375\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"020288e2-701e-0078-6229-98bbda000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8a225195a4d93a34\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"020288ea-701e-0078-6a29-98bbda000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/spaces.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK8Mav5UAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"59ad295a695ac478\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E79525BA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d5741280-401e-0011-4a29-988296000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"51bd12cba3c60ce2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E79525BA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d574128a-401e-0011-5329-988296000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d15939ceeb77808f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E79525BA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d5741297-401e-0011-5e29-988296000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9bddc491fecfd4b2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E79525BA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d574129b-401e-0011-6229-988296000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"19c0631bc209a393\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7A15901\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"1bfc31e8-7ed0-4a0e-9e0d-aa491db16344\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d57412a1-401e-0011-6829-988296000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"22e452e33b269f4b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E7A15901\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"1bfc31e8-7ed0-4a0e-9e0d-aa491db16344\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d57412a8-401e-0011-6f29-988296000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"866637e5709dd7f4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d57412ab-401e-0011-7229-988296000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"daf3767c1048a8e4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d57412b0-401e-0011-7729-988296000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/startwithdigit.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK+ICt8wwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b3af6de1a690ddfb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E899ECF1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537ce9-e01e-007a-0929-980562000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"83e6eea7aaa50a9b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E899ECF1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537cf4-e01e-007a-1129-980562000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"df1ba6a7c3b1f640\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E899ECF1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537cff-e01e-007a-1929-980562000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b85fde7b612f62ce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E899ECF1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537d09-e01e-007a-2129-980562000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"821eecd33a492ad0\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8A6E359\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"2aa08637-8b41-43b8-82ac-57119eb7deb9\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537d10-e01e-007a-2829-980562000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"104663afddfcdd27\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8A6E359\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"2aa08637-8b41-43b8-82ac-57119eb7deb9\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537d13-e01e-007a-2b29-980562000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"cb03b0aa3d2a025c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537d17-e01e-007a-2f29-980562000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"422e9afdc85cb27e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys12345\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a1537d27-e01e-007a-3e29-980562000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestKeys/unicode.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK+BlkmUgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c138eeb26813a8a9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E857964E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0ae-501e-007f-6329-98d7b9000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f720de97bb3573a5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E857964E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0b7-501e-007f-6a29-98d7b9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"92ae17927600edf9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E857964E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0c2-501e-007f-7229-98d7b9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2e953a3440040352\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E857964E\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0cf-501e-007f-7f29-98d7b9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5beceeaf2156ef54\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8643EBB\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"365cbb8b-b231-44ad-84d1-0673f7ecb0cc\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0d7-501e-007f-0629-98d7b9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"76f219e332d5e9c3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E8643EBB\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Copy-Completion-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Copy-Id\": [\n            \"365cbb8b-b231-44ad-84d1-0673f7ecb0cc\"\n          ],\n          \"X-Ms-Copy-Progress\": [\n            \"5/5\"\n          ],\n          \"X-Ms-Copy-Source\": [\n            \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Ms-Copy-Status\": [\n            \"success\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0dd-501e-007f-0c29-98d7b9000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"07885b880e6d333d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0df-501e-007f-0e29-98d7b9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5b2db57a5ae2901a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"8ec6e0e0-501e-007f-0f29-98d7b9000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/PaginationConsistencyAfterDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB0ADiWHgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b73a887ff6655376\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1cae9ea2-f01e-0076-2f59-59926a000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"b218c74286299203\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=2\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1cae9ed0-f01e-0076-5a59-59926a000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MjwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+MiE4MCFNREF3TURFMUlXSnNiMkl0Wm05eUxXeHBjM1F0TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"6f8bc6523bd34284\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-list-1\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1cae9eea-f01e-0076-7459-59926a000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bed47585da303715\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026marker=2%2180%21MDAwMDE1IWJsb2ItZm9yLWxpc3QtMiEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1cae9f04-f01e-0076-0e59-59926a000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1hcmtlcj4yITgwIU1EQXdNREUxSVdKc2IySXRabTl5TFd4cGMzUXRNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0yPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGRTIyMzM5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"bbb1177c7e1bc29d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-list-1\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770981EFA84\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1cae9f1a-f01e-0076-2259-59926a000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/PaginationConsistencyAfterInsert.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzMJ5dNgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"310279ddbcc4ae5b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"60e7fbb8-e01e-0018-1459-59c745000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"39a332e5f87ac77f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=2\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"60e7fbd0-e01e-0018-2a59-59c745000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MjwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+MiE4MCFNREF3TURFMUlXSnNiMkl0Wm05eUxXeHBjM1F0TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"4f8ee09244edc66a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-list-0a\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277097FBE748\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"60e7fbe1-e01e-0018-3b59-59c745000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e73a620e1027c172\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026marker=2%2180%21MDAwMDE1IWJsb2ItZm9yLWxpc3QtMiEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"60e7fbf6-e01e-0018-5059-59c745000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1hcmtlcj4yITgwIU1EQXdNREUxSVdKc2IySXRabTl5TFd4cGMzUXRNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0yPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGRTIyMzM5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"8e652c811deb6965\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-list-0a\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"60e7fc03-e01e-0018-5d59-59c745000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/by_1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzF4U6aQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b429d851fd2f38dd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"67f93feb-d01e-005e-7f59-59f3c2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"284538f23e55c9b2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"67f93ff8-d01e-005e-0a59-59f3c2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjIhODAhTURBd01ERTFJV0pzYjJJdFptOXlMV3hwYzNRdE1TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS08L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"51ae847f57f0fcec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026marker=2%2180%21MDAwMDE1IWJsb2ItZm9yLWxpc3QtMSEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"67f93ffe-d01e-005e-1059-59f3c2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1hcmtlcj4yITgwIU1EQXdNREUxSVdKc2IySXRabTl5TFd4cGMzUXRNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0xPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDQgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDQgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OERCQ0I0QThDNjk5MUMwPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjIhODAhTURBd01ERTFJV0pzYjJJdFptOXlMV3hwYzNRdE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS08L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"1d878a3f394358a0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026marker=2%2180%21MDAwMDE1IWJsb2ItZm9yLWxpc3QtMiEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"67f94003-d01e-005e-1559-59f3c2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1hcmtlcj4yITgwIU1EQXdNREUxSVdKc2IySXRabTl5TFd4cGMzUXRNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0yPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGRTIyMzM5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/by_2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzIMxpsAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9744ebab281dd4d0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cded91f2-c01e-007d-0459-596901000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"9f3d05764df001d3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=2\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cded9200-c01e-007d-1059-596901000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MjwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+MiE4MCFNREF3TURFMUlXSnNiMkl0Wm05eUxXeHBjM1F0TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"de2a5068d8d21a47\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026marker=2%2180%21MDAwMDE1IWJsb2ItZm9yLWxpc3QtMiEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=2\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cded9205-c01e-007d-1459-596901000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1hcmtlcj4yITgwIU1EQXdNREUxSVdKc2IySXRabTl5TFd4cGMzUXRNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9NYXJrZXI+PE1heFJlc3VsdHM+MjwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0yPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGRTIyMzM5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/by_3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzKMlpcgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"06193ace60f00f34\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e30724f2-401e-004c-5659-598812000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"8b7f22df8b07dbaa\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=3\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e3072506-401e-004c-6859-598812000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MzwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/exactly_1_object_due_to_prefix.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzCJGs0gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f806b29ef6245863\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df359e9c-e01e-0037-5b59-59ca8e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"f94523fe99dec916\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list-1\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df359ec9-e01e-0037-0359-59ca8e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0LTE8L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/no_objects.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzASrIPwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"708ad659faf1b6b3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"58b08e69-401e-0001-4959-5947fe000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"780a8b440fe256c9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=no-objects-with-this-prefix\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"58b08e81-401e-0001-5c59-5947fe000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5uby1vYmplY3RzLXdpdGgtdGhpcy1wcmVmaXg8L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icyAvPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestList/no_pagination.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMBzD7tYAAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d6b190ef8e2565e0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9cc5ef16-401e-003e-6d59-598f5d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"489fe054a0121c8f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-list\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9cc5ef38-401e-003e-0c59-598f5d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1saXN0PC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbGlzdC0wPC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUVGREQ0MDU2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1saXN0LTE8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOEM2OTkxQzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWxpc3QtMjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VFRkUyMjMzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestListDelimiters/abc.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB0OxI7mwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fc7d85fbc7c28a8f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4d6b-d01e-0013-3f59-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwRDAwOUZDPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEQyQzk5RDwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBENTg5M0U8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwRDdEMzlBPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQkNCNEE4RDFERkE2MzwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMERDNDEzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"3e02c56c661e378a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4d81-d01e-0013-5159-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwRDAwOUZDPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEQyQzk5RDwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBENTg5M0U8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwRDdEMzlBPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQkNCNEE4RDFERkE2MzwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMERDNDEzOTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"82ff33753c78e9b9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4d8c-d01e-0013-5859-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjPC9OYW1lPjwvQmxvYlByZWZpeD48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmM8L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBEQzQxMzk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"48fb0d635b111669\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abcdir1abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4d8e-d01e-0013-5a59-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmM8L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwRDAwOUZDPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEQyQzk5RDwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjPC9OYW1lPjwvQmxvYlByZWZpeD48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"31191fcae59cb48e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abcdir1abcsubdirabc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4d98-d01e-0013-6259-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmM8L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwRDU4OTNFPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEQ3RDM5QTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"188a20602ca7250e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abcdir2abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4d9c-d01e-0013-6659-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmM8L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDUgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDUgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OERCQ0I0QThEMURGQTYzPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"825536a9a7773da2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4da0-d01e-0013-6a59-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXhSZXN1bHRzPjE8L01heFJlc3VsdHM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjPC9OYW1lPjwvQmxvYlByZWZpeD48L0Jsb2JzPjxOZXh0TWFya2VyPjIhMTA4IU1EQXdNRE0xSVdKc2IySXRabTl5TFdSbGJHbHRhWFJsY25NdFlXSmpaR2x5TW1GaVkyVXVkSGgwSVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"263ddacf08470a85\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026marker=2%21108%21MDAwMDM1IWJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0ITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaIQ--\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4da5-d01e-0013-6f59-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXJrZXI+MiExMDghTURBd01ETTFJV0pzYjJJdFptOXlMV1JsYkdsdGFYUmxjbk10WVdKalpHbHlNbUZpWTJVdWRIaDBJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPmFiYzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmM8L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXI+MiE5NiFNREF3TURJNElXSnNiMkl0Wm05eUxXUmxiR2x0YVhSbGNuTXRZV0pqWmk1MGVIUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2g8L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"7e98b3b4aef96945\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026marker=2%2196%21MDAwMDI4IWJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQhMDAwMDI4ITk5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OVoh\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4da9-d01e-0013-7359-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXJrZXI+MiE5NiFNREF3TURJNElXSnNiMkl0Wm05eUxXUmxiR2x0YVhSbGNuTXRZV0pqWmk1MGVIUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2g8L01hcmtlcj48TWF4UmVzdWx0cz4xPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBEQzQxMzk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"ad7ba6734d17ac5f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-delimiters-abcdir2abce.txt\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4daf-d01e-0013-7859-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6c23da92ca81a60c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=abc\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-abc\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4db6-d01e-0013-7d59-593c2e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiYzwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjPC9OYW1lPjwvQmxvYlByZWZpeD48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwREM0MTM5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"6852e861526db5cf\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-delimiters-abcdir2abce.txt\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277098CFE144\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"6c5d4dbb-d01e-0013-0259-593c2e000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestListDelimiters/backslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB0JvQpPAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"efbc7baaf055d19c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee711-501e-0032-3959-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjFfXzB4NWNfX2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwOUMxRjMxPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fYi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA5RTY5OTE8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX19zdWJkaXJfXzB4NWNfX2MudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwQTBEQUZGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fc3ViZGlyX18weDVjX19kLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEEzMjU1RjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjJfXzB4NWNfX2UudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDUgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDUgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OERCQ0I0QThDRTkwRjZFPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBBQTJCODk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"fe68d79e519ec3c4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee71e-501e-0032-4459-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjFfXzB4NWNfX2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwOUMxRjMxPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fYi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA5RTY5OTE8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX19zdWJkaXJfXzB4NWNfX2MudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwQTBEQUZGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fc3ViZGlyX18weDVjX19kLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEEzMjU1RjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjJfXzB4NWNfX2UudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDUgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MDUgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OERCQ0I0QThDRTkwRjZFPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBBQTJCODk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"7be223b510d3015a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee733-501e-0032-5559-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPl9fMHg1Y19fPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX188L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIyX18weDVjX188L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19mLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEFBMkI4OTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"c0176f2070886ec4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__dir1__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee738-501e-0032-5a59-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPl9fMHg1Y19fPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX19hLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDlDMUYzMTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjFfXzB4NWNfX2IudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwOUU2OTkxPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fc3ViZGlyX18weDVjX188L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"ee6eb5f69a33b421\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__dir1__0x5c__subdir__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee742-501e-0032-6459-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMV9fMHg1Y19fc3ViZGlyX18weDVjX188L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+X18weDVjX188L0RlbGltaXRlcj48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjFfXzB4NWNfX3N1YmRpcl9fMHg1Y19fYy50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBBMERBRkY8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX19zdWJkaXJfXzB4NWNfX2QudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwQTMyNTVGPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"8fe36afe9ef4d708\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__dir2__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee74b-501e-0032-6c59-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZGlyMl9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPl9fMHg1Y19fPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIyX18weDVjX19lLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5UaHUsIDEyIE9jdCAyMDIzIDE3OjQyOjA1IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQkNCNEE4Q0U5MEY2RTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"0c06736090c31351\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee74f-501e-0032-7059-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPl9fMHg1Y19fPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX188L05hbWU+PC9CbG9iUHJlZml4PjwvQmxvYnM+PE5leHRNYXJrZXI+MiExMjAhTURBd01EUTFJV0pzYjJJdFptOXlMV1JsYkdsdGFYUmxjbk10WDE4d2VEVmpYMTlrYVhJeVgxOHdlRFZqWDE5bExuUjRkQ0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"37e5491bc07d80b3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026marker=2%21120%21MDAwMDQ1IWJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIyX18weDVjX19lLnR4dCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee75a-501e-0032-7b59-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1hcmtlcj4yITEyMCFNREF3TURRMUlXSnNiMkl0Wm05eUxXUmxiR2x0YVhSbGNuTXRYMTh3ZURWalgxOWthWEl5WDE4d2VEVmpYMTlsTG5SNGRDRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS08L01hcmtlcj48TWF4UmVzdWx0cz4xPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+X18weDVjX188L0RlbGltaXRlcj48QmxvYnM+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy1fXzB4NWNfX2RpcjJfXzB4NWNfXzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITEwNCFNREF3TURNeklXSnNiMkl0Wm05eUxXUmxiR2x0YVhSbGNuTXRYMTh3ZURWalgxOW1MblI0ZENFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"a7beeb6297155487\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026marker=2%21104%21MDAwMDMzIWJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19mLnR4dCEwMDAwMjghOTk5OS0xMi0zMVQyMzo1OTo1OS45OTk5OTk5WiE-\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee761-501e-0032-0259-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1hcmtlcj4yITEwNCFNREF3TURNeklXSnNiMkl0Wm05eUxXUmxiR2x0YVhSbGNuTXRYMTh3ZURWalgxOW1MblI0ZENFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLTwvTWFya2VyPjxNYXhSZXN1bHRzPjE8L01heFJlc3VsdHM+PERlbGltaXRlcj5fXzB4NWNfXzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjBBQTJCODk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"28eab1db95075fc2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-delimiters-__0x5c__dir2__0x5c__e.txt\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee769-501e-0032-0859-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d11560abebf32e1f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=__0x5c__\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-__0x5c__\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee772-501e-0032-1059-591855000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLV9fMHg1Y19fPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPl9fMHg1Y19fPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19kaXIxX18weDVjX188L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtX18weDVjX19mLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMEFBMkI4OTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"729b2990aec6d783\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-delimiters-__0x5c__dir2__0x5c__e.txt\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770989948D4\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"778ee785-501e-0032-2159-591855000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestListDelimiters/fwdslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB0EzovHQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"99d95abc09b675ec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7a64-601e-0016-6859-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNzdBMDk3PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2IudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwN0E2MDM3PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDdDODM3QjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvZC50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA3RTU4OTQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOENCNDRCODQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwODJFRDQ2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"25c21765a7ed1d6a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7a87-601e-0016-0859-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNzdBMDk3PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2IudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwN0E2MDM3PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDdDODM3QjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvZC50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA3RTU4OTQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOENCNDRCODQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwODJFRDQ2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"f5f7cb24630db9b6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7aa5-601e-0016-2359-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2JQcmVmaXg+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi88L05hbWU+PC9CbG9iUHJlZml4PjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwODJFRDQ2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyIC8+PC9FbnVtZXJhdGlvblJlc3VsdHM+\"\n      }\n    },\n    {\n      \"ID\": \"4c1eae948318d193\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2Fdir1%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7abd-601e-0016-3959-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYS50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA3N0EwOTc8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA3QTYwMzc8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iUHJlZml4PjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"8e69937a20a198c9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2Fdir1%2Fsubdir%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7acf-601e-0016-4959-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYj48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dDwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDdDODM3QjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvZC50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA3RTU4OTQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"e3de61ad957e5fae\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2Fdir2%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7adc-601e-0016-5559-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLzwvUHJlZml4PjxNYXhSZXN1bHRzPjEwMDA8L01heFJlc3VsdHM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PEJsb2JzPjxCbG9iPjxOYW1lPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+VGh1LCAxMiBPY3QgMjAyMyAxNzo0MjowNSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4REJDQjRBOENCNDRCODQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"baa8109db5a7850b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7af5-601e-0016-6c59-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWF4UmVzdWx0cz4xPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITEwMCFNREF3TURNeElXSnNiMkl0Wm05eUxXUmxiR2x0YVhSbGNuTXRMMlJwY2pJdlpTNTBlSFFoTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"fb4c12839d43d00b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%21100%21MDAwMDMxIWJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQhMDAwMDI4ITk5OTktMTItMzFUMjM6NTk6NTkuOTk5OTk5OVoh\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7b0c-601e-0016-0259-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWFya2VyPjIhMTAwIU1EQXdNRE14SVdKc2IySXRabTl5TFdSbGJHbHRhWFJsY25NdEwyUnBjakl2WlM1MGVIUWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2g8L01hcmtlcj48TWF4UmVzdWx0cz4xPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLzwvTmFtZT48L0Jsb2JQcmVmaXg+PC9CbG9icz48TmV4dE1hcmtlcj4yITk2IU1EQXdNREkySVdKc2IySXRabTl5TFdSbGJHbHRhWFJsY25NdEwyWXVkSGgwSVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLTwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"845e564e7b29aa76\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026marker=2%2196%21MDAwMDI2IWJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0ITAwMDAyOCE5OTk5LTEyLTMxVDIzOjU5OjU5Ljk5OTk5OTlaIQ--\\u0026maxresults=1\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7b1b-601e-0016-1059-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWFya2VyPjIhOTYhTURBd01ESTJJV0pzYjJJdFptOXlMV1JsYkdsdGFYUmxjbk10TDJZdWRIaDBJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tPC9NYXJrZXI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA4MkVENDY8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"00c29831bbd08e7b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-delimiters-%2Fdir2%2Fe.txt\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7b2d-601e-0016-2259-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e528d9d805315d1b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=%2F\\u0026maxresults=1000\\u0026prefix=blob-for-delimiters-%2F\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7b47-601e-0016-3a59-59eef5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS88L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxCbG9icz48QmxvYlByZWZpeD48TmFtZT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvTmFtZT48L0Jsb2JQcmVmaXg+PEJsb2I+PE5hbWU+YmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQ8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA4MkVENDY8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXIgLz48L0VudW1lcmF0aW9uUmVzdWx0cz4=\"\n      }\n    },\n    {\n      \"ID\": \"ac75c45026b0c6b3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-delimiters-%2Fdir2%2Fe.txt\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709865E443\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:12 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c17b7b57-601e-0016-4a59-59eef5000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestListWeirdKeys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB0C0xodwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cc397d3369d5480f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=list-weirdkeys-\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e84baa26-201e-005a-5b59-597ec5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5saXN0LXdlaXJka2V5cy08L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icz48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy0gISIjJCUmYW1wOycoKSorLC0uX18weDJmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA1QzRCNkI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLS4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA1OUQ5Rjk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLS4uX18weDVjX19mb29fXzB4NWNfXy4uX18weDVjX19iYXJfXzB4NWNfXy4uX18weDVjX18uLl9fMHg1Y19fYmF6Li5fXzB4NWNfXzwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDM1ODI4NjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtLi5fXzB4NWNfX2Zvb19fMHg1Y19fX18weDVjX19iYXJfXzB4NWNfX19fMHg1Y19fX18weDVjX19iYXo8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA0NjRFNzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLTEyMzQ1PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwMzlDOTA5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy06OyZsdDs9Jmd0Oz88L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA1NTQ1NEM8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLUA8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjAzQkVDNEM8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLVtfXzB4NWNfX11eXzwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDYzMDM2QzwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtX18weDBfX19fMHgxX19fXzB4Ml9fX18weDNfX19fMHg0X19fXzB4NV9fX18weDZfX19fMHg3X19fXzB4OF9fX18weDlfX19fMHhhX19fXzB4Yl9fX18weGNfX19fMHhkX19fXzB4ZV9fX18weGZfXzwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDY1NzREQTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtX18weDEwX19fXzB4MTFfX19fMHgxMl9fX18weDEzX19fXzB4MTRfX19fMHgxNV9fX18weDE2X19fXzB4MTdfX19fMHgxOF9fX18weDE5X19fXzB4MWFfX19fMHgxYl9fX18weDFjX19fXzB4MWRfX19fMHgxZV9fX18weDFmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA2N0JGMzQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLWA8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjAzRTVEQkU8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLWZvbyBiYXIgYmF6PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNkM1M0U5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy1mb28iYmFyImJhejwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDM3N0VBRTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtZm9vLy9iYXIvLy9iYXo8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA0MkYyNzg8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLWZvby9iYXIvYmF6PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNTdCNkJBPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy1mb29fXzB4NWNfX2Jhcl9fMHg1Y19fYmF6PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNkEzMEE2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy17fH1+X18weDdmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA0MDgxMDI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLeKYuuKYuuKYujwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDRENTQ5NzwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"61fe7d459ebe5b08\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=list-weirdkeys-\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:11 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e84baa42-201e-005a-7259-597ec5000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5saXN0LXdlaXJka2V5cy08L1ByZWZpeD48TWF4UmVzdWx0cz4xMDAwPC9NYXhSZXN1bHRzPjxCbG9icz48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy0gISIjJCUmYW1wOycoKSorLC0uX18weDJmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA1QzRCNkI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLS4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA1OUQ5Rjk8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLS4uX18weDVjX19mb29fXzB4NWNfXy4uX18weDVjX19iYXJfXzB4NWNfXy4uX18weDVjX18uLl9fMHg1Y19fYmF6Li5fXzB4NWNfXzwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDM1ODI4NjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtLi5fXzB4NWNfX2Zvb19fMHg1Y19fX18weDVjX19iYXJfXzB4NWNfX19fMHg1Y19fX18weDVjX19iYXo8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA0NjRFNzA8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLTEyMzQ1PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwMzlDOTA5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy06OyZsdDs9Jmd0Oz88L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA1NTQ1NEM8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLUA8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjAzQkVDNEM8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLVtfXzB4NWNfX11eXzwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDYzMDM2QzwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtX18weDBfX19fMHgxX19fXzB4Ml9fX18weDNfX19fMHg0X19fXzB4NV9fX18weDZfX19fMHg3X19fXzB4OF9fX18weDlfX19fMHhhX19fXzB4Yl9fX18weGNfX19fMHhkX19fXzB4ZV9fX18weGZfXzwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDY1NzREQTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtX18weDEwX19fXzB4MTFfX19fMHgxMl9fX18weDEzX19fXzB4MTRfX19fMHgxNV9fX18weDE2X19fXzB4MTdfX19fMHgxOF9fX18weDE5X19fXzB4MWFfX19fMHgxYl9fX18weDFjX19fXzB4MWRfX19fMHgxZV9fX18weDFmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMiBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA2N0JGMzQ8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLWA8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjAzRTVEQkU8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLWZvbyBiYXIgYmF6PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNkM1M0U5PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy1mb28iYmFyImJhejwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIxIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDM3N0VBRTwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+bGlzdC13ZWlyZGtleXMtZm9vLy9iYXIvLy9iYXo8L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA0MkYyNzg8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLWZvby9iYXIvYmF6PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNTdCNkJBPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy1mb29fXzB4NWNfX2Jhcl9fMHg1Y19fYmF6PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjIgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OEQ3MDkzRUYwNkEzMEE2PC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48Q29udGVudC1UeXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTg8L0NvbnRlbnQtVHlwZT48Q29udGVudC1FbmNvZGluZyAvPjxDb250ZW50LUxhbmd1YWdlIC8+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+WFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbCAvPjxDb250ZW50LURpc3Bvc2l0aW9uIC8+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48QmxvYj48TmFtZT5saXN0LXdlaXJka2V5cy17fH1+X18weDdmX188L05hbWU+PFByb3BlcnRpZXM+PENyZWF0aW9uLVRpbWU+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0NyZWF0aW9uLVRpbWU+PExhc3QtTW9kaWZpZWQ+TW9uLCAxNSBKdWwgMjAxOSAxNjoxMDoyMSBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+MHg4RDcwOTNFRjA0MDgxMDI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxDb250ZW50LVR5cGU+dGV4dC9wbGFpbjsgY2hhcnNldD11dGYtODwvQ29udGVudC1UeXBlPjxDb250ZW50LUVuY29kaW5nIC8+PENvbnRlbnQtTGFuZ3VhZ2UgLz48Q29udGVudC1DUkM2NCAvPjxDb250ZW50LU1ENT5YVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT08L0NvbnRlbnQtTUQ1PjxDYWNoZS1Db250cm9sIC8+PENvbnRlbnQtRGlzcG9zaXRpb24gLz48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48QWNjZXNzVGllcj5Ib3Q8L0FjY2Vzc1RpZXI+PEFjY2Vzc1RpZXJJbmZlcnJlZD50cnVlPC9BY2Nlc3NUaWVySW5mZXJyZWQ+PExlYXNlU3RhdHVzPnVubG9ja2VkPC9MZWFzZVN0YXR1cz48TGVhc2VTdGF0ZT5hdmFpbGFibGU8L0xlYXNlU3RhdGU+PFNlcnZlckVuY3J5cHRlZD50cnVlPC9TZXJ2ZXJFbmNyeXB0ZWQ+PC9Qcm9wZXJ0aWVzPjxPck1ldGFkYXRhIC8+PC9CbG9iPjxCbG9iPjxOYW1lPmxpc3Qtd2VpcmRrZXlzLeKYuuKYuuKYujwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5Nb24sIDE1IEp1bCAyMDE5IDE2OjEwOjIyIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhENzA5M0VGMDRENTQ5NzwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMD5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjKbU2hQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d68b9089fa7b7326\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B47DAF4D\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf44-301e-0024-6059-59ee82000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d5cf6a585ab5315c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"7\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"afqrYmg1ApVVDefVh7wyPQ==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"Z29vZGJ5ZQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"afqrYmg1ApVVDefVh7wyPQ==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4815838\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"QEUKcRXwUQA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf50-301e-0024-6b59-59ee82000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"49526966c47aca19\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B47DAF4D\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf5c-301e-0024-7559-59ee82000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"72322ef6b167c73a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"7\"\n          ],\n          \"Content-Md5\": [\n            \"afqrYmg1ApVVDefVh7wyPQ==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4815838\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf64-301e-0024-7c59-59ee82000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6120aa89f6ddc39d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1000\\u0026prefix=blob-for-md5-\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf6e-301e-0024-0659-59ee82000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PFByZWZpeD5ibG9iLWZvci1tZDUtPC9QcmVmaXg+PE1heFJlc3VsdHM+MTAwMDwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbWQ1LWFhYTwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5XZWQsIDA3IEZlYiAyMDI0IDAwOjA2OjU5IEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5XZWQsIDA3IEZlYiAyMDI0IDAwOjA2OjU5IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQzI3NzBCNDdEQUY0RDwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PEJsb2I+PE5hbWU+YmxvYi1mb3ItbWQ1LWJiYjwvTmFtZT48UHJvcGVydGllcz48Q3JlYXRpb24tVGltZT5XZWQsIDA3IEZlYiAyMDI0IDAwOjA2OjU5IEdNVDwvQ3JlYXRpb24tVGltZT48TGFzdC1Nb2RpZmllZD5XZWQsIDA3IEZlYiAyMDI0IDAwOjA2OjU5IEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4weDhEQzI3NzBCNDgxNTgzODwvRXRhZz48Q29udGVudC1MZW5ndGg+NzwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04PC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2RpbmcgLz48Q29udGVudC1MYW5ndWFnZSAvPjxDb250ZW50LUNSQzY0IC8+PENvbnRlbnQtTUQ1PmFmcXJZbWcxQXBWVkRlZlZoN3d5UFE9PTwvQ29udGVudC1NRDU+PENhY2hlLUNvbnRyb2wgLz48Q29udGVudC1EaXNwb3NpdGlvbiAvPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjxBY2Nlc3NUaWVyPkhvdDwvQWNjZXNzVGllcj48QWNjZXNzVGllckluZmVycmVkPnRydWU8L0FjY2Vzc1RpZXJJbmZlcnJlZD48TGVhc2VTdGF0dXM+dW5sb2NrZWQ8L0xlYXNlU3RhdHVzPjxMZWFzZVN0YXRlPmF2YWlsYWJsZTwvTGVhc2VTdGF0ZT48U2VydmVyRW5jcnlwdGVkPnRydWU8L1NlcnZlckVuY3J5cHRlZD48L1Byb3BlcnRpZXM+PE9yTWV0YWRhdGEgLz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlciAvPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    },\n    {\n      \"ID\": \"3662c96729012fac\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf7c-301e-0024-1459-59ee82000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"96c9cc77263dc4b0\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cb8ddf90-301e-0024-2759-59ee82000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/duplicate_case-insensitive_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjCuQd1QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/empty.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjA0D66gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"538969556364df4e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B41B7952\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"163de19b-201e-0007-7759-597441000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"82bbea8250fde130\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B41B7952\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"163de1a6-201e-0007-0159-597441000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5545d636d50a293d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"163de1ab-201e-0007-0559-597441000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjCtuhkQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/non-utf8_metadata_key.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjKaZQTQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/non-utf8_metadata_value.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjKa5f2wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/valid_metadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjCusDiQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"14a632549ed0996c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Ms-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Ms-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B42E3B52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5b142a43-b01e-0077-4a59-59cdb6000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"83745ed21f469704\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B42E3B52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Ms-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Ms-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5b142a4b-b01e-0077-4f59-59cdb6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9dc63b97316be1e7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5b142a4e-b01e-0077-5159-59cdb6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/valid_metadata_with_content_type.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjGv36sAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"808ec749314c1abb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4578F45\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"325adfed-201e-0081-0659-59b8f8000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"62a3132af30e93c1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4578F45\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"325ae000-201e-0081-1759-59b8f8000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8bca071c9242e900\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"325ae00f-201e-0081-2559-59b8f8000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/valid_metadata_with_empty_body.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjEj8FlAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cfd3d7c0b0604059\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4414B52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c1fcce93-901e-002d-1e59-59ab51000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d5ef5dbb8a6903e9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4414B52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c1fcceab-901e-002d-3259-59ab51000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c83b3f4f6971546f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c1fcceb6-901e-002d-3b59-59ab51000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestMetadata/weird_metadata_keys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCjIkG4AgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e9e2685baec724b4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Meta-Foo__0x20__bar__0x20__baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Ms-Meta-Foo__0x22__bar__0x22__baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Ms-Meta-Foo__0x2f____0x2f__bar__0x2f____0x2f____0x2f__baz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Ms-Meta-Foo__0x2f__bar__0x2f__baz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Ms-Meta-Foo__0x5c__bar__0x5c__baz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Ms-Meta-__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Ms-Meta-__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Ms-Meta-__0x20____0x21____0x22____0x23____0x24____0x25____0x26____0x27____0x28____0x29____0x2a____0x2b____0x2c____0x2d____0x2e____0x2f__\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Ms-Meta-__0x263a____0x263a____0x263a__\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Ms-Meta-__0x2e____0x2e____0x2f__foo__0x2f____0x2e____0x2e____0x2f__bar__0x2f____0x2e____0x2e____0x2f____0x2e____0x2e____0x2f__baz__0x2e____0x2e____0x2f__\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Ms-Meta-__0x2e____0x2e____0x5c__foo__0x5c____0x2e____0x2e____0x5c__bar__0x5c____0x2e____0x2e____0x5c____0x2e____0x2e____0x5c__baz__0x2e____0x2e____0x5c__\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Ms-Meta-__0x2e____0x2e____0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Ms-Meta-__0x31__2345\": [\n            \"12345\"\n          ],\n          \"X-Ms-Meta-__0x3a____0x3b____0x3c____0x3d____0x3e____0x3f__\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Ms-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Ms-Meta-__0x5b____0x5c____0x5d____0x5e___\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Ms-Meta-__0x60__\": [\n            \"%60\"\n          ],\n          \"X-Ms-Meta-__0x7b____0x7c____0x7d____0x7e____0x7f__\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B46A2A2A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"V0JSBnCFdzM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5daca777-c01e-0052-7a59-5964ca000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3548e93a704cf317\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B46A2A2A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Meta-Foo__0x20__bar__0x20__baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Ms-Meta-Foo__0x22__bar__0x22__baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Ms-Meta-Foo__0x2f____0x2f__bar__0x2f____0x2f____0x2f__baz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Ms-Meta-Foo__0x2f__bar__0x2f__baz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Ms-Meta-Foo__0x5c__bar__0x5c__baz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Ms-Meta-__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Ms-Meta-__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Ms-Meta-__0x20____0x21____0x22____0x23____0x24____0x25____0x26____0x27____0x28____0x29____0x2a____0x2b____0x2c____0x2d____0x2e____0x2f__\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Ms-Meta-__0x263a____0x263a____0x263a__\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Ms-Meta-__0x2e____0x2e____0x2f__foo__0x2f____0x2e____0x2e____0x2f__bar__0x2f____0x2e____0x2e____0x2f____0x2e____0x2e____0x2f__baz__0x2e____0x2e____0x2f__\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Ms-Meta-__0x2e____0x2e____0x5c__foo__0x5c____0x2e____0x2e____0x5c__bar__0x5c____0x2e____0x2e____0x5c____0x2e____0x2e____0x5c__baz__0x2e____0x2e____0x5c__\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Ms-Meta-__0x2e____0x2e____0x5c__foo__0x5c____0x5c__bar__0x5c____0x5c____0x5c__baz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Ms-Meta-__0x31__2345\": [\n            \"12345\"\n          ],\n          \"X-Ms-Meta-__0x3a____0x3b____0x3c____0x3d____0x3e____0x3f__\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Ms-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Ms-Meta-__0x5b____0x5c____0x5d____0x5e___\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Ms-Meta-__0x60__\": [\n            \"%60\"\n          ],\n          \"X-Ms-Meta-__0x7b____0x7c____0x7d____0x7e____0x7f__\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5daca780-c01e-0052-0159-5964ca000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"97be359fd9584124\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-metadata\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5daca78b-c01e-0052-0a59-5964ca000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestNonexistentBucket.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMByLQxiIwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a5186170b1dcffac\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/bucket-does-not-exist?comp=list\\u0026delimiter=\\u0026maxresults=1\\u0026prefix=\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"ContainerNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0bdde196-d01e-002c-7a59-59f48d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+Q29udGFpbmVyTm90Rm91bmQ8L0NvZGU+PE1lc3NhZ2U+VGhlIHNwZWNpZmllZCBjb250YWluZXIgZG9lcyBub3QgZXhpc3QuClJlcXVlc3RJZDowYmRkZTE5Ni1kMDFlLTAwMmMtN2E1OS01OWY0OGQwMDAwMDAKVGltZToyMDI0LTAyLTA3VDAwOjA2OjEwLjk5MDMwOTdaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"f4f7f71e382d586f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket?comp=list\\u0026delimiter=\\u0026maxresults=1\\u0026prefix=\\u0026restype=container\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:10 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0bdde1b0-d01e-002c-1159-59f48d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RW51bWVyYXRpb25SZXN1bHRzIFNlcnZpY2VFbmRwb2ludD0iaHR0cHM6Ly9nb2Nsb3VkYmxvYnRlc3RzLmJsb2IuY29yZS53aW5kb3dzLm5ldC8iIENvbnRhaW5lck5hbWU9ImdvLWNsb3VkLWJ1Y2tldCI+PE1heFJlc3VsdHM+MTwvTWF4UmVzdWx0cz48QmxvYnM+PEJsb2I+PE5hbWU+YmxvYi1mb3ItY29weWluZy1kZXN0PC9OYW1lPjxQcm9wZXJ0aWVzPjxDcmVhdGlvbi1UaW1lPk1vbiwgMTUgSnVsIDIwMTkgMTY6MTA6MjcgR01UPC9DcmVhdGlvbi1UaW1lPjxMYXN0LU1vZGlmaWVkPlRodSwgMTIgT2N0IDIwMjMgMTc6NDI6MTEgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPjB4OERCQ0I0QTkwQTRBMUUwPC9FdGFnPjxDb250ZW50LUxlbmd0aD4xMTwvQ29udGVudC1MZW5ndGg+PENvbnRlbnQtVHlwZT50ZXh0L3BsYWluPC9Db250ZW50LVR5cGU+PENvbnRlbnQtRW5jb2Rpbmc+aWRlbnRpdHk8L0NvbnRlbnQtRW5jb2Rpbmc+PENvbnRlbnQtTGFuZ3VhZ2U+ZW48L0NvbnRlbnQtTGFuZ3VhZ2U+PENvbnRlbnQtQ1JDNjQgLz48Q29udGVudC1NRDU+c1FxTnNXVGdkVUVGdDZtYjV5NC81UT09PC9Db250ZW50LU1ENT48Q2FjaGUtQ29udHJvbD5uby1jYWNoZTwvQ2FjaGUtQ29udHJvbD48Q29udGVudC1EaXNwb3NpdGlvbj5pbmxpbmU8L0NvbnRlbnQtRGlzcG9zaXRpb24+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PEFjY2Vzc1RpZXI+SG90PC9BY2Nlc3NUaWVyPjxBY2Nlc3NUaWVySW5mZXJyZWQ+dHJ1ZTwvQWNjZXNzVGllckluZmVycmVkPjxMZWFzZVN0YXR1cz51bmxvY2tlZDwvTGVhc2VTdGF0dXM+PExlYXNlU3RhdGU+YXZhaWxhYmxlPC9MZWFzZVN0YXRlPjxTZXJ2ZXJFbmNyeXB0ZWQ+dHJ1ZTwvU2VydmVyRW5jcnlwdGVkPjwvUHJvcGVydGllcz48T3JNZXRhZGF0YSAvPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjIhOTYhTURBd01ESTRJV0pzYjJJdFptOXlMV052Y0hscGJtY3RaR1Z6ZEMxbGVHbHpkSE1oTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oPC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/length_0_read.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB2BGw6ZQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2a1c696bbeb3f22c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770994BB5ED\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"CQSsryslIqA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f08b50d0-701e-0047-7959-597379000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1291b49a2fed1cec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770994BB5ED\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f08b50d8-701e-0047-8059-597379000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"d38c131c84b64379\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770994BB5ED\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f08b50e1-701e-0047-0859-597379000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"0344a908def7e83e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f08b50e5-701e-0047-0c59-597379000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/negative_offset_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB2BGHBpwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/read_a_part_in_middle.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB2GgYGrAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"faf3f1b58246ebac\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099822742\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"CQSsryslIqA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe632c-701e-0057-7459-59b611000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"83ca26d9b305bcc7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=10-14\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099822742\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe6331-701e-0057-7859-59b611000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"29abdccfde812ac8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=10-14\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099822742\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe6336-701e-0057-7c59-59b611000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"d8fb09a689a26ae4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=14-14\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099822742\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe633c-701e-0057-0259-59b611000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"9223cf8f46921c95\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=14-14\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099822742\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe633d-701e-0057-0359-59b611000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"943ca0f123fef95f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=12-14\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"Content-Range\": [\n            \"bytes 12-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099822742\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe6340-701e-0057-0659-59b611000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"bW5v\"\n      }\n    },\n    {\n      \"ID\": \"5bd0daf167cbf34c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"bafe6343-701e-0057-0959-59b611000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/read_from_positive_offset_to_end.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB2Da12yQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e9e9d838787ab93f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709963321F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"CQSsryslIqA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"059081d3-501e-001d-2359-59159e000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4be3b133d5e46337\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=10-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709963321F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"059081e8-501e-001d-3559-59159e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"168276e417593df2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=10-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709963321F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"059081f7-501e-001d-4259-59159e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"c68d951e6cf56101\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=22-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709963321F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"059081ff-501e-001d-4959-59159e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"e24feb1d737d23ea\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=22-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709963321F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"05908205-501e-001d-4f59-59159e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"1145b9238a4b22de\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=16-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Range\": [\n            \"bytes 16-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709963321F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0590820d-501e-001d-5659-59159e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"cXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"e0e21c29bf88a43f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"05908219-501e-001d-6059-59159e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/read_in_full.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB2JaSYeAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"49e383875779ecd2\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099A0CE54\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"CQSsryslIqA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c117-601e-005b-6e59-592119000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"faf4151972d76f68\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099A0CE54\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c125-601e-005b-7b59-592119000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"31b96b0df9c5845f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099A0CE54\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c132-601e-005b-0559-592119000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"e0a1a7fa0f80e5b8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=18-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099A0CE54\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c13b-601e-005b-0e59-592119000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"296f9643ee676df1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=18-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099A0CE54\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c142-601e-005b-1559-592119000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"e2b5ce9a0e803515\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=9-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099A0CE54\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c14b-601e-005b-1e59-592119000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"1224e53d1e3b3854\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"4fa5c152-601e-005b-2559-592119000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/read_in_full_with_negative_length_not_-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB2MhiqOgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d0807eec7cb46206\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099C0FBDA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"CQSsryslIqA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef24-f01e-0004-4159-599525000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2cc626c6440cddf3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099C0FBDA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef2b-f01e-0004-4759-599525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"66d6d1211a7fd2e8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099C0FBDA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef33-f01e-0004-4e59-599525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"98cc9815bacd7597\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=18-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099C0FBDA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef3a-f01e-0004-5559-599525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"8395a07ccf0eedf7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=18-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099C0FBDA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef42-f01e-0004-5b59-599525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"8d2d1868db803d67\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Range\": [\n            \"bytes=9-\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC277099C0FBDA\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef47-f01e-0004-6059-599525000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"f9719f35870c1fe1\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"df71ef53-f01e-0004-6a59-599525000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestRead/read_of_nonexistent_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB1OCLMbQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7bb0d73519f2bdbe\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709937E2A9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"CQSsryslIqA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3d382368-001e-0000-4559-591822000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8da06e4be9503f54\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/key-does-not-exist\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3d382370-001e-0000-4c59-591822000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjNkMzgyMzcwLTAwMWUtMDAwMC00YzU5LTU5MTgyMjAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6MTQuMDM5MTczOVo8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"ea8bc12ff38fa675\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:13 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3d382378-001e-0000-5359-591822000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestSignedURL.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dviK2JCzi3QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e88a3ea7a04f3ee1\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"279\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"AuthorizationPermissionMismatch\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf088c-801e-0021-3329-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QXV0aG9yaXphdGlvblBlcm1pc3Npb25NaXNtYXRjaDwvQ29kZT48TWVzc2FnZT5UaGlzIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB1c2luZyB0aGlzIHBlcm1pc3Npb24uClJlcXVlc3RJZDpmMWNmMDg4Yy04MDFlLTAwMjEtMzMyOS05ODNjNTkwMDAwMDAKVGltZToyMDI0LTA0LTI2VDIyOjMzOjI2LjgzNTg3MzFaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"2cf85a49503197fa\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=d\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"279\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"AuthorizationPermissionMismatch\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf0893-801e-0021-3929-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QXV0aG9yaXphdGlvblBlcm1pc3Npb25NaXNtYXRjaDwvQ29kZT48TWVzc2FnZT5UaGlzIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB1c2luZyB0aGlzIHBlcm1pc3Npb24uClJlcXVlc3RJZDpmMWNmMDg5My04MDFlLTAwMjEtMzkyOS05ODNjNTkwMDAwMDAKVGltZToyMDI0LTA0LTI2VDIyOjMzOjI2Ljg1NDk4NzdaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"d030a18fe2807069\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=cw\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:25 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E3FD4193\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vo7q9sPVKY0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf0897-801e-0021-3d29-983c59000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aaed499f1908b08a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=d\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"279\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"AuthorizationPermissionMismatch\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf089d-801e-0021-4129-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QXV0aG9yaXphdGlvblBlcm1pc3Npb25NaXNtYXRjaDwvQ29kZT48TWVzc2FnZT5UaGlzIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB1c2luZyB0aGlzIHBlcm1pc3Npb24uClJlcXVlc3RJZDpmMWNmMDg5ZC04MDFlLTAwMjEtNDEyOS05ODNjNTkwMDAwMDAKVGltZToyMDI0LTA0LTI2VDIyOjMzOjI2Ljg5Nzc4MTBaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"20e8106baa8c5e09\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=cw\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"279\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"AuthorizationPermissionMismatch\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08a3-801e-0021-4629-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QXV0aG9yaXphdGlvblBlcm1pc3Npb25NaXNtYXRjaDwvQ29kZT48TWVzc2FnZT5UaGlzIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB1c2luZyB0aGlzIHBlcm1pc3Npb24uClJlcXVlc3RJZDpmMWNmMDhhMy04MDFlLTAwMjEtNDYyOS05ODNjNTkwMDAwMDAKVGltZToyMDI0LTA0LTI2VDIyOjMzOjI2LjkxNjEyNDhaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"71a4330d6c1b156a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"223\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Blob Service Version 1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08a6-801e-0021-4929-983c59000000\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+UmVzb3VyY2VOb3RGb3VuZDwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIHJlc291cmNlIGRvZXMgbm90IGV4aXN0LgpSZXF1ZXN0SWQ6ZjFjZjA4YTYtODAxZS0wMDIxLTQ5MjktOTgzYzU5MDAwMDAwClRpbWU6MjAyNC0wNC0yNlQyMjozMzoyNi45MzQyNTczWjwvTWVzc2FnZT48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"5537485276eba0d8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC6640E3FD4193\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08a8-801e-0021-4b29-983c59000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"8ac1ef3ac555f51d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"279\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"AuthorizationPermissionMismatch\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08ab-801e-0021-4e29-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QXV0aG9yaXphdGlvblBlcm1pc3Npb25NaXNtYXRjaDwvQ29kZT48TWVzc2FnZT5UaGlzIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB1c2luZyB0aGlzIHBlcm1pc3Npb24uClJlcXVlc3RJZDpmMWNmMDhhYi04MDFlLTAwMjEtNGUyOS05ODNjNTkwMDAwMDAKVGltZToyMDI0LTA0LTI2VDIyOjMzOjI2Ljk3MTM2NjJaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"2d4b51c22891c796\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=cw\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"279\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"AuthorizationPermissionMismatch\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08ae-801e-0021-5129-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QXV0aG9yaXphdGlvblBlcm1pc3Npb25NaXNtYXRjaDwvQ29kZT48TWVzc2FnZT5UaGlzIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB1c2luZyB0aGlzIHBlcm1pc3Npb24uClJlcXVlc3RJZDpmMWNmMDhhZS04MDFlLTAwMjEtNTEyOS05ODNjNTkwMDAwMDAKVGltZToyMDI0LTA0LTI2VDIyOjMzOjI2Ljk4OTgxOTdaPC9NZXNzYWdlPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"b94ff09b49f80ede\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=d\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08b1-801e-0021-5429-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4e194413626b0905\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-signing?sp=r\\u0026sr=b\\u0026sv=2023-11-03\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Fri, 26 Apr 2024 22:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f1cf08ba-801e-0021-5a29-983c59000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOmYxY2YwOGJhLTgwMWUtMDAyMS01YTI5LTk4M2M1OTAwMDAwMApUaW1lOjIwMjQtMDQtMjZUMjI6MzM6MjcuMDI4OTQ3M1o8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestUploadDownload.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCiN511SAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a1573b6ce9672d41\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4081B42\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"wOkxZJKwY/U=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3ca15839-a01e-0044-4059-59921d000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9ed781a5d8e54025\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4081B42\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3ca1584b-a01e-0044-5059-59921d000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"dXAgYW5kIGRvd24=\"\n      }\n    },\n    {\n      \"ID\": \"a1573b6ce9672d42\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B4081B42\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:59 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"wOkxZJKwY/U=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3ca15839-a01e-0044-4059-59921d000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"31399688c633573d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3ca15857-a01e-0044-5a59-59921d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"31399688c633573e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:58 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3ca15857-a01e-0044-5a59-59921d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/ContentType_is_discovered_if_not_provided.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMCZBfVAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4625d8a3d67044cd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A675FB5A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"h/FDiq2zgEw=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"06db5877-101e-0041-6159-5940c6000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"923e7ca9e4b0c4b9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A675FB5A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"06db58b2-101e-0041-6f59-5940c6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"91f79674569ba9f7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A675FB5A\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"06db58d4-101e-0041-7959-5940c6000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cc3411340347defc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"06db58e3-101e-0041-0159-5940c6000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/ContentType_is_left_empty_if_not_provided_and_DisableContentTypeDetection_is_true.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMEqb1XQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1d24ce9ae728ae9a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6920AC5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"h/FDiq2zgEw=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"772045de-b01e-0083-1159-590640000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"452773bba75efcec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6920AC5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"772045f5-b01e-0083-1a59-590640000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"3c891036536c3bde\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"77204603-b01e-0083-2159-590640000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/Content_md5_did_not_match,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMMXnlVgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"18889ef16c37b9fd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"dH9B/ScP7BuCvgMMwc1IAQ==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"ZXhpc3RpbmcgY29udGVudA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"dH9B/ScP7BuCvgMMwc1IAQ==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6DC0148\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vsdKdvBj/oM=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1b824846-d01e-0003-5659-59f946000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6a1f17607f6fd4a4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"Content-Md5\": [\n            \"dH9B/ScP7BuCvgMMwc1IAQ==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6DC0148\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1b824850-d01e-0003-5c59-59f946000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"ZXhpc3RpbmcgY29udGVudA==\"\n      }\n    },\n    {\n      \"ID\": \"8c7980f71320c2fc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1b824860-d01e-0003-6559-59f946000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/Content_md5_did_not_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMLJf7xgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"21b17413210a0e73\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"7662cf48-b01e-0067-1459-5908de000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjc2NjJjZjQ4LWIwMWUtMDA2Ny0xNDU5LTU5MDhkZTAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6MzYuODI1NTQwM1o8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/Content_md5_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMJOHbOAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1efba82184b182f9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6BBFAE2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"vo7q9sPVKY0=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"b32a493b-601e-0039-2459-59e33e000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fc03ac90885e7f3f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6BBFAE2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"b32a4958-601e-0039-3459-59e33e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"60cc779a7410e661\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"b32a496f-601e-0039-3f59-59e33e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/a_large_jpg_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCNBoKDvwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"71c7010a770404d4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAH0A+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKDRzQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFMkkSJS7sFUdSTQA+iq/wBth3Fd65xnGamV1YZByKAHUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAAGBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFNd1QEsQAOpNADqKwr3xhoVg+y41O2jbjgyDv0qXSfE+ka2hfT76GcA7TtbkH6UAbFFICD0NLQAUUUUAFFGRRQAUUmaTcPWgB1FN3j1FKWA7igAZgqknoK8H+InjWbVNZfSLB7zCtsWOA43sD349vf8ACvV/Getx6H4Wvb9tx2R4G3sTwDXm3wm8OQS2cmuXRWe6uJGdXcElBnpzQBg23w/8ZzWx1VdRe2ugQ8VqJTwPQt612HgDx3qt/q02haxAqXlumWIBBbnuO3avTFjQRYwOBXjscsQ+O935TNkxBWA4Gdo6468etAHtkbbkBp9RQf6sfSpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAzzRRRQAUUUhIHU0ALRTd6+op2QaACiiigAooooAKKKSgBaKKKACiiigAooooAKKKKACkzzS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAjHCk+leGfFLx1Lcu+jaeWVt+C5yuSO3PHPrXtWoXAtrCaYnARCa+f/CsVpr/AMTrm4kh27GJH/TQjvQBteDPhLb3lrDqOuhppZIx+5YkY5zzg81ual8Jbe0/03wzdy6bfpkptfcjcdDnJ/KvTII0hhAHAAqG21S0unZIpkZkOGAPSgDzjw58R7iz1FNC8URi11PzCgbGFcdiPY9K9PhuEmQMjAgjNeY/GDwuuraL/adoyx31mCwbpuTuMiuK0r4u3dn4dWK2t/PvEUKzHO1T0+tAH0M0iqMkiqN7rVhYQmS5uooVHJLuAAK8bt9b8b+I51tSk1sHhwxQfu8nnduAz07Z61sxfDDU7u1SS91udpjy6uisufUZHB/GgDrbvx5pdtG0yTfaI1++0QyE6dfzFY//AAtrRxbzvtuGkjJxEqZLc4GCOOfrUtn8KdFifzLjzbgk5Ikbg57YHaujtPB+iWciywWECSKMbggzigDz+/8AjEpkENhp879N7MCpXjJ4I7fWs+38ZeM9TZpNP064G9SYy8W5Poc4A7cjNewLo1gq4FrCBnOAg61Zjto4wAqKAOmBQB5E918S4oTO0NvgA5QqWJ54IA6fmaW3uPiUbIl4UM8pUpkj5Fzzn3wf0r2DYuMYFARR2FAHjEuieP8AVdMeO+lhk8zG23lVQFI65I/+vUdnYfELSVjgiht4oUXhLeNNuc/d59QeuO1e17B6UFAe1AHkJ1P4kral5LW3B3bQvl7mJ9eD07Dp71xOneIbnS/HtzfavpzQXHypcm35AY45Oe2PSvpQxqR0FUP7HsvPkmFvGJJDl22DLfWgDldD+JWg6mgCzvC27afPQqAc9CwyM/jXaQXUU6bkdWHqDmuO8Q/DTStaVmiZ7Nnbe4twArtggMR689f8K4dPCPjvwlqAbR7yXUbJWBWIyhV285BDd/cUAe35FLXmWj/FKKG6+xeI7cabMuMlycZ98jjPNei2l9b30KTW0qyRsMqynINAFiiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkJAHNDMFUk14/8Svik2ku+j6Q2b8nYxGcqT6Y70AdX4z+I+l+E0WJmE94+QkKHOD746V5i+vfEfxvI0mnIdOt1YDumee2eTWt4E+Hd3qdxFrPibdNPnekbnOOc5P8AhXssNjDCiqiABemBQB4LeeGPiNpdp9rbV5rnaQzJFKxbaBzycelbPgv4k6hFd29lrMwlE+7bIy4KlTjHGc+tezmNSuCARXm/xA8HW0Wh3OraVFFb3to5vC2OHI5bd+FAHpEUgkjV1OQRmn1zHgjXBrfh2zuiyF3jBYIcgHvXT0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUCigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDm/HAu/8AhGLr7Jy+35lClsr36V4F4V1P+yvHscqPuieQq+8EHBPvX09KgkQowyCMGvCvif4Hk066XW9LgJgiO6ZUYIUHc5oA9vgkE1sD1BFeF+LdS1Dwd4s8+CSRoZpCxYrhR7H1r0jwf4lh1Tw/bzLICdoUgsD04NR+JfCFr4ihfdEjyEEpuJ2nPrigCDw74ms/F2nK6uCRw6MO/wBK85tLaDwf8UrnT57Um01Ah4eBjJI7exroPCngHWfC3irfAXksHHzlnGB9PU/hXoeueD9M8Q/ZpL2FvPt23wzRsVdD7EUAatlbxrEpRQBjjAq6BUdtCIIEjBJCgDJ6mpaACiiigAooooAKKKKACiiigAooooAKTaKWigDmPFnhKz1+xYmygmukH7vzRgH2J9K8ut18VfDAtcmyku9IL5ljik3LCM9VHX8694qOWFJkKOoKngg0AYnhrxXpvifTY72wuFkVuGXoynuCOxrf615l4h+H13pt1Jrng2b7Dfg7pLVR+5n9iOgPvT/C/wAUoL27Ok65bHS9WiKpJDKRhiRxtNAHpVFRxyrIqkHORUlABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRVa/keOxnaLmURsUGcZOOOaAPNfix4/Gh6c+l6dMpv5/kyhyUB6/Q1zfw5+Hvk3S6xrDia4kXKIQSFzzk5715idahtvFM97rllNc3CSNiLO75857mtS/8AiP4k1W+SbSEmtYYQFjRTlQfU9j+NAH1NbNFHGFUjgVP5qk4Br5k0i6+J2syzPb3txFIcYUqFTBHXNbF/YfEnwzbNrl7rxniiw0sSMSAM+mAMc0AfQqnNRXltFd2c1vMu6KVCjqe4IwRWT4T1pdd8P2t9n5pE+b69622+6aAPHfhQyaTr+r6MVdHimb5cgrgMRwevQDrXsleFWVw9l8b9SSGDejNyzM3yBgDkDpyT+le4RSB0BHTFAEtFFFABRRRQAUUUUAFFFFABSb1zjIzXGePfHEXhayEEGJNQnGIowRkZ4Bx1PPavJp7nxvcvJqckOooWVZPMVDwvU4xyOO2B0oA+jcg0V4l4d+KN3pl3Fb6zPFd2Uj7Eu425QcD5hjOM8ZNeyWV/b39vHPbyrJG43KVOcigCzRRRQAUUUUAFFFFABQM45oooAKKKKACiijFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACMcKTXkvxX8cPpsf9iWNsZ7q4jOcgNt/4Dg5rr/GfjO28Lae0hTz7huEhVwGOe/Nee/D7wzceINduvFOsRyM0r/6OJjk7fXGPyxQBw2gp4m8Hz2zzwsIZz54DcKOuVx2r6D8Oa7bavYQTxkB3UNs3AkfXFR+KPCNt4j0OWwfZG5H7qUpkxt6iub8HfDm88MysTdpIdy/OAQWUHoc0AekqB1xwafSKMACloAKKKKACiiigAprNtHNQXN5DbRs8jgBQTXk/ib4nHzZLPSZvtN0GwIYoWLNg84PT/P4UAeszXkNuheWRVAGck4rIu/FemWgQyXMY3HH3xgcZ5ryo6J498TuiNs0q0YjIaUvJj/P0rorH4M6SrmW/uru9Z1AkE0nBPqMcigDoJviT4bhKhtTg2scAq2f5fStey8UaTfQiWC+hlQ91auePwm8KnP/ABLEyV2n526enWqFz8GNAaN0s3u7TcAMxTH8+c0Ad/FqdrM5RJkZ1ALKGyRmrSyK3Qg14xqnwl8QQSxz6T4ou96YUGWRgQmOmRwfyrNtPGPi/wAATxw+KIzdWJcr5wIZwBnBOPXjrQB73RWFoXifTtds457KdZFYZ6YrcBB6UALRRRQAhFcJ49+Hdl4rtvtEP+j6nD80M6Hbkjs3qK7ykIzQB5R4E8Z3sOoyeGPEMMkGp254ZyMSDtg9+Oc16Y+o2kKAyzxp0HzMBzXnvxb8L3F5ow1zSJHh1PTyZQ0fV1A5B+grzz4e+H38d2klze63dvMshEyMxJz26nGPwoA9guviV4dtZpInumby+rJEzL+YFRzfE/w5FKsYuJZCcZ8uJm2k9jgdam0L4f6Nom54YmllY5LytuPTFaR8JaOZXm+wwiRyCzBcE4II/kKADRvFuk65G72dyGCMVIYFTkdeDWzHPFKMo6kH0NcNq3wt0W6gdrKN7O5bJEsUjDJPrz0rjLHwd448Jy3UtnqsdxCpXyoSSxcDtg8LQB7gKK8x0T4pQrNFYa7by2V8ZPJIdMBnx25OByOtekwXEdxGHjYEHmgCWiiigAooooAKKKKACop4EnQqyg5GOalooA4w/D3QU1c3rWELvJnJdQ3P49K37fRbC0j2Q20SKOgVQBVy9uBbWrykZCjNeHax8ZNdu76Wy0DSVkkRmBcqzAAH0GKAPZha28N0SgVc8kCuU+JGrWVn4N1SNp4RNJAyohkClieOK4C3n+J/iLT3hZ1t1n+UyeRtKg475+tOh+Ceu6iqHWvEUsgUAbFLNx+JoAr/AAv8fW+neGja3swQ20nVmABB5rvY/i74edMO86ZztYxHDfTFZGkfArSLOM/apnncjjtiuug+G/huGFY/7LtzjqdnJ/GgD551/wAW3f8Awnd/renxXAjlOFDcE4AwenT2r0X4ffFu8vNTTSfEVutrLJgRSlSgY+hB716oPCejKBixiyvQlc15x8Z9MtLfw/aXcapFcRXAMbKBu6HPHftQB7DG4kQOpyD0p1c74L1JdT8M2M6ur7ohyvTI4NdFQAUUUUAFFFFABRRQelAHhHjRbfVPi5psMkhZVlAIC4K7e3X1HoK9straMQKAoxivEviXbxaX8QLK+l3ojyK4kCA7TkdDn869ig1W2h0xLiWZFiCbixPbGaAMzXPAWga4h+1WSh+MPESjDGccj6mvJdO1zUvhd4wk0vVJrm40eXLRyMdwRScAj+tdzqXxp8KWbvGLiWR1BxsjPzEehryHxr42/wCEs1azbStMupkjyNkiEs+e3HbvQB9M6Xq9pq1lHdWkySxSKCrKcgiru9c4yM18ueHrr4hWmbDR7C6tY2zKUlQquTzwx/lXXaXp/wATpA1zdPtfj5GlGT/hQB7o0iKOWA+ppv2mHOPNTJ7bhXicvhrx9NObi9kNwrc7DKCI/YAde361Wm8MeLZFP+hlkzgMu4MuAexP+c0Ae7+bGf41/OnBgehFeFjSPFltNvlhvmhUqMRTMMdOncioodZ8RaYRFNdarHwSEADgEDOORn8M96APeqK8LtPilrxkSGYwCQrv2zRMm0e/ua6nTfig77Beaa7DgGS2bzByM5xjNAHpdFc7pnjXRNUYRxXqJKf+WcvyN+RrfSVJEDI4ZT0INAD6O9FFAATiiikJA70ALRWXqHiLSdLLC8v4IioywZxkD1I9KXT9f0vVP+PK+gmOM4RwePWgDTooBzRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWXr+s2+haRPf3LAJGucE9T6CtMnAzXivxZ11tV1a18PWe+TDBpFRScseAOv40AUfD+lTePPF82ramubVCNsbgMCOw9OPpXt9nZx2kKxxqFUAAADpXO+CfDkPh/R0hXl3O52xjJNdZQAmDmloooAKKKKACiiigAqlql9Hp1jJcybiqDkKuTVwkKCT0FeR/EfxfcXV3F4e0O6zcXLbGePDAdiCCD/kUAZN/wCI9V8feJZNG0WdodNjH76dAQR0zyRj1GPavRvC/gbS/DlikVvCrPnc0rqNzH1zVfwF4Pg8M6UIgTJPJ880p/iau0AxQA1Y1UABQKfRRQAYooqGS6gibDyKp9CaAJsVla34e07X7NrbULWOeMjow6e4q7He28rFUlViOuDnFTggjigDwTVvhz4g8BiTVfCt956oWJgeL5tp984OPwrrfhv8R28Ro1jqqRW+pxHDRA/f9wK9MkjWRSrAEHgg14P8QdHk8F+L7LxHpqxpDJIA0YQD6gdOtAHvKtuAPrTqzdGvl1HTYLlCdsiBgD15FaVABRRRQAySNZEKsMg14TfwN8NvifHIg26Vq0pdnx91jnK+mM4Ne8E4ryv46WLXXgoTxKDLbzrJnbkgdyD2oA9OtpVlhRgc5GanriPhjrX9s+ELO4aQvIF2Mx6kjiu3oAKjlhWUEEdqkoPFAHnfjz4f2OtW73xkliniG7zIkBbAHbHNc58PPGFxp+tTeG9SnMsasRaXDnHmqOwzn1r1y5vII0bzXVVA5LHAr56+JNsPDnjTT9SslIidlKOvRSDyue/rz69aAPo5G3qD606sjw5qMeqaNb3URJSRAwJrXoAKKKKACiiigBAc0tFFAFbUI5JLGZIQpkKELuOBXh3wndYvFmtabc7fO8zeFYc5BINe8P8AcOOteFJatofxw3hfLivSJAAf73X9aAPdFjVVACin4pFOQDUN1KYbaWRQSVUsAO/FAEjyIn3iBVG81zTrBS11ewQgcnfIBXzh4h8b+KNf197SK+e0j3lFjU7dpH6nGOtdDYfCaS/ijudR1qeYnDlVUDJ7gk5yKAOz1z41eHNOLw2bvf3A4CRDg/jXnkms+Lfibqf2eO3+yWBYqf3WVVfUk9T0/wDrVn6r4RtPCfj/AEvZt+wTSKhDqXOT65GBzivofTLWCGBPLRQMdhQBB4S0NtA0SCyaUysg5Y1vZAqB50RCSwGBXG+LPGkOjWMsguFj2jO88ge31NAHaS3UMK7nkAHua5/UfHvh3Sw/2jUoA6ZygbJ4ryG2m8U+O939mh7ezJ+a4uMjPsq9xXf+HfhjpOnW0RuIlubnO6SWZAxY49xwPpQBHN8aPD6k+Rb6hcjGf3VuTn/PP5Vp23xS8MzwCSW7kt2xuMc8LowHrjHT36V0UGhWFsoEVvGvrtQDNU9a8JaPrsCRahYwzKhyu5RkcY4PUUAWNK8UaPrW7+z7+CfacNscEj6itOS4jijLs4CgZJJ7V4V4u+HVl4WE2r6Nq8mmyKMxopPJx0zye1cTB428aeLbVNEgnlcr8ssiDLOM9WIHHTtQB1/xj+IOkalZLpVhH9qm35EwyAuCRx69PpXLaJoni/x7NaQXc9zHp6KoYlWRCAPTuceld34P+DjJNb3+uXUk86YYIrEgY6ZJ5/CvZrWyhtYwkaKoA4AFAHlenfAvRIh/pFxcOOcgEKCCc449Oa9A0zwlpOlIgtrSJSi7Q+3LY+vWt2igCAWsS8BAB9KlVAO1OozQAmB6UYHpS0UAJtB6io3toZCC8asR0yKlooA5rUfAuh6lcG4kt2jmJyXicqc4x2rm7v4R2hG+x1S7gnByGZtw/Hpnv3716TSDmgDya/8Ah3rJRxFdLKcD95Kfm4HGMDP+etY2nah4x8JsZbi1urm3UBXjPzIuDjIORj6V7nUFzaQXcLRTxJIjdVYZFAHlA+NsEF6IbuzZEwFJCk/N39gOnevSdI8QWGs6el5aXCSRN3U5xXC+NvhtHqjJLYfut/EgXAI989ef6V5Ott4s8Naw3hjTdQjuTdgB4kcv5fr6Y/OgD3XxP8RNL8PObcCS6u8f6qIcLxkbieBXmVx4x8ceMb1k0ZZLe23gDyU28d8sc812nhr4W6Xa20c+qxte3jANI0zs4yPQE13ltbWtogSNEQKOmMAUAeMWfwc1XUpEutY1yVpicsMb+vXkn+lZPibwXP8ADyS1vrPVbpYDwSqA5YHOCMgdK+hYriCVikUiMy8EA5Irj/im0cfgm6aRcncojwoOGz15B96ANPwTq11rHh6C6u12uw44xx27mukrlfh/A9v4UtY5EVCF4CnII9eAP5V1VABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSc59qAFooooAKKKKACiiigAooooAqahdJZ2cszkBUUkk15R4Mg/4STxdf6424xiQqFKbVyMY4z1/Kui+KmpT23h2W2gKDzxsYnOcHrjHSrPw60ZdI8PQRhQHb53Oc5J96AO0jQIoApxOBmgUY5oAWiiigAopOc0tABRRRQBn63ci00e6mJj+WM4EjbQTj1rxz4W6NJrOv3fiO7WM7mKRbVHH+feu2+Ld4bXwZMBHG+9guHzx9MEc1Z+G+mLp3hKxQRorNGGbb0JPNAHYxoEXAFOxz1paKACiiigDL13U10vTZZ2YDapPNeAya/rHjTxI+n2N09umCfMychRxxj616F8YL2W20CfbIEwuef4vYVz/wAOpdG07w6l9LeReaylmZ35XuR1oA841lfEvgzxFFanVy0sieYpVyARngH8q9J+H3xdm1C6+xawYxtGBIhwD065NeOeO/EUfiTxfNewybrYYSLdkAKPr0qnpDSWt7bnywQScYbryMGgD7bjdZEDKQQRkEVxfxS0WHVvBN6XQGW3QzRt02kVueFJZJvDlm8ow5jGQauavbQXml3NvcIrwyRsrq3QgigDjPhTqp1HwrbBiN0WU4AxgdOhPavQa8I+Dxex1a7sFuEkiDHYglDYXPXivdh0oAWs7WNasdEsZLy/uI4YkBOWOM47D1NaDHAJrwDxdcXPjz4iHSFYrZ2WV2FhgHPLEevTFAGzqPxqvri3E+heG7q5g3bTNIDt/DaP61yPij4keJdX0a50+/0IQRXKmMSbGyT3IB/Hv2r2/RNNstO0+G0hRVjiAAHrir17ptld25SaBHVieCOh9aAPHPhd8QtP063h0S7gkt5VYIHCcEn1A5Fe8RSCRAw7186/EDwQnhvVDrsChLNSoCxMcq3bg/QdK9l8C6s+s+F7K8dSrPGMg9/egDqKyfEeprpGjXF2zbQi5zWtXEfFSC4n8F3KW5+Y4zzjigDxXxDq3inxL52oAyw6cD5aNGTgehIzyCa4bU77VIZDb3k8m1lD7AeGB75966q48ciw8Ox6R9nDRyQiMhSQyMD1+hri9S1D7b5UqhVZE2YBycDj9aAPpv4Oagt34MtEVyxjyrcjr+dek15F8C7Ka28JiWZcedIWXjHHT+leu0AFFFFABRRRQAUUUUAFeR/Fy0bT9V0XXoY8eU5ilcYz1BX3PU165XC/Fuy+2eAbxhnMLLINoyeuP60Adfpl0t5psE6nIdAaluU3wOvPIxxXCfCPWxqvg+3RnJkg/dtnrxXfuMqRQB8eeNLJ9L12+cMFkt7xl256huc4/D9a6ew+J3i06Y89lo6PaQx4eRkbHAPOcit34reFmg8Y22rLBFLaXWEdXYcyZxyD2x6e9Fzf65daFLYWGgW9laeSY3a4k2AAjnAx2H8qAOGtb3xR438T2d1MGlEbJKViPyqoOMgZ69a9g8WeO5PDYs9NtPKlvZgAyOx3L6YA7nPWsb4PNaPplxAGVp4JWViMHjPrXn/xL1WWH4gXE7xIzQN5akkg4HTvigC9rHxB8VaBf+Tc38d15iBpIj/B7AjHvVnwvYaj8Q9fS+1NSunxkFYP4WI9fWvP7O0u9c1t+EaR2BkLHjH+RX058PvD66Vo8AZFD4GcUAdbpelwWFtHHFGEVRjaBWkAAMDigDA4paACuN8beO7XwtaeXGonvnB2RBgNvuf8O9a3inxHb+GdEn1CcFyg+SNfvOx6AV8/WcepeOteuLmOEy3EjL5ssg2rGM5A4OfyoAzb0+IPHOrNLKJ23Z89yfkiXP3QO3Tp717p4A8E2XhnR1ihiJdzuZ2AySfU1c8L+DrHRtNWD7OhJO6Q4J3N68k11kcaRqFVcAdB6UAKqhRgDFOorE8SeKdM8L6c15qM4jQfdXqXPoB60AbLOqAlmAArifEHxO0TR5TbW7PqF7natvajexPpx0ric+KfifetOlzPpWgZxHEpKvMvckg85rvPDnw70Xw+Ee3tVMw5MrElifxNAHOP4w8fajI/9neF47WNV3gXbks49iMAH2rPufEvxVtQssvh+3cAfMIjuz+TZzXsSxIowFFKY1JyQKAPH4vjHdaazReINDurORDgkKSCfyrtfDvxC0LxHEDZ3aeaesTHDj8K6Sawtp1IkhVs9ciuE1X4R6HcM1zpYk029GSk0DkAH/dzigD0BJ436MKkr5+Os+KvAXiu3ttenlnsGJVLnPyOOMZHY/417XomvWetWaT2sySKw6qc0Aa1FFFABRRRQBw/xK8Wjw5oyW9uUa/uzsiRienc8c1mfD7wU+nvLrWpYa/uuTxwg64Gcmum1nwXpuua7Z6peoZHtfuIWO3PqRVnxLcSad4fuGtreaWQLhUhByPy7UAYnirx1baLK1hbI0t1tyzKQREMdSM8/SvLYtR8RatqLz3V5ESzhYvNl2q6/wC7yMnPTPatbw58Mv8AhI5zrWqQzWrSSEm2cnp+hFdNL8JrCKB/sckgZnDAO5wv0oA6Pwnoh02JriY5nlUBjuzgAdM964v4iXuoeIvE9n4c0uPzIIWDXDldwVscZ9MCur8Ua5F4L8IlizNNtEMA5ZmfHFZPww8PtbWMusXiyfb79vMl8zg/l2oA73S7c22nwxMAGVACBxVygDFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFBz2ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKQnAzQAtFFIehoA8j+KMd1qOr2NhDCH3Nkhmxx+dekaDaiz0uCAY+RAP0ryv4nGX/hI9IljRWj8/BwOc5H5V61pf8Ax4xk+goAv0UA5ooAKKKKACiiigAooooA80+MshXw7bKFDbpwMbAx/wDrV2XhtFj0W1RcYEajj6Vz/wAU4oz4RlmktoZjGw2+b/CfUe9X/Ad+L7wxZSblY+WAdvTigDqqKKKACiiigDiviR4VTxPoDQiOR5UPGyQJx3znjFfLeseHLnQbuSO5RpIgzKAHwwIOORX2yRmue1bwXomsySSXVmheT77AAFvxoA+NYrP5opUO5sj92BuOa9P+HPw7v9X1aLVL6F4bYPkApjOOePSvb7P4deHrSbetjG+37gYZ2109vaw2sQjhjVEHQKMCgBbeEQQrGowAMCo9QkSKwnkfOxY2Jx6YqzWJ4s1CHTPDl7czyrGixHk+vpxQB4/8IAlx4o1WaNsRpIwiDDJZSfX8K943BUyTgDqa8b+EFhJFDPeSs3znKq3JAPI5zzVj4g+O7xrkeHdAUy3U+Y5GUZx2IHpj6UAdT4n+I2kaFA4VzcyjK7IumcZxu6flmvCNRuPFUeuN4l0rw/cWkc56rGZC2fX/APUK9e8HfDDTLGwguNRt1ub0/vGaTkKevA/E16JHp9vHEI1jUKOgAoA8d0HxjqMUKi/huBdbctE8YTp/KtmT4iNLbSRxeRDOB0d84+uK7vUPDWmajzPZxOQD1Xr9ao2ngnRreR5P7PtvNcYZljxkUAeE+MvEK6pFLA95LqFzKoAjQYii56jjn617N8NLZrPwjYxSkbxGMjPSqviT4W6LrVqVigS2nUYjkjXla4PRPEOr+AddbStXQGAyEq2f9YpOAw6gHjpkUAe+jpVW/sYtQtWgmUFT2IyKWxu1vLVJl6OMgelWc0AeJeJvgdBfX013ZzkNK5YpkIFznpwe9cLrngay8KaHHDcxxtrN3KURPMDMieoXv6cetfSut6raaNpFzf3kgSGFSSSQM+3NeH+EBdePvHUmuXkSG3hYhI2G7YoztA464Oc5/pQB6x4B0uHTPC1lDDGUXywcHrzya6qo4IlhhVFAAUYAFSUAFFFFABRRRQAUUUUAFQXkC3NnLCyqwdCuCM9qnoPSgDxH4SSHTPE+taQ6vEySbhE+Mr+XFe29q8Q8SN/winxntbyOVxb6gAZVJ4BORxx0yPevbIXEkSsO4oA8++L1oJvCDXAVQ0EgbcewPB/nXD2fhHSbnRLS/wBW165MEZEjxyXAK57g/wAuK9h8W2B1Lw1f2qHDvC2364yK+fvDEOkarbXH9vSMyW2WUtOQBnqCAeuR+vtQBtaTrOk6J8Sha6GEktL1AjJbgAIwHU/lWV8V9GW18QNrE1s09tKgA2gkI3Oc8/SpIry01fxHpx8I6LO0Vq582QAKrDPU/TrzXQ/FuSWDw40bYVnUjGPzoA5H4S6TLqmqG5C/ulfLkqCD7V9IWdqlrH8q4z79K8o+CdtCNBWVRyxORjpzXsDOQvt60AWBTC4+b2FVJL1Ily7AAVzHiXxna6VoF9dLIFkjjbZ0OW+lAHmPjO+vPHPxDbSLFRLY2eEcknCt3OM8/iK9W8LeF7bRLbEMYDNy5AxmvN/g9plxI95rOoFlkvJCyqc4xk817fCFCDGKAJdvHFLQKDQBl+INdtPD2kT6jeNiOIZxnlj2A968S8K6ZqPxJ8Tv4h1ku+mo5EFu5ynXgAZ6Ditzx/d/8Jr40tvCVm5NvaMJLx19f7v4f1r0vw7oVroenpa2sYSNRwPegC/ZWENnGEiRVUDAAGAKt0UhYAckUALR3pokU9CD+NOoAKKKKAMvXdFtNc0qexu4leKVCpBFeCSrq3wo8RKsJa40x3AAkJ+QZ/lX0fXHfELw1Hr2gy/JukjXIGOooA3dD1eDWNNiuYXDB1ycHoa1K8K+E/iSbS9en8N37MFOWgL9cZ6GvdQcjNABRRRQAU1kVxhgCO4NOooAQKFGAAKpatqlpo+ny3t7MsUMalmZjir1cV4z8GXPi+7tYpbxoLGDLbUGSzHjnnH060AeO+Pdd1DxRP8A27H50VhYufsymEFAM4DE55Jx36V6R8MfHttr2nJazMiXsfyug4z7iu007wxp2maSNPgt08kLtKlevrmvD/G/hOX4d+IrTW9FaSOzdyTGgJ2nOSCfQ0AfRQIIyKWud8IeJLbxJosF7A3DLyDjKnuDXQigBaKKKACiiigAooooAKTvS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAYooooAKQ9KWkPQ4oA8p+KER/tLRpASo+0c7VyfWvStN/484sN/CO1edfFaNo7SyuFk2vFPuBLAf8A167DwlNLLpMQlkEhA4YelAHRUUUUAFFFFABRRRQAUUUUAY/ifTV1Xw9eWjRmQtGdqrjJPbGeK86+FWoy2kt5o1yJQ8EmR5iBcZ7cfhXrhGRivF/iNp8nhDxBbeJbESRwyuRP5fOW9/rj6UAe0KdwzS1zXhXxRZ+INOjnt36qCVPUV0uaACiiigAooooAKKKKACvIfjJrjzxWvhuyaRprlszLF1C9uMc+uPavRvEGv2eg6ZNd3UqosakjJxk+lfPmhy6j8QPHf9qyNK0UUoxj5cLngfSgD03RLCbwt4LmuBExuIoSThMlsAgHArifhht1fxlfahcyyyPHlsSnjcTzgHpXtxsEn0uS2dcq6bSD0rwXXNM1X4c+I4NbgSSYSZN4GcFWUkdB2Pt7UAfRUIGwYPGKmrkfDPjjRdesY5LO/hdyoLR7huX2Ircm1uwt0LzXUaIBklmAxQBpUV5re/GzwraX5tRPLIB1mRMoPTmr/h34maPr+9UuYkkUn5d3UevNAHdHGK8I+OTJDrOkSLG5fDBnHCquR37fX2r0HWviRoWlWjyLqNpLKpwUE44+uM/lXhHiHxZH4x8dW15eMDptsAI3RSuR75HqaAPozwk06+H7UXMwlcoDvxjIqzrfiTTNAtPP1C7jgQ8DceW9gO9eLP8AFfV7uX7DoFjHFGija8rZd+3yjpSxeDfEviy7tbrVrgyZOWVmJQDqeM4BwcYAxQBoXWp6j8WNZeyspZ7XQIGwzKoPnng5Ofr79K9Y0DQLXQ7JYLeNQepIUDJ7nApdC0Gz0W0WG1gSNRzhRitigAooooAKKKKACiiigAooooAKKO9FAHlvxksHXTbTVE2f6PKC27OcjpjA+td34avl1HQrS4V1bfGCSp4zjmmeK9P/ALS8OXkIClwm5d0Yfkc9DxXG/CLVml0a402YAS2czIQD2/pQB6POgeNge4r5W8Q6Jp+l/ES5s5jLLbzzbmiVyig57k9e9fVcgJQ7etfPXxU0yWy8YfblTEbqG+Xg479/XNAHsnhnRbDT9NjS0hREK547nrnPeuP+MfhufU/C8lxbAmSD5iAccZGf0zXZ+DLoXvhqynByWiGeMVt3NulzA8UgyrAjFAHlXwckhPhtYhgSox344zzXomr38en24kkYKGOMnoK8sjM/gX4gS27tEumXpBRVwNnYEj6it74ka3pw8Kuk1ygkJDxKG+YkZweo4z9elAHBalquufETxHdWFhcz2WlWhKl4iQ0pzjr+dYOq/C7U4pEgs7uYhz+881sgj6d6m+G/jSw0PWbiDUJVSC7ffHIpyqE9Q3pXvNvLY6msN3a3Mbqw+UqQVagD57jvPGHgFh9te4+z7R5ZiQvEOehz0r2bwD8RrPxPH5DsI7tFBZOua6vULWxlsGW4jjZcfMGAxjvXzppd3aL8TpE0SJo7Vpx+7GUAOec4yMZoA+pVYMOKralcrZ6dcXDttEcbNn6D8afasWgQnrjmuN+LV89n4AvtkojaVkjB9csOP0oA5X4SWH2681PX5iWmu5my2zAIBPSvYRhVznAFcZ8NrJbTwlYoFAPlhjjuTXYzgtA6gZJUjrigDkPE3jqz01Ta2dzA964by1Ykgkdsj34rgb/WPFuo2VvLNJOEkILJaJuXBPdsfpivO/HUs+l+IZ0k8ouHYIyqcsOnOeKl0b4matpOiQqUimCsQc5+YDoPY/SgDes/iNrGl+I/ImnuGskc71kGWUZ6gDBwMdK958Oa9ba9psdzbzCTI54wQfcdq+NdT1mTWNflv58hZHLbOoUGvbvgtq0gPkuVCynjjrxxjigD3WigdKKACmuoZSD0NOpD0oA+cvGbJoXxbsbiByjtKoZuMYPFfQtlL5tpG+c5UV89fGtVXxbBNG2243KoVRnPIINe7eG3Z9GtixO7y1znr0oA2KKKKACiiigAooooAMjOM81l+IdKGs6FeWGdpmiZAwxxkVqUUAfOfw21O68J+Mn0G83QxO7JscgDcDwR65r6JikEkYYHORXhvxk8NvpuoR+JrVz5gYFUCDhgcn3NeleAtbOu+GrW8dBHI6AugOcHvQB1dFFFABRRRQAUYxRRQAUUUUAFFFFABRRRQAUUCigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooPSgDz34rWiXPhp3Eqo8Tq4JXPetDwBdC40K2bdlig3cY/SpfG1mb3wzqETAH92xGcdcVzvwx1JTp8FoxBkQYJ3g5oA9PooFFABRRRQAUUUUAFFFFABVW+sob63aGeNZEbqrDINWqKAPDPEHg/UPAesNrfhoS/ZWy00G75R9FA6V3fhPx/Ya1bJ50ghuMfOjHofr0rsri3juI2R1DAjBB715rr3w1b7c99o5t4ZpOGDIRge2Dj9KAPTEmjkUFHUg+hp+R614kqeN9HeKKGykdR8pZZiRj3pD4+8T2N60U2nSsq5BPPJ/GgD27Io3D1rxVvi7fRK/2jS3DKORG27Jzjr+tRz/FTUZYGFtbOJ84VNnA4/vZ65NAHtM11DAuZJFUe5rmta8d6RpNu8k1wFUA8txkjsPU15ZDf+OPEMa3kQjt/mICzIxJXjkD/APVWh4b+Heo6hqDXviV/tknVA4IVPoM0Ac/qVzqvxL1weTI66ZFINsbKBuP0NeveDPCkOhaeF+zrFK2d5AHzcnmtrTNCsdOQC3t44yBj5VArVAA6UAIq4GKpalpNlq1v5F7bRzx/3XXIq/RQB4d8RfhPpVnpl1rOm28ySRDeYbchRj1HHbFeJw2T3dzaeZcu6TuAElcjd6+o6n9a+2J4lmiZHUMrDBB7188a94Z02w+IX2ax08ukcqsIlB2xs2Dnjtx06UAa/wDwo7RnslkhuLmNzgsd2eO4HpXA6Z8OIta1iaCwvybaNjlzndgHoQQPzr6L1e9XTPCN3ckf6qBjgE56e1ef/DLQsPcagzNIJCdrOoBz36cnt1oA898EeBdP1Dxze6XqMTSxWpIGZB8xDegr3qH4ceHFVR/Z6BRztUkL+Q+tee6BaJZfGO+CMz7pSWIUbVyM4Jx1r3EdKAMu38O6XasGhsoEYcAiMZ9K0kiRBhVAHsKfRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA2RBJGyHowwa8T8Pr/AMIp8Wp9KiMgguwSS4zuPUYPsK9urxT4qRDSPHeg6xDGVZ5AHcHAPIH8sUAe1A5WvMfjHooufDyanFbwyzWjZPmHGV9M5FekWcnm2kb+qg1neKdObVvDOo2MePMmt3VM/wB7HH60AYfw3uUl8KWjJkKV6Z7967M8ivGvg9q/lW8mizNtlgdvkPHfng89TXsg5X8O1AHiHxq1SEPaxR2iG7RxiVlG5Bntn1qh4R+FEeqQW99r1xcXTMAyQPISqDqB71Q8eadLJ8VYoL0vOkrxlW2cFc9DgEHnive9KtkitY1RQAoGMelAHC6z8ItF1VFMUP2V17w/LmuZtvhLr+hyl9I1yVU2kbM4wexH6V7mAKMA0AeFX3gTx3rkE8F/rZFucKqtnLDB5O09efyri/D1g/gDxqLPXrdM+Z+7nIwMHHzAntX1OYwe1ebfGTSLa48I/a3jXzYJkKv3UE46igDv9NuUubNJI2VlIyCD1rz742XGzwhHGIg+Zw5J52gd8fjU3wtuZf7GMDRukKN+6Ehydp5pnxasp7rw+xjRpFQEkHbtHB5we/T/AD1AOp8Hbf8AhHbLAH+pX7vTpXQ9RXBfC+/e88I2O+QSSKoVmxjOOK76gDwn4z+BNS1C/wD7YsLT7UDGI9qhiynvwOPxNeFXlpqFq4tbiylt2iXDqUIPPc190socYYZrkPEXw28P+JJZJbu02zOMNJGxUn0Jx1/GgD4/sd32sKkIdmGMNX0L8F9AniWfUJ7fy0ZsRluWbGcn9T9a6DTfgr4b02YyJHM2eu+TOB6V6FY6fb6fbpBbxLHGgwFUYAoAtUUUUAFNY4Uk9BTqp6rdLZaZcXDZwiEnFAHzv46Da38ULK0jZiZJgeuRtB9vpX0LpUPk2iLjGFFeBeCI/wDhIfifdXjqGSzVsOpyCxP696+hbWPy4VBOeO9AE9FFFABRRRQAUUUUAFFFFAGbrulwaxo9zZTxq6yIQAw4Bxwa8n+Et3Jo2saj4duE2SRyGRDn7w6GvajXjnjWOPwp8SNN1wQsLe7BSVk3Yz79qAPYgcilqvZXEdzaxzRsCjqCCKsUAFFFFABRRRQAUUUUAFFFFABRRjmigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKAc0UAFFFFABRRRQAUUUUAcx4sndNKu0RAT5ZIz9K4D4SyedFI8gj84SnJCkMfrmu88WuV066ZRkqmQM15b8KGuBrF5OwJSSXGc5GcmgD3sdKWmocoKdQAUUUUAFFFFABRRRQAUUUUAFIQDS0UAMaFGHKiqs2m28v3olJHTirtFAGM/h2xfrbx/lSxeHbCI5W3jUn0UVsUUAU4tPhhUBUAx6VZWJVPAFPooAKKKKACiiigAPIrznxR4Y1xtdbVdIKyFlz5TSEAMBxxnmvRefWloA8c1HRPiHqtjLY3L2ogniIfaq8HGNvuD17Yz36V1vgTwpc+GdDW1uZVkk+8SOxPOPf0zXa4FB6GgDxfQ4tnxg1ElSZGkJbKbdoxkYPft+dezqflFeR6TcxH4wasvlksBjzDn0HHP0x+FeozajbWluZbiZIkXqzsAP1oAu0Vwd98W/C1nM0S3pnK/eaFCyjr3/AA7VLpfxQ8N6kqEXqxF32Kso2kn6envQB29FRQzx3EayRMGVhkEd6loAKKKKACiiigAooooAKKKKACiiigArhfirpMeoeDri68oPPZ4mjwuWHrjiu6qjrMJuNHu4lfYzRNhtu7Bx6d6AMPwBria54XtZ1I3qgR19GFdSwypFeO/BLUvk1TS9+5YLgsp6ZyT2r2OgD5+80+F/i41nPvWOW5d48NwRJyM/nXvVs/mQqeua8V+MsX9k+KdI1yEojqRvZhuztPpj0NeuaFex3+mwzxtuR1DA4xQB5z8ZPDN/eJY65pURe6siS2xdzYHIxx65/OpPBfxW0i+05ItUuobO9iXbMkp2jI4PWvU5YlmjZHAKkcg14l8TfBnhzRbKTU4NPUXkz/KsZKj1JwCKAPUbfxloFyF8jVrNy3ACzKea2UuYpACrr+deC+HPhbZa/wCGob3dLZ3cy71YMWHXIJB/lWN4hk8W/DzW9OWPWptQixvMOSflGAcg5wDQB9M7ga4P4u7T4CuuMv5ke0Zxk7x/9eubsPjno4IivbO9t5ApPMYIJHbg1znijxZffEkxWWlWcyafG4Ylg2ZmHbjpjNAHoPw2i8rRYFdt8pHzHIPP4V1+tWEd/p0sL5wQQcHFZfg3SptM0WCC4ULIi845/nXTlQRzQB4n4N1mXwj4sl8O6gsiwTyM1rLK2c+2e9e1RyK6ggjpXCeOvCY1e03wuyXEZ3xupxyO2fWuV8K/ES/0WV9O8UAgRfKk4jPzdOD70Ae0UVU0/UbbUrVLi2lWSNxkMpyDVugAopCM0tABRRSE4oAUnAryj4weK/7P0mSxglKyMMHGO4+tdf4x8TR6FYHZMFuCCQNueB36182XKXnxB8ZQ21mHZHbEsyg4x3PPTjtQB6Z8DtFZdMudSYbDdPkADoBXtqABQB0FYXhXQY9A0iGziHyIoUZrfoAKKKKACiiigAooooAKKKKACuJ+KOhLrfg25VYEkmhxJGWbG3HU5+ldtVTU0Mmm3KL1aNgMru7enegDmfhxqX2/wnZklS0a+W23kZHHBrsa8h+D+puZ9V0x2/497liq7duAT6dBXrw6UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFHagDjPGd7b2VvN9oLbTExwBngCuV+E2mo9hJd+WVEkxZM9evemfFnV2hBsxcbDKMKofBb1GB1rpPhjaiDwzbsHlfeN2ZVw3PtQB3YGBiloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApG+6aWo5shGIOAAc0AfOOp+KtQT4j6ymgQxzTSSbfMyxxjjGDx1Hb1rck8BeKvE0cEuqamXz8xV84U56AduKvfD2ztLzxbq99GdrySsGRmD55PINexxxIqqQOgoA87034V2NuwNzcTzKQCRuI55z0NaGr/DnRL2waKO2W2mVT5c8Q2lD1z+YrtyQv4V5/8AETx9YeH9JubSC6zqcqFIkVd2Ce59KAM34TeIL+8ju9JvJjP9icxiQgAnkjGB2GOteqDkV5Z8HdDmsdBN1OiLLO5c7VwfxOa9ToAKMc5oooAKZLKsMLyucKilifQCn1U1S3+16XdW5yRLCyEDGTkY70AeeW+seI/FM017pmoJZWyTFBCUB3KDwTnkEg/qPStPwJ4rutRnudI1Vw+p2rsJCq4BGeORwa8fk13xH4f0290dUS2MUuZZwuGUFh0PTjpxXs3gXw8ml28l48rTXN2RLJISeTj0J4zQB2tFFBGRigAooooAKbIu6Mr6inUUAeDac0nhT4zzWjs6W1zgICMBs9PXgYx2r3dG3ICO9eI/G2xmsNV03XreFgUdFeXOBkNwP0r13QL4ahotrdA58yNW/MUAcZ8YNNW48NR3oCbreTBZlzhW4P8ASovhRrq32jtYkYktTtJHQ57j05zxXa+JrBdS8PXtsVDFoiVBz94cjp7gV4t8K7oWXjK5s8ALPCHyWJJYHB+v1oA9+rxT4pw/2v4007THIEbKE+YE4JOSwHA/nXtanIFch488H/8ACT6Uy2xhgv05juWTLL7Aj2zQBo6JbQ2OlwW8WAsahcAdhXkfxLunm+I+l28UgHlhGGxcuGycjA9RWLr2s/EH4cQRW1xdxXNs7FY53G4sfTk5o8Faf4k8TeMYtZ1GJ8CQOZJIAOMEYHHFAHuNnoNjd2ym4tIZCy4O+MHI961LPRrGwjKWttFEpOdqIFH6VZtYjHCqnqBU9ACAAAAcYpaKKAGuiyLtYZFcH4x8FpqKm6tYF+0KwORxkZHX8BXfUhAIwRQB4Jpeq+IPA3nCGNbuwLFhb5IeP1Ht616J4e+Juh615MRuFguHH+rkYAhvT610up6Bp2rWr293axyI/XI5/OuGv/g5otzG4iaeMliwxKeCRjP8vyoA9GiuYpV3I4I9ql3DPWvJLX4eeK9IumbT/EDeSVCiOZmbA46e/v8A/rqvLoPxLt2VYtRRw2QX8zJXPc54/SgD1i61Ozs1Zri4jjCjJ3MBgV5t4s+N2haKWttNzqN2QQPJ5RT2ye/4Vhv8G9X1b5tT1uUO77ppASzP7e3Wuw8N/CTw54fWORLJJ7pP+W03zHPr6D8KAPII/D/jT4jX732pJ9jtZ2DYZcHb7D6ete4+C/BVj4X0yOCCEBhyWPJJrpYLGKDkLk9s9qs4oAUcCiiigAooooAKKKKACiiigAooooAKa4yhHqKdQelAHi/g+wm0v4parGXQBwSETAGM8ZUV7OvQV5neutj8YkYqpNzagZL9Me2P8a9LQ5UUAOooooABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFRXEohgZ2OAB1qWsXxBqMVlYyuzj5FLMO+PpQB8+/Ee+m1nxzBbQXhCq4Ux7yVUjuR75r3rwegXQLXoT5Y5AwK8K8NxR+LfG89+ke1FmAJKYORkjBGR0HevoywhEFskargAUAW6KKKACiiigAooo5zQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVk+JrlrXw3qEyffWB9v1xxWtXM+P7lbXwbqEjBDiPgPjGe1AHAeAtX0vRdIlubyVYWkmI+Zskk8nqa6a/+Keg6fa+c0xePgIUIO7Iz2PT/AANea2Pw21XxLbrNHqMVvaS/MFQu2MgBhjOOfr9K7rSPgxodl5TTB5nQ7yWxy2APTgcZAoAwNV+K+sa0VsfDekss0vy+dMwZR16bT/XrS+APh1dPqq63rayPcEhiLhdzbiOTkn1/GvWLLw9p1gQ0FqiMBjcBzWmqKvQAUAR29vHboEjUKo6AVNRRQAUUUUAFI33T9KWkb7poA+cPGEMraz4ykjjZo28tUkAxuIIyOTzjmvb/AAazP4Y09mXDG3QkZ9hXifiuCWzbxRbzxiMS3UKKAdy7C+QRgcen+Fe8eH0SLR7dEwVWNQD68UAatFFFABRRRQAUUUUAcZ8T/DreIfBd3DCm64iHmRD1I/GqHwi1t9U8JxQSxlJbQ+S2RgnHqPWu+miWaF43UMrKQQe9eRfD5Z/D3j7V9HuI/JincyQoBwQD19qAPX3UMpU9D1r5w15JfCvxHdIo2iQTboiicBCc4yMDnPT2r6Rrx740aPmG21OPeGJ8pynrzg4HXr+lAHqWk3QurKOQc7lBq8RkV518MvEBvtBt1mYCRV2uD6ivQxKpXduGPWgDxP49QJONGhOR87tuzx2HSvU/DNpHBpFsq84jHP4V5P8AF51uvHWi2zIzxqq7xztwzH0H9a9l0iNYrCJEXChQAKAL9FFFABRRRQAUUUUAFFFFABijAoooAMUUUUAFB5FFFABRRRQAUUUUAFFFFAARRRRQAUUUUAFIaCM0UAeS/EEyWPxF8P3/AJR8tj5YbHGSeefyr1W2bdAp9q82+LANvcaDftGWihuwHIXkA4744r0TT3WWyidehUEUAW6KKKACiigUAFGaKTNAC0Ug6UtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIehrx34u6ndadpDWtvLB5l2+0/OAwHtmvYZGCoSTgYrwTxVKviz4nW1la2rSfZAUmcqQAPfIoA7D4W+HZNM0GFrhU8xgG+UDH4Yr0tRgYqjpVqtrZxxqOFUAVfFAC0UUUAFFFFABRRRQAUUUUAFFFFABRR0ooAKKKKACiiigAooooAKKKKACiiigAooooAK87+LFwjaRaae0TOLqbBYcBcDucEc9K9EryT4izw3viuztJ3k8qBA21T/GTx9e3pQB3nhawhstHgiiXamMgFcda36oaTG0dhErkltozmr9ABRRRQAUUUUAFFFFABTX4U/SlJAqveXMdtaSzOQFRCxP0FAHy34/vp08ba9pzOssVxKnlNjJQqwOOO/WvobwHK83hPT2kYM4hUMcY5AxXzx4ysZpdM/t6VAJJ9T52gjIK5GD+Fe+fDtfs/hSyRpPMLRhg315oA7KikDBuhpaACiiigAooooAK8Y8asnhr4r6bqqytEt4mJMKADjjk17PXnXxa0eO50SPU87ZLPJyIt5YHBxntyKAO+s51ubSKZTkOoIrm/H2mPqnhXUYY3ZHWEspUZPA549xkVP4Eu/tvhGwm3ht0QOcVu3MQlhdD0ZSDQB8s+CtAl1m8vI7TVrvT7qKT5WhkbH1xxkV3cWseOPAFwh1tjrWiD5WniXMiL6kdfrnP1rD0W1Xwv8V3sVkDxyllyOMt1/OveYkjuYFDKCD3xQB4B4h8YaT4w8YaPdWhkMcYVZdyYMZ3cZzwB+NfRGmEfYo8HIwK8G+JXh+10zxto88EUEUNwwEgWPbvweSccGvd9KwLGLGMbRjFAF6iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDy/41hf8AhHrNyrELcrkqM12/hh1l0K0kXODEvXr0rkfjDZJdeF0d5lj8qdW+aIuPTnHT61v+CJkn8LWRhlVh5YG4A4P580AdRRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGD4w1VdH8N3l2WAKRkj59pP0ODzXCfDTS/PuLzVyXzdsG2tL5hHfn0PNZ/xW8RzX2rWvh7T5kZmfM2wZKgds9sntXpfhexNppMCuPn2DcffFAG4q4UCnUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFIWAGScCgMCODQAd6WiigAooooAZK4jjZ2OABkmvEReLrnje8v1dvIEnlcKGBGQP7xwcdx6V6d441X+yPCl7cq4SXYVjJGfmPt3rzbwDYzTamnKMuVllbaoPfGBjI6/5yaAPZrZdsCD2qamoMKBTqACiiigAooprOqKWYgAckmgBxOK5XxV40s/D1odrxSXLYEaM2FznHJ/zmuf8eePpbLy9K0SJLu6ugyK6PwhHY8fXj2rD0H4d3WuSi+8UlZHkXm3jyoB9yMUAVL34rX11dNBEyhAwQfZ87z7gdSMc8VkeIPEHjjWorqx0y3vXgKhWcw7fMUqR8vPAJ59a9osfCOj2USJDp9uoTG392CfzrZW0iXogoA+Y20rxdqnh86I2g3SpuWRDIAoRsk5yQOPb3rV/wCEm+IPha0gtLrSPLjwAjRJuA7fw5/Kvoj7NED9wUPaxOPmUH60AeB+G/i3rUd2sOqxMdkgSTfGYwR7ZGN3fBx1r3DSdZtNXtFuLaZHUgE7WBxkZ7VW1fwxpms6fJZ3dsjpJycDBB9QfWvKrvTPEPwvupb6zke+0IFfMiyWdBnBOPp7gUAe4UVheGfE1h4l05buylDqeozyp9DW7QAUUUUAFZ+tWLajot3aJKY3ljKq4AJU9jg1oUHpQB5X8I9Suo47/RrwtvtJiqZXAx6CvVOoryHxYsvhT4g6ZqsTWdtZ3L+VIRlWfd1yBwcHv9K9YgmE0IZTnIoA+e/jLZ3WkeL7TULGUxzSMHiOM4PQ9vWtLw98UtX0iFF8VaZJDakYjvIIiUY+/wCFb/xwtF/sbTtRa28429wcrkdxnnjkce1bHg2yttX8JWRuoIZAUBKFQVBx6HNAHm/jLxRZeLdU0W50y5ZofOZH38BSMYO0ivetIBGnwgtuIUDPrXinxM0Sw03XNMjsLS2t8/OdgVcYOc4yD29+le06Kc6ZAc9UBoA0aKKKACiiigAooooAKKKKAADFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUfSiigDzz4xO0fgtyqb8zIGG7Ax6k1Z+F8jP4TtQzqzKCp2n/OayvjRGZtBs4hgbp8klsdB9ak+D6NH4bKFw+2VuQc96APS6KKKACik5zxS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFVdRuls7CadzhUQsTkD+dWq5/xlfJp/hi9ncxhQhB8w4Bz2oA8k8F2yeKvHWpalcbpVgm/d73BK/gBg/WvdbdAkSgDHFeQ/BeGWTT7i7eCOKOR8LsGA2O+MV7Eq4AoAdRRRQAUUUUAFFFFABRRRQAUUUjEKpJoAWiqkWo20t09ssqGZBlk3cgVJdXUdpbSTyECONSzEnGBQBPRXO6N4y0vXBKbSUERyGMnPUj09RW4J49mSwxQAT3MNsm+aRUUdSxwBXOap4/0DS7d5pb+JwvQRtuLH0HrXnfxJ8RKPEKadNqTQ25AdlESkBcY69T+Vc79r8JCxVhO1yrEny/s+GJ5HpwPpQB2v8AwuqzlvUWK1YwyPsUscHHqeMAV6NZ6zb3VolwsiFGGQQeK+avtr6lo9zb6d4ftlaAlppiuxVAPB4Pp710vgPw5eeIdPQ399J9mic7YY5flP4D3z3oA9suPE2k2wbzb6AMoyy+YMj61x918TJZbsw6ZpjXSbgBIGJyCOuAOnar1j4C0+2uHmkkml34JRn+U857dR7Gt9LSzsYRHBDGgHACqABQBwe7xv4gs5J7i7XTLdSWCRIVkwB7/wBa1Pht4ludV01oL6ZpbiJuWbOWUnjtWxrniHR9BsWe+vYow3CpnczE+gHJrgPhc8S6/fwwF9hYn51AJGeD7fjQB7SORS0i/dFLQAUUUjHapJ7UAeV/GG+YwWenoVy5LEOpwc8demeTwa0vhzpX2O3MmYzvUNhMHb14Jx/n2rj9fnbXvHM91JDG8MJEEK/aVUuOTnrkfQjnPWvXdAtVttLgVYwmEAxnP60Aa1FFFACEgDJqJbiJujg/jVbWdP8A7U0m4sxK0RlQqHUnKn8K8O07w/dW+t3WjT6xe2OoRHfFJDMQrrnjIxgmgD3ozoELkgKOa8l8T+NtT8Q6tN4e8MxB40Pl3VySRgcggEdOnXNc54u1LxHoiJpdvrD6ks6hWikwJFP+8uDg4713/wAP9Bj0/Q4M2yQzOoeXGTljyeTzQBB4S8AQaXOLy8PnXjc7j0Ukc4H9a9EhhWNQAB60yJFUnjBqyuMUAKBgYFFFFABRRRQAVFNbxzxtHIoZWGCD3FS0UAeSa1pl18O/EA13TC/9iXMoF9arjERI4dc9s4GK9L07U4L+zS5jkVkdQwINS6jYwahZS21xEkkcilWVhkEV8/SXmveEtYuPC+nXiRoZMQGXn5W6YGM/5NAH0Bc6la2ah7ieOJMgbnYKOenWn2t/bXoY28ySBTg7TnBrw7VtBvpNLfUPEWtXE8MKgvChChm7AfnW18GrGa2tby7cSJHcy5RWYkY9RkUAewUUDpRQB5/8WvD8Gs+FWnaKdp7RvMiaDll9eO44q98PNdj1vwvbTAneqhXzwcjrXVX1nDf2ctrcRrJFIu1kYcEV5J4KR/CPjXU/D0sEkcUrmW3kLYUr6AE/XpQBv/GOVY/A8j7CZPNCoAMnkEVZ+GULR+DrFGCg7OgBGD+Nch8YNWGpXWn6BbqZn3ec6xjcQ38PGc9M/nXpfhayNrotspi8tigLITyDQB5f8bLVxf6RMArLlh8wBxzz29xXqnhaWOXQrVoirL5ajKnjgVwPxwQf2HZOygospzxk9Mjt/hXXfD9ETwpZLGyFfLH3elAHV0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUmKAPNPjMsT+G7fdnzFmDIApPI9x0pnwfR00B1K7V85sEfxCofjXPGmj2IberCYkOvbirvwgj2+E4yQd29ixLZyc9aAPR6WkxS0AFFFFABQaKKAAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXm/wAWlZtDcpH5jKjfKS2PrxxXo5615l8YHm/sZUhWVmPVVk2oR/tY5NAFv4Tqi+DrLbt+6f516EK80+EOf+ERt8ED5jwAeOenNelgcUALRRRQAUUUUAFFFFABRRmomuIk3bnA28nJoAlqOZgIzzWBf+NNIs96JP58qruKRAnA9Sewrkrz4g3+t2EQ8PabPLLOxUuVIWMDuSwAIP8AWgDP0W6ki+MupxeYTGYQcE59Oa9N1VPP0e6Qoj5jI2vjB4714Jol/feHviy8OrzJJJd91YkDPTrz+Fe/b1msmBPDLz9KAPmbTfFcvhbV7y1SwWacy71WBvl/QH07V2tm3jfxnEgmzp1ky5ASQo2fw5I9jXOaBollB8T763uIZfLVmMPnemete2WWraRaQiM3tshTjBkAx+tAHhPjbwTNot3DLPPJco4DMztkgjPrk11HwxsdPf7VaTWcBuYHJWYrkspJ55q38S9d0rXLGW10lDeX0Q+eWGLcI17/ADdK4nwbe6ydQaPTGVJLpELO7AcLwcZB54oA9O0yytbXxXrWmiNAtyqzLhcDBG0/qKx9G1vSvCGuXkN/qJhP/PGViR16qCO/tWYbPxNp/jHTNT1W9iaGV/s+Y1yQDkgE4Gc/StDWdN0qXx5BLewLJI7BQZMkYwMYAXHX1JoA3n+I91qkgi8OaNdagp+UXGNkO76+lT2/g/xHrMjSa7r8qwSEs1paDywB/d3dcf410YutM0PT/MnmgtoVzjOFHr0rJk+KvhqEER3M0zBchYoGO76cUAaGn+APD+kuJrXT4VkXkOwLEfQnOK5HQVTTfipq1qN7ediRSx+6MZ49smr8nxM1G+UnR/C+pXK54dwEUj15rl77UbmHx9puoahbyw3EqKWgXDFeSPT0x0PagD3RDlRTqhtn8yBT7VNQAVm67qEel6Ld3chQCOMkb3CAnsMngVpV5j8VNf8AIW10qEh2d1aZNxUhe3Qjg4OaAOQ8FRDUPEELgPsLmVcOGKduuD2K9MV7zAgSJVHQCuD8BaZDFEZgT8p2IrDhAOwJFd+OnFAC0UUUAFcV468M/wBq2RvrQtFqNspaF0bGT1wfUZArtazddkEGi3kpO0JCzZ9MCgDxPwhZyax4imk1W3mN1j995uDHnjgD8K9cvb2PQtFuLxkysETPtHHQZrz74YWNu9qdSgYv57YzwMY7bQOPzNdj41uFg8GalJJvCLAc7CAfzNAHG2fxusJ0klu9Kv4Ykk2NJGnmJn/eFdBp3xc8L3UzwNf+QV53XCGNT9Ca4X4UGCw8Jahf6gFW2EzOWYZOBjr610X/AAn/AIFv3CSXds2cDEsOPzyKAOoHxQ8JZCnXLMN6b/fHWrI+IvhYrIw1uy2oQCfOGMkZ4PfofyrFtrTwXc22YrfSWik9FjIPf/Cnf2J4JtY5J/selRqWy5KIBkcf5+tAFuf4seD7eTy21q3d/wDpmC4/MAiptG+JOha7q406xlleRh8r+SwU98Zxx+NRWemeH95WwgsVdeqxIufxxXC6dMy/Fq6tYGMO2UElTlXGwcY7d/zoA9xByKKZEcoM0+gAI4rxT40aS9vPZ6xbrl9wUgJkgqcjB9TyK9rrhfilaNdeFHERAmWRSjZxjsee3BNAHnD67/wnc1jpNlvWBU33RIHJIIA/D1Br2Dw9pkWnWMUEYCrGoVceleH/AA2ntLTxhc2yyjM8e9ADu7/MCfXJPbtX0HYY8v1IoAvDpRRRQAVx3jTwPF4pNvcLcSW11bEmORDz/OuxooA838IfC+HSJTfavMb/AFElSJpDu2hegGf516MqBFwo4p1FAHnvxYtPtXhyFt23y51xlAQSeOc9B/jVX4Q30s2jTQNtaOGUqhXAAHoAO1dL4/sxeeD75TH5m1d4X6enofeuE+DUuXvI4mYwrtABHT29PyoA9iooooAKKKKACiiobm6hs7d553EcSDLMe1AE1FVbLULbUIRLbSrIh6EHNOvbyDT7SW7upVigiUs7t0AFAFiiqWnarZatAJrG5jnjPdDmrtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUdqAPF/jleNBJpcaumCWZk4J+uDXbfDe0a28JWYdcOyBiMdM1wHxlVo/ENjcu0fleSUwRk59eOccivTPA0bx+FrFXOWES8jPp780AdLRRRQAhApaMZooATvS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVwfxMtJrnSAVV/JXPmOjhSo+pI/ka7snArnvF9rb3+gzxT7igG7Cru6e2DQBw3wauBJpt1EpxGkxCLvLEfia9aByOteEfCDUxbaxqGmSSEYkJVPTBxjNe6xnKA+tAD6KKTGKAFooqOdmSF2RC7AZCjvQBX1DU7TTLdprqZI0UZJJrgr74waZHOLbTrC7vrgttCRgc/1/SvOtUE3iTxrfQeIdRksbVGJjV2UfLnkZ6dq7Gz8R+DfDQW3h8vzM8vDHuJx3LAUAS3XiXx5qzltL0ZrOM/dNwVXH1ByT+n40yPwn4kvZmk1zxISjAhooolGR25I/pU4+IjXpcaVpF/cKoBSQQfKx9Ac+9Z6aB4z8SytJqN4dMtpD/q4SPM2+nGf50AXDpHgnwlHvu3i8wNuPnSF2Lf7vr+FWU8ZtdkQeH9Du7xFUfP5flIue3zY/StPSPhrotjJHcTxPeXQOfOuWLnP0PArso7WKJcKgH0FAHz9438NavJbp4iurGODU42DmKIl1I4611nhb4paPcaSYr68WG4iUKVY5LHHbjn0xivRNYtoprZw2MY/CvMtW8GeFJ2FzfS28Euc4QhS/Hp1oA4Oy0uXx18QdRvIr27istxCSAkNj0Gegr17RfhpoFpaos1kty3UtcZck+vNYGjap4X8N7IrF5WL5YADG4/jj2rbuPFfiC4AbR9CeSFhlXmO3I+mRQBa8Z6Tb2vgy9t7CBIBswPLVVCjue1eN+DtThXxDYCOVwI2MZQnqCOpI4659K9HvdI8Z+IbVk1G+t7GM4HlRKSGGDnPPvXjd9oKaL4mls4L5N1uPMGS3BHJBwP5UAel+O/GWku1rp9tOkk9tcI7gAEdcYBPf6VY8c21w8NtqFsVRyiv5knKoQR6DI/Ouc8vwld+C57lvsS6iyNIN8g37/bJyPapdQ+IGlXPgizgku5ftS7VkRODx9QQelAHaeGfh/a6hHb6prN5c6lcyKr4mc+Wp68L/jXodro1jZoFhtoox/sIBXl+h/FPRLDS7azg+23lwsagKkeWbnHU4FS3XxcvJJ0j07QLiXcQBubJ6c8KCOPrQB6p5ESJwuBjHSvJvigbaz1/RJ0cPcyEoITHv3DI5HzDHWhfEXxC1qW3gg08WAlJ3zGHIC4HPJODz6c1b0T4Uyyat/aviTUJdRuQcxrIxIQ/Xj9AKAPTdLZmsIS3UoM4GO1XajhiWGJY14CjAqSgCG6uI7W1lnlYJHGpZmPYCvn24vT4o8Xz6izE/vSIIyu0FQMDkjn1/HivQ/in4ol0bS4rS0lCz3DEMuAcpg5HPTPSs/4aWAKyu8SiMgMnyjofw9jQB2vhvTG0+wijdmb5QTuYsQfxroBTEUKoA6U+gAoopkjlFyBn6UAPrnPHM8UPg/UvOdkR4ShZU3EZ46d+tb/AJq4PPSuE+Kt3Evg6VXmMcZkUO69QM9vf8qAIvh1ZPbeGrUSPIzkE5k4JGfTtxXQ+JNF/t/QrnTS4jM67QxBO0+vas/wxIkGj2sfm7isa8k9eK6MXETqPn/I0AeM51r4cyHT59Pn1XSHBc3EKEsgx90j/PWqXhqLTPGfjiW7+wwrZRw+WiPb435554xkf4V2/wASfEAsdJjtLcxtdX7+Qis3OD1PHPt269RWx4A0KDSNGijVVL9SwAyc80ARx/DPw6hEn9nQjb91RkAV538QtK8G6DIJZdPieeQlvLDN859AAe9e63MyQwMzEAAc14qLW28X+OzfyBHsrFikasvV88k888jrQBwnh3ULXTddj1WTZpflg7bS1gZ3de4Zj9K7vwDBdav48v8AXZrWWNJC3lF4tuFyMDkdce9ekRaZpRbcbaAnGCSgrRtmtYeECLjgYxQBrJ90U6qa3kQHLjripPtcIGd4x9aALFZet2y3ljJASV3DIYHkEcg1NLqlumR5i7h2z0rC1fXI442+Yb8AqM9KAPm3SZF0bxcrAqlzbam0ZPHKscdvx7mvqzSpBJao4OcqDXybPJ9o+JUplYbZLzzPlXgnqBX1P4dk/wBAjz/dFAG5RRRQAUUUUAFFFFAFe9hFxaSwkAh1K4PuK8Z+HuoDRvGGoaTcmPJk2qQ+45Hp6D+Ve2kDrXgviBTp/wARr2Wa4hzHIjxiRMMwPIUEKc9x+VAHvSnKg0tVdOuVvNPgnT7roGFWqACiiigArm/HNy9t4XuDHEZTIQhQMQxB9Md66SuR+Icbv4ZZgsZCSqx8xsDrjrketAFD4d232fTW2zq5X5CgUKBj6d/xNVfi7qjWvgt7UqfMvJFjAABHBzznp0rU8A2wTSFm2Ro0h+ZYzlVxxgHJ44rj/jFdS3GpaXpUUe5TmThsHOcD69KANf4R6fdW+kNc3U4kebAwFAwBx1HWvTK5jwNAYfDlqpQKQg4H+TXT0AFBFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSH1oA8T+MqouvaazJbFShDF8l+vtz+NereHih0e2ZM7TGvX6V5h8aIpFvtLnSKN1ZthLqeOfyr0zw1ltDtsjB8sdPpQBtUd+lNA29B1p1ABRRSUALRRRnjmgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKgurqG0geaeVY41GWZiABU5rwj4wa/dXepR6PbyuIN6q8aKQWPc5yOPwNAGx4w+LWyb+z/DLRXE4JEs+Cwj6dB3znr0rhxrHjHUUkZ9Yvyzj7hhUJg+5AH4Cuv8LfDwS20LXcKRQjDBAoDk+7D/APXXp1jotlp9qIoYlUfnzigD5z8Gi80j4g2y3VxuLyfMzIVLkj3HT3r6ftW3QKfUV478VtLj06+0vXreGMGCZRK5YcDPYGvU9DvY7vTYJUZWDoDwfagDWooooAD0pMcYpaKAPEviz4Yij1O11QFdpkBcSMcdeevQV1nhbwzoMUYubWygDSLnzMbiQeSMmuj8VaFb67pEtvNgHGQ3oa8e8JX+tJd3ujaZfW5WGQj5uGUZwSvUUAe3w21rBHtVEA9B2qG81Ww0+ESXFzBEvq7gVwI8NavNI0d5rdw8EmAYwSQVyCRmtGHwVolr5kl2RMjYOJmGF9/8aALl18QLfyS2mWNzf9iyKVXPpkiqwv8Axlq1xsSG3021I5dxvk/AZon8WeF9AgaCKWMmM48m3TJz2GBxzXN3vxWuZ9W+waFost0+4AOc4YevA4Ge5oA3JPB+oXasuoa5cyK3UKzLx6dcUyDwPoNpGBM7yhQBiaclfrgnHWsWO0+IfiC5lF2ttYWrjG0sSR7jac5+pp9l8Ir1rZ4b7XLl0LDITIBwc85JoA2pNY8IaBCR9otcx5+VDvbjHHH1H51i3fxStrlGh0Cwe6udp2qyt17cAHP510Fh8JPDtoYzJbvcFOnnyFuevTpXV6f4d03TVAtbOGED+4gFAHjsl18UdaAEFrHZxbeRLhCx7+4rgvEXgXVrDVVn1u9jfdhpJizMOegG4V9ZeSn90Vk6x4ds9XUCaJMgbd20Eken0oA+XbbRPDlvbD7Zfme5Afb5KjYcDjr7j8aqaUthBZXcd1pU0jg5glVScg8AcYyPx719KWnw50KCOVJLOOTzl2yZUDcPoOKcPhv4eimgkgsUi8kggISAR6Edx/hQBx3wz8K29zZPd3+mQFyf3TPGNwU846dK9UttKtLVQsVvGgHQKoAqa3tYrZQkMaogGAFHAqxQBGIY1OQuKdwCB3pxooAKraheR6fYy3UxIjiUs2Bk4FWa8o+K3ifJTQLRgZWIknBYqCvOBke4z+FAHD3d+njLxnLqcgmMcbKsCgj5QM8EZ/XNe7aHYR29mjrGFZlG49z9TXC+BvDENvOlylq8cW3I3OOp9ABwK9QjQKuO1ADhwKWiigBCcDNee+MPiMvh/Uo7GK0M0kgIyX2gcZ/pXoTfdNeJ6pa/2z8UDHgPHbgvknIDdP8AOaAMK+17x8JprmVZhbyDMaoGPr2U8dR37Vy+qXvjjWbGa0ZmmhdvnUfxcdOeR34r6YttIgeGNpY1JxyDUg0W1D/LDGM+goA+aLN/H9jbpFGs4xEMblx5ft78fWtiLXfH0VwjCCd45F2urqMocHnPf2r6EOmW5/5ZLgjrikGmwbcbF46cUAfKF3qPiTU/FVvDfmZ7mIkxgpjHuBX0x4ZhuodKgEoIYICQTzXAzWUP/C6yko+VLQFBt4J+ufrxXrsEYEahQABQByPj7Urmx8MXssDhJFjPNeK6NofjR9EtpNNMcSF/Mz0J69a9S+Msktt4OlaEZy6hsHB69v0q/wDDvbdeFLORkIJXJDdc0Aed/wBjfEt7YPJdRZcD5QOR9SPp+tUy/wARLOZYzpd1LKON6sChHQd/xr6ISCPGAoxT/s0eANo4oA8Js7/4lNEY5fD0JZl4LSbdv15q5DefEWKMJNpER7ZWQADj0z/WvbFgRf4RTvLT+6PyoA8JudW8c2r7W0BpQevlycZzXP694s1l4pIbzQbyKQowRmhbHTnJHBr6UaCNhyi/lWVqenwPA++IMu0kj2oA+SrQ30fiG01K3hKOyCQlssuemDnp0r2fw58Tkt4xBqto1s69XU71PuMVS8Gx6drV3qcEcI8gTYVJFBPI5FdXd/DjRbiPzFs0VwSQUJXn14oA67TPENnqFss0NwjoTjIP+cVso4dcg5ryWXwheaPbtJpt1KSSDsOOfqa7nwnqMt3pyLcLiZRhqAOjooooAKKKKAAjNeUfFvSHMdpqkEKtNG2xpCGJA4I6ds16vXI/Ea2a58I3Zjj3vEBIFyB0PuMH6UAWPAmof2j4Ws5eM7AOPaumry34RaqG02TTnJ82JskFcbQexHY+1epUAFFFFABXPeNI5ZfDF2I7eOf5clHJHA7jHJP4iuhqte2iXtpJbuAVcEHIzigDkvh/qIuvDsLi3MK5ICBiQADgYzziuL+I3max44sbWCN3+yBASgY7SxyT6DitGK08X+Ebqa3srAajZs+UkMxyoJ9McU3w14O1O71+bVNbt385nbLeeQp5zwuM45xgntQB6RoVkLHSoIB0VABWnTI02IFHQCn0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABQelFFAHjvxwQQw6ZdFJXIkIAV/l455Fd74Ju1u/DVnMq4DRg4Ncn8cNPmufCUV1Ark28uWKdlI5P+fWr3wm1JL7wjbAbgYhsO45PHrQB6HSZ5xQKWgAoopMc0AKfakIBHPNLRQAUUUUAFFFGaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK828beBr3VdSj1TTzB58TBgZFyQB1AFek0UAeOx+PtbsporOXRXEiD96VGR+h4/GqsnjfxRqTuLeMWq7tuBAzsOevQ/yr2GXTLKWTzHtozIP4tozQmnW0WPLhRfooFAHher+G9f8bRyo9zOIkXhrkEbj6hVwMj3rY+E3iGaC4m8O33Fxa/KuZd+QOPWvYvs8YHCgV4j440O98HeMIfEGjx3LQ3JJuBFGGVfrigD3FG3AEU6ua8I+JIfEOkx3MeVb7ro3BVvSuloAKKKKAGsoYEEZB6ivHPEGg6loPi+XVdF04NCRl1xhMHk7RnrmvZaaUU9QDQB4TcQfEbX7mGSFBaQN95CxRQPww3b9a1D8KdY1VE/tPXHAXHyxK5Hb+8x9K9iEarjCgYpcAUAcBYfCTw1atulshcNxkynIOPbpXXWOh6fp0ax2tpDCijAEaAVpUYoAYI0AwBin4oooAO1FFFABRRRQAho60tFABRRRQAUUVXu7uKzt3mmcIiDJJoApeINZh0PR7m/l5ESZC56nsPzrxjQ9Hu/GHi+bVL5JGCnzFkU4UHsFIzkD19qb4g1m58fa3JFbS7LS2YJsGSeTxwOpPH0r1bwl4fGkWYLyySSOASXxx7dPrQBuWVosECKFwQMVcoooAKMUUUAMmbZCzHoBmvIPCPl3fxB1KdVfjJwWyFye49eK9P8AEF/Fpui3VxNIqKqHlumfSvIPhFP9p1jVZWDbnl3FuMHnnpwKAPcEA28UtIn3RSlgo5NABikbgU0zJn7wp2QQDQB4/wDEMTaF4/0TXEJMMw+zPnO1ee/1DcdOler2T74FPqAa474q2P2nwXPOhZZbR1nR1AJGOp59q3PCuppqOg2VxGxdZIVO4jGeOtAHP/Fm2abwXeSAHbFsY7Dhh84yQas/Di0S38K2UaoUCoDtLbsZ56961vGNi+o+EtVt42KyPbvtI6ggZ/pWd8NmR/B9g6xGMGPBB7kcZ/HrQB2KjApaKKACikyKWgAqlqcRlsJkUgMyMBn6Vdqrftts5W9EJ/SgDwT4TK0eu6gjAgo5UhjXvEaAQ7cdq8O+Dn+k6jqlwY8K8xwce9e7oMR4oA5vxX+48NXswk8po49wcdiKh8B3Au9DgmLByRyao/E+/ay8FagVYAsmOe+fSmfCuPyfCdqVZiGG7a2cjPbmgD0KigdKKACiiigAqvfWyXdnNA6grIhUg98irFB6UAfPvhidvDHjiS0mkliHnmJlcEKeeAOTzXv8T74w2eteI/FfSYNH1qHWVlECS8gsxI8z2UeuBz+NeieANei1zwzaXCS+YdgVj/tDrQB1tFFFABRRRQAhUN1FAUDpS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAc546sH1HwfqVvGxVjEWyD6c4/SvMPgtqRNxeWRLbVwwDBvpxkmva7uPzrWWPOCylcjtXz54EaXR/iTcW01wCzyOjKAASc5BNAH0SvSlpkZyo9MU+gAooooAKQjNLRmgAooooAOlFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVk+I9Gg13Q7mwuE3pKhGM457VrUY4oA+c/BfiGXwF4hvNH1RrnyUIGWT7p+p7V9A2N7Fe20c0TBkdQQR3Fcj478BW3iW1ee1SKHUgPknaMNnHIB9q5Hwb4svdG19PDusTOZvuqHQjn2JPT/ADxQB7PRUcUqyJkGpKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqte3sFhbSXFxKscUalmZjgAUASXFxHbQvLKwVEGWJPQV4H418Xaj4u8Q22l6Y8kdirMroCVYtnHzDg+nFL45+INx4kv4NM0iO5k04uVmaIOhJz6gdOD+ddd8N/Cr2gnuriMxrI2FgOcLjvzzQBpfD/wAGR6FYh5Ubz5Tufcc5x0/Cu/CgDApEUKoAGMU6gAooooAKKKKAMPxcJD4avPKkEbbPvHtXl3wbtDDPqEhlEpaYkkZwDk5xXo3jiWQ+Gr6CKJpJHhYqB3IHFcJ8G45Psl28vMhmJcbQMN34FAHrk0yW1s8shwiKWJz2FePajrmveLfGFzpukai1rZRxDLREOOfUjoecjB7V69eQtPZTRKcMyFQcZ7V4n4R1a28I+JtTstbZbWW4lBjkdcKevBP+cfhQAzW9D8VeEbVNSk8TXVxaRuoKc888Z56Z6+tet+GtTOqaHa3LSpI0iAlkOQT7VU1q/wBPfw7dSyTKYREzblIPAGeOtcp8HWnOhzNuU2jTsYAo4A/T+VAHomrWq3ul3Ns4VlkjZSGGRyMVwPwnuh/Yk9gH3LaTNEDjjHbsOPwr0lhlTXlfhaVLD4k6/pkXl+S7B1WM8KRwRjHB5HQmgD1G5iW4tniblXUgj1BrjPhur2Wm3WlzzCR7S5kRcEcLuOOB0rtVwYwfavOI86N8WpY12+VfweZtwAdw6njrQB6ZWdrOtWWh2LXd7JsjX8Savo25Qa4D4qC8/sMPDFGYF5llOMoM9skdf6d6AKFt4/1nWLm4bTNN821jDeW6xs24joMkgc/pir+k/EbfeW1hrGn3VldTyGNd8TBCeoGff8a2vCsNmuhWgtFUReWMAdq534ovbLosKji6SUSwlACysvOee3r9aAPRUkEi5HSsjxXP9l8K6rP/AM87SVumeimn+HbmS90O0uJV2vJErMPQkVS8cyNF4N1hlOCLSTB9PlNAHl/wMgB0+5kKEO0uc8jPHpXuJ+Vc15D8F4VGhM4i2lnI3HOWAr1xs+TnvQB5p8X5RH4QuEL4yR1HXmtP4YMW8J2I5BEYBB7Vz/xjmK+HBGzEb3AI7n6cGun+HSGLw7aoChQINpXjjFAHbY4paKKACiiigAooooA4/wCIegnWfDzNDEJLm2y8SEAgnvwa85+EesSWmtX2jysE+YyKm3b7HA7c/Wvc5oxLEyH+IYr5/wDFulXHgnxqNZtgxUsgLbc71P3iTwBQB9AowZQQadWXoWpQ6ppkN1A4aORQwI961KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAQjIxXh2qA2fxnhR7ss7Hcq7AAqkdM17lXzt8X0u0+I+n/2WwW7mVVU4OQ2cfyoA99W9giiDPIqjHc4qW3u4LoboZUcf7JzXjWn/DDVNaTz/Emv3s5PIhjkKoo9KVtJf4Y+I9ObTr6eXT76TypbeZ87T6g496APa6KjhbfEr+ozUlAAeKTrS0Y5oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKO3FAAfeuC8f+Ax4jNtqVjItvqVo25JMZ3L1wa7wccUYoA8h8H+OtU0/Vjo/ih4I2ztjn+4GPHBzXrFtdw3MSvFIrqehU5Fc34u8Ead4lspA9tD9q6q7L3968tutY8SfC55be5MU+mn5rchcKvP3R/nvQB77RXO+EfESeI9Dt79MjzFGQRjBroqACiiigAooooAKKKKACijtSbh3oAWioZbqKEZdgB6k1mX3ifSNORnu9QtoQoyQ8gBoA2aY8qRjLMAK8t1T406YJJodGs7nUnjBLPGu1B+J5x+FcVrV34x8YQXb3V+2m28OcWseUJOM4zxu498UAer+KPiToPhlCs9yJrn+GCH5nP19PxrxzXfFeqeOb+Czu9Ri0+ynkA+xrLhth/vY5yfetT4baDp955iTwv52AxaVQTID33YJro/HfgJ5bSPUdGRUuoCp8uMY3gf4A0AbfhHwdBpUcJR1EaA4RR97Pqe9d/DEsaAKBj2rzH4a+LZdVR7a9lthMpwsaONwA7Yr1FDkAjFADqKKKACiiigAooooA434kSLF4Q1Bvl3NCUGWCjJ9zXM/ByPy9FIDpJ8331B5+tbHxZvUsvCFw7xrIGO3axIz+VUfhKmNJY+V5cZclFB4UegoA9MByOKy9Y8OaVrtv5Oo2UNwm4Nh1zyK1Fp1AHk198FbW5u2Carcx2Mjl2tx0HOcL2A7dOleiaHodroWmQ2Nom2KJQoHetXFGKAGkcGvI4oxZ/HC+KBV+0W6ltxJJOByOMdvXtXrrdK8lvrdrr40F2KqsFuuMMAxyPzI5oA9WiOYwDivKvH7f2d8SvCt4MJ5pkhZy2MjI4/8eNeqQ/6sD2rx34zSKPEXhbEsYeOd2AJIOcpj8OKAPYbVt8Kn2pmoWEGpWMtpcorxSrtZSAR+tRaS5axi3HLbRk1foA8v03wz4r8JXd0unNb32nytujikfZ5XHOB2zz+NUJtG8X+KdWifVbOOysiSrxq4J25POcZz36d69fIB6ik2gHOKAK9larZ2scCKAkahQB2Fc18Rbz7F4H1SVwOYtg43ZyQOnfrXXVwPxbVpPA1zGhjDeYmC/Tr+v0oApfCazW28LWxXb8/zHb78/hXo7DKHPFcf4BhWLw7ZqoAUIDjGO1di/Kc9PegDxn4zNGBYpIygFuVZsA+h/Miu38CxsuhwK2wsqgZQmuA+NLLLqOj242lmf7uRzyBXpnhCLZo8A8sIdgyBQB0g6UtIOlLQAUUhz2pec+1ABRRRQAVynj7Rf7X8N3KRopl24BKk/wAufeurpCoIwQDQB4x8NNcudA1Q+GNVZExnysuCc9x1r2dWDDINebfEnwxFcaadTsmhtLq2PmCQ7UyRyDk8DmsvwL8VrW8MelatOF1FTtYqMo2O+RxQB69RUUM6TKGRgRjqKloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIbqdLa2kmc4VFJJzXzlpl7F4s+M0l4VHkwkugycjHHOa734y+OLPRtCm0eOUtfXIGYwP4M85PavFPBcXiW51C4k8MWu15WAaZ8N5Y9MmgD6Y1zxHpvhnRjc3soGOEjU5Zz6Ad64nQNC1fxtrUXiPXyYbeM/6LZquMLnILe/frSaR8Jrm/u11DxVqc1/OGDJHvIVPYV6vZ2sdpbrFGMKowPpQBNGuyNVxjAp9JgdaWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAry341yxx+F4oXQN50wUg+nWvUq8h+M80qTaOgO1GlIzvZf1H+FAG98MbSK38LW8cb7geT8wPX3FbHifVNW0SIXdlbC7g6OnAMY9c9xWL8Mk8rS5sNuXzTgiXzM/jWp8RtSOm+C9RnRdzmPYBkjrx2oA8+0T4620kc66tbvFMpwPJXcP51pQ/GzTmUM8ZXPCocFjjrnB47cYrK+FHh6C7spZLq1Rmb74kGck8967+T4Y+FZpzO+kQGQnJwCB+WcUAYH/C5tMMiFIS8JxudW5XIzyKuWvxa0ie9MTB1jwT5nYfX0rQk+FnhKRNraNBz/dyP1Bqm/wc8JPgNYSFR0H2mTj/AMeoA1U+IegSSpGL2MblLAswA49zWRd/GTwpatsF20jdD5abgD25HFKnwd8J7gWsGIUbQDO/TrzzzWhH8MfCqQpF/ZMJCnOSSTn65oA5K4+NaXhMOiaRc3UxOEMmEX3z9BWKviz4laope1isokcEqNvvwOfwr2K38NaXbBRFZxLtORhRWgtnCmNsYGKAPnibTfHHiC4SHVr6+kgYgukEe1VyPwz2/OrVp8I52mEksPnBehdmBP1BBFfQC20S9EFPEarnAHNAHnnhv4bWWnWXlXSCYMPmRhx34x0xya6q78P2s+mTWQhQRyJtxt46Vt4ooA+f7ayv/h54x23Twva3IBZlkKKuSBkKele1WlxFeQKyOrqwBBByDWF8QPCMXiTSHeO2SS+hQ+ST/Lr/ADryTwz421HwhdXFprZvQI2IdJEDZ5xweMfmRxQB03i7Rm8I+J4vENjAxtZJAZ9spyGOc4XGMHjnNeo+H9TTVdLguowQsqBgG61414y+JVj4h05dJ0lLuSaV1DMEwAM8jGcn6e1ereDNPGmeHrW3UMAEHBBGD347fSgDpqKQHNLQAUUUA5oAKKKDQB5d8Y7/AMnw9Cik4kl2/KMk8HpyK0fhlaNb+HomfdlxnkYrA+M8wj061QjAably5G0Y6iup+HWz/hHbfYxZcZzQB2oGBS0dqKACiiigBkjhUYnoBXlPhvfrPxC1rVD5bRRyG3RkOfukY/ka0vij4wj0jTRpVo4bUrzCJGOwJxnpVr4feHl0HRokKf6RKA8zddzkcnNAHbJhYyelfP3xkvTfeNrWGEyuljbgyBOiszDHfnqO1e5avqcOkaXc39y+2GCMyMfYV8vHWJNY183kqP5moXZnYIfuop+XPtn3/hoA+oPDrbtJtzz/AKscEYxxWvWR4dDrpNuJCC4QZwcjpWvQAUUUUAITgZNeZ/GuZk8AzbGKt50eGHY5r0xvunNeX/GCUzeG5LXA2E5x7gUAbvw7Yy+FtPdydzQLuBHtXYv9yuW8CR+V4asVCbP3K8fhXTynCE+1AHiXxMFvJ450pZIpGKgAYbAOTzXrmgxLHYRqoKgDjNeJeNbqaf4tWtuJFEaou7Jwe5H64r3LSc/Yoic/dFAGjRRRQAUUd6KACiiigApCcUtch8QPGEPhTQmmLETyHbHhd2PqMigDzn4veJ5bu4bSYWk+zJwUQ43sM9+T1H04rm9J+E92fDaarMkjXTjzDAnDBcduDz3xit74eeGJfF2sy+J9ZQsqvi2jI2huepXJ9u9e2kRWtuxYqscY5zxigDwDQPGXiDwXGyXEcuoaYkm1ssd8Ptz/APq+le4eHfFOn+IrBLqzmDA8FTwVPoRXj3jIHxZrc8dhGbaEfKJEPzSkd9vcVRvPA3iHwcbS+0m+mUkbpnjjdgTjqyjIP40AfRYIPQ0teM+D/i23nrp3iQrDcY4nwArfUDocV6xY6raajCkttMkqOMhkbINAF6ikDA9DS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTXYKhJPSlJwK8u+KfxHttAsm0ewIuNTuVKbEbmMHucd/SgDyr4k3/8AwlvxHWxstr7XEOPLAz65IPP6V9AeD/DltoWi29tHEqbUGcDqa88+Dvglra0fWtRgYXU5yokXBUV7QiBVAHSgBcYpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArjviJ4YbxFoX+jxB7y3YSRYA3HHUAnpmuxooA+eND8eXPhO5ayudNlhjMzNNHIeUJ64PcDHpS+MfGzeOHh03T4m+wo4Msjgjce46jGPfrXvU+l2VyzNNbRSFhglkByKz4PCml2lx51tbrAS+91iG1XPuKAMrwH4dTRNIQDfuf5jubOPTHtXY01VCDCjAp1ABRRRQAUUUUAFFFBoAKKKKACiiigAPNc5rvgrQtfmSfULBJpU4BJI49ODXR0UAcBZfDHQbS8S7FnskVy6qJDgZ46fStDW/GWleG0iSVy5ZtuF7Duam8Z+JrXQdJmMlwYZ2Q+XhC3NYPhjwlHeJHquqg3E0igpHIvES9cAeueaAJ5viro8chjEdwTtVlYptU7unJ6fjU1l8S9LuGYTn7NGrbPMdxgn/PrWjrGmaVZ6a8k9rG0cI3AFecgYGMflXlCeCG8bu18IRp0AI8oqN24eu3oO2KAPQ5Piz4WilMX9oKxDFdwBxkenHP1HFVZfizpS2UV1HBcywyMRuRRgY9zXIX3wk02x01pjfuJflJluDnBAxwBjnFVPDmh6Ba3cfm6nLcsrMzI6bUZyeoBGfwFAHrmkeM9I1oL9luQWPRDwa6IMHFePax4ORAt/ody0LwfOYwzNk9eBng11/gnxC+q2EgmlSSSFyhZQQD+fegDkPjikv8AZVvsTcsjEOTjaBj+db3wpYDwrZxhydsYPPoaPipGlx4ZmXIDhSVwMnPtWH4H8XaVYaPZW8lyiyrEqsAp/oKAPYRS1zdt4y0eV2j+2orL1D5X+f1rQj8QabMf3d7A30cUAalQXcy29s8rttVFLEnsKpXeu2NpEZJbmNUHcsK8q8R+L73xfI+m6QG+ylgC4I2svct/QUAVbCJPGHj+81h1ka0tyogDD5D23Zz7V6vZuxiUqCFA4I71ieGNEWy0uO3djlQATk5JrS1zWLLw9pE17dyCOC3jLE9z6CgDhvjF4oistC/sSNt15qLKgjU8hN3JP16fjXlngfSxdaxOfJaSRR5UAldcjtk/TAxVVdWPibxnc6zeFwS+63i3btpH3RjqQOOldt4DtHXX7uzeQSSo6uXKksOmevA6e9AHuOhWv2PTLe3yT5cYXJPtWpVS1KpEoyM4q0CCKAFooooARuleSfGKbZpcMO1h50oUMDjBz1r1osOfavI/ivcR3Os6Dp6fO5nMjgdAg9fx/lQB3XhbbHpUEa5+RAP0rXvZlW2ZmOB+Vcbpuvw21gXWWMckBc8gjrXM+MfiPb2VqUiuYmlbIEQyxb8ulAHLeIJI7740wIJjtUIQFUnkf5/WvoHTwFtkyOa+dfA2kalrfi19beF4lZg+5c4bkdz9OlfRtpGy26buDjmgC1RRRQAUUUUAFFFFACE4rwD4i6nPc+Njpk1yfKlmSNleAYVOcYznPJ64/SvoCvOPiB4GbVLuPW7Qb7uEjcrn+Edlz0oA6vRba203SoooEVUVflCgD8q4jx74whknk0eC8SKEIfPkjAkYt3QDt/n3rL1P4h6lp+k3FsmmtFdJGNrO2RzxkAc+ntWL4F8EarrZS71gSC0di5jYjD85zggn+VAHcfDvTYNjzwRbISdwzbmMnPPf+lejeUhXaVBHvUNjZQ2NskEKBUUYAA6VZoA5TxF8P9E8Rw+XdWwQ7t2+L5Tnvn1rzK+8F+LPAU8l74ene6t2bHlld5Cj2xx+Fe8UhUHrQB45oHxheAC28SafNZXAbaG28MR14PSvRdH8W6RrKqbO9jkLDcFDcge47VJrfhTSNetmgvrKKQMMZ2jI+hry3xD8HpbGeS+8O3LxOoBjiiAVwe/Pf6cUAe2BgRkHNLXzraeNvG/hW98vVy91bg874vmB9OAK9E0P4vaBqUaC5uBay45WXgfnQB6NRWXp+v6ZqW4Wd7BPtxny3BxWmGU9CKAFooooAKKKCcUAFFJketGR60ALRSZFMeeNBlnUD60ASUhIHWuV1j4ieGNGjka61e13IM7EkDM3sAO9eX6h8QvFHjbWF0Xw3ANOtpAS0zEO+z1P936daANv4pfEG7sLiLRPDt4BqEjYl2JuaMUzwF8MJYr/APt7xBJ9qv3+Zc8qufb1rX8DfDGLQ5Dfam4u9QZtxlOT/OvSkQIgUDAFADIYEhUKigKO1S0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRzmigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopCcUtABRRRQAU122oW9BmnVBeRvLZzRxuUdkIDDqDQB5lp8Fx4p8X315c3E62dpN5aW8i4DEE/pz0r0y3iWJMKAMdK8j8L6zd+FtVudO1oBFlmLrOzg4JOMHvj0r1iC9ilQMrqQQORQBxXjm4N/qlhoUYyJn3z8sMIPp9O9dZZWkdvaoiIqoqjAAxgCuN8Y3KaX4o03VH2+WcxyPgZAJAHcevvXa2lzHPbIVYEEfnQB5l4quJ9cuL3yrhktrBirwKSBIVIJJJHH1FcBJcajd+Rc2cX/EvjGwOriVl9eSK9A8TB9A8STNc29t/Z2qN5X7r72ccEr375PTj8+O3aj4aWa0gtTc2Vw37uZSXVQcBQF3dvY+lAHT/DvV5r+7u7OZxIygPvyvzA9OAOOK2NGt5dL8cXlksyCCZTOkWQOvXAznrnnHeoPh5ol3psM1zfCLfJ90LGFIX0J71Jb36ah8SJ/LlXybWFRuCg7jzkZ9OaAOm1/w8uuaVcWc6qyyqeT2rx+7+D9ylwxhu2hBPygZIB+mc174L2FU5kX865PxH448P6KB9puPNm7RxJuJ59enb17UAeZD4deKEDbLq0kj6BZEznHrnr0qhrGna1oVm8+oQWqLtz8km3OOcAd+nSusm8da3rl39h0S1jhLtt84kOV5644GMZp+l+AtZ1TWTe65M2ApUIspcN055zgcdPegDymLRvEPie6DWlvKsIPzHc3AP8J/Lt717D4K8HS6HGjTA+a2N/J5Nd3pui2mlRiGKJIlJ4CjqT1NWb26ttPTzZpUjTbuJY4GB1NAFa7voNKtWnuZUijQZZ3OAPqa+ePHnje88YasttbRFtMtpOEjyzSEH7/A6f5711/jHV9T+IGoDw9oihLIMHmmZseYAcg4646H8RXUeD/hpFpGJ70pPcFt2SgO04xwev8A+vpQB4pothrVpfw3jaTclQWIl8snGe9dRb6xq2k3dxc/ZngncAnMf3+ccYPJ5r6CTTIEIXy12g56U+TSLWfiSFGGeMigDxS2+JOpQuqTz26sUVtsgZTk9QePpXS2XxNYRRNLJBLuXLbGHHX361383hrTbhcS2sLfVBWXP8PPDc+7fpVsdxyfkHNAGMfihZQSBbhkXI6hhjP1qRPirocinZcKSOvP6fyp1x8IPCk5UnTVUr02Ow/rUSfB3w0kBiWKZFJz8spz+dAEsnxM8PvF/wAhCJWY4wxwRXifjnxLHdeL4ryxnW8hVSqKhO7cc55/pXqOpfBHTJgDaXM0XB+V8MD9as+HfhLpmjNHLOi3EyfKrMv3aAPJNB0rxV4kLQ2pNnCW+Z5Mg47gc16f4d+EFhZqsl9/pM27cSxOM/jXpdppNtaALFGigdgK0FUUAZunaNbadGqQxKgxwAK1BwMUYpaACiiigAooooAKKKKACggEYIyKKKAKUukafNMJntIWlAxuKDNWY4UiGEUAe1SUUAFFFFABRRRQAUhANLRQBTu9Ms70AXFvHJg5G5Qa8z8SfCKzup3udPjjA2sPKcexxhuufrXrFFAHy5N4Q1TR1WSGa806dDiRmf5XGOMMMYPPT/Ctm21vx3pKCdNRW4BbcUl4IBOOjV9A3Vha3sLRXECSxt1V1yDWO/gzQ5GJOn2/IwcoORQB5tb/ABY1vTmA1fTbdo1GZHhlGV6Dkc+tS6h8c9Oj025VLaVbwDCRv0I9c12E3w10Sa5LNAPJP/LIcDPrx35rB8QfC3Sk069ubaFDKsDBN8QbHH0yTQB1PgTxHL4l8O29/NEEdx0Gfz5rqeK88+E11NN4St/O270Jj4GOAcV6GfXvQB498UfGGo+GfFFj9gDuSikxjJDDOMdcD69ax5PjN4jjuWtx4fiSULkBpi3b2wP1qv8AFbF58RrO1QkOYFQEHBGSeR713Wk/CzQjpQW4tS00q5kkLksTj1PNAHn83xT8Y3SsVOn2cT5UMQSQfz61yl/qeu6nEkl34kv5mlXKW0CuN2Tj1xg+tfQ1j8PdAsYfLSwhcFs5dQT9PpWrH4Z0iOUSrYQBwRg7BxigDwnwz8HL7U5o7jUkSGA4bY65Yggcdua9t8P+ENJ8Ow7LCyihz95lHJ+prfSNUGFAAp1ACAADApaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSY4xS0UAc5r3hHTdaBea3UuevbPvx3rirjwjr2hzJLpupXrwg8Q53BQBxnJ79+K9YprIGUgjOaAPDNb1PxBf6fd2OqaNHdIn3HZgjZ52nGeO361m+FPibPokq2OqWF3FZLgJK53CMHoM+le8XOl21yuJoUfnPIrndf+Hmia/DHHc2igocq68Ef4/jQBFff2X4y0MqsqTwyqMNG344yOledXmkeJ/D8cQsXV4FYhvNcuuOMfTv0FbFx8OdV8O2bHw9qV6SPuw71C+vPT6cVjw6x8QLOTypdLS7jTAPnL5bN+vP4CgCOLxX4xuLVo30nZBICPOtkZic5HHPHY5pdC+H+orElxcRsWn3NNH9oZX5IIPoCKlPjrxDbMRP4aZIwCQAG3NgjoMe/61YPxTvYYVkOjqrM5QI7spJGAQRt96AEl+G+pSyKqXcqxA5xLKSxXGNucfr798c7enfC/To5TJetLO4AVNzk7FByFHtmqB+LhjSLzdDuE81tm8uMA8jnj2NSN8Vbsp5MHh27e8JIKg/JtHG4NjkcelAHotlpNvbRqqRKu3oQKvuYYEyzBVAySeAK8oHjrxjeSE2egpFEEDATElm57Y+uaqQ6H4v8asH166uLKzddptY22fXp1/H1oA6rxF8R9HsyyadINQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 502,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Warning\": [\n            \"199 \\\"martian\\\" \\\"dial tcp 20.60.80.2:443: connect: connection timed out\\\" \\\"Wed, 07 Feb 2024 00:06:56 GMT\\\"\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8eed9964f1d22ec3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3331000\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"3cprLrYfk2E=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cc605ee8-c01e-0042-2b59-59a1a2000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"548d1c705705b6e3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Md5\": [\n            \"YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3331000\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cc605efc-c01e-0042-3e59-59a1a2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"de5d33292cd052ac\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Md5\": [\n            \"YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B3331000\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cc605f0b-c01e-0042-4c59-59a1a2000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9a0d2115f52419b8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cc605f12-c01e-0042-5159-59a1a2000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/a_large_jpg_file_written_in_two_chunks_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMChKbuqXgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8a61c33a678818cd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B34E352C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"3cprLrYfk2E=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a5efc8ba-201e-0075-5859-59730e000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8f72eff4b6da0fce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Md5\": [\n            \"YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B34E352C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a5efc8ca-201e-0075-6559-59730e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"0d28174169b433d9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Md5\": [\n            \"YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770B34E352C\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a5efc8d7-201e-0075-7059-59730e000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d02c078f55191abd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:57 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"a5efc8de-201e-0075-7659-59730e000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/a_small_text_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMOTi7MAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3e4fedee8ab0f8f4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"VGhpcyBpcyBhIHRleHQgZmlsZS4=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"PzMJMSzDJkoTibLSY97OjQ==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6EFD48F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:37 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"t1+o9/4ppWU=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa4863-301e-001b-2359-592621000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7f9524124d54496b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Md5\": [\n            \"PzMJMSzDJkoTibLSY97OjQ==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6EFD48F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:37 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:37 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa4868-301e-001b-2759-592621000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"VGhpcyBpcyBhIHRleHQgZmlsZS4=\"\n      }\n    },\n    {\n      \"ID\": \"c542b853c7c61275\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Md5\": [\n            \"PzMJMSzDJkoTibLSY97OjQ==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6EFD48F\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:37 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:37 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa4873-301e-001b-2e59-592621000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"14ab534fb309eb60\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d0fa487d-301e-001b-3659-592621000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/invalid_ContentType_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB3KKpGPgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f80800bad2ec5a9a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 502,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Warning\": [\n            \"199 \\\"martian\\\" \\\"dial tcp 20.60.80.2:443: connect: connection timed out\\\" \\\"Wed, 07 Feb 2024 00:06:35 GMT\\\"\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"36bf63e6a40cb44d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"BlobNotFound\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"446981c6-b01e-0058-2859-59c07d000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+QmxvYk5vdEZvdW5kPC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQgYmxvYiBkb2VzIG5vdCBleGlzdC4KUmVxdWVzdElkOjQ0Njk4MWM2LWIwMWUtMDA1OC0yODU5LTU5YzA3ZDAwMDAwMApUaW1lOjIwMjQtMDItMDdUMDA6MDY6MzYuMTUxNTE5M1o8L01lc3NhZ2U+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/no_write_then_close_results_in_empty_blob,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB3H4AeBAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"941b3cf92d9bafda\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"1B2M2Y8AsgTpgAmY7PhCfg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709A2BBC06\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"AAAAAAAAAAA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3e5803d1-701e-0035-6c59-597436000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a4f68aa90e7ee68c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"1B2M2Y8AsgTpgAmY7PhCfg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709A2BBC06\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3e5803e7-701e-0035-7f59-597436000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fb1ff0f8593675c8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3e5803ee-701e-0035-0559-597436000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/no_write_then_close_results_in_empty_blob.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB3F9/72QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cc8bb0c9b188ed79\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"1B2M2Y8AsgTpgAmY7PhCfg==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709A163B59\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"AAAAAAAAAAA=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"853285a1-a01e-0026-5959-59503a000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e5b18ee2e03199f0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"1B2M2Y8AsgTpgAmY7PhCfg==\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC27709A163B59\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:15 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"853285b0-a01e-0026-6759-59503a000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c0ca7694e64db930\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"853285b8-a01e-0026-6d59-59503a000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/write_to_empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMB3Ee6ItAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4c45c88947e81a8f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"325\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"InvalidUri\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2441b67a-e01e-0055-1c59-5908a9000000\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+SW52YWxpZFVyaTwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdGVkIFVSSSBkb2VzIG5vdCByZXByZXNlbnQgYW55IHJlc291cmNlIG9uIHRoZSBzZXJ2ZXIuClJlcXVlc3RJZDoyNDQxYjY3YS1lMDFlLTAwNTUtMWM1OS01OTA4YTkwMDAwMDAKVGltZToyMDI0LTAyLTA3VDAwOjA2OjE1LjM3MjY4NTFaPC9NZXNzYWdlPjxVcmlQYXRoPmh0dHBzOi8vZ29jbG91ZGJsb2J0ZXN0cy5ibG9iLmNvcmUud2luZG93cy5uZXQvZ28tY2xvdWQtYnVja2V0LzwvVXJpUGF0aD48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"bcb7cbe66eb0e2a1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"325\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:14 GMT\"\n          ],\n          \"Server\": [\n            \"Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Error-Code\": [\n            \"InvalidUri\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"2441b67f-e01e-0055-2059-5908a9000000\"\n          ]\n        },\n        \"Body\": \"77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48RXJyb3I+PENvZGU+SW52YWxpZFVyaTwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdGVkIFVSSSBkb2VzIG5vdCByZXByZXNlbnQgYW55IHJlc291cmNlIG9uIHRoZSBzZXJ2ZXIuClJlcXVlc3RJZDoyNDQxYjY3Zi1lMDFlLTAwNTUtMjA1OS01OTA4YTkwMDAwMDAKVGltZToyMDI0LTAyLTA3VDAwOjA2OjE1LjM5MDY3NjVaPC9NZXNzYWdlPjxVcmlQYXRoPmh0dHBzOi8vZ29jbG91ZGJsb2J0ZXN0cy5ibG9iLmNvcmUud2luZG93cy5uZXQvZ28tY2xvdWQtYnVja2V0LzwvVXJpUGF0aD48L0Vycm9yPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/azureblob/testdata/TestConformance/TestWrite/write_with_explicit_ContentType_overrides_discovery.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMCMHDzHRAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"\\u003cBlock(l|L)ist\\u003e\\u003cLatest\\u003e.*\\u003c/Latest\\u003e\\u003c/Block(l|L)ist\\u003e\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^X-Ms-Version$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^blockid$\"\n    ],\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^st$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fdeec03d70573910\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Blob-Cache-Control\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Disposition\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Encoding\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Language\": [\n            \"\"\n          ],\n          \"X-Ms-Blob-Content-Type\": [\n            \"application/json\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 201,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6A58FE9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Content-Crc64\": [\n            \"h/FDiq2zgEw=\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fbc0ab6d-301e-0056-4459-59e9cd000000\"\n          ],\n          \"X-Ms-Request-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"13fc0e5ed8fa5204\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6A58FE9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fbc0ab90-301e-0056-5259-59e9cd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"1cb1bfa003ff24c9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Disposition\": [\n            \"\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Md5\": [\n            \"D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0x8DC2770A6A58FE9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Access-Tier\": [\n            \"Hot\"\n          ],\n          \"X-Ms-Access-Tier-Inferred\": [\n            \"true\"\n          ],\n          \"X-Ms-Blob-Type\": [\n            \"BlockBlob\"\n          ],\n          \"X-Ms-Creation-Time\": [\n            \"Wed, 07 Feb 2024 00:06:36 GMT\"\n          ],\n          \"X-Ms-Lease-State\": [\n            \"available\"\n          ],\n          \"X-Ms-Lease-Status\": [\n            \"unlocked\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fbc0aba3-301e-0056-5a59-59e9cd000000\"\n          ],\n          \"X-Ms-Server-Encrypted\": [\n            \"true\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"76ccd4f096f58709\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://gocloudblobtests.blob.core.windows.net/go-cloud-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/xml\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 202,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:06:35 GMT\"\n          ],\n          \"Server\": [\n            \"Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0\"\n          ],\n          \"X-Ms-Delete-Type-Permanent\": [\n            \"true\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"fbc0abb0-301e-0056-6159-59e9cd000000\"\n          ],\n          \"X-Ms-Version\": [\n            \"CLEARED\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/blob.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package blob provides an easy and portable way to interact with blobs\n// within a storage location. Subpackages contain driver implementations of\n// blob for supported services.\n//\n// See https://gocloud.dev/howto/blob/ for a detailed how-to guide.\n//\n// *blob.Bucket implements io/fs.FS and io/fs.SubFS, so it can be used with\n// functions in that package.\n//\n// # Errors\n//\n// The errors returned from this package can be inspected in several ways:\n//\n// The Code function from gocloud.dev/gcerrors will return an error code, also\n// defined in that package, when invoked on an error.\n//\n// The Bucket.ErrorAs method can retrieve the driver error underlying the returned\n// error.\n//\n// # OpenTelemetry Integration\n//\n// OpenTelemetry supports tracing, metrics, and logs collection for multiple languages and\n// backend providers. See https://opentelemetry.io.\n//\n// This API collects OpenTelemetry traces and metrics for the following methods:\n//   - Attributes\n//   - Copy\n//   - Delete\n//   - ListPage\n//   - NewRangeReader, from creation until the call to Close. (NewReader and ReadAll\n//     are included because they call NewRangeReader.)\n//   - NewWriter, from creation until the call to Close.\n//\n// All trace and metric names begin with the package import path.\n// The traces add the method name.\n// For example, \"gocloud.dev/blob/Attributes\".\n// The metrics are \"completed_calls\", a count of completed method calls by driver,\n// method and status (error code); and \"latency\", a distribution of method latency\n// by driver and method.\n// For example, \"gocloud.dev/blob/latency\".\n//\n// It also collects the following metrics:\n//   - gocloud.dev/blob/bytes_read: the total number of bytes read, by driver.\n//   - gocloud.dev/blob/bytes_written: the total number of bytes written, by driver.\n//\n// To enable trace collection in your application, see the documentation at\n// https://opentelemetry.io/docs/instrumentation/go/getting-started/.\n// To enable metric collection in your application, see the documentation at\n// https://opentelemetry.io/docs/instrumentation/go/manual/.\npackage blob // import \"gocloud.dev/blob\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/md5\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"iter\"\n\t\"log\"\n\t\"mime\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/openurl\"\n\tgcdkotel \"gocloud.dev/internal/otel\"\n)\n\n// Ensure that Reader implements io.ReadSeekCloser.\nvar _ = io.ReadSeekCloser(&Reader{})\n\n// Reader reads bytes from a blob.\n// It implements io.ReadSeekCloser, and must be closed after\n// reads are finished.\ntype Reader struct {\n\tb              driver.Bucket\n\tr              driver.Reader\n\tkey            string\n\tctx            context.Context       // Used to recreate r after Seeks\n\tdopts          *driver.ReaderOptions // \"\n\tbaseOffset     int64                 // The base offset provided to NewRangeReader.\n\tbaseLength     int64                 // The length provided to NewRangeReader (may be negative).\n\trelativeOffset int64                 // Current offset (relative to baseOffset).\n\tsavedOffset    int64                 // Last relativeOffset for r, saved after relativeOffset is changed in Seek, or -1 if no Seek.\n\tend            func(error)           // Called at Close to finish trace and metric collection.\n\t// for metric collection;\n\tbytesReadCounter metric.Int64Counter\n\tbytesRead        int\n\tclosed           bool\n}\n\n// Read implements io.Reader (https://golang.org/pkg/io/#Reader).\nfunc (r *Reader) Read(p []byte) (int, error) {\n\tif r.savedOffset != -1 {\n\t\t// We've done one or more Seeks since the last read. We may have\n\t\t// to recreate the Reader.\n\t\t//\n\t\t// Note that remembering the savedOffset and lazily resetting the\n\t\t// reader like this allows the caller to Seek, then Seek again back,\n\t\t// to the original offset, without having to recreate the reader.\n\t\t// We only have to recreate the reader if we actually read after a Seek.\n\t\t// This is an important optimization because it's common to Seek\n\t\t// to (SeekEnd, 0) and use the return value to determine the size\n\t\t// of the data, then Seek back to (SeekStart, 0).\n\t\tsaved := r.savedOffset\n\t\tif r.relativeOffset == saved {\n\t\t\t// Nope! We're at the same place we left off.\n\t\t\tr.savedOffset = -1\n\t\t} else {\n\t\t\t// Yep! We've changed the offset. Recreate the reader.\n\t\t\tlength := r.baseLength\n\t\t\tif length >= 0 {\n\t\t\t\tlength -= r.relativeOffset\n\t\t\t\tif length < 0 {\n\t\t\t\t\t// Shouldn't happen based on checks in Seek.\n\t\t\t\t\treturn 0, gcerr.Newf(gcerr.Internal, nil, \"blob: invalid Seek (base length %d, relative offset %d)\", r.baseLength, r.relativeOffset)\n\t\t\t\t}\n\t\t\t}\n\t\t\tnewR, err := r.b.NewRangeReader(r.ctx, r.key, r.baseOffset+r.relativeOffset, length, r.dopts)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, wrapError(r.b, err, r.key)\n\t\t\t}\n\t\t\t_ = r.r.Close()\n\t\t\tr.savedOffset = -1\n\t\t\tr.r = newR\n\t\t}\n\t}\n\tn, err := r.r.Read(p)\n\tr.bytesRead += n\n\tr.relativeOffset += int64(n)\n\treturn n, wrapError(r.b, err, r.key)\n}\n\n// Seek implements io.Seeker (https://golang.org/pkg/io/#Seeker).\nfunc (r *Reader) Seek(offset int64, whence int) (int64, error) {\n\tif r.savedOffset == -1 {\n\t\t// Save the current offset for our reader. If the Seek changes the\n\t\t// offset, and then we try to read, we'll need to recreate the reader.\n\t\t// See comment above in Read for why we do it lazily.\n\t\tr.savedOffset = r.relativeOffset\n\t}\n\t// The maximum relative offset is the minimum of:\n\t// 1. The actual size of the blob, minus our initial baseOffset.\n\t// 2. The length provided to NewRangeReader (if it was non-negative).\n\tmaxRelativeOffset := r.Size() - r.baseOffset\n\tif r.baseLength >= 0 && r.baseLength < maxRelativeOffset {\n\t\tmaxRelativeOffset = r.baseLength\n\t}\n\tswitch whence {\n\tcase io.SeekStart:\n\t\tr.relativeOffset = offset\n\tcase io.SeekCurrent:\n\t\tr.relativeOffset += offset\n\tcase io.SeekEnd:\n\t\tr.relativeOffset = maxRelativeOffset + offset\n\t}\n\tif r.relativeOffset < 0 {\n\t\t// \"Seeking to an offset before the start of the file is an error.\"\n\t\tinvalidOffset := r.relativeOffset\n\t\tr.relativeOffset = 0\n\t\treturn 0, fmt.Errorf(\"Seek resulted in invalid offset %d, using 0\", invalidOffset)\n\t}\n\tif r.relativeOffset > maxRelativeOffset {\n\t\t// \"Seeking to any positive offset is legal, but the behavior of subsequent\n\t\t// I/O operations on the underlying object is implementation-dependent.\"\n\t\t// We'll choose to set the offset to the EOF.\n\t\tlog.Printf(\"blob.Reader.Seek set an offset after EOF (base offset/length from NewRangeReader %d, %d; actual blob size %d; relative offset %d -> absolute offset %d).\", r.baseOffset, r.baseLength, r.Size(), r.relativeOffset, r.baseOffset+r.relativeOffset)\n\t\tr.relativeOffset = maxRelativeOffset\n\t}\n\treturn r.relativeOffset, nil\n}\n\n// Close implements io.Closer (https://golang.org/pkg/io/#Closer).\nfunc (r *Reader) Close() error {\n\tr.closed = true\n\terr := wrapError(r.b, r.r.Close(), r.key)\n\tr.end(err)\n\t// Emit only on close to avoid an allocation on each call to Read().\n\t// Record bytes read metric with OpenTelemetry.\n\tif r.bytesReadCounter != nil && r.bytesRead > 0 {\n\t\tr.bytesReadCounter.Add(\n\t\t\tr.ctx,\n\t\t\tint64(r.bytesRead))\n\t}\n\treturn err\n}\n\n// ContentType returns the MIME type of the blob.\nfunc (r *Reader) ContentType() string {\n\treturn r.r.Attributes().ContentType\n}\n\n// ModTime returns the time the blob was last modified.\nfunc (r *Reader) ModTime() time.Time {\n\treturn r.r.Attributes().ModTime\n}\n\n// Size returns the size of the blob content in bytes.\nfunc (r *Reader) Size() int64 {\n\treturn r.r.Attributes().Size\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (r *Reader) As(i any) bool {\n\treturn r.r.As(i)\n}\n\n// WriteTo reads from r and writes to w until there's no more data or\n// an error occurs.\n// The return value is the number of bytes written to w.\n//\n// It implements the io.WriterTo interface.\nfunc (r *Reader) WriteTo(w io.Writer) (int64, error) {\n\t// If the writer has a ReaderFrom method, use it to do the copy.\n\t// Don't do this for our own *Writer to avoid infinite recursion.\n\t// Avoids an allocation and a copy.\n\tswitch w.(type) {\n\tcase *Writer:\n\tdefault:\n\t\tif rf, ok := w.(io.ReaderFrom); ok {\n\t\t\tn, err := rf.ReadFrom(r)\n\t\t\treturn n, err\n\t\t}\n\t}\n\n\t_, nw, err := readFromWriteTo(r, w)\n\treturn nw, err\n}\n\n// downloadAndClose is similar to WriteTo, but ensures it's the only read.\n// This pattern is more optimal for some drivers.\nfunc (r *Reader) downloadAndClose(w io.Writer) (err error) {\n\tif r.bytesRead != 0 {\n\t\t// Shouldn't happen.\n\t\treturn gcerr.Newf(gcerr.Internal, nil, \"blob: downloadAndClose isn't the first read\")\n\t}\n\tdriverDownloader, ok := r.r.(driver.Downloader)\n\tif ok {\n\t\terr = driverDownloader.Download(w)\n\t} else {\n\t\t_, err = r.WriteTo(w)\n\t}\n\tcerr := r.Close()\n\tif err == nil && cerr != nil {\n\t\terr = cerr\n\t}\n\treturn err\n}\n\n// readFromWriteTo is a helper for ReadFrom and WriteTo.\n// It reads data from r and writes to w, until EOF or a read/write error.\n// It returns the number of bytes read from r and the number of bytes\n// written to w.\nfunc readFromWriteTo(r io.Reader, w io.Writer) (int64, int64, error) {\n\t// Note: can't use io.Copy because it will try to use r.WriteTo\n\t// or w.WriteTo, which is recursive in this context.\n\tbuf := make([]byte, 1024*1024)\n\tvar totalRead, totalWritten int64\n\tfor {\n\t\tnumRead, rerr := r.Read(buf)\n\t\tif numRead > 0 {\n\t\t\ttotalRead += int64(numRead)\n\t\t\tnumWritten, werr := w.Write(buf[0:numRead])\n\t\t\ttotalWritten += int64(numWritten)\n\t\t\tif werr != nil {\n\t\t\t\treturn totalRead, totalWritten, werr\n\t\t\t}\n\t\t}\n\t\tif rerr == io.EOF {\n\t\t\t// Done!\n\t\t\treturn totalRead, totalWritten, nil\n\t\t}\n\t\tif rerr != nil {\n\t\t\treturn totalRead, totalWritten, rerr\n\t\t}\n\t}\n}\n\n// Attributes contains attributes about a blob.\ntype Attributes struct {\n\t// CacheControl specifies caching attributes that services may use\n\t// when serving the blob.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control\n\tCacheControl string\n\t// ContentDisposition specifies whether the blob content is expected to be\n\t// displayed inline or as an attachment.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition\n\tContentDisposition string\n\t// ContentEncoding specifies the encoding used for the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n\tContentEncoding string\n\t// ContentLanguage specifies the language used in the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language\n\tContentLanguage string\n\t// ContentType is the MIME type of the blob. It will not be empty.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type\n\tContentType string\n\t// Metadata holds key/value pairs associated with the blob.\n\t// Keys are guaranteed to be in lowercase, even if the backend service\n\t// has case-sensitive keys (although note that Metadata written via\n\t// this package will always be lowercased). If there are duplicate\n\t// case-insensitive keys (e.g., \"foo\" and \"FOO\"), only one value\n\t// will be kept, and it is undefined which one.\n\tMetadata map[string]string\n\t// CreateTime is the time the blob was created, if available. If not available,\n\t// CreateTime will be the zero time.\n\tCreateTime time.Time\n\t// ModTime is the time the blob was last modified.\n\tModTime time.Time\n\t// Size is the size of the blob's content in bytes.\n\tSize int64\n\t// MD5 is an MD5 hash of the blob contents or nil if not available.\n\tMD5 []byte\n\t// ETag for the blob; see https://en.wikipedia.org/wiki/HTTP_ETag.\n\tETag string\n\n\tasFunc func(any) bool\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (a *Attributes) As(i any) bool {\n\tif a.asFunc == nil {\n\t\treturn false\n\t}\n\treturn a.asFunc(i)\n}\n\n// Writer writes bytes to a blob.\n//\n// It implements io.WriteCloser (https://golang.org/pkg/io/#Closer), and must be\n// closed after all writes are done.\ntype Writer struct {\n\tb          driver.Bucket\n\tw          driver.Writer\n\tkey        string\n\tend        func(err error) // called at Close to finish trace and metric collection\n\tcancel     func()          // cancels the ctx provided to NewTypedWriter if contentMD5 verification fails\n\tcontentMD5 []byte\n\tmd5hash    hash.Hash\n\n\t// Metric collection fields.\n\tbytesWrittenCounter metric.Int64Counter\n\tbytesWritten        int\n\tclosed              bool\n\n\t// These fields are non-zero values only when w is nil (not yet created).\n\t//\n\t// A ctx is stored in the Writer since we need to pass it into NewTypedWriter\n\t// when we finish detecting the content type of the blob and create the\n\t// underlying driver.Writer. This step happens inside Write or Close and\n\t// neither of them take a context.Context as an argument.\n\t//\n\t// All 3 fields are only initialized when we create the Writer without\n\t// setting the w field, and are reset to zero values after w is created.\n\tctx  context.Context\n\topts *driver.WriterOptions\n\tbuf  *bytes.Buffer\n}\n\n// sniffLen is the byte size of Writer.buf used to detect content-type.\nconst sniffLen = 512\n\n// Write implements the io.Writer interface (https://golang.org/pkg/io/#Writer).\n//\n// Writes may happen asynchronously, so the returned error can be nil\n// even if the actual write eventually fails. The write is only guaranteed to\n// have succeeded if Close returns no error.\nfunc (w *Writer) Write(p []byte) (int, error) {\n\tif len(w.contentMD5) > 0 {\n\t\tif _, err := w.md5hash.Write(p); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tif w.w != nil {\n\t\treturn w.write(p)\n\t}\n\n\t// If w is not yet created due to no content-type being passed in, try to sniff\n\t// the MIME type based on at most 512 bytes of the blob content of p.\n\n\t// Detect the content-type directly if the first chunk is at least 512 bytes.\n\tif w.buf.Len() == 0 && len(p) >= sniffLen {\n\t\treturn w.open(p)\n\t}\n\n\t// Store p in w.buf and detect the content-type when the size of content in\n\t// w.buf is at least 512 bytes.\n\tn, err := w.buf.Write(p)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif w.buf.Len() >= sniffLen {\n\t\t// Note that w.open will return the full length of the buffer; we don't want\n\t\t// to return that as the length of this write since some of them were written in\n\t\t// previous writes. Instead, we return the n from this write, above.\n\t\t_, err := w.open(w.buf.Bytes())\n\t\treturn n, err\n\t}\n\treturn n, nil\n}\n\n// Close closes the blob writer. The write operation is not guaranteed to have succeeded until\n// Close returns with no error.\n// Close may return an error if the context provided to create the Writer is\n// canceled or reaches its deadline.\nfunc (w *Writer) Close() (err error) {\n\tw.closed = true\n\tdefer func() {\n\t\tw.end(err)\n\t\t// Emit only on close to avoid an allocation on each call to Write().\n\t\t// Record bytes written metric with OpenTelemetry.\n\t\tif w.bytesWrittenCounter != nil && w.bytesWritten > 0 {\n\t\t\tw.bytesWrittenCounter.Add(\n\t\t\t\tw.ctx,\n\t\t\t\tint64(w.bytesWritten))\n\t\t}\n\t}()\n\tif len(w.contentMD5) > 0 {\n\t\t// Verify the MD5 hash of what was written matches the ContentMD5 provided\n\t\t// by the user.\n\t\tmd5sum := w.md5hash.Sum(nil)\n\t\tif !bytes.Equal(md5sum, w.contentMD5) {\n\t\t\t// No match! Return an error, but first cancel the context and call the\n\t\t\t// driver's Close function to ensure the write is aborted.\n\t\t\tw.cancel()\n\t\t\tif w.w != nil {\n\t\t\t\t_ = w.w.Close()\n\t\t\t}\n\t\t\treturn gcerr.Newf(gcerr.FailedPrecondition, nil, \"blob: the WriterOptions.ContentMD5 you specified (%X) did not match what was written (%X)\", w.contentMD5, md5sum)\n\t\t}\n\t}\n\n\tdefer w.cancel()\n\tif w.w != nil {\n\t\treturn wrapError(w.b, w.w.Close(), w.key)\n\t}\n\tif _, err := w.open(w.buf.Bytes()); err != nil {\n\t\treturn err\n\t}\n\treturn wrapError(w.b, w.w.Close(), w.key)\n}\n\n// open tries to detect the MIME type of p and write it to the blob.\n// The error it returns is wrapped.\nfunc (w *Writer) open(p []byte) (int, error) {\n\tct := http.DetectContentType(p)\n\tvar err error\n\tif w.w, err = w.b.NewTypedWriter(w.ctx, w.key, ct, w.opts); err != nil {\n\t\treturn 0, wrapError(w.b, err, w.key)\n\t}\n\t// Set the 3 fields needed for lazy NewTypedWriter back to zero values\n\t// (see the comment on Writer).\n\tw.buf = nil\n\tw.ctx = nil\n\tw.opts = nil\n\treturn w.write(p)\n}\n\nfunc (w *Writer) write(p []byte) (int, error) {\n\tn, err := w.w.Write(p)\n\tw.bytesWritten += n\n\treturn n, wrapError(w.b, err, w.key)\n}\n\n// ReadFrom reads from r and writes to w until EOF or error.\n// The return value is the number of bytes read from r.\n//\n// It implements the io.ReaderFrom interface.\nfunc (w *Writer) ReadFrom(r io.Reader) (int64, error) {\n\t// If the reader has a WriteTo method, use it to do the copy.\n\t// Don't do this for our own *Reader to avoid infinite recursion.\n\t// Avoids an allocation and a copy.\n\tswitch r.(type) {\n\tcase *Reader:\n\tdefault:\n\t\tif wt, ok := r.(io.WriterTo); ok {\n\t\t\tn, err := wt.WriteTo(w)\n\t\t\treturn n, err\n\t\t}\n\t}\n\n\tnr, _, err := readFromWriteTo(r, w)\n\treturn nr, err\n}\n\n// uploadAndClose is similar to ReadFrom, but ensures it's the only write.\n// This pattern is more optimal for some drivers.\nfunc (w *Writer) uploadAndClose(r io.Reader) (err error) {\n\tif w.bytesWritten != 0 {\n\t\t// Shouldn't happen.\n\t\treturn gcerr.Newf(gcerr.Internal, nil, \"blob: uploadAndClose must be the first write\")\n\t}\n\t// When ContentMD5 is being checked, we can't use Upload.\n\tif len(w.contentMD5) > 0 {\n\t\t_, err = w.ReadFrom(r)\n\t} else {\n\t\tdriverUploader, ok := w.w.(driver.Uploader)\n\t\tif ok {\n\t\t\terr = driverUploader.Upload(r)\n\t\t} else {\n\t\t\t_, err = w.ReadFrom(r)\n\t\t}\n\t}\n\tcerr := w.Close()\n\tif err == nil && cerr != nil {\n\t\terr = cerr\n\t}\n\treturn err\n}\n\n// ListOptions sets options for listing blobs via Bucket.List.\ntype ListOptions struct {\n\t// Prefix indicates that only blobs with a key starting with this prefix\n\t// should be returned.\n\tPrefix string\n\t// Delimiter sets the delimiter used to define a hierarchical namespace,\n\t// like a filesystem with \"directories\". It is highly recommended that you\n\t// use \"\" or \"/\" as the Delimiter. Other values should work through this API,\n\t// but service UIs generally assume \"/\".\n\t//\n\t// An empty delimiter means that the bucket is treated as a single flat\n\t// namespace.\n\t//\n\t// A non-empty delimiter means that any result with the delimiter in its key\n\t// after Prefix is stripped will be returned with ListObject.IsDir = true,\n\t// ListObject.Key truncated after the delimiter, and zero values for other\n\t// ListObject fields. These results represent \"directories\". Multiple results\n\t// in a \"directory\" are returned as a single result.\n\tDelimiter string\n\n\t// BeforeList is a callback that will be called before each call to the\n\t// the underlying service's list functionality.\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeList func(asFunc func(any) bool) error\n}\n\n// ListIterator iterates over List results.\ntype ListIterator struct {\n\tb       *Bucket\n\topts    *driver.ListOptions\n\tpage    *driver.ListPage\n\tnextIdx int\n}\n\n// Next returns a *ListObject for the next blob. It returns (nil, io.EOF) if\n// there are no more.\nfunc (i *ListIterator) Next(ctx context.Context) (*ListObject, error) {\n\tif i.page != nil {\n\t\t// We've already got a page of results.\n\t\tif i.nextIdx < len(i.page.Objects) {\n\t\t\t// Next object is in the page; return it.\n\t\t\tdobj := i.page.Objects[i.nextIdx]\n\t\t\ti.nextIdx++\n\t\t\treturn &ListObject{\n\t\t\t\tKey:     dobj.Key,\n\t\t\t\tModTime: dobj.ModTime,\n\t\t\t\tSize:    dobj.Size,\n\t\t\t\tMD5:     dobj.MD5,\n\t\t\t\tIsDir:   dobj.IsDir,\n\t\t\t\tasFunc:  dobj.AsFunc,\n\t\t\t}, nil\n\t\t}\n\t\tif len(i.page.NextPageToken) == 0 {\n\t\t\t// Done with current page, and there are no more; return io.EOF.\n\t\t\treturn nil, io.EOF\n\t\t}\n\t\t// We need to load the next page.\n\t\ti.opts.PageToken = i.page.NextPageToken\n\t}\n\ti.b.mu.RLock()\n\tdefer i.b.mu.RUnlock()\n\tif i.b.closed {\n\t\treturn nil, errClosed\n\t}\n\t// Loading a new page.\n\tp, err := i.b.b.ListPaged(ctx, i.opts)\n\tif err != nil {\n\t\treturn nil, wrapError(i.b.b, err, \"\")\n\t}\n\ti.page = p\n\ti.nextIdx = 0\n\treturn i.Next(ctx)\n}\n\ntype errorState struct {\n\tmu   sync.Mutex\n\tdone bool\n\terr  error\n}\n\nfunc (es *errorState) Done() {\n\tes.mu.Lock()\n\tes.done = true\n\tes.mu.Unlock()\n}\n\nfunc (es *errorState) Set(err error) {\n\tif err != nil {\n\t\tes.mu.Lock()\n\t\tes.err = err\n\t\tes.mu.Unlock()\n\t}\n}\n\nfunc (es *errorState) Err() error {\n\tes.mu.Lock()\n\tdefer es.mu.Unlock()\n\treturn es.err\n}\n\nfunc (es *errorState) Func() func() error {\n\treturn func() error {\n\t\tes.mu.Lock()\n\t\tdefer es.mu.Unlock()\n\t\tif !es.done {\n\t\t\tpanic(\"error function called before iteration completed\")\n\t\t}\n\t\treturn es.err\n\t}\n}\n\n// All iterates over the iterator, returning a *ListObject and a download function for each entry.\n//\n// Once iteration is complete, the returned \"func() error\" will return any errors; a non-nil return\n// value implies that the iteration did not complete.\n// Calling this function before iteration is complete will panic.\nfunc (i *ListIterator) All(ctx context.Context) (iter.Seq2[*ListObject, func(io.Writer, *ReaderOptions) error], func() error) {\n\tvar es errorState\n\treturn func(yield func(*ListObject, func(io.Writer, *ReaderOptions) error) bool) {\n\t\tdefer es.Done()\n\t\tfor {\n\t\t\tobj, itErr := i.Next(ctx)\n\t\t\tif itErr == io.EOF {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif itErr != nil {\n\t\t\t\tes.Set(itErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdownloadFunc := func(w io.Writer, opts *ReaderOptions) error {\n\t\t\t\treturn i.b.Download(ctx, obj.Key, w, opts)\n\t\t\t}\n\t\t\tif !yield(obj, downloadFunc) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}, es.Func()\n}\n\n// ListObject represents a single blob returned from List.\ntype ListObject struct {\n\t// Key is the key for this blob.\n\tKey string\n\t// ModTime is the time the blob was last modified.\n\tModTime time.Time\n\t// Size is the size of the blob's content in bytes.\n\tSize int64\n\t// MD5 is an MD5 hash of the blob contents or nil if not available.\n\tMD5 []byte\n\t// IsDir indicates that this result represents a \"directory\" in the\n\t// hierarchical namespace, ending in ListOptions.Delimiter. Key can be\n\t// passed as ListOptions.Prefix to list items in the \"directory\".\n\t// Fields other than Key and IsDir will not be set if IsDir is true.\n\tIsDir bool\n\n\tasFunc func(any) bool\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (o *ListObject) As(i any) bool {\n\tif o.asFunc == nil {\n\t\treturn false\n\t}\n\treturn o.asFunc(i)\n}\n\n// Bucket provides an easy and portable way to interact with blobs\n// within a \"bucket\", including read, write, and list operations.\n// To create a Bucket, use constructors found in driver subpackages.\ntype Bucket struct {\n\tb      driver.Bucket\n\ttracer *gcdkotel.Tracer\n\n\tbytesReadCounter    metric.Int64Counter\n\tbytesWrittenCounter metric.Int64Counter\n\n\t// ioFSCallback is set via SetIOFSCallback, which must be\n\t// called before calling various functions implementing interfaces\n\t// from the io/fs package.\n\tioFSCallback func() (context.Context, *ReaderOptions)\n\n\t// mu protects the closed variable.\n\t// Read locks are kept to allow holding a read lock for long-running calls,\n\t// and thereby prevent closing until a call finishes.\n\tmu     sync.RWMutex\n\tclosed bool\n}\n\nconst pkgName = \"gocloud.dev/blob\"\n\nvar (\n\n\t// OpenTelemetryViews are predefined views for OpenTelemetry metrics.\n\t// The views include counts and latency distributions for API method calls.\n\t// See the explanations at https://opentelemetry.io/docs/specs/otel/metrics/data-model/ for usage.\n\tOpenTelemetryViews = append(\n\t\tappend(\n\t\t\tgcdkotel.Views(pkgName),\n\t\t\tgcdkotel.CounterView(pkgName, \"/bytes_read\", \"Sum of bytes read from the service.\")...),\n\t\tgcdkotel.CounterView(pkgName, \"/bytes_written\", \"Sum of bytes written to the service.\")...)\n)\n\n// NewBucket is intended for use by drivers only. Do not use in application code.\nvar NewBucket = newBucket\n\n// newBucket creates a new *Bucket based on a specific driver implementation.\n// End users should use subpackages to construct a *Bucket instead of this\n// function; see the package documentation for details.\nfunc newBucket(b driver.Bucket) *Bucket {\n\tproviderName := gcdkotel.ProviderName(b)\n\n\treturn &Bucket{\n\t\tb:                   b,\n\t\tioFSCallback:        func() (context.Context, *ReaderOptions) { return context.Background(), nil },\n\t\ttracer:              gcdkotel.NewTracer(pkgName, providerName),\n\t\tbytesReadCounter:    gcdkotel.BytesMeasure(pkgName, providerName, \"/bytes_read\", \"Total bytes read from blob storage\"),\n\t\tbytesWrittenCounter: gcdkotel.BytesMeasure(pkgName, providerName, \"/bytes_written\", \"Total bytes written to blob storage\"),\n\t}\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (b *Bucket) As(i any) bool {\n\tif i == nil {\n\t\treturn false\n\t}\n\treturn b.b.As(i)\n}\n\n// ErrorAs converts err to driver-specific types.\n// ErrorAs panics if i is nil or not a pointer.\n// ErrorAs returns false if err == nil.\n// See https://gocloud.dev/concepts/as/ for background information.\nfunc (b *Bucket) ErrorAs(err error, i any) bool {\n\treturn gcerr.ErrorAs(err, i, b.b.ErrorAs)\n}\n\n// ReadAll is a shortcut for creating a Reader via NewReader with nil\n// ReaderOptions, and reading the entire blob.\n//\n// Using Download may be more efficient.\nfunc (b *Bucket) ReadAll(ctx context.Context, key string) (_ []byte, err error) {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn nil, errClosed\n\t}\n\tr, err := b.NewReader(ctx, key, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() { _ = r.Close() }()\n\treturn io.ReadAll(r)\n}\n\n// Download writes the content of a blob into an io.Writer w.\nfunc (b *Bucket) Download(ctx context.Context, key string, w io.Writer, opts *ReaderOptions) error {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn errClosed\n\t}\n\tr, err := b.NewReader(ctx, key, opts)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn r.downloadAndClose(w)\n}\n\n// List returns a ListIterator that can be used to iterate over blobs in a\n// bucket, in lexicographical order of UTF-8 encoded keys. The underlying\n// implementation fetches results in pages.\n//\n// A nil ListOptions is treated the same as the zero value.\n//\n// List is not guaranteed to include all recently-written blobs;\n// some services are only eventually consistent.\nfunc (b *Bucket) List(opts *ListOptions) *ListIterator {\n\tif opts == nil {\n\t\topts = &ListOptions{}\n\t}\n\tdopts := &driver.ListOptions{\n\t\tPrefix:     opts.Prefix,\n\t\tDelimiter:  opts.Delimiter,\n\t\tBeforeList: opts.BeforeList,\n\t}\n\treturn &ListIterator{b: b, opts: dopts}\n}\n\n// FirstPageToken is the pageToken to pass to ListPage to retrieve the first page of results.\nvar FirstPageToken = []byte(\"first page\")\n\n// ListPage returns a page of ListObject results for blobs in a bucket, in lexicographical\n// order of UTF-8 encoded keys.\n//\n// To fetch the first page, pass FirstPageToken as the pageToken. For subsequent pages, pass\n// the pageToken returned from a previous call to ListPage.\n// It is not possible to \"skip ahead\" pages.\n//\n// Each call will return pageSize results, unless there are not enough blobs to fill the\n// page, in which case it will return fewer results (possibly 0).\n//\n// If there are no more blobs available, ListPage will return an empty pageToken. Note that\n// this may happen regardless of the number of returned results -- the last page might have\n// 0 results (i.e., if the last item was deleted), pageSize results, or anything in between.\n//\n// Calling ListPage with an empty pageToken will immediately return io.EOF. When looping\n// over pages, callers can either check for an empty pageToken, or they can make one more\n// call and check for io.EOF.\n//\n// The underlying implementation fetches results in pages, but one call to ListPage may\n// require multiple page fetches (and therefore, multiple calls to the BeforeList callback).\n//\n// A nil ListOptions is treated the same as the zero value.\n//\n// ListPage is not guaranteed to include all recently-written blobs;\n// some services are only eventually consistent.\nfunc (b *Bucket) ListPage(ctx context.Context, pageToken []byte, pageSize int, opts *ListOptions) (retval []*ListObject, nextPageToken []byte, err error) {\n\tif opts == nil {\n\t\topts = &ListOptions{}\n\t}\n\tif pageSize <= 0 {\n\t\treturn nil, nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: pageSize must be > 0\")\n\t}\n\n\t// Nil pageToken means no more results.\n\tif len(pageToken) == 0 {\n\t\treturn nil, nil, io.EOF\n\t}\n\n\t// FirstPageToken fetches the first page. Drivers use nil.\n\t// The public API doesn't use nil for the first page because it would be too easy to\n\t// keep fetching forever (since the last page return nil for the next pageToken).\n\tif bytes.Equal(pageToken, FirstPageToken) {\n\t\tpageToken = nil\n\t}\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn nil, nil, errClosed\n\t}\n\n\tctx, span := b.tracer.Start(ctx, \"ListPage\")\n\tdefer func() { b.tracer.End(ctx, span, err) }()\n\n\tdopts := &driver.ListOptions{\n\t\tPrefix:     opts.Prefix,\n\t\tDelimiter:  opts.Delimiter,\n\t\tBeforeList: opts.BeforeList,\n\t\tPageToken:  pageToken,\n\t\tPageSize:   pageSize,\n\t}\n\tretval = make([]*ListObject, 0, pageSize)\n\tfor len(retval) < pageSize {\n\t\tp, err := b.b.ListPaged(ctx, dopts)\n\t\tif err != nil {\n\t\t\treturn nil, nil, wrapError(b.b, err, \"\")\n\t\t}\n\t\tfor _, dobj := range p.Objects {\n\t\t\tretval = append(retval, &ListObject{\n\t\t\t\tKey:     dobj.Key,\n\t\t\t\tModTime: dobj.ModTime,\n\t\t\t\tSize:    dobj.Size,\n\t\t\t\tMD5:     dobj.MD5,\n\t\t\t\tIsDir:   dobj.IsDir,\n\t\t\t\tasFunc:  dobj.AsFunc,\n\t\t\t})\n\t\t}\n\t\t// ListPaged may return fewer results than pageSize. If there are more results\n\t\t// available, signalled by non-empty p.NextPageToken, try to fetch the remainder\n\t\t// of the page.\n\t\t// It does not work to ask for more results than we need, because then we'd have\n\t\t// a NextPageToken on a non-page boundary.\n\t\tdopts.PageSize = pageSize - len(retval)\n\t\tdopts.PageToken = p.NextPageToken\n\t\tif len(dopts.PageToken) == 0 {\n\t\t\tdopts.PageToken = nil\n\t\t\tbreak\n\t\t}\n\t}\n\treturn retval, dopts.PageToken, nil\n}\n\n// IsAccessible returns true if the bucket is accessible, false otherwise.\n// It is a shortcut for calling ListPage and checking if it returns an error\n// with code gcerrors.NotFound.\nfunc (b *Bucket) IsAccessible(ctx context.Context) (bool, error) {\n\t_, _, err := b.ListPage(ctx, FirstPageToken, 1, nil)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif gcerrors.Code(err) == gcerrors.NotFound {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\n// Exists returns true if a blob exists at key, false if it does not exist, or\n// an error.\n// It is a shortcut for calling Attributes and checking if it returns an error\n// with code gcerrors.NotFound.\nfunc (b *Bucket) Exists(ctx context.Context, key string) (bool, error) {\n\t_, err := b.Attributes(ctx, key)\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\tif gcerrors.Code(err) == gcerrors.NotFound {\n\t\treturn false, nil\n\t}\n\treturn false, err\n}\n\n// Attributes returns attributes for the blob stored at key.\n//\n// If the blob does not exist, Attributes returns an error for which\n// gcerrors.Code will return gcerrors.NotFound.\nfunc (b *Bucket) Attributes(ctx context.Context, key string) (_ *Attributes, err error) {\n\tif !utf8.ValidString(key) {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: Attributes key must be a valid UTF-8 string: %q\", key)\n\t}\n\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn nil, errClosed\n\t}\n\tctx, span := b.tracer.Start(ctx, \"Attributes\")\n\tdefer func() { b.tracer.End(ctx, span, err) }()\n\n\ta, err := b.b.Attributes(ctx, key)\n\tif err != nil {\n\t\treturn nil, wrapError(b.b, err, key)\n\t}\n\tvar md map[string]string\n\tif len(a.Metadata) > 0 {\n\t\t// Services are inconsistent, but at least some treat keys\n\t\t// as case-insensitive. To make the behavior consistent, we\n\t\t// force-lowercase them when writing and reading.\n\t\tmd = make(map[string]string, len(a.Metadata))\n\t\tfor k, v := range a.Metadata {\n\t\t\tmd[strings.ToLower(k)] = v\n\t\t}\n\t}\n\treturn &Attributes{\n\t\tCacheControl:       a.CacheControl,\n\t\tContentDisposition: a.ContentDisposition,\n\t\tContentEncoding:    a.ContentEncoding,\n\t\tContentLanguage:    a.ContentLanguage,\n\t\tContentType:        a.ContentType,\n\t\tMetadata:           md,\n\t\tCreateTime:         a.CreateTime,\n\t\tModTime:            a.ModTime,\n\t\tSize:               a.Size,\n\t\tMD5:                a.MD5,\n\t\tETag:               a.ETag,\n\t\tasFunc:             a.AsFunc,\n\t}, nil\n}\n\n// NewReader is a shortcut for NewRangeReader with offset=0 and length=-1.\nfunc (b *Bucket) NewReader(ctx context.Context, key string, opts *ReaderOptions) (*Reader, error) {\n\treturn b.newRangeReader(ctx, key, 0, -1, opts)\n}\n\n// NewRangeReader returns a Reader to read content from the blob stored at key.\n// It reads at most length bytes starting at offset (>= 0).\n// If length is negative, it will read till the end of the blob.\n//\n// For the purposes of Seek, the returned Reader will start at offset and\n// end at the minimum of the actual end of the blob or (if length > 0) offset + length.\n//\n// Note that ctx is used for all reads performed during the lifetime of the reader.\n//\n// If the blob does not exist, NewRangeReader returns an error for which\n// gcerrors.Code will return gcerrors.NotFound. Exists is a lighter-weight way\n// to check for existence.\n//\n// A nil ReaderOptions is treated the same as the zero value.\n//\n// The caller must call Close on the returned Reader when done reading.\nfunc (b *Bucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *ReaderOptions) (_ *Reader, err error) {\n\treturn b.newRangeReader(ctx, key, offset, length, opts)\n}\n\nfunc (b *Bucket) newRangeReader(ctx context.Context, key string, offset, length int64, opts *ReaderOptions) (_ *Reader, err error) {\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn nil, errClosed\n\t}\n\tif offset < 0 {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: NewRangeReader offset must be non-negative (%d)\", offset)\n\t}\n\tif !utf8.ValidString(key) {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: NewRangeReader key must be a valid UTF-8 string: %q\", key)\n\t}\n\tif opts == nil {\n\t\topts = &ReaderOptions{}\n\t}\n\tdopts := &driver.ReaderOptions{\n\t\tBeforeRead: opts.BeforeRead,\n\t}\n\tctx, span := b.tracer.Start(ctx, \"NewRangeReader\")\n\tdefer func() {\n\t\t// If err == nil, we handed the end closure off to the returned *Reader; it\n\t\t// will be called when the Reader is Closed.\n\t\tif err != nil {\n\t\t\tb.tracer.End(ctx, span, err)\n\t\t}\n\t}()\n\tvar dr driver.Reader\n\tdr, err = b.b.NewRangeReader(ctx, key, offset, length, dopts)\n\tif err != nil {\n\t\treturn nil, wrapError(b.b, err, key)\n\t}\n\tend := func(err error) { b.tracer.End(ctx, span, err) }\n\tr := &Reader{\n\t\tb:                b.b,\n\t\tr:                dr,\n\t\tkey:              key,\n\t\tctx:              ctx,\n\t\tdopts:            dopts,\n\t\tbaseOffset:       offset,\n\t\tbaseLength:       length,\n\t\tsavedOffset:      -1,\n\t\tend:              end,\n\t\tbytesReadCounter: b.bytesReadCounter,\n\t}\n\t_, file, lineno, ok := runtime.Caller(2)\n\truntime.SetFinalizer(r, func(r *Reader) {\n\t\tif !r.closed {\n\t\t\tvar caller string\n\t\t\tif ok {\n\t\t\t\tcaller = fmt.Sprintf(\" (%s:%d)\", file, lineno)\n\t\t\t}\n\t\t\tlog.Printf(\"A blob.Reader reading from %q was never closed%s\", key, caller)\n\t\t}\n\t})\n\treturn r, nil\n}\n\n// WriteAll is a shortcut for creating a Writer via NewWriter and writing p.\n//\n// If opts.ContentMD5 is not set, WriteAll will compute the MD5 of p and use it\n// as the ContentMD5 option for the Writer it creates.\n//\n// Using Upload may be more efficient.\nfunc (b *Bucket) WriteAll(ctx context.Context, key string, p []byte, opts *WriterOptions) (err error) {\n\trealOpts := new(WriterOptions)\n\tif opts != nil {\n\t\t*realOpts = *opts\n\t}\n\tif len(realOpts.ContentMD5) == 0 {\n\t\tsum := md5.Sum(p)\n\t\trealOpts.ContentMD5 = sum[:]\n\t}\n\tw, err := b.NewWriter(ctx, key, realOpts)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.Write(p); err != nil {\n\t\t_ = w.Close()\n\t\treturn err\n\t}\n\treturn w.Close()\n}\n\n// Upload reads from an io.Reader r and writes into a blob.\n//\n// opts.ContentType is required.\nfunc (b *Bucket) Upload(ctx context.Context, key string, r io.Reader, opts *WriterOptions) error {\n\tif opts == nil || opts.ContentType == \"\" {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: Upload requires WriterOptions.ContentType\")\n\t}\n\tw, err := b.NewWriter(ctx, key, opts)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn w.uploadAndClose(r)\n}\n\n// NewWriter returns a Writer that writes to the blob stored at key.\n// A nil WriterOptions is treated the same as the zero value.\n//\n// If a blob with this key already exists, it will be replaced.\n// The blob being written is not guaranteed to be readable until Close\n// has been called; until then, any previous blob will still be readable.\n// Even after Close is called, newly written blobs are not guaranteed to be\n// returned from List; some services are only eventually consistent.\n//\n// The returned Writer will store ctx for later use in Write and/or Close.\n// To abort a write, cancel ctx; otherwise, it must remain open until\n// Close is called.\n//\n// The caller must call Close on the returned Writer, even if the write is\n// aborted.\nfunc (b *Bucket) NewWriter(ctx context.Context, key string, opts *WriterOptions) (_ *Writer, err error) {\n\tif !utf8.ValidString(key) {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: NewWriter key must be a valid UTF-8 string: %q\", key)\n\t}\n\tif opts == nil {\n\t\topts = &WriterOptions{}\n\t}\n\tdopts := &driver.WriterOptions{\n\t\tCacheControl:                opts.CacheControl,\n\t\tContentDisposition:          opts.ContentDisposition,\n\t\tContentEncoding:             opts.ContentEncoding,\n\t\tContentLanguage:             opts.ContentLanguage,\n\t\tContentMD5:                  opts.ContentMD5,\n\t\tBufferSize:                  opts.BufferSize,\n\t\tMaxConcurrency:              opts.MaxConcurrency,\n\t\tBeforeWrite:                 opts.BeforeWrite,\n\t\tDisableContentTypeDetection: opts.DisableContentTypeDetection,\n\t\tIfNotExist:                  opts.IfNotExist,\n\t}\n\tif len(opts.Metadata) > 0 {\n\t\t// Services are inconsistent, but at least some treat keys\n\t\t// as case-insensitive. To make the behavior consistent, we\n\t\t// force-lowercase them when writing and reading.\n\t\tmd := make(map[string]string, len(opts.Metadata))\n\t\tfor k, v := range opts.Metadata {\n\t\t\tif k == \"\" {\n\t\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: WriterOptions.Metadata keys may not be empty strings\")\n\t\t\t}\n\t\t\tif !utf8.ValidString(k) {\n\t\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: WriterOptions.Metadata keys must be valid UTF-8 strings: %q\", k)\n\t\t\t}\n\t\t\tif !utf8.ValidString(v) {\n\t\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: WriterOptions.Metadata values must be valid UTF-8 strings: %q\", v)\n\t\t\t}\n\t\t\tlowerK := strings.ToLower(k)\n\t\t\tif _, found := md[lowerK]; found {\n\t\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: WriterOptions.Metadata has a duplicate case-insensitive metadata key: %q\", lowerK)\n\t\t\t}\n\t\t\tmd[lowerK] = v\n\t\t}\n\t\tdopts.Metadata = md\n\t}\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn nil, errClosed\n\t}\n\tctx, cancel := context.WithCancel(ctx)\n\tctx, span := b.tracer.Start(ctx, \"NewWriter\")\n\tend := func(err error) { b.tracer.End(ctx, span, err) }\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tend(err)\n\t\t}\n\t}()\n\n\tw := &Writer{\n\t\tb:                   b.b,\n\t\tend:                 end,\n\t\tcancel:              cancel,\n\t\tkey:                 key,\n\t\tcontentMD5:          opts.ContentMD5,\n\t\tmd5hash:             md5.New(),\n\t\tbytesWrittenCounter: b.bytesWrittenCounter,\n\t}\n\tif opts.ContentType != \"\" || opts.DisableContentTypeDetection {\n\t\tvar ct string\n\t\tif opts.ContentType != \"\" {\n\t\t\tt, p, err := mime.ParseMediaType(opts.ContentType)\n\t\t\tif err != nil {\n\t\t\t\tcancel()\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tct = mime.FormatMediaType(t, p)\n\t\t}\n\t\tdw, err := b.b.NewTypedWriter(ctx, key, ct, dopts)\n\t\tif err != nil {\n\t\t\tcancel()\n\t\t\treturn nil, wrapError(b.b, err, key)\n\t\t}\n\t\tw.w = dw\n\t} else {\n\t\t// Save the fields needed to called NewTypedWriter later, once we've gotten\n\t\t// sniffLen bytes; see the comment on Writer.\n\t\tw.ctx = ctx\n\t\tw.opts = dopts\n\t\tw.buf = bytes.NewBuffer([]byte{})\n\t}\n\t_, file, lineno, ok := runtime.Caller(1)\n\truntime.SetFinalizer(w, func(w *Writer) {\n\t\tif !w.closed {\n\t\t\tvar caller string\n\t\t\tif ok {\n\t\t\t\tcaller = fmt.Sprintf(\" (%s:%d)\", file, lineno)\n\t\t\t}\n\t\t\tlog.Printf(\"A blob.Writer writing to %q was never closed%s\", key, caller)\n\t\t}\n\t})\n\treturn w, nil\n}\n\n// Copy the blob stored at srcKey to dstKey.\n// A nil CopyOptions is treated the same as the zero value.\n//\n// If the source blob does not exist, Copy returns an error for which\n// gcerrors.Code will return gcerrors.NotFound.\n//\n// If the destination blob already exists, it is overwritten.\nfunc (b *Bucket) Copy(ctx context.Context, dstKey, srcKey string, opts *CopyOptions) (err error) {\n\tif !utf8.ValidString(srcKey) {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: Copy srcKey must be a valid UTF-8 string: %q\", srcKey)\n\t}\n\tif !utf8.ValidString(dstKey) {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: Copy dstKey must be a valid UTF-8 string: %q\", dstKey)\n\t}\n\tif opts == nil {\n\t\topts = &CopyOptions{}\n\t}\n\tdopts := &driver.CopyOptions{\n\t\tBeforeCopy: opts.BeforeCopy,\n\t}\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn errClosed\n\t}\n\tctx, span := b.tracer.Start(ctx, \"Copy\")\n\tdefer func() { b.tracer.End(ctx, span, err) }()\n\treturn wrapError(b.b, b.b.Copy(ctx, dstKey, srcKey, dopts), fmt.Sprintf(\"%s -> %s\", srcKey, dstKey))\n}\n\n// Delete deletes the blob stored at key.\n//\n// If the blob does not exist, Delete returns an error for which\n// gcerrors.Code will return gcerrors.NotFound.\nfunc (b *Bucket) Delete(ctx context.Context, key string) (err error) {\n\tif !utf8.ValidString(key) {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: Delete key must be a valid UTF-8 string: %q\", key)\n\t}\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn errClosed\n\t}\n\tctx, span := b.tracer.Start(ctx, \"Delete\")\n\tdefer func() { b.tracer.End(ctx, span, err) }()\n\treturn wrapError(b.b, b.b.Delete(ctx, key), key)\n}\n\n// SignedURL returns a URL that can be used to GET (default), PUT or DELETE\n// the blob for the duration specified in opts.Expiry.\n//\n// A nil SignedURLOptions is treated the same as the zero value.\n//\n// It is valid to call SignedURL for a key that does not exist.\n//\n// If the driver does not support this functionality, SignedURL\n// will return an error for which gcerrors.Code will return gcerrors.Unimplemented.\nfunc (b *Bucket) SignedURL(ctx context.Context, key string, opts *SignedURLOptions) (string, error) {\n\tif !utf8.ValidString(key) {\n\t\treturn \"\", gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: SignedURL key must be a valid UTF-8 string: %q\", key)\n\t}\n\tdopts := new(driver.SignedURLOptions)\n\tif opts == nil {\n\t\topts = new(SignedURLOptions)\n\t}\n\tswitch {\n\tcase opts.Expiry < 0:\n\t\treturn \"\", gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: SignedURLOptions.Expiry must be >= 0 (%v)\", opts.Expiry)\n\tcase opts.Expiry == 0:\n\t\tdopts.Expiry = DefaultSignedURLExpiry\n\tdefault:\n\t\tdopts.Expiry = opts.Expiry\n\t}\n\tswitch opts.Method {\n\tcase \"\":\n\t\tdopts.Method = http.MethodGet\n\tcase http.MethodGet, http.MethodPut, http.MethodDelete:\n\t\tdopts.Method = opts.Method\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"blob: unsupported SignedURLOptions.Method %q\", opts.Method)\n\t}\n\tif opts.ContentType != \"\" && opts.Method != http.MethodPut {\n\t\treturn \"\", fmt.Errorf(\"blob: SignedURLOptions.ContentType must be empty for signing a %s URL\", opts.Method)\n\t}\n\tif opts.EnforceAbsentContentType && opts.Method != http.MethodPut {\n\t\treturn \"\", fmt.Errorf(\"blob: SignedURLOptions.EnforceAbsentContentType must be false for signing a %s URL\", opts.Method)\n\t}\n\tdopts.ContentType = opts.ContentType\n\tdopts.EnforceAbsentContentType = opts.EnforceAbsentContentType\n\tdopts.BeforeSign = opts.BeforeSign\n\tb.mu.RLock()\n\tdefer b.mu.RUnlock()\n\tif b.closed {\n\t\treturn \"\", errClosed\n\t}\n\tsURL, err := b.b.SignedURL(ctx, key, dopts)\n\treturn sURL, wrapError(b.b, err, key)\n}\n\n// Close releases any resources used for the bucket.\nfunc (b *Bucket) Close() error {\n\tb.mu.Lock()\n\tprev := b.closed\n\tb.closed = true\n\tb.mu.Unlock()\n\tif prev {\n\t\treturn errClosed\n\t}\n\treturn wrapError(b.b, b.b.Close(), \"\")\n}\n\n// DefaultSignedURLExpiry is the default duration for SignedURLOptions.Expiry.\nconst DefaultSignedURLExpiry = 1 * time.Hour\n\n// SignedURLOptions sets options for SignedURL.\ntype SignedURLOptions struct {\n\t// Expiry sets how long the returned URL is valid for.\n\t// Defaults to DefaultSignedURLExpiry.\n\tExpiry time.Duration\n\n\t// Method is the HTTP method that can be used on the URL; one of \"GET\", \"PUT\",\n\t// or \"DELETE\". Defaults to \"GET\".\n\tMethod string\n\n\t// ContentType specifies the Content-Type HTTP header the user agent is\n\t// permitted to use in the PUT request. It must match exactly. See\n\t// EnforceAbsentContentType for behavior when ContentType is the empty string.\n\t// If a bucket does not implement this verification, then it returns an\n\t// Unimplemented error.\n\t//\n\t// Must be empty for non-PUT requests.\n\tContentType string\n\n\t// If EnforceAbsentContentType is true and ContentType is the empty string,\n\t// then PUTing to the signed URL will fail if the Content-Type header is\n\t// present. Not all buckets support this: ones that do not will return an\n\t// Unimplemented error.\n\t//\n\t// If EnforceAbsentContentType is false and ContentType is the empty string,\n\t// then PUTing without a Content-Type header will succeed, but it is\n\t// implementation-specific whether providing a Content-Type header will fail.\n\t//\n\t// Must be false for non-PUT requests.\n\tEnforceAbsentContentType bool\n\n\t// BeforeSign is a callback that will be called before each call to the\n\t// the underlying service's sign functionality.\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeSign func(asFunc func(any) bool) error\n}\n\n// ReaderOptions sets options for NewReader and NewRangeReader.\ntype ReaderOptions struct {\n\t// BeforeRead is a callback that will be called before\n\t// any data is read (unless NewReader returns an error before then, in which\n\t// case it may not be called at all).\n\t//\n\t// Calling Seek may reset the underlying reader, and result in BeforeRead\n\t// getting called again with a different underlying provider-specific reader..\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeRead func(asFunc func(any) bool) error\n}\n\n// WriterOptions sets options for NewWriter.\ntype WriterOptions struct {\n\t// BufferSize changes the default size in bytes of the chunks that\n\t// Writer will upload in a single request; larger blobs will be split into\n\t// multiple requests.\n\t//\n\t// This option may be ignored by some drivers.\n\t//\n\t// If 0, the driver will choose a reasonable default.\n\t//\n\t// If the Writer is used to do many small writes concurrently, using a\n\t// smaller BufferSize may reduce memory usage.\n\tBufferSize int\n\n\t// MaxConcurrency changes the default concurrency for parts of an upload.\n\t//\n\t// This option may be ignored by some drivers.\n\t//\n\t// If 0, the driver will choose a reasonable default.\n\tMaxConcurrency int\n\n\t// CacheControl specifies caching attributes that services may use\n\t// when serving the blob.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control\n\tCacheControl string\n\n\t// ContentDisposition specifies whether the blob content is expected to be\n\t// displayed inline or as an attachment.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition\n\tContentDisposition string\n\n\t// ContentEncoding specifies the encoding used for the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n\tContentEncoding string\n\n\t// ContentLanguage specifies the language used in the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language\n\tContentLanguage string\n\n\t// ContentType specifies the MIME type of the blob being written. If not set,\n\t// it will be inferred from the content using the algorithm described at\n\t// http://mimesniff.spec.whatwg.org/.\n\t// Set DisableContentTypeDetection to true to disable the above and force\n\t// the ContentType to stay empty.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type\n\tContentType string\n\n\t// When true, if ContentType is the empty string, it will stay the empty\n\t// string rather than being inferred from the content.\n\t// Note that while the blob will be written with an empty string ContentType,\n\t// most providers will fill one in during reads, so don't expect an empty\n\t// ContentType if you read the blob back.\n\tDisableContentTypeDetection bool\n\n\t// ContentMD5 is used as a message integrity check.\n\t// If len(ContentMD5) > 0, the MD5 hash of the bytes written must match\n\t// ContentMD5, or Close will return an error without completing the write.\n\t// https://tools.ietf.org/html/rfc1864\n\tContentMD5 []byte\n\n\t// Metadata holds key/value strings to be associated with the blob, or nil.\n\t// Keys may not be empty, and are lowercased before being written.\n\t// Duplicate case-insensitive keys (e.g., \"foo\" and \"FOO\") will result in\n\t// an error.\n\tMetadata map[string]string\n\n\t// BeforeWrite is a callback that will be called exactly once, before\n\t// any data is written (unless NewWriter returns an error, in which case\n\t// it will not be called at all). Note that this is not necessarily during\n\t// or after the first Write call, as drivers may buffer bytes before\n\t// sending an upload request.\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeWrite func(asFunc func(any) bool) error\n\n\t// IfNotExist is used for conditional writes. When set to 'true',\n\t// if a blob exists for the same key in the bucket, the write\n\t// operation won't succeed and the current blob for the key will\n\t// be left untouched. An error for which gcerrors.Code will return\n\t// gcerrors.PreconditionFailed will be returned by Write or Close.\n\tIfNotExist bool\n}\n\n// CopyOptions sets options for Copy.\ntype CopyOptions struct {\n\t// BeforeCopy is a callback that will be called before the copy is\n\t// initiated.\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeCopy func(asFunc func(any) bool) error\n}\n\n// BucketURLOpener represents types that can open buckets based on a URL.\n// The opener must not modify the URL argument. OpenBucketURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype BucketURLOpener interface {\n\tOpenBucketURL(ctx context.Context, u *url.URL) (*Bucket, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n// See https://gocloud.dev/concepts/urls/ for more information.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n\tschemes openurl.SchemeMap\n}\n\n// BucketSchemes returns a sorted slice of the registered Bucket schemes.\nfunc (mux *URLMux) BucketSchemes() []string { return mux.schemes.Schemes() }\n\n// ValidBucketScheme returns true iff scheme has been registered for Buckets.\nfunc (mux *URLMux) ValidBucketScheme(scheme string) bool { return mux.schemes.ValidScheme(scheme) }\n\n// RegisterBucket registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterBucket panics.\nfunc (mux *URLMux) RegisterBucket(scheme string, opener BucketURLOpener) {\n\tmux.schemes.Register(\"blob\", \"Bucket\", scheme, opener)\n}\n\n// OpenBucket calls OpenBucketURL with the URL parsed from urlstr.\n// OpenBucket is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenBucket(ctx context.Context, urlstr string) (*Bucket, error) {\n\topener, u, err := mux.schemes.FromString(\"Bucket\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn applyPrefixParam(ctx, opener.(BucketURLOpener), u)\n}\n\n// OpenBucketURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenBucketURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenBucketURL(ctx context.Context, u *url.URL) (*Bucket, error) {\n\topener, err := mux.schemes.FromURL(\"Bucket\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn applyPrefixParam(ctx, opener.(BucketURLOpener), u)\n}\n\nfunc applyPrefixParam(ctx context.Context, opener BucketURLOpener, u *url.URL) (*Bucket, error) {\n\tprefix := u.Query().Get(\"prefix\")\n\tsingleKey := u.Query().Get(\"key\")\n\tif prefix != \"\" || singleKey != \"\" {\n\t\t// Make a copy of u with the \"prefix\" and \"key\" parameters removed.\n\t\turlCopy := *u\n\t\tq := urlCopy.Query()\n\t\tq.Del(\"prefix\")\n\t\tq.Del(\"key\")\n\t\turlCopy.RawQuery = q.Encode()\n\t\tu = &urlCopy\n\t}\n\tbucket, err := opener.OpenBucketURL(ctx, u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif prefix != \"\" {\n\t\tbucket = PrefixedBucket(bucket, prefix)\n\t}\n\tif singleKey != \"\" {\n\t\tbucket = SingleKeyBucket(bucket, singleKey)\n\t}\n\treturn bucket, nil\n}\n\nvar defaultURLMux = new(URLMux)\n\n// DefaultURLMux returns the URLMux used by OpenBucket.\n//\n// Driver packages can use this to register their BucketURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// OpenBucket opens the bucket identified by the URL given.\n//\n// See the URLOpener documentation in driver subpackages for\n// details on supported URL formats, and https://gocloud.dev/concepts/urls/\n// for more information.\n//\n// In addition to driver-specific query parameters, OpenBucket supports\n// the following query parameters:\n//\n//   - prefix: wraps the resulting Bucket using PrefixedBucket with the\n//     given prefix.\n//   - key: wraps the resulting Bucket using SingleKeyBucket with the\n//     given key.\nfunc OpenBucket(ctx context.Context, urlstr string) (*Bucket, error) {\n\treturn defaultURLMux.OpenBucket(ctx, urlstr)\n}\n\nfunc wrapError(b driver.Bucket, err error, key string) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif gcerr.DoNotWrap(err) {\n\t\treturn err\n\t}\n\tmsg := \"blob\"\n\tif key != \"\" {\n\t\tmsg += fmt.Sprintf(\" (key %q)\", key)\n\t}\n\tcode := gcerrors.Code(err)\n\tif code == gcerrors.Unknown {\n\t\tcode = b.ErrorCode(err)\n\t}\n\treturn gcerr.New(code, err, 2, msg)\n}\n\nvar errClosed = gcerr.Newf(gcerr.FailedPrecondition, nil, \"blob: Bucket has been closed\")\n\n// PrefixedBucket returns a *Bucket based on b with all keys modified to have\n// prefix, which will usually end with a \"/\" to target a subdirectory in the\n// bucket.\n//\n// bucket will be closed and no longer usable after this function returns.\nfunc PrefixedBucket(bucket *Bucket, prefix string) *Bucket {\n\tbucket.mu.Lock()\n\tdefer bucket.mu.Unlock()\n\tbucket.closed = true\n\treturn NewBucket(driver.NewPrefixedBucket(bucket.b, prefix))\n}\n\n// SingleKeyBucket returns a *Bucket based on b that always references singleKey.\n// List methods will not work.\n// singleKey acts as srcKey for Copy.\n//\n// bucket will be closed and no longer usable after this function returns.\nfunc SingleKeyBucket(bucket *Bucket, singleKey string) *Bucket {\n\tbucket.mu.Lock()\n\tdefer bucket.mu.Unlock()\n\tbucket.closed = true\n\treturn NewBucket(driver.NewSingleKeyBucket(bucket.b, singleKey))\n}\n"
  },
  {
    "path": "blob/blob_fs.go",
    "content": "// Copyright 2023 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/fs\"\n\t\"path/filepath\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// Ensure that Bucket implements various io/fs interfaces.\nvar (\n\t_ = fs.FS(&Bucket{})\n\t_ = fs.SubFS(&Bucket{})\n)\n\n// iofsFileInfo describes a single file in an io/fs.FS.\n// It implements fs.FileInfo and fs.DirEntry.\ntype iofsFileInfo struct {\n\tlo   *ListObject\n\tname string\n}\n\nfunc (f *iofsFileInfo) Name() string               { return f.name }\nfunc (f *iofsFileInfo) Size() int64                { return f.lo.Size }\nfunc (f *iofsFileInfo) Mode() fs.FileMode          { return fs.ModeIrregular }\nfunc (f *iofsFileInfo) ModTime() time.Time         { return f.lo.ModTime }\nfunc (f *iofsFileInfo) IsDir() bool                { return false }\nfunc (f *iofsFileInfo) Sys() any                   { return f.lo }\nfunc (f *iofsFileInfo) Info() (fs.FileInfo, error) { return f, nil }\nfunc (f *iofsFileInfo) Type() fs.FileMode          { return fs.ModeIrregular }\n\n// iofsOpenFile describes a single open file in an io/fs.FS.\n// It implements fs.FileInfo and fs.File.\ntype iofsOpenFile struct {\n\t*Reader\n\tname string\n}\n\nfunc (f *iofsOpenFile) Name() string               { return f.name }\nfunc (f *iofsOpenFile) Mode() fs.FileMode          { return fs.ModeIrregular }\nfunc (f *iofsOpenFile) IsDir() bool                { return false }\nfunc (f *iofsOpenFile) Sys() any                   { return f.r }\nfunc (f *iofsOpenFile) Stat() (fs.FileInfo, error) { return f, nil }\n\n// iofsDir describes a single directory in an io/fs.FS.\n// It implements fs.FileInfo, fs.DirEntry, and fs.File.\ntype iofsDir struct {\n\tb    *Bucket\n\tkey  string\n\tname string\n\t// If opened is true, we've read entries via openOnce().\n\topened  bool\n\tentries []fs.DirEntry\n\toffset  int\n}\n\nfunc newDir(b *Bucket, key, name string) *iofsDir {\n\treturn &iofsDir{b: b, key: key, name: name}\n}\n\nfunc (d *iofsDir) Name() string               { return d.name }\nfunc (d *iofsDir) Size() int64                { return 0 }\nfunc (d *iofsDir) Mode() fs.FileMode          { return fs.ModeDir }\nfunc (d *iofsDir) Type() fs.FileMode          { return fs.ModeDir }\nfunc (d *iofsDir) ModTime() time.Time         { return time.Time{} }\nfunc (d *iofsDir) IsDir() bool                { return true }\nfunc (d *iofsDir) Sys() any                   { return d }\nfunc (d *iofsDir) Info() (fs.FileInfo, error) { return d, nil }\nfunc (d *iofsDir) Stat() (fs.FileInfo, error) { return d, nil }\nfunc (d *iofsDir) Read([]byte) (int, error) {\n\treturn 0, &fs.PathError{Op: \"read\", Path: d.key, Err: fs.ErrInvalid}\n}\nfunc (d *iofsDir) Close() error { return nil }\nfunc (d *iofsDir) ReadDir(count int) ([]fs.DirEntry, error) {\n\tif err := d.openOnce(); err != nil {\n\t\treturn nil, err\n\t}\n\tn := len(d.entries) - d.offset\n\tif n == 0 && count > 0 {\n\t\treturn nil, io.EOF\n\t}\n\tif count > 0 && n > count {\n\t\tn = count\n\t}\n\tlist := make([]fs.DirEntry, n)\n\tfor i := range list {\n\t\tlist[i] = d.entries[d.offset+i]\n\t}\n\td.offset += n\n\treturn list, nil\n}\n\nfunc (d *iofsDir) openOnce() error {\n\tif d.opened {\n\t\treturn nil\n\t}\n\td.opened = true\n\n\t// blob expects directories to end in the delimiter, except at the top level.\n\tprefix := d.key\n\tif prefix != \"\" {\n\t\tprefix += \"/\"\n\t}\n\tlistOpts := ListOptions{\n\t\tPrefix:    prefix,\n\t\tDelimiter: \"/\",\n\t}\n\tctx, _ := d.b.ioFSCallback()\n\n\t// Fetch all the directory entries.\n\t// Conceivably we could only fetch a few here, and fetch the rest lazily\n\t// on demand, but that would add significant complexity.\n\titer := d.b.List(&listOpts)\n\tfor {\n\t\titem, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tname := filepath.Base(item.Key)\n\t\tif item.IsDir {\n\t\t\td.entries = append(d.entries, newDir(d.b, item.Key, name))\n\t\t} else {\n\t\t\td.entries = append(d.entries, &iofsFileInfo{item, name})\n\t\t}\n\t}\n\t// There is no such thing as an empty directory in Bucket, so if\n\t// we didn't find anything, it doesn't exist.\n\tif len(d.entries) == 0 {\n\t\treturn fs.ErrNotExist\n\t}\n\treturn nil\n}\n\n// SetIOFSCallback sets a callback that is used during Open and calls on the objects\n// returned from Open.\n//\n// fn should return a context.Context and *ReaderOptions that can be used in\n// calls to List and NewReader on b. It may be called more than once.\n//\n// If SetIOFSCallback is never called, io.FS functions will use context.Background\n// and a default ReaderOptions.\nfunc (b *Bucket) SetIOFSCallback(fn func() (context.Context, *ReaderOptions)) {\n\tb.ioFSCallback = fn\n}\n\n// Open implements fs.FS.Open (https://pkg.go.dev/io/fs#FS).\nfunc (b *Bucket) Open(path string) (fs.File, error) {\n\tif !fs.ValidPath(path) {\n\t\treturn nil, &fs.PathError{Op: \"open\", Path: path, Err: fs.ErrInvalid}\n\t}\n\n\t// Check if it's a file. If not, assume it's a directory until proven otherwise.\n\tctx, readerOpts := b.ioFSCallback()\n\tvar isDir bool\n\tvar key, name string // name is the last part of the path\n\tif path == \".\" {\n\t\t// Root is always a directory, but blob doesn't want the \".\" in the key.\n\t\tisDir = true\n\t\tkey, name = \"\", \".\"\n\t} else {\n\t\texists, _ := b.Exists(ctx, path)\n\t\tisDir = !exists\n\t\tkey, name = path, filepath.Base(path)\n\t}\n\n\t// If it's a directory, list the directory contents. We can't do this lazily\n\t// because we need to error out here if it doesn't exist.\n\tif isDir {\n\t\tdir := newDir(b, key, name)\n\t\terr := dir.openOnce()\n\t\tif err != nil {\n\t\t\tif err == fs.ErrNotExist && path == \".\" {\n\t\t\t\t// The root directory must exist.\n\t\t\t\treturn dir, nil\n\t\t\t}\n\t\t\treturn nil, &fs.PathError{Op: \"open\", Path: path, Err: err}\n\t\t}\n\t\treturn dir, nil\n\t}\n\n\t// It's a file; open it and return a wrapper.\n\tr, err := b.NewReader(ctx, path, readerOpts)\n\tif err != nil {\n\t\tcode := gcerrors.Code(err)\n\t\tswitch code {\n\t\tcase gcerrors.NotFound:\n\t\t\terr = fmt.Errorf(\"%w: %w\", err, fs.ErrNotExist)\n\t\tcase gcerrors.PermissionDenied:\n\t\t\terr = fmt.Errorf(\"%w: %w\", err, fs.ErrPermission)\n\t\t}\n\t\treturn nil, &fs.PathError{Op: \"open\", Path: path, Err: err}\n\t}\n\treturn &iofsOpenFile{r, filepath.Base(path)}, nil\n}\n\n// Sub implements fs.SubFS.Sub.\n//\n// SetIOFSCallback must be called prior to calling this function.\nfunc (b *Bucket) Sub(dir string) (fs.FS, error) {\n\tif b.ioFSCallback == nil {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"blob: Sub -- SetIOFSCallback must be called before Sub\")\n\t}\n\tif dir == \".\" {\n\t\treturn b, nil\n\t}\n\t// blob expects directories to end in the delimiter, except at the top level.\n\tpb := PrefixedBucket(b, dir+\"/\")\n\tpb.SetIOFSCallback(b.ioFSCallback)\n\treturn pb, nil\n}\n"
  },
  {
    "path": "blob/blob_fs_test.go",
    "content": "// Copyright 2023 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob_test\n\nimport (\n\t\"context\"\n\t\"io/fs\"\n\t\"sort\"\n\t\"testing\"\n\t\"testing/fstest\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/memblob\"\n)\n\nvar fsFiles = []string{\n\t\"a/very/deeply/nested/sub/dir/with/a/file.txt\",\n\t\"baz.txt\",\n\t\"bazfoo.txt\",\n\t\"dir/foo.txt\",\n\t\"dir/subdir/foo.txt\",\n\t\"foo.txt\",\n\t\"foobar.txt\",\n}\n\nfunc initBucket(t *testing.T, files []string) *blob.Bucket {\n\tt.Helper()\n\n\tctx := context.Background()\n\n\tb := memblob.OpenBucket(nil)\n\tfor _, f := range files {\n\t\tif err := b.WriteAll(ctx, f, []byte(\"data\"), nil); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\treturn b\n}\n\n// TestIOFS runs the test/fstest test suite for fs.FS.\nfunc TestIOFS(t *testing.T) {\n\ttests := []struct {\n\t\tDescription string\n\t\tFiles       []string\n\t}{\n\t\t{\n\t\t\tDescription: \"empty bucket\",\n\t\t},\n\t\t{\n\t\t\tDescription: \"non-empty bucket\",\n\t\t\tFiles:       fsFiles,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Description, func(t *testing.T) {\n\t\t\tb := initBucket(t, test.Files)\n\t\t\tdefer b.Close()\n\t\t\tif err := fstest.TestFS(b, test.Files...); err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestGlob does some basic verification that fs.Glob works as expected\n// when given a blob.Bucket.\nfunc TestGlob(t *testing.T) {\n\tb := initBucket(t, fsFiles)\n\tdefer b.Close()\n\n\ttests := []struct {\n\t\tPattern string\n\t\tWant    []string\n\t}{\n\t\t{\n\t\t\tPattern: \"*\",\n\t\t\tWant:    []string{\"a\", \"baz.txt\", \"bazfoo.txt\", \"dir\", \"foo.txt\", \"foobar.txt\"},\n\t\t},\n\t\t{\n\t\t\tPattern: \"foo*\",\n\t\t\tWant:    []string{\"foo.txt\", \"foobar.txt\"},\n\t\t},\n\t\t{\n\t\t\tPattern: \"*foo*\",\n\t\t\tWant:    []string{\"bazfoo.txt\", \"foo.txt\", \"foobar.txt\"},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.Pattern, func(t *testing.T) {\n\t\t\tif got, err := fs.Glob(b, test.Pattern); err != nil {\n\t\t\t\tt.Fatalf(\"Failed to glob: %v\", err)\n\t\t\t} else if diff := cmp.Diff(got, test.Want); diff != \"\" {\n\t\t\t\tt.Error(diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestWalkDir does some basic verification that fs.WalkDir works as expected\n// when given a blob.Bucket.\nfunc TestWalkDir(t *testing.T) {\n\tb := initBucket(t, fsFiles)\n\tdefer b.Close()\n\n\tvar got []string\n\tfn := func(path string, _ fs.DirEntry, err error) error {\n\t\tif err != nil {\n\t\t\tt.Errorf(\"WalkFunc with path %s got error: %v\", path, err)\n\t\t\treturn err\n\t\t}\n\t\tgot = append(got, path)\n\t\treturn nil\n\t}\n\tif err := fs.WalkDir(b, \".\", fn); err != nil {\n\t\tt.Fatalf(\"WalkDir got an unexpected error: %v\", err)\n\t}\n\t// We want all of the files, plus the directories.\n\twant := append(fsFiles,\n\t\t\".\",\n\t\t\"a\",\n\t\t\"a/very\",\n\t\t\"a/very/deeply\",\n\t\t\"a/very/deeply/nested\",\n\t\t\"a/very/deeply/nested/sub\",\n\t\t\"a/very/deeply/nested/sub/dir\",\n\t\t\"a/very/deeply/nested/sub/dir/with\",\n\t\t\"a/very/deeply/nested/sub/dir/with/a\",\n\t\t\"dir\",\n\t\t\"dir/subdir\",\n\t)\n\tsort.Strings(want)\n\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n"
  },
  {
    "path": "blob/blob_iter_test.go",
    "content": "package blob_test\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob/memblob\"\n)\n\n// Verify ListIterator.All.\nfunc TestListIterator_All(t *testing.T) {\n\tctx := context.Background()\n\tb := memblob.OpenBucket(nil)\n\tdefer b.Close()\n\n\t// Initialize the bucket with some keys.\n\twant := map[string]string{}\n\tfor _, key := range []string{\"a\", \"b\", \"c\"} {\n\t\tcontents := fmt.Sprintf(\"%s-contents\", key)\n\t\tif err := b.WriteAll(ctx, key, []byte(contents), nil); err != nil {\n\t\t\tt.Fatalf(\"failed to initialize key %q: %v\", key, err)\n\t\t}\n\t\twant[key] = contents\n\t}\n\n\t// Iterate over the bucket using iter.All.\n\tgot := map[string]string{}\n\tli := b.List(nil)\n\titer, errFn := li.All(ctx)\n\tfor obj, download := range iter {\n\t\tvar buf bytes.Buffer\n\t\tif dErr := download(&buf, nil); dErr != nil {\n\t\t\tt.Errorf(\"failed to download %q: %v\", obj.Key, dErr)\n\t\t}\n\t\tgot[obj.Key] = string(buf.Bytes())\n\t}\n\tif err := errFn(); err != nil {\n\t\tt.Fatalf(\"iteration failed: %v\", err)\n\t}\n\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\tt.Errorf(\"got %v, want %v, diff %s\", got, want, diff)\n\t}\n}\n"
  },
  {
    "path": "blob/blob_reader_test.go",
    "content": "// Copyright 2022 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob_test\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"io\"\n\t\"testing\"\n\t\"testing/iotest\"\n\n\t\"gocloud.dev/blob/memblob\"\n)\n\n// TestReader verifies that blob.Reader implements io package interfaces correctly.\nfunc TestReader(t *testing.T) {\n\tconst myKey = \"testkey\"\n\n\tbucket := memblob.OpenBucket(nil)\n\tdefer bucket.Close()\n\n\t// Get some random data, of a large enough size to require multiple\n\t// reads/writes given our buffer size of 1024.\n\tdata, err := randomData(1024*10 + 10)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Write the data to a key.\n\tctx := context.Background()\n\tbucket.WriteAll(ctx, myKey, data, nil)\n\n\t// Create a blob.Reader.\n\tr1, err := bucket.NewReader(ctx, myKey, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tr1.Close()\n\tif err := iotest.TestReader(r1, data); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Create another blob.Reader to exercise the ReadFrom code path\n\tr2, err := bucket.NewReader(ctx, myKey, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer r2.Close()\n\n\tvar buffer bytes.Buffer\n\tn, err := io.Copy(&buffer, r2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t} else if n != int64(len(data)) {\n\t\tt.Fatal(\"wrote fewer bytes than expected\")\n\t} else if !bytes.Equal(buffer.Bytes(), data) {\n\t\tt.Fatal(\"wrote invalid bytes\")\n\t}\n}\n"
  },
  {
    "path": "blob/blob_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\nvar (\n\terrFake     = errors.New(\"fake\")\n\terrNotFound = errors.New(\"fake not found\")\n)\n\nfunc TestExists(t *testing.T) {\n\ttests := []struct {\n\t\tDescription string\n\t\tErr         error\n\t\tWant        bool\n\t\tWantErr     bool\n\t}{\n\t\t{\n\t\t\tDescription: \"no error -> exists\",\n\t\t\tErr:         nil,\n\t\t\tWant:        true,\n\t\t\tWantErr:     false,\n\t\t},\n\t\t{\n\t\t\tDescription: \"notfound error -> !exists\",\n\t\t\tErr:         errNotFound,\n\t\t\tWant:        false,\n\t\t\tWantErr:     false,\n\t\t},\n\t\t{\n\t\t\tDescription: \"other error -> error\",\n\t\t\tErr:         errFake,\n\t\t\tWant:        false,\n\t\t\tWantErr:     true,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.Description, func(t *testing.T) {\n\t\t\tdrv := &fakeAttributes{attributesErr: test.Err}\n\t\t\tb := NewBucket(drv)\n\t\t\tdefer b.Close()\n\t\t\tgot, gotErr := b.Exists(context.Background(), \"key\")\n\t\t\tif got != test.Want {\n\t\t\t\tt.Errorf(\"got %v want %v\", got, test.Want)\n\t\t\t}\n\t\t\tif (gotErr != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"got err %v want %v\", gotErr, test.WantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// fakeAttributes implements driver.Bucket. Only Attributes is implemented,\n// returning a zero Attributes struct and attributesErr.\ntype fakeAttributes struct {\n\tdriver.Bucket\n\tattributesErr error\n}\n\nfunc (b *fakeAttributes) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\tif b.attributesErr != nil {\n\t\treturn nil, b.attributesErr\n\t}\n\treturn &driver.Attributes{}, nil\n}\n\nfunc (b *fakeAttributes) ErrorCode(err error) gcerrors.ErrorCode {\n\tif err == errNotFound {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n\nfunc (b *fakeAttributes) Close() error { return nil }\n\n// Verify that ListIterator works even if driver.ListPaged returns empty pages.\nfunc TestListIterator(t *testing.T) {\n\tctx := context.Background()\n\twant := []string{\"a\", \"b\", \"c\"}\n\tdb := &fakeLister{\n\t\tpages:         [][]string{{\"a\"}, {}, {}, {\"b\", \"c\"}, {}, {}},\n\t\twantPageSizes: []int{0, 0, 0, 0, 0, 0},\n\t}\n\tb := NewBucket(db)\n\tdefer b.Close()\n\titer := b.List(nil)\n\tvar got []string\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot = append(got, obj.Key)\n\t}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t}\n}\n\n// Verify that ListPage works even if driver.ListPaged returns empty pages.\nfunc TestListPage(t *testing.T) {\n\tctx := context.Background()\n\twant := [][]string{{\"a\", \"b\"}, {\"c\", \"d\"}, {\"e\"}}\n\tdb := &fakeLister{\n\t\tpages:         [][]string{{}, {\"a\", \"b\"}, {}, {}, {\"c\"}, {}, {\"d\"}, {}, {}, {\"e\"}},\n\t\twantPageSizes: []int{2, 2, 2, 2, 2, 1, 1, 2, 2, 2},\n\t}\n\tb := NewBucket(db)\n\tdefer b.Close()\n\n\tnextToken := FirstPageToken\n\tgot := [][]string{}\n\tfor {\n\t\tpage, token, err := b.ListPage(ctx, nextToken, 2, nil)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgotPage := make([]string, len(page))\n\t\tfor i, o := range page {\n\t\t\tgotPage[i] = o.Key\n\t\t}\n\t\tgot = append(got, gotPage)\n\t\tnextToken = token\n\t}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t}\n}\n\n// fakeLister implements driver.Bucket. Only ListPaged is implemented,\n// returning static data from pages.\ntype fakeLister struct {\n\tdriver.Bucket\n\tpages         [][]string\n\twantPageSizes []int\n}\n\nfunc (b *fakeLister) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\tif len(b.pages) != len(b.wantPageSizes) {\n\t\treturn nil, fmt.Errorf(\"invalid fakeLister setup\")\n\t}\n\tif len(b.pages) == 0 {\n\t\treturn &driver.ListPage{}, nil\n\t}\n\tpage := b.pages[0]\n\twantPageSize := b.wantPageSizes[0]\n\tb.pages = b.pages[1:]\n\tb.wantPageSizes = b.wantPageSizes[1:]\n\tif opts.PageSize != wantPageSize {\n\t\treturn nil, fmt.Errorf(\"got page size %d, want %d\", opts.PageSize, wantPageSize)\n\t}\n\tvar objs []*driver.ListObject\n\tfor _, key := range page {\n\t\tobjs = append(objs, &driver.ListObject{Key: key})\n\t}\n\treturn &driver.ListPage{Objects: objs, NextPageToken: []byte{1}}, nil\n}\n\nfunc (*fakeLister) Close() error                           { return nil }\nfunc (*fakeLister) ErrorCode(err error) gcerrors.ErrorCode { return gcerrors.Unknown }\n\ntype stubReader struct {\n\tdriver.Reader\n\tdownloaded bool\n}\n\nfunc (r *stubReader) Download(w io.Writer) error {\n\tr.downloaded = true\n\treturn nil\n}\n\nfunc (*stubReader) Close() error { return nil }\n\ntype stubWriter struct {\n\tdriver.Writer\n\tuploaded bool\n}\n\nfunc (w *stubWriter) Upload(r io.Reader) error {\n\tw.uploaded = true\n\treturn nil\n}\n\nfunc (*stubWriter) Close() error { return nil }\n\n// loaderBucket implements driver.Bucket's NewTypedWriter and NewRangedReader methods,\n// returning stubReader and stubWriter. It is used to verify that the special driver.Uploader\n// and driver.Downloader overrides work when called.\ntype loaderBucket struct {\n\tdriver.Bucket\n\tw stubWriter\n\tr stubReader\n}\n\nfunc (b *loaderBucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\treturn &b.w, nil\n}\n\nfunc (b *loaderBucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\treturn &b.r, nil\n}\n\nfunc (*loaderBucket) Close() error { return nil }\n\nfunc TestUploader(t *testing.T) {\n\tctx := context.Background()\n\tlb := &loaderBucket{}\n\tb := NewBucket(lb)\n\tdefer b.Close()\n\terr := b.Upload(ctx, \"key\", nil, &WriterOptions{ContentType: \"text/html\"})\n\tif err != nil {\n\t\tt.Fatalf(\"Upload failed: %v\", err)\n\t}\n\tif !lb.w.uploaded {\n\t\tt.Error(\"Uploader wasn't called\")\n\t}\n}\n\nfunc TestDownloader(t *testing.T) {\n\tctx := context.Background()\n\tlb := &loaderBucket{}\n\tb := NewBucket(lb)\n\tdefer b.Close()\n\terr := b.Download(ctx, \"key\", nil, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"Download failed: %v\", err)\n\t}\n\tif !lb.r.downloaded {\n\t\tt.Error(\"Downloader wasn't called\")\n\t}\n}\n\nfunc TestSeekAfterReadFailure(t *testing.T) {\n\tconst filename = \"f.txt\"\n\n\tctx := context.Background()\n\n\tbucket := NewBucket(&oneTimeReadBucket{first: true})\n\tdefer bucket.Close()\n\n\treader, err := bucket.NewRangeReader(ctx, filename, 0, 100, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"failed NewRangeReader: %v\", err)\n\t}\n\tdefer reader.Close()\n\n\tb := make([]byte, 10)\n\n\t_, err = reader.Read(b)\n\tif err != nil {\n\t\tt.Fatalf(\"failed Read#1: %v\", err)\n\t}\n\n\t_, err = reader.Seek(0, io.SeekStart)\n\tif err != nil {\n\t\tt.Fatalf(\"failed Seek#1: %v\", err)\n\t}\n\n\t// This Read will force a recreation of the reader via NewRangeReader,\n\t// which will fail.\n\t_, err = reader.Read(b)\n\tif err == nil {\n\t\tt.Fatalf(\"unexpectedly succeeded Read#2: %v\", err)\n\t}\n\n\t_, err = reader.Seek(0, io.SeekStart)\n\tif err != nil {\n\t\tt.Fatalf(\"failed Seek#2: %v\", err)\n\t}\n}\n\n// oneTimeReadBucket implements driver.Bucket for TestSeekAfterReadFailure.\n// It returns a fake reader that succeeds once, then fails.\ntype oneTimeReadBucket struct {\n\tdriver.Bucket\n\tfirst bool\n}\n\ntype workingReader struct {\n\tdriver.Reader\n}\n\nfunc (r *workingReader) Read(p []byte) (int, error) {\n\treturn len(p), nil\n}\n\nfunc (r *workingReader) Attributes() *driver.ReaderAttributes { return &driver.ReaderAttributes{} }\nfunc (r *workingReader) Close() error                         { return nil }\n\nfunc (b *oneTimeReadBucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tif b.first {\n\t\tb.first = false\n\t\treturn &workingReader{}, nil\n\t}\n\treturn nil, errFake\n}\n\nfunc (b *oneTimeReadBucket) ErrorCode(err error) gcerrors.ErrorCode { return gcerrors.Unknown }\nfunc (b *oneTimeReadBucket) Close() error                           { return nil }\n\n// erroringBucket implements driver.Bucket. All interface methods that return\n// errors are implemented, and return errFake.\n// In addition, when passed the key \"work\", NewRangeReader and NewTypedWriter\n// will return a Reader/Writer respectively, that always return errFake\n// from Read/Write and Close.\ntype erroringBucket struct {\n\tdriver.Bucket\n}\n\ntype erroringReader struct {\n\tdriver.Reader\n}\n\nfunc (r *erroringReader) Read(p []byte) (int, error) {\n\treturn 0, errFake\n}\n\nfunc (r *erroringReader) Close() error {\n\treturn errFake\n}\n\ntype erroringWriter struct {\n\tdriver.Writer\n}\n\nfunc (r *erroringWriter) Write(p []byte) (int, error) {\n\treturn 0, errFake\n}\n\nfunc (r *erroringWriter) Close() error {\n\treturn errFake\n}\n\nfunc (b *erroringBucket) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\treturn nil, errFake\n}\n\nfunc (b *erroringBucket) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\treturn nil, errFake\n}\n\nfunc (b *erroringBucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tif key == \"work\" {\n\t\treturn &erroringReader{}, nil\n\t}\n\treturn nil, errFake\n}\n\nfunc (b *erroringBucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\tif key == \"work\" {\n\t\treturn &erroringWriter{}, nil\n\t}\n\treturn nil, errFake\n}\n\nfunc (b *erroringBucket) Copy(ctx context.Context, dstKey, srcKey string, opts *driver.CopyOptions) error {\n\treturn errFake\n}\n\nfunc (b *erroringBucket) Delete(ctx context.Context, key string) error {\n\treturn errFake\n}\n\nfunc (b *erroringBucket) SignedURL(ctx context.Context, key string, opts *driver.SignedURLOptions) (string, error) {\n\treturn \"\", errFake\n}\n\nfunc (b *erroringBucket) Close() error {\n\treturn errFake\n}\n\nfunc (b *erroringBucket) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerrors.Unknown\n}\n\n// TestErrorsAreWrapped tests that all errors returned from the driver are\n// wrapped exactly once by the portable type.\nfunc TestErrorsAreWrapped(t *testing.T) {\n\tctx := context.Background()\n\tbuf := bytes.Repeat([]byte{'A'}, sniffLen)\n\tb := NewBucket(&erroringBucket{})\n\n\t// verifyWrap ensures that err is wrapped exactly once.\n\tverifyWrap := func(description string, err error) {\n\t\tif err == nil {\n\t\t\tt.Errorf(\"%s: got nil error, wanted non-nil\", description)\n\t\t\treturn\n\t\t}\n\t\tif _, ok := err.(*gcerr.Error); !ok {\n\t\t\tt.Errorf(\"%s: not wrapped: %v\", description, err)\n\t\t}\n\t\tif s := err.Error(); !strings.HasPrefix(s, \"blob \") {\n\t\t\tt.Logf(\"short form of error: %v\", err)\n\t\t\tt.Logf(\"with details: %+v\", err)\n\t\t\tt.Errorf(\"%s: Error() for wrapped error doesn't start with blob: prefix: %s\", description, s)\n\t\t}\n\t}\n\n\t_, err := b.Attributes(ctx, \"\")\n\tverifyWrap(\"Attributes\", err)\n\n\titer := b.List(nil)\n\t_, err = iter.Next(ctx)\n\tverifyWrap(\"ListIterator.Next\", err)\n\n\t_, err = b.NewRangeReader(ctx, \"\", 0, 1, nil)\n\tverifyWrap(\"NewRangeReader\", err)\n\t_, err = b.ReadAll(ctx, \"\")\n\tverifyWrap(\"ReadAll\", err)\n\n\t// Providing ContentType means driver.NewTypedWriter is called right away.\n\t_, err = b.NewWriter(ctx, \"\", &WriterOptions{ContentType: \"foo\"})\n\tverifyWrap(\"NewWriter\", err)\n\terr = b.WriteAll(ctx, \"\", buf, &WriterOptions{ContentType: \"foo\"})\n\tverifyWrap(\"WriteAll\", err)\n\n\t// Not providing ContentType means driver.NewTypedWriter is only called\n\t// after writing sniffLen bytes.\n\tw, _ := b.NewWriter(ctx, \"\", nil)\n\t_, err = w.Write(buf)\n\tverifyWrap(\"NewWriter (no ContentType)\", err)\n\tw.Close()\n\terr = b.WriteAll(ctx, \"\", buf, nil)\n\tverifyWrap(\"WriteAll (no ContentType)\", err)\n\n\tr, _ := b.NewRangeReader(ctx, \"work\", 0, 1, nil)\n\t_, err = r.Read(buf)\n\tverifyWrap(\"Reader.Read\", err)\n\n\terr = r.Close()\n\tverifyWrap(\"Reader.Close\", err)\n\n\tw, _ = b.NewWriter(ctx, \"work\", &WriterOptions{ContentType: \"foo\"})\n\t_, err = w.Write(buf)\n\tverifyWrap(\"Writer.Write\", err)\n\n\terr = w.Close()\n\tverifyWrap(\"Writer.Close\", err)\n\n\terr = b.Copy(ctx, \"\", \"\", nil)\n\tverifyWrap(\"Copy\", err)\n\n\terr = b.Delete(ctx, \"\")\n\tverifyWrap(\"Delete\", err)\n\n\t_, err = b.SignedURL(ctx, \"\", nil)\n\tverifyWrap(\"SignedURL\", err)\n\n\terr = b.Close()\n\tverifyWrap(\"Close\", err)\n}\n\nvar (\n\ttestOpenOnce sync.Once\n\ttestOpenGot  *url.URL\n)\n\n// TestBucketIsClosed verifies that all Bucket functions return an error\n// if the Bucket is closed.\nfunc TestBucketIsClosed(t *testing.T) {\n\tctx := context.Background()\n\tbuf := bytes.Repeat([]byte{'A'}, sniffLen)\n\n\tbucket := NewBucket(&erroringBucket{})\n\tbucket.Close()\n\n\tif _, err := bucket.Attributes(ctx, \"\"); err != errClosed {\n\t\tt.Error(err)\n\t}\n\titer := bucket.List(nil)\n\tif _, err := iter.Next(ctx); err != errClosed {\n\t\tt.Error(err)\n\t}\n\n\tif _, err := bucket.NewRangeReader(ctx, \"\", 0, 1, nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif _, err := bucket.ReadAll(ctx, \"\"); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif _, err := bucket.NewWriter(ctx, \"\", nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif err := bucket.WriteAll(ctx, \"\", buf, nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif _, err := bucket.NewRangeReader(ctx, \"work\", 0, 1, nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif err := bucket.Copy(ctx, \"\", \"\", nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif err := bucket.Delete(ctx, \"\"); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif _, err := bucket.SignedURL(ctx, \"\", nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif err := bucket.Close(); err != errClosed {\n\t\tt.Error(err)\n\t}\n}\n\nfunc TestURLMux(t *testing.T) {\n\tctx := context.Background()\n\n\tmux := new(URLMux)\n\tfake := &fakeOpener{}\n\tmux.RegisterBucket(\"foo\", fake)\n\tmux.RegisterBucket(\"err\", fake)\n\n\tif diff := cmp.Diff(mux.BucketSchemes(), []string{\"err\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !mux.ValidBucketScheme(\"foo\") || !mux.ValidBucketScheme(\"err\") {\n\t\tt.Errorf(\"ValidBucketScheme didn't return true for valid scheme\")\n\t}\n\tif mux.ValidBucketScheme(\"foo2\") || mux.ValidBucketScheme(\"http\") {\n\t\tt.Errorf(\"ValidBucketScheme didn't return false for invalid scheme\")\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\turl     string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:    \"empty URL\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL\",\n\t\t\turl:     \":foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL no scheme\",\n\t\t\turl:     \"foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"unregistered scheme\",\n\t\t\turl:     \"bar://mybucket\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"func returns error\",\n\t\t\turl:     \"err://mybucket\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"no query options\",\n\t\t\turl:  \"foo://mybucket\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty query options\",\n\t\t\turl:  \"foo://mybucket?\",\n\t\t},\n\t\t{\n\t\t\tname: \"query options\",\n\t\t\turl:  \"foo://mybucket?aAa=bBb&cCc=dDd\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple query options\",\n\t\t\turl:  \"foo://mybucket?x=a&x=b&x=c\",\n\t\t},\n\t\t{\n\t\t\tname: \"fancy bucket name\",\n\t\t\turl:  \"foo:///foo/bar/baz\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api scheme prefix\",\n\t\t\turl:  \"blob+foo:///foo/bar/baz\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api+type scheme prefix\",\n\t\t\turl:  \"blob+bucket+foo:///foo/bar/baz\",\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, gotErr := mux.OpenBucket(ctx, tc.url)\n\t\t\tif (gotErr != nil) != tc.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error %v\", gotErr, tc.wantErr)\n\t\t\t}\n\t\t\tif gotErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t\t// Repeat with OpenBucketURL.\n\t\t\tparsed, err := url.Parse(tc.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t_, gotErr = mux.OpenBucketURL(ctx, parsed)\n\t\t\tif gotErr != nil {\n\t\t\t\tt.Fatalf(\"got err %v want nil\", gotErr)\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype fakeOpener struct {\n\tu *url.URL // last url passed to OpenBucketURL\n}\n\nfunc (o *fakeOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*Bucket, error) {\n\tif u.Scheme == \"err\" {\n\t\treturn nil, errors.New(\"fail\")\n\t}\n\to.u = u\n\treturn nil, nil\n}\n"
  },
  {
    "path": "blob/blob_writer_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob_test\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/memblob\"\n)\n\n// TestWriteReturnValues verifies that blob.Writer returns the correct n\n// even when it is doing content sniffing.\nfunc TestWriteReturnValues(t *testing.T) {\n\tctx := context.Background()\n\n\tfor _, withContentType := range []bool{true, false} {\n\t\tt.Run(fmt.Sprintf(\"withContentType %v\", withContentType), func(t *testing.T) {\n\t\t\tbucket := memblob.OpenBucket(nil)\n\t\t\tdefer bucket.Close()\n\n\t\t\tvar opts *blob.WriterOptions\n\t\t\tif withContentType {\n\t\t\t\topts = &blob.WriterOptions{ContentType: \"application/octet-stream\"}\n\t\t\t}\n\t\t\tw, err := bucket.NewWriter(ctx, \"testkey\", opts)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"couldn't create writer with options: %v\", err)\n\t\t\t}\n\t\t\tdefer func() {\n\t\t\t\tif err := w.Close(); err != nil {\n\t\t\t\t\tt.Errorf(\"failed to close writer: %v\", err)\n\t\t\t\t}\n\t\t\t}()\n\t\t\tn, err := io.CopyN(w, rand.Reader, 182)\n\t\t\tif err != nil || n != 182 {\n\t\t\t\tt.Fatalf(\"CopyN(182) got %d, want 182: %v\", n, err)\n\t\t\t}\n\t\t\tn, err = io.CopyN(w, rand.Reader, 1812)\n\t\t\tif err != nil || n != 1812 {\n\t\t\t\tt.Fatalf(\"CopyN(1812) got %d, want 1812: %v\", n, err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc randomData(nBytes int64) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tn, err := io.CopyN(&buf, rand.Reader, nBytes)\n\tif err != nil || n != nBytes {\n\t\treturn nil, fmt.Errorf(\"failed to get random data (%d want %d): %v\", n, nBytes, err)\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// Ensure that blob.Reader implements io.WriterTo.\nvar _ io.WriterTo = &blob.Reader{}\n\n// Ensure that blob.Writer implements io.ReaderFrom.\nvar _ io.ReaderFrom = &blob.Writer{}\n\nfunc TestReadFrom(t *testing.T) {\n\tconst dstKey = \"dstkey\"\n\n\t// Get some random data, of a large enough size to require multiple\n\t// reads/writes given our buffer size of 1024.\n\tdata, err := randomData(1024*10 + 10)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tbucket := memblob.OpenBucket(nil)\n\tdefer bucket.Close()\n\n\t// Create a blob.Writer and write to it using ReadFrom given a buffer\n\t// holding the random data.\n\tctx := context.Background()\n\tw, err := bucket.NewWriter(ctx, dstKey, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tn, err := w.ReadFrom(bytes.NewBuffer(data))\n\tif err != nil || n != int64(len(data)) {\n\t\tt.Fatalf(\"failed to ReadFrom (%d want %d): %v\", n, len(data), err)\n\t}\n\tif err := w.Close(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Verify the data was copied correctly.\n\tgot, err := bucket.ReadAll(ctx, dstKey)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !cmp.Equal(got, data) {\n\t\tt.Errorf(\"got %v, want %v\", got, data)\n\t}\n}\n\nfunc TestWriteTo(t *testing.T) {\n\tconst srcKey = \"srckey\"\n\n\t// Get some random data, of a large enough size to require multiple\n\t// reads/writes given our buffer size of 1024.\n\tdata, err := randomData(1024*10 + 10)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tbucket := memblob.OpenBucket(nil)\n\tdefer bucket.Close()\n\n\t// Write the data to a key.\n\tctx := context.Background()\n\tif err := bucket.WriteAll(ctx, srcKey, data, nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Create a blob.Reader for that key and read from it, writing to a buffer.\n\tr, err := bucket.NewReader(ctx, srcKey, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tvar buf bytes.Buffer\n\tn, err := r.WriteTo(&buf)\n\tif err != nil || n != int64(len(data)) {\n\t\tt.Fatalf(\"failed to WriteTo (%d want %d): %v\", n, len(data), err)\n\t}\n\tif err := r.Close(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Verify the data was copied correctly.\n\tgot := buf.Bytes()\n\tif !cmp.Equal(got, data) {\n\t\tt.Errorf(\"got %v, want %v\", got, data)\n\t}\n}\n\n// TestCopyBytes uses io.Copy to copy bytes from one key to another.\nfunc TestCopyBytes(t *testing.T) {\n\tconst srcKey = \"testkey-src\"\n\tconst dstKey = \"testkey-dst\"\n\n\tctx := context.Background()\n\n\t// Get some random data, of a large enough size to require multiple\n\t// reads/writes given our buffer size of 1024.\n\tdata, err := randomData(1024*10 + 10)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tbucket := memblob.OpenBucket(nil)\n\tdefer bucket.Close()\n\n\t// Write the data to srcKey.\n\tbucket.WriteAll(ctx, srcKey, data, nil)\n\n\t// Create a reader for srcKey.\n\tr, err := bucket.NewReader(ctx, srcKey, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to create reader: %v\", err)\n\t}\n\n\t// Create a writer for dstKey.\n\tw, err := bucket.NewWriter(ctx, dstKey, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to create writer: %v\", err)\n\t}\n\n\t// Copy the data.\n\tio.Copy(w, r)\n\tif err := r.Close(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := w.Close(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Verify the data was copied correctly.\n\tgot, err := bucket.ReadAll(ctx, dstKey)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !cmp.Equal(got, data) {\n\t\tt.Errorf(\"got %v, want %v\", got, data)\n\t}\n}\n"
  },
  {
    "path": "blob/driver/driver.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package driver defines interfaces to be implemented by blob drivers, which\n// will be used by the blob package to interact with the underlying services.\n// Application code should use package blob.\npackage driver // import \"gocloud.dev/blob/driver\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n)\n\n// ReaderOptions controls Reader behaviors.\ntype ReaderOptions struct {\n\t// BeforeRead is a callback that must be called exactly once before\n\t// any data is read, unless NewRangeReader returns an error before then, in\n\t// which case it should not be called at all.\n\t// asFunc allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\tBeforeRead func(asFunc func(any) bool) error\n}\n\n// Reader reads an object from the blob.\ntype Reader interface {\n\tio.ReadCloser\n\n\t// Attributes returns a subset of attributes about the blob.\n\t// The portable type will not modify the returned ReaderAttributes.\n\tAttributes() *ReaderAttributes\n\n\t// As allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\tAs(any) bool\n}\n\n// Downloader has an optional extra method for readers.\n// It is similar to io.WriteTo, but without the count of bytes returned.\ntype Downloader interface {\n\t// Download is similar to io.WriteTo, but without the count of bytes returned.\n\tDownload(w io.Writer) error\n}\n\n// Writer writes an object to the blob.\ntype Writer interface {\n\tio.WriteCloser\n}\n\n// Uploader has an optional extra method for writers.\ntype Uploader interface {\n\t// Upload is similar to io.ReadFrom, but without the count of bytes returned.\n\tUpload(r io.Reader) error\n}\n\n// WriterOptions controls behaviors of Writer.\ntype WriterOptions struct {\n\t// BufferSize changes the default size in byte of the maximum part Writer can\n\t// write in a single request, if supported. Larger objects will be split into\n\t// multiple requests.\n\tBufferSize int\n\t// MaxConcurrency changes the default concurrency for uploading parts.\n\tMaxConcurrency int\n\t// CacheControl specifies caching attributes that services may use\n\t// when serving the blob.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control\n\tCacheControl string\n\t// ContentDisposition specifies whether the blob content is expected to be\n\t// displayed inline or as an attachment.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition\n\tContentDisposition string\n\t// ContentEncoding specifies the encoding used for the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n\tContentEncoding string\n\t// ContentLanguage specifies the language used in the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language\n\tContentLanguage string\n\t// ContentMD5 is used as a message integrity check.\n\t// The portable type checks that the MD5 hash of the bytes written matches\n\t// ContentMD5.\n\t// If len(ContentMD5) > 0, driver implementations may pass it to their\n\t// underlying network service to guarantee the integrity of the bytes in\n\t// transit.\n\tContentMD5 []byte\n\t// Metadata holds key/value strings to be associated with the blob.\n\t// Keys are guaranteed to be non-empty and lowercased.\n\tMetadata map[string]string\n\t// When true, the driver should attempt to disable any automatic\n\t// content-type detection that the provider applies on writes with an\n\t// empty ContentType.\n\tDisableContentTypeDetection bool\n\t// BeforeWrite is a callback that must be called exactly once before\n\t// any data is written, unless NewTypedWriter returns an error, in\n\t// which case it should not be called.\n\t// asFunc allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\tBeforeWrite func(asFunc func(any) bool) error\n\n\t// IfNotExist is used for conditional writes.\n\t// When set to true, if a blob exists for the same key in the bucket, the write operation\n\t// won't take place.\n\tIfNotExist bool\n}\n\n// CopyOptions controls options for Copy.\ntype CopyOptions struct {\n\t// BeforeCopy is a callback that must be called before initiating the Copy.\n\t// asFunc allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\tBeforeCopy func(asFunc func(any) bool) error\n}\n\n// ReaderAttributes contains a subset of attributes about a blob that are\n// accessible from Reader.\ntype ReaderAttributes struct {\n\t// ContentType is the MIME type of the blob object. It must not be empty.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type\n\tContentType string\n\t// ModTime is the time the blob object was last modified.\n\tModTime time.Time\n\t// Size is the size of the object in bytes.\n\tSize int64\n}\n\n// Attributes contains attributes about a blob.\ntype Attributes struct {\n\t// CacheControl specifies caching attributes that services may use\n\t// when serving the blob.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control\n\tCacheControl string\n\t// ContentDisposition specifies whether the blob content is expected to be\n\t// displayed inline or as an attachment.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition\n\tContentDisposition string\n\t// ContentEncoding specifies the encoding used for the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n\tContentEncoding string\n\t// ContentLanguage specifies the language used in the blob's content, if any.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Language\n\tContentLanguage string\n\t// ContentType is the MIME type of the blob object. It must not be empty.\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type\n\tContentType string\n\t// Metadata holds key/value pairs associated with the blob.\n\t// Keys will be lowercased by the portable type before being returned\n\t// to the user. If there are duplicate case-insensitive keys (e.g.,\n\t// \"foo\" and \"FOO\"), only one value will be kept, and it is undefined\n\t// which one.\n\tMetadata map[string]string\n\t// CreateTime is the time the blob object was created. If not available,\n\t// leave as the zero time.\n\tCreateTime time.Time\n\t// ModTime is the time the blob object was last modified.\n\tModTime time.Time\n\t// Size is the size of the object in bytes.\n\tSize int64\n\t// MD5 is an MD5 hash of the blob contents or nil if not available.\n\tMD5 []byte\n\t// ETag for the blob; see https://en.wikipedia.org/wiki/HTTP_ETag.\n\tETag string\n\t// AsFunc allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\t// If not set, no driver-specific types are supported.\n\tAsFunc func(any) bool\n}\n\n// ListOptions sets options for listing objects in the bucket.\ntype ListOptions struct {\n\t// Prefix indicates that only results with the given prefix should be\n\t// returned.\n\tPrefix string\n\t// Delimiter sets the delimiter used to define a hierarchical namespace,\n\t// like a filesystem with \"directories\".\n\t//\n\t// An empty delimiter means that the bucket is treated as a single flat\n\t// namespace.\n\t//\n\t// A non-empty delimiter means that any result with the delimiter in its key\n\t// after Prefix is stripped will be returned with ListObject.IsDir = true,\n\t// ListObject.Key truncated after the delimiter, and zero values for other\n\t// ListObject fields. These results represent \"directories\". Multiple results\n\t// in a \"directory\" are returned as a single result.\n\tDelimiter string\n\t// PageSize sets the maximum number of objects to be returned.\n\t// 0 means no maximum; driver implementations should choose a reasonable\n\t// max. It is guaranteed to be >= 0.\n\tPageSize int\n\t// PageToken may be filled in with the NextPageToken from a previous\n\t// ListPaged call.\n\tPageToken []byte\n\t// BeforeList is a callback that must be called exactly once during ListPaged,\n\t// before the underlying service's list is executed.\n\t// asFunc allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\tBeforeList func(asFunc func(any) bool) error\n}\n\n// ListObject represents a specific blob object returned from ListPaged.\ntype ListObject struct {\n\t// Key is the key for this blob.\n\tKey string\n\t// ModTime is the time the blob object was last modified.\n\tModTime time.Time\n\t// Size is the size of the object in bytes.\n\tSize int64\n\t// MD5 is an MD5 hash of the blob contents or nil if not available.\n\tMD5 []byte\n\t// IsDir indicates that this result represents a \"directory\" in the\n\t// hierarchical namespace, ending in ListOptions.Delimiter. Key can be\n\t// passed as ListOptions.Prefix to list items in the \"directory\".\n\t// Fields other than Key and IsDir will not be set if IsDir is true.\n\tIsDir bool\n\t// AsFunc allows drivers to expose driver-specific types;\n\t// see Bucket.As for more details.\n\t// If not set, no driver-specific types are supported.\n\tAsFunc func(any) bool\n}\n\n// ListPage represents a page of results return from ListPaged.\ntype ListPage struct {\n\t// Objects is the slice of objects found. If ListOptions.PageSize > 0,\n\t// it should have at most ListOptions.PageSize entries.\n\t//\n\t// Objects should be returned in lexicographical order of UTF-8 encoded keys,\n\t// including across pages. I.e., all objects returned from a ListPage request\n\t// made using a PageToken from a previous ListPage request's NextPageToken\n\t// should have Key >= the Key for all objects from the previous request.\n\tObjects []*ListObject\n\t// NextPageToken should be left empty unless there are more objects\n\t// to return. The value may be returned as ListOptions.PageToken on a\n\t// subsequent ListPaged call, to fetch the next page of results.\n\t// It can be an arbitrary []byte; it need not be a valid key.\n\tNextPageToken []byte\n}\n\n// Bucket provides read, write and delete operations on objects within it on the\n// blob service.\ntype Bucket interface {\n\t// ErrorCode should return a code that describes the error, which was returned by\n\t// one of the other methods in this interface.\n\tErrorCode(error) gcerrors.ErrorCode\n\n\t// As converts i to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAs(i any) bool\n\n\t// ErrorAs allows drivers to expose driver-specific types for returned\n\t// errors.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tErrorAs(error, any) bool\n\n\t// Attributes returns attributes for the blob. If the specified object does\n\t// not exist, Attributes must return an error for which ErrorCode returns\n\t// gcerrors.NotFound.\n\t// The portable type will not modify the returned Attributes.\n\tAttributes(ctx context.Context, key string) (*Attributes, error)\n\n\t// ListPaged lists objects in the bucket, in lexicographical order by\n\t// UTF-8-encoded key, returning pages of objects at a time.\n\t// Services are only required to be eventually consistent with respect\n\t// to recently written or deleted objects. That is to say, there is no\n\t// guarantee that an object that's been written will immediately be returned\n\t// from ListPaged.\n\t// opts is guaranteed to be non-nil.\n\tListPaged(ctx context.Context, opts *ListOptions) (*ListPage, error)\n\n\t// NewRangeReader returns a Reader that reads part of an object, reading at\n\t// most length bytes starting at the given offset. If length is negative, it\n\t// will read until the end of the object. If the specified object does not\n\t// exist, NewRangeReader must return an error for which ErrorCode returns\n\t// gcerrors.NotFound.\n\t// opts is guaranteed to be non-nil.\n\t//\n\t// The returned Reader *may* also implement Downloader if the underlying\n\t// implementation can take advantage of that. The Download call is guaranteed\n\t// to be the only call to the Reader. For such readers, offset will always\n\t// be 0 and length will always be -1.\n\tNewRangeReader(ctx context.Context, key string, offset, length int64, opts *ReaderOptions) (Reader, error)\n\n\t// NewTypedWriter returns Writer that writes to an object associated with key.\n\t//\n\t// A new object will be created unless an object with this key already exists.\n\t// Otherwise any previous object with the same key will be replaced.\n\t// The object may not be available (and any previous object will remain)\n\t// until Close has been called.\n\t//\n\t// contentType sets the MIME type of the object to be written.\n\t// opts is guaranteed to be non-nil.\n\t//\n\t// The caller must call Close on the returned Writer when done writing.\n\t//\n\t// Implementations should abort an ongoing write if ctx is later canceled,\n\t// and do any necessary cleanup in Close. Close should then return ctx.Err().\n\t//\n\t// The returned Writer *may* also implement Uploader if the underlying\n\t// implementation can take advantage of that. The Upload call is guaranteed\n\t// to be the only non-Close call to the Writer..\n\tNewTypedWriter(ctx context.Context, key, contentType string, opts *WriterOptions) (Writer, error)\n\n\t// Copy copies the object associated with srcKey to dstKey.\n\t//\n\t// If the source object does not exist, Copy must return an error for which\n\t// ErrorCode returns gcerrors.NotFound.\n\t//\n\t// If the destination object already exists, it should be overwritten.\n\t//\n\t// opts is guaranteed to be non-nil.\n\tCopy(ctx context.Context, dstKey, srcKey string, opts *CopyOptions) error\n\n\t// Delete deletes the object associated with key. If the specified object does\n\t// not exist, Delete must return an error for which ErrorCode returns\n\t// gcerrors.NotFound.\n\tDelete(ctx context.Context, key string) error\n\n\t// SignedURL returns a URL that can be used to GET the blob for the duration\n\t// specified in opts.Expiry. opts is guaranteed to be non-nil.\n\t// If not supported, return an error for which ErrorCode returns\n\t// gcerrors.Unimplemented.\n\tSignedURL(ctx context.Context, key string, opts *SignedURLOptions) (string, error)\n\n\t// Close cleans up any resources used by the Bucket. Once Close is called,\n\t// there will be no method calls to the Bucket other than As, ErrorAs, and\n\t// ErrorCode. There may be open readers or writers that will receive calls.\n\t// It is up to the driver as to how these will be handled.\n\tClose() error\n}\n\n// SignedURLOptions sets options for SignedURL.\ntype SignedURLOptions struct {\n\t// Expiry sets how long the returned URL is valid for. It is guaranteed to be > 0.\n\tExpiry time.Duration\n\n\t// Method is the HTTP method that can be used on the URL; one of \"GET\", \"PUT\",\n\t// or \"DELETE\". Drivers must implement all 3.\n\tMethod string\n\n\t// ContentType specifies the Content-Type HTTP header the user agent is\n\t// permitted to use in the PUT request. It must match exactly. See\n\t// EnforceAbsentContentType for behavior when ContentType is the empty string.\n\t// If this field is not empty and the bucket cannot enforce the Content-Type\n\t// header, it must return an Unimplemented error.\n\t//\n\t// This field will not be set for any non-PUT requests.\n\tContentType string\n\n\t// If EnforceAbsentContentType is true and ContentType is the empty string,\n\t// then PUTing to the signed URL must fail if the Content-Type header is\n\t// present or the implementation must return an error if it cannot enforce\n\t// this. If EnforceAbsentContentType is false and ContentType is the empty\n\t// string, implementations should validate the Content-Type header if possible.\n\t// If EnforceAbsentContentType is true and the bucket cannot enforce the\n\t// Content-Type header, it must return an Unimplemented error.\n\t//\n\t// This field will always be false for non-PUT requests.\n\tEnforceAbsentContentType bool\n\n\t// BeforeSign is a callback that will be called before each call to the\n\t// the underlying service's sign functionality.\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeSign func(asFunc func(any) bool) error\n}\n\n// prefixedBucket implements Bucket by prepending prefix to all keys.\ntype prefixedBucket struct {\n\tbase   Bucket\n\tprefix string\n}\n\n// NewPrefixedBucket returns a Bucket based on b with all keys modified to have\n// prefix.\nfunc NewPrefixedBucket(b Bucket, prefix string) Bucket {\n\treturn &prefixedBucket{base: b, prefix: prefix}\n}\n\nfunc (b *prefixedBucket) ErrorCode(err error) gcerrors.ErrorCode { return b.base.ErrorCode(err) }\nfunc (b *prefixedBucket) As(i any) bool                          { return b.base.As(i) }\nfunc (b *prefixedBucket) ErrorAs(err error, i any) bool          { return b.base.ErrorAs(err, i) }\nfunc (b *prefixedBucket) Attributes(ctx context.Context, key string) (*Attributes, error) {\n\treturn b.base.Attributes(ctx, b.prefix+key)\n}\n\nfunc (b *prefixedBucket) ListPaged(ctx context.Context, opts *ListOptions) (*ListPage, error) {\n\tvar myopts ListOptions\n\tif opts != nil {\n\t\tmyopts = *opts\n\t}\n\tmyopts.Prefix = b.prefix + myopts.Prefix\n\tpage, err := b.base.ListPaged(ctx, &myopts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, p := range page.Objects {\n\t\tp.Key = strings.TrimPrefix(p.Key, b.prefix)\n\t}\n\treturn page, nil\n}\n\nfunc (b *prefixedBucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *ReaderOptions) (Reader, error) {\n\treturn b.base.NewRangeReader(ctx, b.prefix+key, offset, length, opts)\n}\n\nfunc (b *prefixedBucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *WriterOptions) (Writer, error) {\n\tif key == \"\" {\n\t\treturn nil, errors.New(\"invalid key (empty string)\")\n\t}\n\treturn b.base.NewTypedWriter(ctx, b.prefix+key, contentType, opts)\n}\n\nfunc (b *prefixedBucket) Copy(ctx context.Context, dstKey, srcKey string, opts *CopyOptions) error {\n\treturn b.base.Copy(ctx, b.prefix+dstKey, b.prefix+srcKey, opts)\n}\n\nfunc (b *prefixedBucket) Delete(ctx context.Context, key string) error {\n\treturn b.base.Delete(ctx, b.prefix+key)\n}\n\nfunc (b *prefixedBucket) SignedURL(ctx context.Context, key string, opts *SignedURLOptions) (string, error) {\n\treturn b.base.SignedURL(ctx, b.prefix+key, opts)\n}\nfunc (b *prefixedBucket) Close() error { return b.base.Close() }\n\n// singleKeyBucket implements Bucket by hardwiring a specific key.\ntype singleKeyBucket struct {\n\tbase Bucket\n\tkey  string\n}\n\n// NewSingleKeyBucket returns a Bucket based on b that always references key.\nfunc NewSingleKeyBucket(b Bucket, key string) Bucket {\n\treturn &singleKeyBucket{base: b, key: key}\n}\n\nfunc (b *singleKeyBucket) ErrorCode(err error) gcerrors.ErrorCode { return b.base.ErrorCode(err) }\nfunc (b *singleKeyBucket) As(i any) bool                          { return b.base.As(i) }\nfunc (b *singleKeyBucket) ErrorAs(err error, i any) bool          { return b.base.ErrorAs(err, i) }\nfunc (b *singleKeyBucket) Attributes(ctx context.Context, _ string) (*Attributes, error) {\n\treturn b.base.Attributes(ctx, b.key)\n}\n\nfunc (b *singleKeyBucket) ListPaged(ctx context.Context, opts *ListOptions) (*ListPage, error) {\n\treturn nil, errors.New(\"List not supported for SingleKey buckets\")\n}\n\nfunc (b *singleKeyBucket) NewRangeReader(ctx context.Context, _ string, offset, length int64, opts *ReaderOptions) (Reader, error) {\n\treturn b.base.NewRangeReader(ctx, b.key, offset, length, opts)\n}\n\nfunc (b *singleKeyBucket) NewTypedWriter(ctx context.Context, _, contentType string, opts *WriterOptions) (Writer, error) {\n\treturn b.base.NewTypedWriter(ctx, b.key, contentType, opts)\n}\n\nfunc (b *singleKeyBucket) Copy(ctx context.Context, dstKey, _ string, opts *CopyOptions) error {\n\treturn b.base.Copy(ctx, dstKey, b.key, opts)\n}\n\nfunc (b *singleKeyBucket) Delete(ctx context.Context, _ string) error {\n\treturn b.base.Delete(ctx, b.key)\n}\n\nfunc (b *singleKeyBucket) SignedURL(ctx context.Context, _ string, opts *SignedURLOptions) (string, error) {\n\treturn b.base.SignedURL(ctx, b.key, opts)\n}\nfunc (b *singleKeyBucket) Close() error { return b.base.Close() }\n"
  },
  {
    "path": "blob/drivertest/bindata.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n// This file was auto-generated using go-bindata (https://github.com/jteeuwen/go-bindata).\n\npackage drivertest\n\nimport (\n\t\"bytes\"\n\t\"compress/gzip\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\nfunc bindataRead(data []byte, name string) ([]byte, error) {\n\tgz, err := gzip.NewReader(bytes.NewBuffer(data))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Read %q: %v\", name, err)\n\t}\n\n\tvar buf bytes.Buffer\n\t_, err = io.Copy(&buf, gz)\n\tgz.Close()\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"Read %q: %v\", name, err)\n\t}\n\n\treturn buf.Bytes(), nil\n}\n\nvar _testLargeJpg = []byte(\"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xec\\xfc\\x65\\x54\\x9b\\xd1\\xba\\x2e\\x0c\\x3f\\xc1\\x82\\x07\\x2f\\x0e\\x45\\x0a\\x05\\x4a\\x8b\\x16\\x97\\xb6\\x78\\xd1\\x16\\xd7\\x22\\xc5\\xdd\\x82\\x07\\x77\\x2f\\xd0\\xa2\\xc1\\x9d\\x40\\x71\\x77\\x2f\\x4e\\xa1\\x40\\xd1\\x40\\xf1\\x42\\xd0\\x94\\x52\\xf8\\xc6\\x5a\\x67\\x9d\\xfd\\xae\\xbd\\xf6\\xda\\xdf\\x58\\xfb\\x1d\\x7b\\x9f\\xf7\\xcf\\x99\\x63\\x5c\\xff\\x92\\x99\\x5c\\x79\\xe6\\x3d\\x6f\\xbd\\x72\\xff\\xed\\x7e\\x03\\x20\\x51\\x96\\x57\\x92\\x07\\x40\\x18\\x00\\x00\\x02\\x40\\x00\\x70\\xbf\\x02\\xbc\\x04\\x70\\x71\\x70\\xc0\\x38\\xd8\\xb8\\x60\\x30\\x18\\x0f\\x0f\\x17\\x9f\\x90\\x82\\x88\\x90\\x80\\x80\\x90\\x86\\x8c\\x1c\\x42\\xc1\\x40\\xcb\\xc4\\xc8\\x40\\x4b\\x4f\\xcf\\xcc\\xc6\\xcb\\xc1\\xcc\\xc2\\xc3\\x4a\\x4f\\xcf\\xf9\\xfc\\x31\\xcf\\x33\\x3e\\x41\\x41\\x41\\x26\\x0e\\x51\\x49\\x11\\x7e\\x09\\x5e\\x01\\x41\\xfe\\xbf\\x6c\\x02\\xc2\\xc3\\xc3\\x23\\x24\\x20\\xa4\\x26\\x22\\xa2\\xe6\\x7f\\x48\\xff\\x90\\xff\\xbf\\xbc\\xee\\x7b\\x00\\x52\\x5c\\xd0\\x05\\xe6\\x1e\\x26\\x88\\x05\\xc0\\x20\\x05\\x61\\x92\\x82\\xee\\x07\\x00\\x26\\x00\\x00\\x61\\x83\\xfe\\xba\\x80\\xbf\\x2d\\x10\\x06\\x26\\x16\\x36\\x0e\\x18\\x17\\x0f\\x9f\\xe0\\x7e\\x00\\x68\\x24\\x01\\x30\\x40\\x98\\x98\\x18\\x58\\x98\\xd8\\xd8\\x58\\x58\\x00\\x00\\x0a\\x00\\x61\\x60\\x02\\x58\\xa4\\xd8\\x64\\x0f\\xf9\\x64\\x71\\xc8\\x35\\xdf\\x81\\x59\\x5c\\x29\\xf8\\x83\\x93\\xf3\\x71\\x59\\x5f\\xd4\\xf5\\x52\\x6a\\xcd\\x9c\\xb2\\x09\\x98\\xbb\\x85\\xe0\\xe1\\x53\\x3d\\xa0\\xa6\\xa1\\x65\\x7f\\xc4\\xc1\\xf9\\x98\\x4b\\x50\\x48\\xf8\\xb9\\x88\\xa8\\xd8\\xcb\\x57\\x72\\xf2\\x0a\\x8a\\x4a\\xca\\x6f\\xde\\x6a\\xeb\\xe8\\xea\\xe9\\x1b\\x58\\x58\\x5a\\xbd\\xb7\\xb6\\xb1\\xb5\\x73\\xf7\\xf0\\xf4\\xf2\\x86\\xfa\\xf8\\x86\\x86\\x85\\x47\\x44\\x46\\x45\\xc7\\xa4\\xa4\\x7e\\x48\\x4b\\xcf\\xf8\\xf8\\x29\\xb3\\xa0\\xb0\\xa8\\xb8\\xa4\\xb4\\xac\\xbc\\xe2\\x73\\x7d\\x43\\x63\\x53\\x73\\x4b\\x6b\\x5b\\x5f\\xff\\xc0\\xe0\\xd0\\xf0\\xc8\\xe8\\xd8\\xec\\xdc\\xfc\\xd7\\x85\\xc5\\x6f\\x4b\\xcb\\x9b\\x5b\\xc8\\xed\\x9d\\x1f\\xbb\\x7b\\xfb\\x07\\xa8\\xb3\\xf3\\x8b\\xcb\\xab\\x6b\\xf4\\xaf\\x9b\\xbf\\xf0\\x02\\x01\\x98\\xa0\\xff\\xbd\\xfe\\x29\\x2f\\x52\\x00\\x03\\x84\\x81\\x85\\x85\\x89\\x05\\xfe\\x0b\\x2f\\x10\\x86\\xf7\\x5f\\x5e\\x40\\x8a\\x85\\xfd\\x90\\x0f\\x87\\x4c\\x56\\x13\\xfc\\xce\\x95\\x9c\\x85\\x3f\\x18\\x97\\xe2\\x45\\x72\\x7e\\x5d\\x2f\\x1e\\xab\\x80\\xd6\\x29\\xa5\\xb9\\xdb\\x0c\\x3e\\x15\\x9b\\xe0\\x26\\x3b\\xea\\x2f\\xd4\\xfe\\xca\\xec\\x5f\\x23\\x16\\xf2\\xff\\x8a\\xd9\\xbf\\x11\\xfb\\x7f\\x78\\x2d\\x03\\x84\\x98\\x20\\x00\\x83\\x14\\x93\\x14\\x90\\x06\\xae\\x6f\\x38\\x0b\\x60\\xf8\\xff\\x01\\x82\\xee\\x32\\xd8\\x14\\x9a\\xff\\x17\\xff\\x17\\xff\\x22\\xde\\xb0\\x25\\xb3\\x68\\xfd\\xec\\x7d\\xeb\\xc9\\x36\\x8d\\xb9\\x57\\x71\\x0f\\x38\\x46\\xba\\x1a\\x1f\\x66\\x5b\\xd3\\x94\\xa7\\x7d\\x8d\\x90\\x1d\\x81\\x83\\x35\\xe5\\x28\\x80\\xff\\x09\\x80\\x82\\xe5\\x28\\x34\\x40\\xff\\xdf\\x62\\xd1\\x53\\x46\\x85\\x04\\x38\\x50\\x05\\xc4\\x62\\xfa\\x3a\\x51\\x11\\xe1\\x66\\xbf\\x79\\x85\\xc4\\x6d\\x56\\x12\\x08\\x43\\xbb\\x95\\x33\\x94\\x50\\x52\\xc9\\xd5\\xf9\\x01\\x52\\x37\\x34\\x3d\\xe2\\x6a\\x0b\\xdb\\x4c\\xc5\\x80\\x83\\xa6\\x22\\xae\\x24\\xd1\\x13\\x80\\x42\\x53\\x0e\\xa0\\xd0\\x4c\\x96\\x03\\x28\\xb4\\xde\\xa7\\xba\\x5c\\xc2\\xc1\\x9a\\xaa\\x6b\\x92\\x72\\x8f\\xcd\\xc4\\x63\\x00\\x9a\\x90\\x72\\x0e\\x38\\x02\\x8c\\x8e\\x46\\xea\\x37\\xaa\\x5a\\x5d\\xc4\\x82\\x3b\\xfa\\x9a\\x06\\x13\\x30\\xe3\\x8f\\x20\\x81\\x92\\x9d\\xf7\\x00\\xfe\\x65\\x10\\xcd\\xa1\\xeb\\x5e\\x20\\x55\\x67\\xb7\\xe3\\xb0\\x25\\x94\\xce\\x8f\\xbc\\x47\\xe8\\xc7\\x3a\\x5e\\x87\\x28\\x56\\x93\\x9b\\x7d\\x86\\x9c\\x75\\x5b\\x4b\\x72\\x8e\\x71\\x2f\\x3b\\x8e\\xaf\\xbb\\x0c\\xb5\\xf0\\x3a\\xe4\\xd6\\x5a\\xa8\\xee\\xab\\xae\\xa6\\x9f\\x3d\\xfc\\xe5\\xa0\\x1d\\xbb\\x04\\xe4\\xc5\\x5a\\xe3\\x37\\x28\\xe6\\xb0\\x6f\\xf5\\x5d\\xb5\\x70\\x78\\x95\\x4c\\xb9\\x8f\\xd3\\x27\\x73\\x10\\x76\\xeb\\x4f\\x71\\x2f\\xc4\\x6b\\xbd\\x69\\xb9\\x38\\x62\\x6c\\xe8\\x91\\xdb\\x80\\x94\\xf8\\xea\\xaf\\xd7\\x4b\\x7c\\xd8\\x66\\x22\\x34\\xcb\\x62\\x48\\x04\\x63\\x03\\xe8\\x38\\xb9\\x69\\x1b\\x27\\x4f\\x53\\xf6\\xae\\x2a\\x80\\xcb\\x00\\xe0\\x2c\\x88\\xf9\\x97\\x20\\x30\\xf1\\xd7\\x03\\xa2\\x45\\x06\\x7e\\x23\\x43\\x20\\xf7\\xdc\\xf7\\x26\\xc6\\x4b\\x16\\x8e\\x11\\xc3\\xf9\\x37\\x3c\\xe6\\x04\\xd9\\xfc\\xc3\\x3b\\x1e\\x0b\\x4c\\x3c\\xf9\\x9f\\x39\\x2d\\xff\\x15\\xc4\\xb9\\x14\\xdd\\xe8\\x46\\xf8\\x6b\\xa1\\xe6\\x9b\\x79\\x6f\\x84\\x73\\xf5\\x0d\\x03\\x09\\xb2\\x6b\\x14\\x8f\\xa7\\xe8\\x6f\\x16\\x1b\\xed\\x1e\\x60\\x2c\\xf7\\xd9\\x46\\xf7\\xbc\\x7a\\xd4\\x15\\x74\\x5a\\xa5\\x93\\x79\\x0f\\x0c\\x1c\\x66\\x45\\x3f\\x5c\\xa9\\x8b\\x66\\xba\\x98\\x4e\\xb8\\x00\\x35\\x6e\\x4c\\x85\\x35\\x5d\\xa7\\xd7\\x1e\\x88\\xed\\xd9\\x16\\xa7\\xf0\\xfd\\x4e\\x67\\xb3\\xc8\\x3e\\x0f\\x9d\\x70\\xb2\\x33\\xc5\\x73\\x3c\\x96\\x9e\\xf3\\x17\\xf0\\xe6\\xcd\\x0a\\xfc\\xf4\\xb8\\xf1\\x9a\\xd5\\x75\\x7a\\x97\\xe3\\x0c\\xf1\\x3a\\x44\\x30\\x82\\x04\\x0c\\xe0\\x47\\xac\\xbc\\x6d\\x68\\xf3\\x52\\x2c\\x91\\xb7\\x14\\x31\\x83\\x28\\x03\\xe7\\x89\\xc4\\xfe\\x0a\\x2d\\xf5\\xf3\\x6f\\x5e\\xa0\\x5e\\x99\\x2f\\xbe\\x39\\xc7\\xc7\\x19\\xa2\\x1c\\x36\\x97\\x4c\\x54\\xbe\\x40\\x3b\\x91\\x59\\x12\\xc6\\xe1\\xb2\\x0a\\xfd\\x90\\xa6\\x96\\xe0\\x6d\\x6b\\x8a\\xfd\\x53\\x6a\\x33\\xce\\x70\\xf9\\x91\\x87\\xae\\x64\\xfb\\x27\\x3f\\x77\\xcc\\x6c\\x17\\xef\\xea\\x12\\xda\\xd3\\xbc\\xa9\\xf9\\xfc\\x84\\xf4\\x45\\x3d\\xfd\\xf1\\x9b\\xb9\\x43\\x19\\xa6\\x97\\x82\\x31\\x85\\x6c\\x31\\x85\\x7e\\xd5\\x7a\\x7a\\x2f\\x2c\\x5b\\xdb\\x62\\x28\\xe9\\x53\\x7e\\x02\\x18\\x1d\\x4e\\xeb\\x86\\xa8\\xee\\xa8\\x5d\\x43\\xad\\x54\\x43\\x70\\x24\\xa1\\x46\\xe0\\x09\\x47\\xce\\x0a\\x6c\\x4a\\x6d\\xe9\\xd0\\x90\\xcf\\xff\\xd9\\xfc\\xcf\\x63\\x2d\\x95\\x55\\x27\\xaf\\x8f\\x67\\x07\\x7b\\x55\\xad\\x97\\x34\\xf4\\x4c\\x43\\x30\\xb1\\x95\\x6e\\x46\\x5b\\xaf\\x99\\x86\\xd1\\xe7\\xcb\\xac\\xa6\\x5d\\x33\\x84\\x61\\xfb\\x8b\\xe7\\x94\\x89\\xf7\\x00\\x81\\xbd\\x02\\xd5\\x79\\xd7\\x4a\\x44\\x0a\\xbf\\x2b\\x59\\x89\\x8a\\x7b\\x70\\x88\\xc8\\xee\\xa1\\xd6\\xd2\\xed\\xe3\\x19\\xf3\\x20\\x7e\\xe4\\x44\\x0b\\xdb\\x76\\x34\\x5d\\x68\\xee\\x37\\x86\\xca\\xc2\\x86\\xd3\\xc0\\x68\\x6b\\x96\\x71\\xec\\x30\\x3c\\x96\\x38\\x27\\x5c\\x81\\x18\\xe0\\xfc\\xf7\\x3d\\x10\\xa7\\x6c\\x49\\xf2\\xcd\\xf6\\xbc\\x5b\\xf5\\xa8\\xa7\\xdc\\x84\\x1f\\xca\\xda\\xbc\\x50\\x7f\\x7c\\x6b\\x85\\x94\\x54\\xcd\\x54\\x95\\x56\\x6b\\xa1\\x9b\\xff\\x38\\x3e\\xd8\\x2a\\x15\\x29\\x82\\xd9\\xcc\\x2a\\x74\\x44\\x50\\xa8\\xc7\\xb5\\x61\\xd0\\x87\\xe3\\x0e\\x0b\\xad\\xd6\\x4f\\x58\\x16\\xe9\\xc1\\x8f\\x01\\xf6\\x83\\x65\\x18\\x5f\\x5d\\x9b\\x92\\x6d\\x85\\x4d\\x4e\\xaf\\x6c\\x60\\x7e\\xe0\\xd2\\xcb\\x85\\x32\\x13\\xe7\\x7d\\x2a\\x6e\\x6e\\x41\\x7f\\x70\\x88\\x86\\x6a\\x4c\\x3d\\xd6\\xfa\\xc4\\xba\\x6d\\x74\\x9e\\xe7\\xcf\\x34\\xdb\\x19\\x6a\\x8e\\xa4\\xa6\\xc0\\xd2\\xfc\\xa6\\x01\\x8e\\x53\\x29\\x80\\xde\\x03\\xda\\x73\\x8c\\xe2\\xfb\\xef\\x52\\xbf\\x0c\\xad\\xf8\\x68\\xcb\\x68\\x89\\x6d\\x27\\xde\\x75\\x2a\\x58\\xbf\\x43\\x11\\x28\\xe9\\x6d\\xc4\\xd0\\x41\\xf3\\xe5\\x36\\x9f\\x20\\x55\\x5b\\xa7\\x56\\x77\\xe7\\x19\\x5b\\x8e\\x4d\\x16\\x6b\\x7d\\x35\\x34\\x18\\xe7\\x41\\xdb\\x1c\\x6f\\xd0\\x29\\x4d\\xc5\\xdb\\x8d\\xcd\\x60\\xaf\\xe9\\x2e\\x93\\x1f\\x1c\\x8b\\xa1\\x73\\xb5\\xfb\\x27\\x46\\x6a\\x39\\x5b\\x74\\x39\\x4f\\x87\\x9b\\x9f\\x2f\\x77\\x65\\x4f\\x1b\\xf9\\x97\\xbb\\x39\\xfe\\x02\\x25\\x88\\x8a\\x1e\\x27\\x2a\\xdf\\x68\\x0c\\x15\\x79\\x50\\xbe\\xfc\\xcd\\x38\\x3e\\x95\\xf2\\xce\\x99\\x3a\\xe5\\x65\\x86\\x63\\xe8\\x93\\x4b\\x38\\xb1\\xee\\x4b\\x74\\x1a\\xfc\\xc0\\x06\\x63\\xf2\\xb4\\xe9\\xb8\\x74\\xea\\x05\\x9c\\xfe\\x82\\x87\\x5f\\x00\\xbd\\x68\\x8b\\x3d\\xff\\xa6\\x64\\xdb\\xf3\\xdd\\x01\\xb1\\x7d\\x02\\x0a\\xd2\\xaf\\xca\\x6d\\xa0\\x63\\xf3\\xe9\\x68\\x69\\xc5\\x2f\\xd6\\x05\\xa3\\xdd\\x0c\\x36\\xe0\\x7b\\xbe\\x78\\xcb\\x1d\\xa9\\x8e\\x8b\\x3e\\xe9\\x33\\x80\\x39\\x32\\x9e\\x19\\xcb\\x8f\\xea\\x51\\x46\\x8d\\x51\\x7a\\x9d\\x27\\xbd\\xf4\\xbe\\xa6\\x00\\x1d\\xff\\xa2\\x68\\xfc\\x61\\x20\\x3d\\xc8\\x99\\xdf\\xf6\\xfb\\x41\\xd4\\xf1\\x50\\x16\\x3f\\x92\\x7d\\x74\\x28\\xe0\\x4c\\x64\\x4a\\x68\\xaf\\x29\\x63\\xe1\\x7a\\xba\\x68\\x61\\xb6\\x2a\\xb9\\x76\\xec\\x73\\x76\\xa8\\x0c\\xd5\\xbf\\x62\\xcd\\x8f\\xf1\\x00\\xf7\\x97\\xcf\\xb4\\xd9\\x16\\x13\\x6f\\x95\\xd1\\x45\\xcb\\x2a\\x5d\\x89\\x45\\xc2\\xce\\xa3\\xdf\\x06\\xac\\xb9\\xd4\\x4b\\xc4\\xa7\\xc1\\xba\\x48\\xe9\\xa8\\x1b\\xd3\\xb0\\x19\\xf3\\xf7\\xe4\\x6b\\x52\\x2f\\x5e\\x44\\x8a\\x48\\xa1\\xf7\\x4d\\xcc\\x6f\\xae\\x07\\x82\\xe8\\x46\\x66\\x6d\\x47\\x3c\\x0e\\x3d\\xcd\\xc4\\x4b\\x7c\\x8e\\x73\\x55\\xed\\xa1\\xe4\\x9b\\xab\\x6b\\xa5\\xae\\x54\\xf5\\x5b\\x8e\\x73\\xea\\x39\\xfb\\x74\\xd9\\xc8\\xec\\xed\\x7b\\x20\\xdc\\x8f\\x47\\xf8\\x59\\x5f\\x4c\\x19\\x0c\\xfb\\x2f\\x4f\\x93\\xc0\\x67\\x33\\x31\\x6a\\xd9\\xb8\\x74\\x79\\x45\\x37\\x73\\xd7\\x96\\x70\\x94\\xa2\\xca\\xd0\\x86\\xfe\\xcc\\x75\\xdf\\x50\\x8a\\x00\\x9d\\x5a\\x26\\xe7\\xed\\x6c\\x55\\xf5\\x85\\x9d\\xfc\\xe7\\x0a\\x2b\\x2f\\x7e\\x9a\\xc8\\x30\\xcd\\x54\\xb5\\x9f\\x68\\xbc\\xf2\\x06\\x4c\\xce\\xa7\\x7b\\x00\\x02\\x36\\x94\\xcb\\xff\\x7e\\xb0\\xfc\\x56\\xd3\\x70\\x6d\\x59\\xb4\\xe3\\x49\\x02\\x7d\\x82\\xa1\\xf7\\xa6\\x0c\\x63\\x32\\x45\\x88\\xe2\\xd7\\xf9\\x6d\\xd2\\xcc\\x00\\x77\\x46\\xdc\\x45\\x9c\\xe6\\xcd\\x15\\xf1\\x82\\x11\\x63\\x24\\x76\\x08\\x3d\\xcc\\x6f\\x51\\xfd\\xbf\\xe8\\xf4\\xf0\\x39\\x81\\x82\\x98\\xff\\x63\\xc0\\xcc\\x42\\xf5\\xb4\\xdf\\x03\\x61\\xe6\\x87\\x47\\xd9\\x5d\\xeb\\x9f\\x5e\\xa4\\x8f\\x5d\\xef\\x9b\\x60\\x6f\\x1a\\xab\\xff\\xe6\\x1e\\xae\\x1b\\x4b\\x6c\\xe3\\x48\\xaa\\x3c\\xc1\\xa2\\x27\\x3f\\x31\\x55\\x57\\x0e\\x79\\xc5\\xd9\\xcf\\x1c\\x47\\x7b\\x8a\\x88\\xbe\\x03\\xa7\\xaa\\xb5\\x19\\x3b\\xab\\xc0\\x3e\\xb2\\x88\\x97\\xbc\\x35\\x0b\\x07\\xbb\\x67\\x02\\x57\\x68\\x36\\x72\\x43\\xcc\\x79\\x52\\x93\\x07\\x5b\\xab\\x2a\\x1a\\xa7\\xde\\xb1\\x12\\x68\\xb6\\xe4\\xfc\\xcc\\x17\\x83\\x31\\x9b\\x0a\\x75\\x97\\x08\\xc5\\xd3\\xa0\\xe8\\x77\\x5f\\x25\\xa4\\x9d\\xf9\\x47\\xf0\\x96\\x29\\x42\\x7a\\x2e\\x36\\xe6\\x03\\xd9\\x4f\\xc3\\x11\\x51\\xf9\\x01\\x33\\xac\\x23\\xb2\\x8f\\x5b\\x72\\x4a\\xa5\\x5a\\xe0\\xb8\\x12\\xe2\\x5b\\xf6\\xd2\\x0f\\x6c\\xc7\\x0e\\x36\\x92\\xfb\\x0b\\x89\\xef\\x01\\xe5\\xf3\\x2c\\x15\\x1b\\x09\\x26\\x94\\xf2\\xae\\x7a\\xee\\x7c\\x96\\xaa\\x4c\\x64\\x64\\x70\\x5c\\x8a\\xb8\\x1f\\xed\\x9e\\xc4\\xe3\\x0d\\x06\\xeb\\xbe\\x35\\xae\\x75\\x90\\x0f\\x0f\\xbd\\xff\\x4e\\xb6\\x59\\x80\\xa4\\xfa\\xa6\\x49\\x64\\x0d\\x54\\xfa\\x35\\x0a\\xb2\\x54\\xd4\\x19\\xde\\xf1\\xdb\\x6b\\x9d\\x70\\xa6\\x4e\\xf7\\xe5\\x91\\x1c\\x60\\xb7\\x64\\x38\\x54\\xf7\\x58\\x0e\\xb0\\x88\\xc3\\x6f\\xc3\\x56\\x70\\xc4\\x0d\\xc1\\x8a\\x23\\x7b\\x01\\xe3\\xf7\\xcd\\x4c\\xff\\x27\\x51\\x6a\\x01\\x0c\\x5f\\xb5\\x20\\x3d\\x06\\xf8\\x21\\xa1\\xbf\\xc9\\x2d\\x19\\x38\\x18\\xfd\\x39\\xc4\\xbe\\x88\\xa9\\xfd\\x5c\\x1e\\x74\\xc5\\x31\\xdb\\xd1\\xb6\\xea\\xaf\\x7d\\xda\\xd3\\x38\\xfa\\x39\\xe5\\x44\\xf1\\xe9\\x27\\x8b\\x18\\xd5\\x71\\xdc\\x29\\x6d\\x86\\x20\\xb1\\xeb\\x98\\x04\\x3d\\x2d\\x4b\\xce\\x03\\xfc\\x5c\\x5c\\x41\\x50\\xf4\\x26\\x82\\x72\\xbf\\x8b\\x63\\xce\\xa2\\xb3\\xb6\\x45\\x9f\\xb2\\xc5\\x6a\\x6f\\xcc\\x2f\\x44\\x9c\\x76\\xfd\\xd0\\xc4\\x6a\\x8b\\x29\\x72\\xd1\\xd7\\x71\\x3e\\x73\\x37\\xf4\\xfd\\x6f\\x22\\xb4\\x78\\x51\\xa3\\xe6\\xef\\x4f\\x7f\\xa2\\xf6\\x20\\x9d\\xd2\\x7d\\xf7\\x00\\x05\\xbc\\xb3\\x5d\\x4c\\xad\\xd5\\xc1\\xa3\\xd3\\x80\\xa5\\x9c\\x8d\\x3f\\x39\\x82\\xcd\\xb5\\x61\\x1a\\x5c\\xac\\xa9\\x39\\xcc\\x35\\x52\\x21\\x3b\\x29\\xa7\\xf4\\xff\\xe7\\xd4\\x68\\xdb\\xff\\x62\\x14\\xa7\\x59\\xe6\\xb5\\x22\\xad\\x93\\xcd\\xb6\\x44\\x26\\xd8\\x60\\x4e\\x04\\xf2\\x40\\x6f\\x6d\\x7c\\xdd\\xf7\\x7d\\x3d\\xc6\\x9c\\x77\\x7f\\xf1\\x47\\xb2\\x83\\x0e\\x2f\\x84\\x26\\x6e\\x45\\xd1\\x7e\\xdb\\xab\\xbc\\x75\\x55\\x22\\x99\\x5b\\x72\\x63\\x0f\\xb1\\xc2\\xa7\\x44\\x45\\x4f\\x4c\\xcc\\x3d\\xcb\\x1c\\x3b\\xde\\x48\\xfe\\x6c\\xb5\\x12\\x9a\\xe8\\x53\\xfc\\x16\\x2b\\xde\\xe5\\xbf\\xdb\\x5a\\xad\\x72\\x0f\\x44\\xdd\\xb1\\x7d\\x75\\x4e\\x71\\x7c\\xf8\\xa8\\x31\\x82\\x84\\x4a\\xf0\\x4d\\x1a\\x78\\xfe\\x4a\\x3a\\x1e\\x08\\x50\\x75\\x98\\x51\\xa0\\xd6\\x66\\x0d\\x7e\\xf3\\xab\\x42\\x0d\\x84\\xf8\\x24\\x18\\x8b\\x88\\x5e\\xfe\\x52\\x2f\\xd9\\x79\\x3c\\xa0\\x45\\xff\\x4e\\x39\\xfc\\x35\\xe9\\xa2\\x50\\x5d\\xd0\\x3b\\x14\\x47\\xbf\\xf0\\x44\\x8d\\xc9\\xe1\\x10\\xb4\\xa0\\x5f\\x85\\x8c\\x8f\\x99\\xf0\\xc6\\x8c\\xd0\\x5d\\x86\\xe9\\x45\\xf9\\x84\\x9c\\x8f\\x23\\xe5\\x6a\\xf6\\xc2\\x39\\xef\\x5e\\xf1\\x8b\\x84\\xd2\\x16\\x56\\x2c\\x1d\\xf5\\xb0\\xcb\\xe2\\x45\\x7f\\x69\\xfb\\x80\\xbc\\xcc\\x57\\xbf\\xba\\x3a\\x0f\\x1d\\xbb\\xf6\\xe1\\x10\\x06\\xb4\\xc6\\x68\\xd1\\xe1\\x4d\\x57\\x9c\\xf6\\xcc\\xd6\\xa7\\x2e\\xa3\\x90\\x16\\x42\\x05\\x30\\x42\\x46\\x6c\\xf1\\xb3\\x6e\\xb8\\xbe\\x91\\x64\\xc6\\xd0\\x1f\\xa5\\x87\\xa1\\xbe\\x02\\x6e\\x5f\\x26\\xce\\x70\\x80\\x6d\\xe2\\xec\\xd4\\x1b\\xdd\\x16\\x39\\x66\\x0f\\x2c\\x8f\\x41\\x40\\xe5\\x1f\\x23\\x2a\\xa5\\x4e\\xf7\\xb8\\xb8\\x45\\x1a\\xe4\\x3a\\xbd\\xdc\\xa6\\xfd\\x43\\x2c\\xea\\x54\\x8d\\x6c\\x73\\xce\\x5e\\x1a\\x9a\\x0d\\x7a\\x4f\\x89\\x2b\\xc4\\xa3\\xdc\\xdd\\xa1\\xeb\\xa7\\x8f\\x4a\\xd9\\xc4\\x62\\xa8\\xb4\\x53\\xbf\\xbc\\x95\\x78\\xfa\\x26\\xce\\x4d\\xe4\\x38\\x78\\x16\\x26\\x15\\x3f\\x22\\xa8\\x1b\\x0d\\xf5\\xde\\x8a\\x5f\\xfb\\xe4\\x4d\\xd9\\x55\\x2f\\xa1\\xeb\\xa5\\x25\\x35\\xd0\\x1e\\xdf\\x2a\\xdb\\xf3\\x2b\\x42\\x20\\x0e\\x95\\x6a\\x32\\x6a\\x15\\xe4\\x1c\\xe4\\x4c\\x7f\\x75\\x56\\x95\\xdc\\xf2\\xbd\\x58\\xcd\\x8d\\x13\\x63\\xe2\\xef\\x1f\\x0d\\xa6\\xc8\\x8f\\x7f\\x33\\x37\\xbe\\xff\\xa3\\x01\\x34\\xee\\x30\\xbe\\xaa\\xcf\\xd3\\xc1\\x20\\x7a\\xa9\\x2c\\xa6\\x2b\\xf6\\xf8\\xba\\xdc\\x83\\x2d\\x81\\x6c\\xd8\\x4a\\xd0\\x86\\x88\\x68\\x4d\\xf7\\x50\\xa0\\x40\\xd3\\x69\\x53\\xee\\x2c\\xc5\\xf9\\x4f\\xba\\xb0\\x70\\x23\\x1c\\xd1\\x93\\x09\\x9f\\x93\\xfe\\x13\\xc2\\xef\\xd0\\x50\\xe3\\x36\\x94\\x5a\\x1d\\x7d\\xdc\\x6c\\xf7\\x8d\\xc8\\xc7\\xed\\xe3\\xcb\\x21\\x69\\x1e\\x0d\\x30\\x11\\xbc\\x34\\xba\\x83\\x49\\xb2\\x7e\\x8a\\x00\\xd7\\x5a\\x0a\\x4a\\xd4\\x97\\xd0\\x6a\\xe4\\x85\\x80\\xdf\\x8a\\xd6\\xac\\xd8\\x5d\\x91\\xa8\\xd3\\x80\\x56\\x5f\\x3a\\x7c\\xc7\\x63\\x32\\x7a\\x1b\\xc8\\x79\\x1a\\xdf\\x1c\\x75\\x21\\xea\\xc0\\x64\\xe9\\xa4\\xf0\\xb3\\xf8\\x71\\x2a\\x9d\\x6f\\xcc\\x8f\\x5b\\x86\\xd3\\x1f\\xe7\\xfd\\xfc\\x75\\xcf\\x6d\\x1f\\x7e\\xef\\x16\\xc1\\xa2\\xd2\\xf0\\xa5\\x9f\\x06\\x17\\x95\\x31\\xb8\\xf6\\x96\\xce\\x72\\xf6\\x60\\xfc\\x9d\\x15\\xda\\x0b\\xcf\\x4c\\xc8\\xba\\xfb\\x10\\x35\\x38\\x9c\\x89\\x80\\x64\\x85\\xb6\\xef\\x1e\\xa1\\xb3\\xfd\\x97\\x78\\x2e\\x3e\\x75\\xcd\\x79\\xd0\\x61\\x50\\xe7\\x9b\\x4f\\x84\\x4e\\x42\\xd4\\xcf\\xd1\\x1a\\xe0\\xaa\\x09\\x1f\\xa2\\xb6\\x07\\xe9\\x72\\x1a\\x38\\x6e\\x6a\\xdc\\x2c\\x27\\x83\\xbe\\x56\\xf0\\x97\\xec\\x5f\\x2c\\x5c\\x87\\xd7\\xa9\\xe9\\xad\\x33\\xcf\\x0a\\x0b\\xa0\\xd7\\x03\\x3f\\xa3\\x56\\x04\\x2b\\xe5\\x59\\x1f\\x16\\x3f\\x7d\\x24\\x3d\\x35\\xdb\\xc6\\xcd\\x14\\x2a\\xa6\\xdc\\x9a\\x7e\\x77\\xf0\\xf3\\x32\\x47\\x26\\x49\\x95\\x03\\xeb\\x26\\xce\\x8d\\x13\\x13\\x9e\\xb5\\xa5\\x1e\\xb1\\xc9\\x45\\xf7\\x26\\xd4\\x9e\\x1e\\xa3\\x3a\\x6f\\xe7\\xa2\\xda\\xef\\x29\\x85\\xed\\xf3\\xe9\\x68\\xb3\\xae\\x88\\xb7\\x92\\x5f\\x2b\\x73\\xa5\\xf1\\x3a\\xb8\\xdc\\xef\\x01\\xb2\\x81\\x51\\xe3\\xd2\\x5d\\xa7\\xdc\\x1c\\xbb\\xf0\\xa9\\xde\\x78\\x50\\xa1\\x47\\xbd\\x5f\\xbb\\x6a\\x0f\\xe1\\x20\\xdf\\xed\\xaf\\x09\\xc0\\x1b\\x65\\xe7\\x55\\x2f\\xfa\\xea\\x13\\xcd\\x3c\\xc6\\x18\\x1d\\xdb\\xfb\\x6a\\x9e\\x98\\x55\\x5c\\x21\\x24\\x6d\\x69\\x9f\\x29\\x89\\x2c\\x8f\\xfb\\xbe\\x14\\x67\\xfb\\xda\\x47\\x0d\\xab\\xe4\\x60\\xbc\\x84\\x4f\\xf4\\x4c\\x63\\xf5\\x8e\\x12\\x16\\x5b\\xf7\\x00\\xa0\\x4e\\x2f\\xc5\\x19\\xb7\\xaa\\x97\\xc1\\xbd\\x8b\\x41\\xd3\\x43\\xd3\\x2b\\x72\\x89\\xac\\x06\\xfc\\x56\\x29\\xc3\\xf3\\xa1\\x79\\x6a\\x8b\\x0e\\xc8\\xdc\\x31\\xcf\\x64\\x3d\\xeb\\x12\\x6e\\x17\\x12\\x5f\\x0d\\x8c\\x19\\x39\\x0a\\x20\\x4c\\x17\\x0f\\xb9\\x1e\\xe9\\x65\\xc2\\xdd\\xf4\\xfb\\x95\\xf4\\xde\\x4d\\xb6\\xb4\\xa0\\x40\\xfe\\x4a\\x8a\\xf8\\xf3\\xb2\\x9a\\xb3\\xa4\\xb8\\x69\\xf0\\x07\\x28\\xf9\\x90\\x77\\xed\\x01\\x3f\\xd4\\x62\\xe0\\xd9\\x28\\x4e\\xa9\\x13\\xd4\\x9a\\x95\\x8c\\xf8\\x9b\\x24\\x7a\\x57\\x68\\x3f\\xb1\\x6c\\xf9\\x05\\x6c\\x5c\\xc2\\x76\\xda\\xff\\x0b\\x58\\x68\\xb7\\x9b\\xea\\xf6\\xa9\\xab\\x4f\\x21\\x91\\xbb\\x62\\xf2\\xe6\\xfc\\xc5\\x99\\x15\\x11\\x93\\xae\\x86\\x28\\x78\\x8f\\x7b\\x4a\\x8a\\x11\\x1d\\x70\\xeb\\x6d\\xcb\\x3e\\xf1\\xb3\\xd9\\xeb\\x9c\\x27\\xec\\x75\\xdc\\x40\\xf6\\xd5\\x81\\x6b\\x62\\x1f\\x4c\\x32\\xe4\\x70\\x4b\\x37\\xd2\\xf1\\x7d\\x0a\\x47\\xdb\\xfb\\xb3\\x9b\\xcf\\xaf\\xbe\\x74\\x7f\\xa4\\xa4\\x5f\\x27\\xbf\\x15\\xa5\\xa8\\xa4\\x6e\\x49\\x7f\\xe1\\x9a\\xc7\\xfb\\xc8\\xb1\\xe8\\x4a\\x84\\xc1\\xce\\x91\\x60\\xf3\\x2e\\xbe\\xc0\\x09\\x6a\\x6e\\x6b\\x65\\x91\\x72\\xd6\\x84\\x9c\\xa3\\x2c\\xf2\\x67\\x2f\\xfc\\x64\\xe2\\x5c\\xdb\\xc7\\xe6\\x46\\xf0\\xcc\\x88\\x3c\\x04\\xf7\\xee\\x05\\x8c\\x88\\x6e\\xb0\\x4d\\xad\\x95\\xae\\x33\\x67\\xc4\\x2c\\xee\\x6d\\x04\\xb6\\x9a\\x82\\x09\\x91\\xc3\\xb0\\x84\\x56\\x5c\\x61\\x39\\x78\\x7a\\x91\\xa8\\xd2\\xff\\xc9\\x8c\\x13\\xdc\\xeb\\x73\\xfc\\xd1\\x4f\\x43\\x36\\x15\\x8a\\x38\\x7e\\x75\\x84\\x24\\x77\\x5c\\xdd\\xa9\\x77\\x82\\x04\\xc7\\x93\\xf9\\x26\\xdf\\x2a\\x6f\\x92\\x72\\x53\\x2e\\x32\\x95\\x07\\x98\\x4d\\x10\\x02\\x19\\xc6\\x0d\\x4e\\x04\\xdf\\x8c\\xd4\\xe3\\x17\\xf5\\x72\\xef\\x6a\\x56\\xc6\\xad\\xfc\\x2d\\xcf\\x14\\x3d\\x7a\\xac\\x87\\x9d\\xd4\\xc0\\xac\\xd5\\xbe\\xaf\\x1f\\x90\\x7e\\x97\\x67\\x14\\xc6\\x62\\xb4\\xc1\\x30\\xf8\\xfb\\x2b\\x3e\\x06\\x4a\\xe6\\xc1\\x35\\x46\\x2c\\x2f\\x5a\\x6e\\x03\\x27\\x7e\\x76\\x2b\\x39\\xfd\\x46\\xf7\\x79\\xf5\\x3b\\x82\\x8e\\x4f\\xa3\\x9e\\x44\\x53\\xc8\\xd9\\xe6\\xe3\\x0b\\x43\\x02\\xc5\\xab\\x97\\x8e\\x64\\x9c\\x7b\\x94\\x32\\x94\\x6e\\x57\\x1b\\x86\\x06\\x1d\\x45\\x96\\x9c\\x13\\x50\\xaf\\x3a\\x54\\xaa\\x71\\x7b\\x57\\xfa\\xb8\\xcc\\xac\\x8e\\x12\\xe9\\xc7\\x07\\x5c\\x5f\\x00\\xf0\\xb4\\x39\\x4c\\xf2\\xa3\\xc1\\x4a\\xbf\\x87\\x32\\xb6\\xd1\\x99\\x4c\\xcd\\x9b\\x2d\\xf9\\x6a\\x2b\\xeb\\x8d\\x55\\x2d\\xe1\\x5c\\x52\\xc1\\x24\\xfe\\x02\\x1a\\x8c\\x74\\x8e\\x04\\x6e\\x58\\x73\\xde\\x56\\x50\\x54\\xc3\\x75\\x78\\x8e\\xe3\\x42\\xd0\\x87\\xd1\\x6d\\x47\\x2e\\x62\\xf1\\xdd\\x43\\xb5\\xc8\\x8d\\xdc\\xf6\\xb2\\x0a\\x06\\xfb\\x01\\xad\\x11\\x0a\\x50\\x9d\\xca\\x73\\xa6\\x68\\x38\\xfe\\x3d\\x40\\x70\\x1b\\xe0\\x5c\\x0a\\xb5\\x59\\x5e\\xfb\\x42\\xb2\\xa2\\xf4\\xf5\\x23\\x20\\xfb\\xa3\\xfd\\xdb\\x1d\\x2f\\xda\\x67\\x8e\\xf8\\xbc\\xc4\\xbd\\x31\\x4e\\x81\\xe8\\x62\\xd0\\xd2\\x96\\x09\\xa3\\x21\\x56\\x64\\x6a\\xb9\\xc4\\xe7\\x7b\\x82\\xb8\\x79\\xdb\\x9e\\x14\\x1d\\xda\\x89\\x5a\\x47\\xfa\\xa8\\xdd\\x3d\\xa1\\xd4\\x9a\\x03\\x05\\x87\\xe4\\x7a\\xde\\x03\\x54\\xab\\xf7\\x40\\x9f\\x77\\x50\\xf5\\x3e\\xca\\x08\\x77\\x47\\x44\\xe3\\x3b\\x39\\xec\\x99\\xaf\\xc7\\x15\\x42\\x0e\\x1d\\x80\\x72\\x3a\\x3b\\x7f\\xa3\\xca\\x31\\xa0\\x73\\x68\\xcf\\xf3\\x91\\x54\\xf9\\x2d\\xdc\\x62\\x4f\\xf6\\xc4\\xa4\\x4c\\x82\\xa3\\x90\\x93\\xba\\x2e\\x96\\x7b\\x3a\\x6d\\xc2\\x67\\x78\\x28\\x80\\x7f\\x76\\xbd\\xff\\x2a\\xc3\\xb5\\x42\\xce\\x95\\xb2\\x87\\xef\\x73\\x70\\x7b\\xfe\\x14\\xc3\\x6f\\x0d\\x70\\xed\\xd0\\xd6\\x2b\\xe2\\x52\\xe6\\x8b\\x52\\x5d\\xf1\\x8d\\x4e\\x25\\x4f\\x69\\xc2\\x6f\\x93\\x35\\x88\\xb6\\x87\\x63\\x17\\x23\\x1b\\x8b\\x72\\x7f\\x77\\x07\\x69\\xf8\\x6a\\x80\\xc3\\xa0\\x33\\x8e\\x97\\xea\\xb1\\x99\\x0e\\xfc\\x8a\\xfa\\x3a\\x1a\\xb8\\x04\\x21\\xed\\x7e\\x9e\\x97\\x8c\\x21\\x9d\\x9f\\x97\\x97\\xf9\\x30\\x60\\x85\\xd4\\x08\\x32\\x74\\x86\\x33\\x55\\x06\\x0a\\x63\\xec\\xc6\\x78\\x2f\\x91\\xa5\\x25\\x89\\x59\\x5c\\x4d\\xe1\\x65\\xde\\x64\\x67\\x0c\\x91\\xce\\x32\\x03\\x1f\\x2f\\xfb\\x27\\x2a\\xe6\\xac\\x58\\xf2\\x15\\x1a\\x38\\xe1\\x84\\x7b\\x8f\\x01\\x4e\\x4b\\xe4\\xb1\\x8e\\x32\\x53\\x9c\\xc4\\xab\\x42\\x42\\x6b\\xfa\\xc4\\x72\\x04\\xfb\\x5c\\xe3\\x84\\xca\\xa6\\x77\\x1c\\xdb\\xec\\xa5\\x52\\x8d\\x93\\xa0\\x8f\\xdb\\xcc\\xc8\\xb0\\x8b\\x1c\\x07\\x90\\x78\\x68\\x3c\\x59\\x8c\\x2a\\xed\\x4b\\x77\\x42\\xc5\\x46\\x5b\\x7a\\x82\\xe9\\x58\\xa5\\xf9\\x18\\x23\\x3a\\x22\\x87\\xba\\x84\\xef\\x81\\xb0\\x7a\\x9d\\x7a\\x47\\xee\\xd7\\x6d\\x9f\\x58\\x47\\x96\\x58\\xc8\\xa6\\x72\\xbf\\x7b\\x9d\\xc8\\x30\\xbd\\xde\\xf7\\xed\\x2c\\xa9\\xb6\\x62\\xf8\\x5a\\x34\\xca\\xa3\\xc5\\xc9\\x35\\xe6\\x86\\x5b\\xd9\\xbe\\x28\\x32\\x32\\xe1\\xdf\\xba\\x79\\x88\\x88\\xd2\\xf9\\x54\\x3b\\x73\\xc4\\x5b\\x6d\\xe1\\x30\\xa6\\xf5\\x96\\xab\\x55\\xe2\\x74\\xf8\\x97\\xae\\x71\\xf1\\xfe\\x3d\\x40\\x5e\\x44\\xe4\\xee\\xf1\\xdb\\x34\\x31\\xb9\\x98\\x46\\x7a\\x53\\x86\\x71\\x6f\\x96\\x25\\x41\\x0f\\x52\\x5e\\xf2\\xa7\\x84\\x1e\\x39\\xf1\\x3a\\x77\\x25\\x1c\\x9a\\xdd\\x45\\x8b\\xba\\x98\\xcb\\x8a\\x5d\\x22\\xea\\x6b\\x16\\x27\\x84\\x47\\xfd\\x81\\x31\\xf8\\x05\\x36\\x1a\\x38\\x13\\x42\\x9b\\xe4\\xa4\\xf7\\xac\\x52\\x45\\x08\\xdb\\x43\\x79\\x41\\x47\\xea\\xbf\\x26\\x00\\xbf\\xee\\x2c\\x9a\\x3b\\xa1\\xdb\\xfd\\xde\\xe0\\x3d\\x39\\xa8\\xde\\xac\\x84\\xbe\\xa3\\xf0\\xaf\\x77\\x5d\\x36\\x6f\\xcb\\x06\\xde\\x3c\\x1b\\x56\\xcb\\x19\\x29\\xcb\\x5f\\xf0\\x97\\x2b\\x21\\xa5\\x58\\x34\\xa8\\xf2\\x27\\x23\\x01\\x36\\x48\\x04\\x12\\xe4\\x83\\x08\\xaf\\xe1\\x10\\xdf\\x82\\x0e\\xde\\xb9\\xad\\xf4\\x0e\\x4b\\xc5\\xf7\\xcf\\xf0\\xf0\\x4f\\x56\\x04\\x5f\\x67\\x29\\x74\\xb7\\xd6\\x94\\xaa\\xa2\\xe1\\x27\\xb5\\x26\\xb6\\x35\\xfd\\x30\\xcb\\x26\\xe7\\x67\\x6e\\x02\\xd9\\x16\\x82\\xa0\\x7d\\x0f\\x5d\\xf1\\x12\\xe8\\xe2\\xab\\xaf\\xd4\\x0a\\x94\\x07\\x6c\\xa5\\x77\\xfa\\xe3\\x67\\xcf\\xb7\\xed\\x03\\xd8\\x95\\x48\\xf8\\x45\\xac\\x24\\x71\\x05\\x81\\x1b\\xf1\\x19\\x39\\x00\\x6b\\x2b\\xe6\\x31\\x1e\\x66\\x27\\xf0\\x84\\x32\\xa3\\x0c\\x1a\\xab\\x34\\x3b\\x4e\\x30\\x8e\\x66\\xe1\\xe2\\xef\\xcd\\xb6\\x84\\x68\\x49\\x3e\\xf6\\xf8\\x13\\xa4\\xf2\\x55\\x1a\\x39\\x76\\x83\\x97\\x20\\x10\\xe6\\x02\\xbd\\x84\\x13\\x89\\x71\\x82\\x05\\xff\\x67\\x6b\\x22\\xfa\\xbe\\x77\\xf5\\xce\\xf9\\xb6\\xe4\\xeb\\xdf\\x6b\\xf1\\x68\\x77\\xb1\\x2e\\xa5\\x42\\x1a\\x46\\x7b\\x26\\xa0\\x88\\xc1\\x1c\\xcf\\x46\\x63\\x83\\xc5\\xfe\\x05\\xbf\\xed\\x7e\\x9c\\x64\\x4d\\xa5\\x71\\x46\\xe0\\x10\\x3d\\x8d\\xcd\\x04\\xd9\\x7f\\x03\\x3d\\x1f\\x3c\\xb7\\x5b\\xce\\xfc\\xf1\\x15\\x77\\x85\\x0e\\xd6\\x93\\xd0\\x3f\\x97\\x58\\xec\\x17\\x90\\x93\\xed\\x95\\x54\\xe5\\x5a\\xa6\\x0d\\x00\\xc0\\xbe\\xd1\\x49\\x88\\xbf\\x28\\x24\\xf2\\xc2\\x23\\xdc\\xc7\\x5b\\x3c\\xa7\\x2e\\x2e\\xd5\\xd8\\x0a\\x78\\x44\\x6c\\x6b\\xf3\\x77\\x37\\x45\\x71\\x85\\xa9\\x42\\xa9\\xde\\xa8\\xfb\\xa3\\xad\\x32\\x51\\xfc\\x56\\x21\\x97\\x24\\x78\\xea\\xb4\\x6e\\xf2\\xad\\x02\\x2a\\x60\\xf0\\xeb\\x77\\x13\\xc6\\xe9\\x9f\\xf5\\xae\\x6e\\x2b\\x34\\xc8\\x7e\\xd0\\xb7\\x10\\x5c\\xe9\\x6d\\x0d\\x1c\\xd5\\x7b\\x20\\xea\\xd2\\x94\\x09\\x9a\\xae\\x4a\\x27\\x97\\x93\\x3f\\x67\\xc1\\xd4\\x95\\x03\\xc2\\xf2\\x98\\x62\\xb3\\x98\\xb7\\x58\\xee\\xa4\\xeb\\xbb\\xc3\\x99\\xbd\\x15\\x35\\x4f\\x36\\xec\\xab\\xfa\\xf5\\x7d\\xb6\\x2d\\xfe\\x4b\\x80\\xbb\\xf6\\x2d\\xf6\\x06\\x5a\\x42\\xa0\\x18\\x37\\x98\\x5f\\x9d\\x63\\x4a\\xb0\\x14\\x9d\\xd9\\x2e\\xc3\\x27\\x43\\xa4\\xf7\\x55\\x06\\x24\\x53\\x3a\\x23\\x07\\x50\\x17\\xc4\\x44\\xa8\\x94\\xb1\\x38\\x48\\xc4\\x94\\x4e\\x67\\x02\\x59\\x94\\x69\\xd5\\x68\\x3f\\xb5\\xc5\\xa3\\xe5\\x15\\x8d\\xc6\\x04\\xe8\\xc8\\x5e\\x7f\\x69\\x4b\\x65\\xdd\\xda\\xca\\xd8\\xa0\\x96\\xb6\\xb9\\xd8\\xc6\\x2e\\xa5\\x08\\x73\\x02\\x27\\x66\\xaf\\x90\\x73\\xa4\\x14\\xf3\\x29\\x75\\xaa\\xf6\\x69\\xf5\\x75\\x6e\\x99\\xde\\x47\\xc6\\xa7\\x59\\xb6\\xd7\\x93\\xc4\\xd2\\xf8\\x87\\x81\\x74\\xb7\\x0a\\xce\\xa4\\x85\\x7a\\x07\\xe5\\x94\\x5d\\xa5\\xa4\\xfd\\xaf\\x20\\xeb\\xd7\\x18\\x9d\\xfc\\x8a\\x0b\\x72\\x5c\\x3d\\x24\\x50\\xe6\\xc5\\xd0\\x5b\\xd9\\x99\\xed\\x53\\xd3\\xd8\\xa3\\x0e\\x85\\x92\\x2a\\x5b\\xc2\\x14\\x60\\x26\\x0c\\xf3\\x00\\xac\\xd6\\x00\\x3a\\xe1\\x5a\\x81\\x49\\x35\\x1c\\x4c\\xcc\\x20\\x32\\x34\\xe7\\xcc\\x5a\\x5f\\x78\\x8d\\x04\\xc3\\x24\\x7d\\x28\\x8b\\xff\\x6a\\xea\\x84\\x29\\x42\\xc9\\xf8\\xb5\\x23\\x42\\x9b\\xcf\\x4f\\x9f\\xf7\\x3b\\x47\\xa3\\x46\\x42\\x9d\\xd2\\x2a\\x95\\x8d\\xf3\\x98\\x3c\\x13\\xdc\\xba\\x3e\\x4e\\x12\\xf9\\xf5\\x8a\\x20\\xb8\\xd1\\xfb\\xe6\\x8b\\x26\\xf8\\xe4\\x03\\xf0\\x71\\x67\\xb1\\xd1\\x9c\\x56\\x66\\x6f\\xe6\\x2b\\x38\\x44\\xad\\x29\\xcd\\x2a\\x9c\\x9a\\x7e\\xfb\\x7d\\x69\\x0d\\xeb\\x66\\x42\\xe3\\x9f\\xfa\\x4d\\x02\\xf1\\x88\\xa4\\x8e\\x60\\x2f\\x01\\xc6\\xa2\\x04\\xee\\x66\\x38\\x46\\x61\\x3a\\xe5\\x07\\x12\\x05\\xbb\\x94\\xd0\\x41\\xc0\\x67\\x3d\\x51\\x8a\\xe9\\xdb\\xa1\\xce\\x89\\xbf\\x65\\xfa\\xe3\\x2d\\xba\\x8e\\x91\\x24\\xaa\\x1e\\x86\\xba\\x09\\xf7\\x3c\\x88\\xc4\\x3b\\xd7\\xd2\\xc3\\x37\\x50\\x67\\xad\\xec\\x71\\xda\\x3a\\xaa\\x0c\\x62\\xd7\\x1f\\x65\\x47\\x02\\x79\\x06\\x97\\xe3\\x59\\x23\\xac\\xf2\\xe7\\xc6\\xda\\x32\\xdb\\x75\\x3d\\x88\\xdc\\x2e\\xb6\\x15\\x08\\x31\\x74\\x4e\\x7d\\xbe\\xea\\x43\\x54\\xce\\x87\\x42\\x84\\x1c\\xf3\\x59\\xeb\\xc9\\xe1\\x14\\xc2\\x00\\xb8\\x11\\xa5\\xf3\\x0d\\x3d\\x54\\xab\\x4a\\x24\\xb6\\xe3\\x3b\\xc8\\x14\\xea\\x9c\\x7f\\xf5\\x21\\x19\\x13\\xc3\\xde\\xe4\\xdf\\x8e\\x01\\x09\\xfd\\xec\\x8c\\x1c\\xa0\\x33\\xcf\\x9a\\xa2\\x42\\x93\\x42\\x52\\xf2\\x22\\x8c\\x17\\x19\\x6c\\xc2\\x70\\x9a\\xb3\\xf0\\x94\\xca\\xde\\xc0\\x71\\x72\\x5d\\xfc\\xcb\\x1a\\x65\\xa4\\x28\\x56\\xa8\\xc9\\xe9\\x3d\\xe0\\x82\\xac\\x86\\x6a\\x19\\x34\\x45\\xa2\\xfa\\xa1\\xa6\\xbc\\xdc\\xb3\\x6c\\x00\\xd3\\x89\\xe7\\x1f\\x1b\\xcc\\x55\\x2a\\x21\\x6d\\x80\\xb3\\x74\\x2b\\x59\\x4d\\x46\\x88\\x68\\xbe\\x84\\xce\\xd6\\x52\\x43\\x49\\x9b\\x07\\x38\\x19\\x04\\x14\\xcf\\x58\\x02\\xb6\\xb0\\x35\\x3b\\x16\\x05\\x0f\\xb1\\x9f\\x78\\xfa\\x61\\x31\\xbb\\x79\\x8f\\x60\\xfb\\x6f\\x6e\\x31\\xd1\\xa1\\x0b\\x4d\\x17\\xd7\\x66\\xb9\\x77\\x1b\\x12\\x7d\\xe4\\xe2\\xd5\\x56\\x8b\\x02\\x4b\\xa9\\x0f\\x8d\\x89\\x22\\xfb\\x6c\\x9f\\x6e\\x25\\xec\\x6a\\x2e\\x94\\x7e\\xcc\\x16\\xd5\\xd6\\xe0\\xf7\\x0b\\x51\\x73\\xe3\\xc4\\xac\\x5f\\x94\\x12\\x82\\xba\\xab\\x3d\\x25\\xca\\xea\\xfc\\xd3\\xb3\\xc1\\xf6\\x32\\x14\\xbd\\x98\\xab\\x54\\x85\\x6e\\xde\\x72\\x2a\\xbd\\x82\\x1e\\xdf\\x8d\\x9a\\xe9\\x95\\xff\\x59\\xd0\\xd6\\x9d\\x4f\\x9d\\xbf\\xb8\\x07\\x0e\\x75\\x02\\x2b\\x37\\xe9\\xd4\\xf1\\xd0\\xf7\\x80\\xca\\x52\\xf3\\x11\\xb9\\x62\\xd9\\xcb\\x72\\xf7\\xd4\\xc3\\xe4\\xe0\\x49\\xee\\xbd\\x00\\xfe\\x05\\x5c\\x33\\xf5\\x27\\x14\\x84\\x5e\\x14\\x20\\x70\\x58\\x83\\xf0\\xb4\\xa0\\x22\\x4f\\xe6\\x1b\\x6e\\xe6\\x9d\\x78\\x67\\x4b\\xfc\\xe0\\xdd\\x57\\x2f\\x54\\x40\\xc1\\x46\\xce\\xb1\\x12\\xb6\\xc4\\xf1\\x16\\x3c\\x21\\x9b\\x16\\xcb\\x02\\x1d\\x67\\xe0\\xe6\\xf9\\x69\\xb0\\xed\\x93\\xf9\\x67\\x35\\xbb\\x49\\xa0\\x9f\\xf6\\x79\\xf3\\xfe\\x7e\\x9b\\xab\\x3c\\xd2\\xcb\\x42\\x9c\\x98\\x25\\x6e\\xc1\\x9f\\xa1\\x88\\x87\\x4d\\x59\\x83\\x52\\xe2\\xab\\x7f\\x32\\x19\\xd7\\xbe\\xe4\\x65\\x6e\\x21\\x59\\xa5\\xc6\\x3a\\x07\\xbd\\xef\\x18\\xd0\\x16\\x45\\xfb\\x0b\\x33\\x74\\x51\\xe9\\x3f\\x76\\xc5\\x8b\\xd2\\x2d\\x09\\xf5\\x90\\xdf\\x5d\\xa4\\x3e\\x80\\xe8\\xd7\\x69\\x25\\xa4\\x8a\\x7e\\x51\\xdd\\x84\\x8f\\x0c\\x05\\x79\\x3a\\xa9\\x05\\x4d\\x49\\xa7\\xd9\\xae\\xf8\\x6b\\x9d\\x7e\\x39\\xc5\\x63\\x6f\\x4f\\x59\\xad\\x6b\\x19\\x96\\xe0\\x8d\\x03\\xd7\\xf0\\xcd\\xad\\x17\\x7b\\x68\\xd8\\xe8\\x50\\x8d\\x61\\xe9\\xa0\\x10\\x35\\xf3\\x98\\x42\\xea\\x06\\xa7\\xe9\\x89\\x35\\x3d\\xc9\\x76\\x54\\xcf\\xbe\\x94\\xb9\\xb5\\x7f\\xb0\\x74\\x4d\\x80\\x68\\xca\\x50\\x09\\x22\\x28\\x6c\\x6e\\x16\\x4e\\x8e\\x7e\\xa3\\x39\\x96\\x5d\\x56\\xe8\\xc9\\xa4\\x0a\\x1a\\xb6\\x5b\\x12\\x38\\xc7\\xeb\\x61\\x70\\xcb\\x14\\x3f\\xdd\\x70\\x68\\xfb\\xe6\\xd7\\x8c\\xf0\\xb0\\xe5\\xae\\xf8\\xca\\xd1\\x92\\x91\\x42\\xbe\\x82\\xd4\\xd1\\xe1\\xd7\\x67\\x7e\\xba\\xe4\\xe0\\xf8\\x0e\\xdb\\xad\\x95\\xb7\\x33\\xcc\\xb9\\xba\\xdc\\x67\\xe3\\x2c\\x84\\xf5\\x71\\x97\\xe6\\x60\\x06\\x71\\x0d\\xb0\\x29\\x2a\\x71\\x8b\\x38\\xb9\\x5c\\x9f\\x37\\xed\\x1d\\xd3\\x72\\xc9\\x7a\\xf2\\xb3\\x11\\x82\\x10\\x05\\xc6\\x4e\\xa9\\xb4\\x71\\x9b\\x4c\\x8e\\xd8\\x5b\\x3f\\xa1\\xa2\\x07\\xee\\xdf\\x87\\x4b\\x0b\\xca\\xcc\\xb5\\x93\\x71\\x31\\xe7\\x5a\\x87\\x8b\\xbd\\x03\\x21\\x68\\x91\\x51\\xa1\\xce\\xbb\\x56\\x4f\\xb6\\xf3\\x12\\x6a\\x96\\x3a\\x66\\x8b\\x12\\xa5\\xdd\\x53\\xc4\\xfb\\xc6\\xcf\\x11\\x0b\\xcf\\x92\\x0b\\xca\\x30\\x61\\xd8\\x80\\x8f\\x49\\xce\\xe9\\xd3\\x57\\x51\\x41\\x45\\x46\\x46\\x22\\xbb\\xcc\\x24\\xf0\\x10\\xf7\\x04\\x49\\x51\\x84\\xcc\\x9c\\x04\\x7b\\xd1\\xbe\\x62\\xc8\\xf2\\x2c\\x3b\\x67\\xfb\\xcb\\xe3\\x71\\x8b\\xc3\\x85\\x66\\x1b\\x38\\x2e\\x76\\x95\\x4a\\x8f\\x0c\\x78\\xb6\\xf8\\x2d\\x66\\xa3\\x58\\xdc\\x34\\x86\\x99\\xaf\\x66\\xf0\\xbe\\x8a\\x1c\\xf0\\x68\\xda\\x37\\x26\\xfe\\x38\\x3f\\x29\\x04\\x55\\x49\\x3a\\xc7\\x52\\x5c\\x00\\x13\\xad\\x56\\xe8\\x69\\x63\\x2c\\x76\\x71\\x62\\x6b\\xb6\\xf9\\xc1\\xc1\\xbe\\xe5\\x56\\x2a\\x32\\x6c\\xf7\\xe3\\xe7\\x1d\\xe9\\x32\\x69\\xd7\\xf0\\xdb\\xf6\\x10\\x17\\x37\\x9a\\x2c\\x97\\x5b\\x5f\\xeb\\xee\\xc0\\xcb\\x7d\\xc1\\xd0\\x4c\\xe0\\xcc\\xfe\\x1e\\x88\\xf4\\x1d\\x55\\x20\\x35\\xe6\\x29\\xc5\\xbc\\x4e\\xc9\\xcb\\x0a\\x1e\\x7a\\x26\\x70\\xe7\\xbb\\x20\\x9c\\x53\\x06\\x1d\\xee\\x73\\xb0\\x6a\\x69\\x6c\\x6b\\x6d\\xd6\\xa0\\x44\\x4a\\xf3\\xf3\\x12\\xf3\\x13\\xcb\\x4b\\xa5\\xfd\\xf4\\xc4\\x9e\\x28\\x7a\\xe0\\xd2\\xf0\\x66\\x20\\x85\\xd5\\x53\\x87\\x86\\x02\\xb4\\x83\\x89\\x74\\x20\\x31\\x89\\x72\\x3a\\x5a\\x22\\x07\\x29\\xe1\\xab\\x4f\\xac\\x7f\\x23\\xce\\x39\\x9c\\xf5\\x48\\x24\\xd1\\xb3\\x17\\xf3\\x35\\x31\\x30\\x62\\x4b\\x7e\\xee\\x29\\x3a\\xe8\\xd2\\x25\\x8c\\x76\\x64\\x2c\\x1b\\x7d\\x12\\xf9\\xb3\\x19\\xc5\\x6c\\x84\\x21\\x79\\xbe\\x98\\xb7\\x6f\\xa2\\xd6\\xb4\\xc6\\x73\\xba\\x50\\xbb\\x46\\x3d\\xe7\\x89\\xfb\\x53\\xf5\\x1b\\x68\\x4b\\xe1\\xe9\\xce\\xcd\\x8d\\xc5\\x39\\x1c\\xe2\\x89\\x92\\x1e\\x50\\x7d\\xda\\x3f\\xe9\\xd8\\x93\\x72\\x70\\xc2\\x74\\x50\\x40\\xff\\x94\\x86\\x2e\\x7a\\x43\\xf7\\x93\\x11\\x74\\x78\\x98\\x91\\xaf\\xd3\\x72\\x26\\x5d\\xc5\\xcf\\x71\\x03\\xc2\\x2e\\x8c\\x5a\\xe7\\x71\\x9f\\xf0\\xca\\xa5\\x45\\x1b\\x16\\x2f\\xaf\\x28\\x48\\x55\\xd2\\x99\\xac\\x3d\\x23\\x62\\x7d\\x7d\\x84\\x64\\x9d\\x26\\x37\\xde\\x69\\x6c\\xac\\x2e\\xc0\\x8a\\x27\\xc5\\x48\\xf8\\xd8\\x43\\x01\\x42\\x52\\x05\\x81\\x85\\x8c\\x95\\x5f\\xb5\\x2d\\x08\\x8d\\x1a\\x98\\xbb\\xf5\\xd3\\xdd\\x5c\\x6e\\xe7\\xed\\xeb\\x4b\\x3d\\x3a\\x35\\xba\\x07\\x20\\x6c\\x8d\\x5d\\xf5\\x5f\\x9d\\xd2\\x31\\x7b\\xb9\\x60\\x3b\\xc1\\x93\\xb8\\x23\\x0c\\xdc\\x7b\\x7a\\x35\\xcc\\x69\\x31\\x72\\x2c\\x02\\x4f\\xb1\\x30\\x53\\xb8\\x13\\xd1\\x25\\x33\\xc3\\x1b\\x59\\x25\\xc9\\x6e\\xde\\x9c\\x89\\xf8\\xc4\\x74\\x92\\x3e\\xe0\\x35\\x98\\xe0\\x2d\\x79\\xa5\\xb1\\x3d\\x23\\x63\\xc8\\xc1\\xb1\\x57\\x3b\\xb1\\xc8\\x30\\x43\\x7b\\xe6\\x3e\\x77\\x1a\\x3a\\x08\\x73\\x05\\xad\\xb5\\x20\\x4a\\xaa\\x11\\xbe\\xf1\\x78\\x84\\x75\\x11\\x26\\x9d\\xe6\\xf9\\xf6\\xbf\\xb1\\xbc\\xcc\\x21\\x7a\\x05\\xc7\\xfe\\x87\\xfa\\x0e\\x46\\x49\\xbe\\x47\\xba\\x97\\xdb\\x97\\x6d\\x6c\\x39\\xb6\\x54\\x13\\xcd\\x8d\\x11\\xe9\\x4d\\x36\\x94\\xe7\\x5d\\xcb\\x4a\\x9c\\xf9\\x8b\\x7c\\x65\\x47\\xa3\\x38\\x8b\\xb8\\xcb\\xdb\\xca\\x02\\x74\\x79\\xb9\\xba\\xe3\\xe6\\x92\\x23\\x9c\\x53\\x02\\x55\\x17\\x3d\\xe9\\xe2\\x8b\\x64\\xe0\\x9a\\xea\\xaf\\xa6\\xf1\\x48\\x84\\xc8\\x52\\x6b\\x30\\x74\\x79\\x8b\\x4e\\x2a\\x5d\\xc3\\x89\\x67\\x05\\x71\\xe1\\xf8\\xae\\x22\\x34\\x70\\xcd\\x04\\x9b\\xff\\x55\\x61\\x2f\\xda\\x15\\x6c\\xf8\\xcb\\xc7\\x83\\xf2\\xaa\\xbf\\xc7\\xaa\\x32\\x1e\\x98\\x5b\\xfc\\xb2\\x10\\x21\\x13\\x9e\\x56\\x93\\xb4\\x1f\\x96\\xa2\\xda\\x9b\\xb5\\x17\\xfb\\xb3\\x1e\\xf5\\x73\\x41\\xa0\\x35\\x46\\xae\\x51\\x81\\x69\\x77\\xad\\xdd\\x39\\xd6\\x3b\\x62\\xb1\\x37\\x15\\x44\\xef\\xdc\\x19\\xb2\\x79\\x3e\\x3c\\x87\\xe5\\xae\\x13\\x48\\xb7\\x1f\\x5b\\x0a\\x55\\x1e\\xc4\\xb2\\xa9\\x9a\\x89\\x70\\xec\\xc4\\x93\\x98\\x06\\x5b\\xd0\\x62\\x19\\x81\\xd4\\x86\\x25\\x6d\\x6d\\xfe\\x5a\\xd1\\x27\\xec\\xf4\\x7e\\x63\\xfc\\x54\\x35\\xdd\\xcb\\x4c\\xb8\\x5c\\x62\\x11\\x36\\x8a\\x38\\x64\\x14\\x44\\xb1\\xee\\x5f\\x3d\\x57\\x77\\xfa\\xc8\\xf1\\x65\\x74\\x44\\x73\\x98\\xfa\\x66\\x31\\xdf\\xdf\\xac\\x33\\x7d\\x45\\x26\\xcf\\x21\\xf8\\x59\\xeb\\x2e\\xba\\x33\\xdc\\xfd\\x1e\\x20\\x2e\\x9e\\x69\\x38\\x21\\x2e\\xbe\\x68\\x4e\\xf6\\xa9\\x2a\\xfe\\x94\\xf3\\xcb\\x64\\xdb\\x13\\x0e\\x11\\x59\\xd0\\x1d\\xe8\\x22\\x44\\x51\\xe8\\x94\\xea\\x3e\\xe1\\x89\\xfe\\xf1\\x58\\x97\\x99\\x34\\x17\\x74\\x5b\\x39\\x1b\\xc8\\xe4\\x6f\\x9c\\xa5\\xd1\\xf6\\x9b\\xaa\\xd6\\x82\\x4e\\x1e\\x2b\\xca\\x05\\xa2\\xd6\\x2a\\x84\\xcc\\x15\\x47\\x51\\x04\\xb2\\xa1\\xfc\\x17\\x6b\\x47\\xdb\\xbe\\xbd\\x63\\x59\\x4d\\xc2\\x48\\x44\\x28\\x97\\x16\\x09\\xa6\\x37\\x37\\xed\\x8e\\x63\\x91\\xb9\\x46\\x1c\\x8e\\xf4\\xc2\\x21\\x4d\\x48\\xcf\\x64\\xcc\\xc7\\x58\\xa4\\x49\\x72\\xae\\x41\\x14\\x0d\\x7a\\x9e\\xce\\x58\\x6b\\x19\\x32\\x56\\xcd\\x2f\\x05\\x1d\\xe7\\x6c\\x29\\x5b\\x37\\x95\\x2c\\xb3\\xfa\\xd3\\x9d\\x39\\xfb\\x3f\\x0e\\xc9\\x56\\x66\\x76\\x36\\x3c\\xc8\\x34\\x9e\\xe8\\xec\\xe3\\xee\\x67\\x73\\xa8\\xa9\\x9e\\x0e\\xe1\\xc4\\x8c\\x43\\xbf\\xa9\\xc8\\x51\\xe8\\x6b\\xea\\x8d\\x5a\\xa5\\x7a\\x03\\xe3\\x0b\\x9e\\xcb\\x97\\xac\\x9c\\xb6\\xef\\x93\\x82\\x3c\\xa8\\xfb\\x5a\\x73\\x44\\xb5\\xc9\\x16\\xc5\\xf7\\x2d\\x44\\xe3\\x9b\\xd1\\xe5\\x56\\xe7\\x37\\x0f\\x38\\x76\\xd5\\xb1\\x85\\x41\\xdd\\x0c\\x8f\\x65\\x47\\x77\\x4b\\x02\\x75\\x12\\x79\\xba\\xc8\\xa4\\x38\\xe4\\x8d\\x01\\xa1\\x0b\\x1e\\x02\\x40\\x79\\x0e\\x4e\\x25\\x4a\\xb1\\x30\\x3c\\xd4\\xab\\xce\\x49\\xd7\\x7d\\xf7\\x0e\\xe6\\x3e\\x4e\\x7a\\x38\\x47\\x01\\xaa\\x2f\\xbb\\xb5\\xeb\\x6a\\x69\\x26\\xdf\\x33\\xa1\\x6b\\x6b\\x0d\\xf5\\x9a\\x13\\x84\\x1d\\xdf\\x0a\\x27\\x1e\\x1a\\x25\\xc6\\x48\\xb1\\x41\\x33\\x74\\x67\\x6a\\x3c\\x7e\\xff\\xc1\\x95\\xa5\\x1c\\xfb\\x38\\x90\\x45\\xc7\\x76\\xcd\\xcc\\x34\\xdc\\x6d\\x77\\xf5\\x87\\x5c\\xf5\\xf3\\x5c\\x03\\xda\\xf1\\xa1\\x9c\\xde\\x16\\x00\\x3a\\x8c\\xe9\\xf4\\x2b\\x59\\x32\\x5e\\xf9\\x90\\x89\\xe5\\x69\\x0e\\x65\\xcd\\xbf\\x84\\x43\\xe8\\xd1\\xc6\\x28\\x02\\xf5\\xb9\\xea\\xcd\\x19\\xde\\x8d\\x94\\x35\\x6d\\xb3\\xe0\\x3e\\x17\\xa5\\x4b\\xcc\\x64\\x13\\x14\\x45\\xc8\\x2b\\x42\\xf1\\xc5\\xc9\\x6e\\x12\\x09\\x92\\x5c\\xba\\xaf\\xc4\\xed\\x18\\x61\\xf5\\x5a\\x70\\x9e\\xd7\\x6e\\xd5\\x2b\\xa1\\x17\\x0c\\xdc\\x4b\\xfe\\x04\\x95\\x52\\xf5\\x9b\\x7e\\xdc\\xc3\\x5a\\x55\\xa8\\xb8\\xd0\\xf5\\x35\\x98\\x58\\xcc\\x28\\x8a\\xb1\\xa4\\x4d\\x3e\\xde\\xd5\\x6b\\xa2\\x81\\x65\\x57\\xa8\\xda\\x48\\x61\\x50\\x91\\x97\\xe3\\xd4\\x78\\xcc\\x30\\xef\\x23\\x52\\x02\\x19\\x03\\xa0\\x4c\\x49\\x0e\\xd6\\x1e\\xa3\\x9e\\xe6\\x94\\x61\\xf2\\x88\\xb9\\x48\\x19\\x08\\x5a\\x6e\\xf8\\x92\\x09\\x8c\\x3c\\x6a\\x71\\x54\\xfb\\xfd\\x36\\xe2\\xa5\\xb3\\x8f\\x44\\x96\\xfe\\xcb\\x23\\x70\\x04\\xb8\\x2b\\xe0\\xb0\\xa2\\x05\\x35\\x52\\x7b\\x7a\\xe4\\xab\\xb0\\xd4\\xaf\\xc0\\xc6\\xc2\\x4f\\x91\\x34\\xd2\\x73\\x79\\x43\\xbb\\x75\\xf9\\xe4\\xe5\\x71\\xd7\\xdb\\x0a\\x4a\\x7d\\xf2\\xf7\\xa0\\xd1\\x1e\\xe4\\x25\\x1c\\x52\\x72\\x47\\x6c\\x47\\xe0\\xbd\\x31\\xfe\\x4a\\x97\\xc7\\x62\\xac\\x99\\x15\\xb1\\x6b\\x92\\x6a\\x22\\x77\\xca\\x3b\\x66\\xef\\x8c\\x17\\xfd\\xde\\xc8\\x67\\x96\\xca\\x84\\x6f\\x58\\x7d\\xdf\\xa4\\xfd\\xdf\\xd7\\x55\\x7c\\x98\\x06\\xc7\\xe5\\xe7\\x2e\\x8d\\x1f\\x98\\x44\\x48\\xf8\\xa8\\x99\\xa7\\x0d\\x09\\xcc\\x53\\x5e\\x4b\\xaa\\xfa\\xee\\xb8\\x74\\x53\\x1d\\x75\\x2d\\x6d\\xd0\\x0d\\xd1\\x7c\\xe1\\xf9\\x4c\\x54\\xc8\\x51\\x23\\x5d\\x0d\\x78\\xde\\x58\\xcd\\xae\\xd9\\xd6\\xaa\\x95\\x3e\\x9c\\xa6\\x4d\\xdf\\x79\\xde\\x73\\x38\\xc5\\x4a\\xaf\\x8b\\x77\\x9a\\x68\\x48\\x8b\\x08\\x3d\\x9e\\xc9\\xfe\\xc4\\xfc\\x67\\xc5\\x1a\\x41\\xb9\\xde\\x32\\x96\\x2c\\xc3\\xc4\\x08\\x9d\\x1d\\xbd\\xe8\\xf4\\xfa\\xd5\\x8f\\x9d\\xb2\\x86\\xca\\x70\\xf2\\x8d\\xd8\\x15\\xb9\\x95\\x36\\xd8\\x3f\\x92\\xe2\\x80\\x36\\xec\\x27\\x4a\\xa6\\x27\\x24\\xda\\x12\\x42\\x7d\\x68\\xe8\\xe8\\x31\\x27\\xdd\\xb8\\xbd\\xb7\\x9a\\xc3\\x33\\x21\\xd4\\x2b\\x76\\xe3\\x58\\x5a\\xcb\\xc6\\xef\\x18\\x8c\\x23\\xf9\\xad\\xe9\\x43\\x57\\x18\\x73\\x2f\\x8c\\xd6\\x0f\\x33\\x0c\\x28\\x9a\\xa8\\x68\\xb1\\x3b\\xd3\\x4a\\x53\\x2c\\xbc\\x5a\\x52\\xcd\\x80\\x04\\x17\\xbe\\x6f\\x41\\x5c\\xc0\\x66\\xb5\\xb3\\xbf\\x26\\x32\\x88\\x7c\\x69\\xf5\\x35\\xad\\x26\\x1d\\x5b\\xb1\\xb9\\x34\\x57\\x99\\xc8\\x08\\xcd\\xe1\\x42\\x67\\xe8\\x60\\xae\\x78\\x6a\\xbf\\xf9\\x94\\x6a\\xc3\\x59\\x71\\xe7\\x47\\x60\\xe4\\xc8\\xfb\\x69\\x09\\xf0\\xd3\\x7d\\xa1\\xae\\x0b\\x22\\x54\\xb8\\x9f\\x41\\x82\\xa3\\x93\\x8b\\xa7\\xaf\\x17\\xc7\\x28\\x70\\x68\\x12\\x84\\x7a\\xaa\\x9d\\xce\\x14\\xf5\\x80\\xbc\\x43\\x71\\x02\\xd3\\xc7\\x4e\\x89\\x79\\xc3\\xe3\\x24\\x06\\xe8\\xac\\xf2\\x97\\x45\\xe9\\x04\\x07\\x6d\\x7f\\x5f\\x1f\\xf6\\xfc\\xc1\\x6c\\xcb\\x22\\xdd\\x7b\\x84\\x3b\\xdc\\xa9\\x7f\\xda\\x19\\x51\\x88\\x82\\x98\\xaa\\x1c\\xab\\x2a\\xef\\xa3\\x92\\x74\\x20\\x9b\\xe6\\x92\\x01\\xf6\\x53\\x47\\xc7\\xbc\\x97\\x13\\x8e\\x68\\xf9\\xe4\\x6f\\x34\\x04\\x8c\\x7c\\x77\\x72\\x01\\xa2\\xa7\\xbf\\xfb\\x0f\\x8b\\x6d\\x4e\\x71\\xe4\\x20\\xc1\\xd9\\x1a\\x60\\xc3\\xe2\\x7d\\x17\\x3d\\x43\\x05\\x7a\\xcd\\x30\\x6d\\xea\\x65\\x6c\\x5b\\x00\\xe8\\xd9\\x82\\x3d\\x13\\x29\\x86\\x63\\xb4\\xac\\xd3\\x41\\x7f\\x2e\\xf6\\x2d\\xe4\\x1a\\xd9\\x71\\x74\\xb9\\x78\\xbd\\xa2\\x26\\xea\\xda\\xbd\\x15\\x5f\\x68\\x8e\\xf1\\x57\\x70\\xde\\xcc\\x21\\x0b\\x78\\xe1\\x62\\x04\\xff\\xc5\\x6a\\xda\\x71\\xe4\\x0b\\x32\\x95\\xd6\\x1f\\x2e\\x87\\x1e\\x9a\\xb4\\xb4\\x26\\x90\\x3f\\x19\\x88\\xeb\\x72\\xf8\\x4c\\x54\\x49\\x3d\\x29\\xb3\\xb1\\x7b\\x06\\x27\\x5c\\x99\\xdb\\x82\\xd0\\x1f\\x4c\\xf0\\x14\\x78\\xad\\xe6\\x49\\x8e\\xfe\\x62\\x31\\xfa\\x33\\x2d\\xee\\xb1\\x7f\\x62\\xb2\\xbf\\x01\\xc1\\x5a\\x82\\x5a\\x2b\\xe8\\xe5\\x47\\x65\\xb8\\xb7\\xe6\\xc0\\x46\\x39\\xe6\\xbf\\x4e\\x11\\xa0\\xc5\\x86\\xe5\\xe7\\x74\\x20\\xf5\\xf9\\x6c\\x3f\\x93\\x36\\x72\\x26\\x0e\\x47\\x85\\x16\\x14\\x68\\xe5\\xf3\\xb5\\x5d\\xc0\\xb2\\xfb\\x32\\xf8\\x15\\x14\\x66\\x84\\x6f\\xca\\xaa\\xd4\\xc9\\xa0\\xa5\\xaf\\x4f\\xbb\\xb2\\x17\\x33\\xe3\\xb6\\x04\\x99\\x3c\\x7d\\x33\\xa4\\x60\\xbe\\xd3\\x38\\xe3\\x62\\x70\\xf6\\x8f\\x00\\x77\\x34\\x0a\\x3c\\x70\\x4c\\xae\\xf0\\x61\\xc5\\xb0\\xfe\\xe0\\x41\\xeb\\x72\\xd3\\x55\\xa1\\x1f\\xf9\\xfe\\xb0\\xf2\\x96\\xfb\\x56\\x5e\\xf4\\x75\\xb5\\x98\\xd1\\x54\\xb1\\x0d\\xcd\\x80\\xeb\\x63\\xae\\xf3\\xa7\\x6e\\x8a\\x12\\x3f\\xda\\xa7\\x88\\xfd\\xc5\\x67\\xfc\\xa5\\x48\\x8f\\x8f\\xdf\\x7e\\x11\\xe5\\xaf\\x63\\x8f\\xbe\\x55\\x05\\xdc\\x13\\x91\\x10\\x26\\x3b\\x7e\\xe9\\x2b\\xef\\x70\\x64\\x63\\xbc\\x2e\\xf4\\x81\\x93\\x8a\\xc8\\x15\\x2b\\xc0\\x64\\x37\\xd5\\x8a\\x7a\\x3a\\x68\\xa8\\xf1\\x79\\x7c\\xf3\\xb7\\x37\\xe0\\xdf\\xc7\\xda\\x2e\\x9d\\x6a\\x2d\\x74\\xa4\\x42\\xc6\\xd9\\xa3\\xa9\\x6c\\xa1\\xe5\\x26\\x03\\x87\\x30\\xc5\\x22\\x19\\x16\\x32\\x27\\x1e\\x44\\x09\\x8a\\x57\\x8a\\x92\\x6c\\x24\\x15\\x85\\x04\\x71\\x1d\\xfb\\x8b\\xa3\\x08\\x5e\\xa0\\xe8\\x65\\x96\\x56\\x4b\\x33\\x7d\\x07\\x86\\x89\\xa5\\xf1\\xf7\\x1f\\xd5\\x36\\xe5\\x28\\xa6\\x50\\x3a\\x5c\\x8e\\xd4\\x90\\x6b\\xa3\\x15\\xf2\\xbf\\x0b\\x18\\xed\\x9b\\xab\\x0a\\x5f\\x58\\x16\\x4d\\x8b\\x02\\x4c\\xd7\\xee\\x31\\xc0\\x05\\x56\\xee\\xf3\\xbd\\xbe\\x22\\x44\\x5e\\x42\\xfd\\x16\\x02\\x04\\xad\\x59\\x5b\\x31\\xc9\\xd5\\x3f\\xa2\\x4e\\x53\\xc9\\xbe\\x4d\\x10\\x19\\x52\\xb0\\xb8\\x13\\x3a\\xf6\\x7d\\xd4\\x69\\x5d\\xad\\x5f\\x74\\x55\\xcf\\x16\\xd3\\x5f\\x91\\x3d\\x8d\\xd3\\xf8\\x37\\xbb\\xa1\\x97\\x1e\\x40\\x50\\x25\\x12\\xdb\\x8c\\x3a\\x3b\\x69\\x22\\x7e\\x4e\\x8e\\x24\\x47\\xef\\x7f\\x47\\x4d\\xbc\\xf7\\x97\\x3a\\x7d\\xb3\\x7f\\xc2\\xdb\\x58\\xfe\\x0e\\xf1\\xb3\\x55\\xc2\\x25\\xb4\\x06\\xc7\\xcd\\xbe\\x64\\xc1\\xff\\x41\\xc9\\x61\\xe6\\x71\\x6e\\xb9\\x6f\\x84\\x42\\xe3\\xef\\x28\\xbd\\xe3\\xa9\\x72\\x4a\\xeb\\x81\\x66\\x32\\xdb\\x35\\xa6\\x16\\x7b\\x7b\\x9f\\xe2\\x24\\x5e\\xca\\x87\\x60\\xd6\\xb3\\x63\\x19\\xea\\x5c\\x2e\\xd4\\xd7\\xa6\\x58\\x6e\\x3d\\x43\\x56\\x15\\xcf\\x66\\x9e\\x31\\x59\\x52\\x42\\x4f\\x56\\x89\\x3f\\xdc\\xe3\\xe6\\xf3\\xfe\\x72\\x95\\x76\\x4f\\x25\\xbf\\x6e\\xbf\\xaa\\x0f\\x8f\\x9d\\xc8\\xb0\\x6b\\xbb\\x07\\xda\\x47\\x46\\xa7\\x5e\\x5f\\x55\\x3b\\x13\\xfb\\xf3\\xdf\\x03\\x61\\x09\\xee\\xd5\\x76\\x49\\x13\\x76\\xb3\\x8a\\x4a\\x4d\\x6e\\xbe\\x81\\x61\\xba\\xaa\\x4f\\xfb\\xec\\x71\\xe1\\x41\\x75\\xa3\\xcc\\xef\\x5d\\x7a\\xc4\\xb3\\x9f\\xce\\xc2\\xc4\\xa4\\xf1\\xf6\\x22\\x55\\xa3\\x6b\\x1e\\x89\\xe6\\x6a\\x83\\x12\\x8e\\x36\\x40\\x73\\x92\\x87\\xb1\\xe8\\x68\\xbf\\x32\\x68\\xec\\xc0\\x55\\x20\\xfd\\x2c\\xf2\\x9c\\x39\\x3c\\xd4\\x48\\xd4\\xb8\\xd7\\x90\\xde\\x7a\\x0e\\xa3\\xad\\x9b\\xc2\\x3e\\x19\\xfa\\xb4\\x8f\\x3d\\x56\\x40\\xb5\\xe1\\x25\\xb0\\xf3\\x29\\x8f\\x5e\\x47\\xbd\\x1f\\x02\\x69\\x6c\\x8c\\x6b\\x1b\\xdc\\x1a\\xbd\\xfa\\x7d\\x75\\xce\\x7e\\x2e\\x22\\x9d\\x61\\x07\\x9c\\x78\\xb4\\xbb\\x3b\\x96\\xf6\\x93\\x03\\x34\\x1a\\x18\\x60\\x4a\\x37\\x18\\x9f\\xdc\\xdf\\x9a\\xf6\\xff\\x00\\x0d\\xf7\\xe5\\x7f\\xad\\x17\\xfe\\x9f\\x23\\x29\\x9b\\x70\\x1a\\x63\\x46\\xee\\xe1\\x9e\\x0d\\xe6\\xc8\\x1d\\xe7\\xb0\\x67\\xd9\\xc1\\x95\\x30\\x49\\x1f\\x93\\xbb\\x65\\x84\\x83\\xeb\\xaf\\xc5\\x22\\x1b\\xe1\\x82\\x29\\x95\\x10\\x50\\x62\\x32\\xf0\\x87\\x7b\\xec\\x8e\\x83\\x26\\x68\\x93\\x75\\x96\\x3d\\x9e\\xb2\\xf0\\xfc\\xd4\\x45\\x74\\x52\\x61\\xc7\\xa4\\xb1\\xf8\\x1e\\x18\\x8e\\xb3\\xbc\\xc1\\x07\\xba\\xe5\\x80\\x1f\\xff\\x7e\\xf3\\x73\\xf5\\xb8\\xcf\\x94\\xa7\\xc7\\x9f\\xc3\\x89\\xda\\x5c\\xf8\\x6a\\xf9\\xee\\x81\\x43\\x5d\\xab\\xcd\\x06\\xbd\\x0b\\xc3\\xb7\\x46\\x66\\xf2\\x85\\x89\\xc5\\xee\\xf7\\x00\\xc5\\x56\\x1c\\x5a\\x5e\\xbf\\xa8\\x29\\xc2\\x82\\x8e\\xa8\\xcb\\xf9\\x34\\x4f\\xf3\\x44\\xf7\\x16\\x1c\\xf8\\xb4\\x83\\xcf\\xea\\xd1\\x8e\\xc5\\x0e\\xcc\\xeb\\x62\\x0b\\x26\\x56\\xf1\\xb7\\xf4\\x4a\\x04\\x11\\xcd\\x48\\xa9\\x4e\\xbe\\x47\\x84\\x9b\\xa0\\x90\\x06\\xa1\\x63\\xc3\\x1b\\xf6\\xdf\\x8d\\xd3\\x1d\\xf7\\x1d\\x8e\\xe4\\xf5\\xa0\\x6b\\x65\\x6d\\x95\\x4f\\x61\\xfe\\x02\\x07\\xf7\\x63\\x10\\x8b\\x52\\x5e\\x8d\\xd2\\xd4\\xf8\\xe9\\x9c\\x9a\\x44\\x57\\x8d\\xb2\\x65\\xe8\\xd8\\x98\\xa8\\x77\\xf5\\x00\\x86\\x28\\x38\\x24\\xde\\xbc\\xfe\\x57\\x41\\x1a\\xf1\\x8f\\x91\\x3f\\xdf\\xe8\\x12\\xec\\xe7\\xee\\xe8\\x6f\\xc5\\xbb\\xbf\\x5e\\xda\\x34\\xaa\\xec\\x99\\xd0\\x99\\xfd\\x02\\x4a\\x04\\x12\\xa0\\x17\\x08\\xe7\\x7a\\xb4\\xe7\\xe6\\xa1\\x52\\x73\\x75\\x9c\\x73\\xf3\\x4f\\x1c\\x9a\\x15\\x63\\xc9\\xce\\x2a\\xe1\\x3a\\xdc\\xcd\\x78\\x4d\\xb0\\x4c\\x21\\x06\\x8c\\x6a\\x8d\\x14\\x8b\\x9b\\x36\\x0e\\x78\\xc6\\x25\\xf9\\xe2\\x55\\x4c\\x9f\\x0f\\x93\\x38\\x95\\x30\\x07\\xe3\\xc7\\x4a\\xa1\\xe8\\xad\\x89\\x17\\x0c\\x02\\xfd\\x19\\xcd\\x02\\x63\\x75\\x05\\x03\\x3e\\x52\\x5d\\xd9\\x1a\\xe0\\xc4\\x5b\\x66\\x3c\\xd7\\xad\\x78\\x1d\\x9b\\x15\\xd2\\xa2\\x38\\x16\\x42\\x7e\\x7d\\xa5\\xcb\\x5b\\xee\\xb5\\xe7\\xd8\\xaf\\x53\\x61\\x62\\x99\\xa8\\xee\\x30\\x2a\\x32\\x39\\xc2\\xeb\\x94\\x7a\\xff\\x5d\\xae\\xea\\x51\\xe0\\x4c\\x74\\x4a\\xc8\\x62\\x0b\\x92\\x70\\x42\\xbb\\x0d\\xf5\\x96\\x79\\xf3\\x64\\xfe\\x57\\x82\\xbc\\x66\\xb6\\x17\\xb3\\xaf\\xc5\\xbe\\x0c\\x83\\x7a\\xf4\\x1d\\xab\\x2d\\x2d\\x05\\x31\\xe5\\xc4\\x97\\x42\\xee\\xcf\\xbc\\x9f\\x86\\x5c\\xdb\\x4b\\x77\\x32\\x4f\\xe3\\xe5\\x91\\x83\\x9a\\x87\\xf1\\x5b\\xc6\\xdc\\xfd\\xd7\\x54\\xc9\\x93\\xbe\\x55\\xef\\x5f\\x2c\\x5d\\xde\\x03\\x97\\xf8\\x97\\x27\\x60\\xff\\x67\\x73\\x3c\\x0e\\xcc\\x2d\\xf3\\x8e\\x0b\\x3f\\x2e\\xee\\x50\\x99\\x6a\\x2f\\x72\\x3b\\x20\\x03\\x8b\\x05\\x0a\\xa5\\x2b\\xc3\\x24\\xf1\\x16\\x1a\\x85\\x70\\x0c\\x98\\x84\\xb7\\x2c\\x2a\\xa1\\x90\\x82\\xeb\\xe9\\x66\\xcb\\x03\\x43\\xb7\\x19\\x89\\x77\\x62\\x41\\x5c\\x4b\\xa9\\x5b\\xac\\x2a\\x8e\\x6c\\xae\\x3e\\x24\\x93\\x60\\x05\\x7f\\xe4\\x61\\xcc\\xcf\\x4b\\x08\\x91\\x6d\\x66\\xa2\\xc0\\xd2\\xc0\\x36\\xe6\\x57\\xdf\\x3f\\x76\\xf1\\xa5\\x21\\x1e\\xf6\\x3e\\x8c\\xea\\x47\\xbf\\x9d\\x85\\x86\\x68\\xd2\\x25\\x2c\\x35\\xc0\\x61\\xe8\\xf1\\x01\\xee\\x0a\\x39\\x1e\\x88\\x0f\\x6f\\xbe\\x3b\\x17\\x8c\\x55\\x36\\xaa\\x60\\xb7\\x0c\\x99\\x57\\xed\\xf7\\xbc\\x5f\\xe5\\x7d\\xfd\\x69\\x7c\\x9c\\x56\\x72\\x87\\x3c\\xbf\\xc0\\x6c\\x05\\x3a\\x75\\xd3\\x29\\xb6\\xda\\x20\\x2d\\x06\\xab\\x29\\x47\\x9e\\x35\\x45\\x68\\xc7\\x3e\\x74\\x46\\xe2\\x65\\x25\\x1a\\x6c\\xec\\xc8\\xad\\x2b\\x63\\xc6\\x4f\\x56\\x9d\\x77\\x19\\xa3\\x86\\x49\\x0c\\x67\\x14\\xb3\\xd4\\x00\\x77\\x25\\xa4\\xe9\\xdc\\x0d\\x3d\\x79\\xf1\\x15\\xfe\\x49\\xf6\\xcd\\xb7\\xb8\\x18\\x43\\xba\\xc6\\x8e\\x46\\xa5\\x8c\\xc2\\xb8\\xe0\\x7d\\x1d\\x77\\x19\\x46\\xf6\\x2d\\xe7\\xe0\\x69\\x53\\x53\\x55\\x6f\\x6b\\x51\\x22\\xee\\xf4\\xc7\\x49\\xc1\\xee\\xb9\\xd9\\x8c\\x97\\x7d\\x87\\xb9\\x38\\x9f\\x4f\\x4b\\x22\\xe9\\x9f\\xf3\\x0d\\x2d\\x4f\\x7c\\x2f\\x26\\x95\\xe8\\xf9\\x12\\x7d\\xf0\\xa0\\xbb\\x94\\xb1\\xf1\\xa2\\xa6\\xb9\\x62\\xd9\\x66\\x59\\x6e\\xe2\\xcf\\x76\\xf0\\xc3\\x70\\x25\\xb6\\x24\\x81\\xe3\\x09\\x68\\x50\\x18\\xf6\\x62\\x62\\x87\\xe7\\xa3\\x56\\x1f\\x32\\x3a\\xa8\\x5e\\x58\\x7c\\xc4\\x71\\x8c\\x40\\x03\\xb1\\xd8\\xc6\\xae\\xe8\\xdd\\x07\\xd0\\x21\\x23\\x68\\x76\\x73\\x4e\\xe2\\x89\\x15\\x21\\xdf\\x07\\x53\\x1e\\x7a\\xc6\\x8e\\x33\\xfb\\x8a\\xb2\\x8d\\xe8\\x77\\xe1\\x9a\\x32\\x20\\x79\\x80\\x92\\xfd\\xdf\\xd9\\x23\\x25\\xf6\\x36\\x81\\xbb\\x35\\x0f\\x4f\\x45\\xef\\x74\\x0d\\xee\\x94\\x5d\\x6e\\xe8\\x2c\\x4c\\x42\\x61\\x93\\x2d\\xf2\\x35\\x4a\\xaa\\xb1\\x48\\xac\\xe3\\x75\\x8a\\x13\\xa9\\x14\\x7f\\x77\\x06\\xe5\\x71\\x67\\xe5\\x80\\x84\\xe2\\xfa\\x69\\x8c\\xbf\\x75\\x63\\x47\\x82\\x2e\\xd5\\x0d\\x0c\\x47\\x9b\\x03\\xa6\\xa6\\x40\\xef\\x31\\x72\\x8d\\x70\\x08\\x1f\\x48\\xe6\\x26\\xde\\x82\\x49\\xfc\\xde\\xba\\x84\\x67\\xf5\\x11\\xb9\\x50\\xbe\\x94\\x65\\x76\\x1c\\xae\\x95\\x60\\xda\\x35\\x92\\xcc\\x0b\\xf3\\xc8\\xca\\x21\\x9b\\xbd\\x07\\x74\\x16\\x6b\\x5e\\x93\\x26\\xb3\\x0e\\xb3\\xf7\\x70\\xe7\\x6e\\xdc\\x03\\xbc\\xdc\\xdf\\xfc\\x0d\\xcd\\x3c\\x9f\\x12\\x99\\x2e\\xe7\\xf7\\x77\\x3c\\x69\\x3e\\x8c\\x8b\\xf9\\xf5\\xbb\\x9f\\x64\\x9f\\xb6\\xba\\x71\\xf8\\xea\\x22\\x6e\\xd4\\x31\\x5d\\x6b\\x2e\\x09\\xc7\\x37\\x04\\x74\\x98\\x7c\\xf3\\x5b\\x03\\x67\\x21\\xb5\\x6a\\x5f\\x8c\\x63\\x20\\xdf\\x3e\\x3f\\x2c\\x65\\xf6\\x12\\x83\\xdf\\x10\\x86\\xf1\\x8c\\x41\\x7d\\x47\\xdf\\x94\\xf2\\xc2\\xaa\\x11\\x85\\x69\\x4f\\x6e\\x28\\x78\\x35\\x0b\\xc7\\xb4\\x61\\x63\\x75\\xcf\\x3e\\xbf\\x28\\x67\\xe9\\x68\\xf8\\x7a\\xab\\x50\\xca\\x84\\xbb\\x57\\xdf\\xa0\\x53\\xe3\\xbf\\x04\\xe0\\x57\\x09\\xcc\\xff\\x11\\x3b\\x37\\x86\\x0c\\xb6\\xb2\\x87\\xf6\\xc7\\xd3\\xbd\\xd3\\x9f\\x8f\\xb3\\x38\\x87\\x13\\x2b\\x6c\\xf2\\xa6\\xf2\\x96\\x57\\xd0\\x25\\x75\\xb7\\xe9\\x8e\\xa7\\xc0\\x43\\x8f\\x4d\\x15\\xf5\\x97\\x8b\\xab\\x82\\xb8\\x90\\x52\\x7f\\xb8\\xc7\\xa4\\xf0\\x56\\x5e\\x08\\x52\\xa6\\x29\\xf0\\xa8\\xc9\\x8b\\xb9\\x9b\\xf4\\x4c\\xbe\\xf8\\xed\\x3b\\x8d\\x1d\\xfc\\x9a\\x57\\xca\\xf9\\x9d\\x36\\x5b\\xa7\\x62\\x06\\x6f\\x0f\\xc8\\x68\\x38\\xda\\xdf\\xda\\xbe\\xd8\\xe6\\xc1\\xa2\\x0a\\xb3\\x3e\\x6b\\x7c\\x93\\x87\\xa8\\x73\\x31\\xe0\\x93\\x18\\x77\\x82\\x90\\x70\\x47\\x11\\x35\\xc4\\x52\\x92\\x7d\\x5b\\xda\\xa4\\x4f\\x71\\xa9\\xfe\\x8e\\x94\\xb8\\x63\\xe9\\x34\\xec\\x5b\\x7b\\xd0\\x34\\xf3\\xa4\\x8e\\xd0\\x4c\\xc0\\x6d\\x9b\\xf0\\x7d\\xc7\\xfa\\xc6\\xd5\\x27\\x57\\xd6\\x35\\x7b\\xb1\\x60\\xab\\x94\\xb3\\x17\\x63\\xa5\\x22\\x43\\xea\\x42\\xc7\\xa7\\xe1\\xb8\\x7c\\x31\\x40\\x86\\x33\\xbd\\xd6\\x34\\xa7\\x20\\x28\\x63\\x8b\\xc8\\x6b\\xae\\x7f\\xf9\\xd5\\x4d\\x3c\\xd2\\x5c\\x24\\xc2\\x35\\x57\\xef\\x0a\\x73\\xad\\x43\\xa5\\xaf\\xed\\x7d\\x21\\x8a\\x63\\xe0\\x64\\x8b\\xc1\\xb2\\x7d\\xbf\\x6c\\x5b\\xd6\\x69\\xf7\\xf1\\x22\\x0c\\xc7\\x97\\x98\\xdb\\x7d\\xf8\\x3a\\xe8\\x34\\x13\\x3d\\xbb\\xd2\\xa7\\xe3\\xa4\\xda\\x59\\x88\\xf7\\x94\\x21\\x20\\xa8\\x1d\\x1d\\x64\\x70\\xd1\\x4d\\xbc\\xa7\\xd3\\xc6\\x98\\x9b\\xde\\x54\\x17\\x16\\xaf\\x80\\xb9\\x06\\x7b\\xba\\xa4\\xf7\\xd2\\x9a\\x5a\\x31\\x59\\x5b\\xa6\\x07\\x30\\xc3\\x6f\\x96\\x7b\\x68\\x06\\x66\\xd3\\xc0\\x98\\x59\\xcb\\x64\\x7b\\x33\\x1d\\x8a\\x9e\\x2b\\xfb\\x6b\\x23\\xfd\\xa9\\xf1\\x8c\\xa3\\xd0\\x04\\x97\\x1f\\x5d\\x4b\\xda\\x56\\x1a\\x7e\\x92\\x1c\\x94\\xad\\xb2\\xd2\\x9f\\x13\\x45\\x56\\xc5\\x5e\\x23\\x38\\xec\\x02\\x24\\xe5\\x25\\x59\\xff\\xd2\\x9d\\xb9\\x1c\\xf6\\x7f\\x71\\x3a\\xef\\x7b\\x15\\xfa\\x74\\xb4\\x4d\\x71\\x91\\xd9\\xa2\\x0c\\x4e\\xb4\\x0a\\xd1\\x0d\\xd5\\x9b\\x33\\x6f\\x0d\\xef\\x07\\x1b\\x65\\x33\\x46\\x34\\x72\\xf7\\x75\\x91\\xa3\\x53\\x1c\\x9f\\x9a\\xe4\\xf5\\x7b\\x1f\\xf5\\xaa\\x19\\x60\\xfc\\x71\\xcd\\x8d\\xe8\\x9c\\xa7\\x8f\\x9b\\xfe\\x6b\\x19\\x54\\xd5\\x52\\x97\\xda\\x0c\\xf7\\x27\\x91\\x58\\x0c\\x20\\x93\\x2f\\x0f\\x60\\x94\\xdb\\x2d\\x17\\x97\\x24\\x96\\x8e\\xfb\\xf9\\xf1\\x0f\\x12\\xda\\xe9\\x7f\\x4a\\xe0\\xba\\x74\\x35\\x11\\x38\\xb5\\x9a\\x8a\\xfd\\x79\\x6c\\x9e\\x8e\\x82\\xd7\\x85\\x3e\\x69\\xc4\\x51\\xe1\\x43\\xe6\\xba\\x5e\\x1c\\xca\\x30\\x8a\\x23\\x57\\xbd\\x35\\x50\\xaf\\xee\\x81\\x95\\xba\\x5f\\x33\\x7a\\x7a\\xad\\xbf\\xf9\\x3f\\xca\\xca\\x08\\xc0\\x06\\x76\\x53\\x5c\\xd7\\x8b\\x7d\\x15\\xfa\\x99\\x18\\x57\\xec\\x97\\xdd\\x0c\\xbe\\x8c\\x64\\xd4\\xdd\\xd6\\x84\\xc6\\xfd\\x8e\\x39\\x16\\x3c\\x21\\xb4\\x5d\\x7e\\x9f\\x22\\x88\\x7e\\x32\\x37\\x4a\\xd0\\x50\\x6e\\xd2\\xd5\\x8a\\x80\\xa0\\xba\\xc3\\x76\\xd0\\xde\\x5b\\xdc\\xaa\\xce\\x72\\xb6\\xac\\xf5\\xde\\x6c\\x43\\xb0\\x9c\\x52\\x51\\xe6\\xbc\\x97\\x32\\x4c\\x72\\x18\\xb8\\x23\\xc5\\x35\\xde\\x7d\\x8c\\x6c\\x4d\\xa8\\x47\\xb1\\xd8\\x47\\x44\\xfd\\x4f\\x99\\x91\\x5c\\x7e\\xa1\\xc6\\xb8\\xff\\x3e\\x35\\x2d\\x3a\\x51\\xf9\\x4f\\xfc\\xde\\x7f\\x11\\xd4\\x7f\\xdd\\x4d\\xf2\\xb1\\x2d\\xe4\\x65\\x0c\\x70\\x96\\x17\\x43\\xca\\x74\\xfc\\x84\\x56\\x46\\x39\\xb1\\xc1\\xbd\\xd1\\x2d\\xc0\\x7e\\xb6\\x61\\x1d\\x7d\\x1e\\x4b\\x74\\xcb\\xda\\xe8\\xb3\\x38\\x68\\xb3\\x2c\\xae\\xc2\\x1d\\x9e\\x6a\\x3f\\x28\\xb5\\xa1\\x02\\xba\\x07\\x16\\x6b\\xfa\\xfb\\xde\\xa8\\xf0\\xa6\\x92\\xa4\\xcb\\x3e\\xc4\\x8c\\x60\\xfc\\x00\\x9a\\xf9\\x87\\x94\\x1a\\x94\\xb8\\x15\\x20\\xe4\\x69\\x0a\\x31\\x31\\x10\\x7c\\xff\\x62\\x26\\xa7\\xa2\\x65\\x54\\xb2\\x2e\\x97\\x7b\\xb2\\x8b\\xd2\\x8e\\x7f\\x59\\xc5\\xa7\\xd0\\x28\\xfa\\x65\\xef\\x23\\x85\\x8f\\xc1\\xae\\xb9\\xdf\\x03\\x29\\x0f\\xc3\\x2c\\xcd\\x3b\\x4c\\xb7\\x84\\xf3\\x38\\xc2\\x24\\x64\\x1d\\xb7\\x0c\\x49\\xd9\\x5c\\xc6\\xb6\\xd5\\x77\\xce\\xd3\\xaf\\x6f\\x90\\xfb\\x32\\x8c\\xd3\\xa5\\x2e\\x13\\x4f\\xdc\\x4d\\x28\\x51\\x72\\x79\\x51\\x82\\x7b\\xbb\\xcd\\x81\\x15\\x78\\x6f\\xe6\\x75\\x55\\x32\\xff\\x9d\\x4f\\xe5\\x1e\\x09\\xe4\\xb7\\x4f\\x94\\xd0\\xe9\\xa2\\xfb\\x6c\\x4b\\x6b\\x9f\\xfe\\x65\\xfc\\x81\\x46\\x67\\xcb\\xb0\\x54\\xcb\\x15\\x42\\x1e\\x85\\xd3\\x6d\\x0d\\xdf\\x4f\\x35\\x5e\\x55\\x2e\\xab\\x2b\\x67\\xe5\\xa0\\x91\\x4a\\x3b\\xff\\x11\\xc9\\x5b\\x88\\xc2\\x1c\\x0e\\x5a\\xfe\\x2c\\x58\\x4d\\xa1\\x15\\x67\\xb1\\xd3\\xb7\\x1b\\x7c\\x01\\x87\\xa8\\xce\\xf0\\x3c\\x3a\\x6d\\x0e\\xf9\\xd1\\x42\\xca\\xd7\\x12\\x43\\xa6\\x46\\xce\\x5e\\x8b\\x0b\\xc6\\x68\\xc9\\x8b\\xa0\\xf3\\x0c\\xa2\\x31\\xb5\\x7b\\xc0\\x3f\\xce\\x3a\\x9c\\x3e\\x50\\x1a\\x3f\\x70\\x0e\\xf3\\xd5\\x6d\\xa6\\xc3\\xca\\x53\\x49\\x59\\x5a\\xe4\\xda\\x6f\\x08\\x9d\\xed\\x78\\x60\\x34\\x27\\x64\\x1a\\x29\\xc5\\x1a\\x6a\\x18\\xcc\\xf6\\x51\\x29\\x15\\x4a\\xd3\\xab\\xa3\\xa5\\x20\\xfb\\xed\\xb7\\x9f\\x06\\x78\\x46\\x23\\xb8\\xd6\\x0c\\x15\\x93\\xd9\\xca\\x44\\x88\\x46\\xca\\x2d\\x56\\x59\\xa4\\x4c\\xde\\x3d\\x70\\x83\\x37\\xf8\\x45\\xec\\x5c\\xb1\\x34\\x3f\\x5a\\x38\\x7a\\x32\\xdd\\xb1\\xa8\\x59\\x00\\x4a\\xd1\\x87\\x0d\\x02\\xb6\\x9a\\x26\\xf6\\x7e\\xa8\\xfa\\xbe\\xa6\\x8c\\x1f\\xf3\\xea\\x3c\\x30\\xcf\\x4f\\xe4\\x9c\\x92\\xa2\\x95\\x77\\x0c\\xe8\\x4f\\x85\\x87\\xbf\\xbf\\xf2\\x9a\\x2b\\x51\\xe4\\x65\\x78\\x6b\\x1e\\x4e\\x00\\xde\\x0a\\xd4\\x08\\x5c\\xf4\\xf6\\x28\\x71\\x7d\\x91\\x62\\x5d\\xab\\xff\\x33\\x6b\\x7a\\xae\\x1a\\x85\\xc0\\x75\\x53\\xbb\\x0b\\x06\\xfb\\x2d\\xf9\\xf0\\x62\\x03\\x89\\xd8\\xb2\\x65\\x15\\xae\\x6c\\x0a\\xf2\\x04\\xa9\\x96\\xa9\\x1d\\x13\\xd2\\x2d\\x26\\x2a\\x05\\x24\\x13\\x83\\xa1\\x89\\xc9\\x33\\x31\\xc7\\x5a\\x8c\\xe7\\x72\\xdc\\xc9\\x27\\xc9\\x07\\x36\\x98\\x7b\\x53\\x78\\x82\\x87\\x9b\\xbf\\x35\\xdd\\x9f\\xa5\\x8d\\x61\\x76\\x53\\x8f\\x54\\x8a\\xad\\x47\\x0b\\x4e\\x60\\xcc\\x4d\\xcd\\xf3\\x22\\x83\\x21\\x98\\xae\\x3b\\x9d\\xb0\\x13\\x13\\x9e\\x7b\\x80\\xf2\\xd2\\xaf\\x35\\xb0\\x1f\\xae\\x37\\x4c\\x61\\x53\\x68\\x3f\\xb6\\xe4\\x7d\\x7c\\x96\\xf0\\xa1\\x0e\\xfa\\x7c\\xa0\\x8b\\xa7\\xbd\\xb1\\xed\\x6b\\x0d\\xe1\\x27\\x51\\xab\\xf7\\xec\\xc0\\x01\\x74\\x12\\xd4\\x3b\\x04\\x0c\\x02\\x36\\xc6\\x76\\xbe\\x89\\x83\\xf1\\x56\\x47\\x55\\xc5\\xb9\\x8b\\x32\\xc1\\xb5\\x5f\\x2a\\x20\\xb9\\x50\\x51\\xd1\\x9b\\xdf\\x17\\x08\\xbd\\x69\\x41\\x02\\x63\\xe2\\x51\\xb3\\xe6\\x78\\xd9\\x03\\x45\\x0d\\x7e\\xbf\\x6c\\x7c\\x63\\x02\\xd9\\xfa\\x19\\x47\\x2a\\x3a\\x3d\\x32\\x21\\xfa\\x4d\\x79\\x6e\\xf3\\x7f\\x32\\x59\\x72\\x22\\x07\\xf8\\x38\\x0f\\xa9\\x80\\x8d\\x85\\xe7\\xde\\xaa\\xe6\\xed\\x9d\\x85\\xac\\xd4\\x67\\x27\\x7c\\xec\\xb9\\x59\\xf4\\xde\\xac\\xdc\\x99\\xf7\\xe0\\x56\\x09\\xf7\\x74\\x44\\x85\\x28\\xe7\\x0a\\x24\\xd8\\xe6\\x72\\xcf\\xdd\\x03\\x0d\\x1d\\xa2\\x3e\\xb8\\xf8\\x46\\x8f\\x76\\x56\\xa9\\x03\\x15\\x24\\x21\\x94\\x43\\xb7\\x2c\\x5f\\x33\\x8d\\x69\\x91\\xaa\\x1f\\x41\\x4f\\xb2\\xbf\\x84\\x61\\xae\\xdc\\x68\\x80\\x0b\\x27\\x83\\x91\\x66\\x7e\\x31\\xbf\\x0c\\x07\\xc4\\x1e\\xe5\\x15\\xdf\\xbe\\x6a\\xad\\xff\\x38\\xfe\\xa4\\xe3\\xdc\\xc9\\x26\\x6d\\x8c\\x53\\xf4\\xa7\\xba\\xc9\\xe5\\xa5\\x11\\xec\\x83\\xb8\\xef\\xe2\\x94\\x29\\xa5\\xe0\\xa8\\x43\\xc7\\xbb\\xab\\x9d\\xd7\\xf2\\x07\\x74\\x3b\\x1b\\xc8\\xee\\x20\\xa3\\x69\\xf0\\x67\\xa8\\xb5\\x5c\\xed\\xdc\\xc5\\xb7\\xd9\\x59\\x8a\\x57\\xdc\\xb9\\xe2\\xb9\\xad\\x53\\xbe\\xc8\\x3b\\x3e\\xb4\\x53\\x80\\x7a\\xdf\\x99\\x91\\x21\\x86\\x65\\xe8\\x0f\\x66\\x7a\\xd7\\xe4\\xbc\\x39\\xa1\\x25\\x34\\xff\\x9e\\x09\\xda\\x6e\\xcc\\xc5\\xcd\\xe0\\x61\\x2e\\x9f\\xa1\\xb7\\xf0\\xbe\\x3b\\xe6\\x20\\xf3\\x58\\x2d\\x2b\\x05\\x68\\xc7\\x14\\xcc\\x16\\x86\\x76\\x34\\xa7\\x26\\x2b\\x64\\x40\\x23\\x25\\x16\\x0b\\xec\\xae\\x51\\xfb\\x57\\x5b\\x4a\\xd4\\x9c\\x16\\x71\\xb9\\x21\\x1d\\x9f\\x05\\xa4\\x83\\x03\\x99\\x55\\x9c\\x8e\\xc9\\xf6\\x33\\x8a\\x28\\xb4\\x7b\\x96\\xbe\\x91\\x49\\x15\\x34\\x77\\xb1\\xd9\\xfb\\xba\\x9c\\x56\\x16\\x2d\\x72\\xb2\\xb1\\x49\\x28\\xd3\\xfd\\x60\\xb3\\x06\\x97\\x21\\xa5\\x4d\\x3e\\x80\\x7a\\xed\\x0c\\x6a\\x5a\\x51\\xe4\\x03\\xde\\x3a\\x54\\x0f\\x04\\x96\\x6c\\x75\\xc2\\xca\\xa1\\xd1\\x44\\x8f\\x27\\xc5\\xee\\x3c\\x43\\x2b\\x6e\\x79\\xe7\\xb7\\x92\\x99\\xeb\\xdb\\x3f\\x46\\x4a\\x77\\x9c\\x1b\\x32\\x27\\x96\\xfa\\x66\\x6d\\x76\\xc7\\xf3\\x08\\x4a\\xbe\\xdf\\x22\\x7a\\xa1\\xad\\xc8\\xbb\\xee\\xef\\xf6\\x78\\x2c\\x5f\\xf2\\xa5\\xaf\\x6e\\xc7\\xca\\xb8\\x45\\x79\\xd5\\x73\\xaf\\x66\\xbe\\xb6\\xda\\x5f\\xca\\x49\\xda\\x65\\x98\\xbb\\x2d\\x27\\x12\\xef\\x36\\xa8\\x98\\x1c\\xfd\\x12\\xeb\\x8f\\x19\\xf5\\xa3\\x09\\x06\\x44\\xf7\\xdc\\x67\\x3b\\xb3\\x7a\\xa4\\x49\\xab\\x6e\\xd5\\x99\\x92\\x8e\\x58\\xdb\\xe5\\xb0\\x53\\x6b\\xec\\x2b\\xe7\\x9f\\x38\\x58\\xd5\\x5a\\xb5\\x24\\x08\\x1b\\xf9\\xf7\\xc2\\x86\\xc4\\x17\\x27\\x33\\x8d\\x57\\x0b\\x6e\\xd5\\x92\\x05\\x15\\x33\\xc5\\x75\\xb2\\x03\\x8f\\xac\\x00\\xd1\\x5d\\x91\\x91\\x21\\x1b\\xcc\\x03\\x6d\\xb3\\xfe\\x98\\xea\\x72\\xa3\\xea\\xdc\\x1c\\x57\\x97\\xe3\\x06\\x05\\x3a\\xe1\\xc0\\x50\\x54\\xe9\\x72\\x9d\\x0d\\x49\\x6e\\xcb\\x8f\\x96\\xf5\\x58\\xdd\\x29\\xeb\\x0d\\x82\\xe3\\x94\\xa8\\x65\\x1d\\xc5\\xde\\xcb\\x71\\x62\\x69\\x65\\x60\\x27\\x90\\x4c\\x2f\\xa0\\xed\\xfc\\xcd\\xe2\\x0f\\xf6\\x92\\xf6\\x4f\\x9f\\x57\\x9e\\xe1\\x62\\x5d\\x20\\xde\\x51\\x6b\\x4f\\xba\\x60\\xbb\\xe6\\x11\\x55\\xa5\\xcf\\xf5\\xe9\\x70\\x52\\x60\\xee\\x44\\x88\\xfc\\x54\\xf5\\x12\\x08\\x99\\x16\\x0b\\x4e\\x79\\x9b\\xd0\\x02\\x27\\x7e\\x39\\xb0\\x26\\x56\\x3f\\xf7\\x76\\x79\\xe9\\x7b\\xcf\\x75\\x0d\\xdd\\xb8\\x0e\\x5b\\x88\\x82\\x43\\x62\\x20\\x77\\x70\\xf7\\x82\\x84\\x61\\xd9\\x92\\xe1\\xb8\\x60\\x6a\\x58\\x52\\xc8\\xa8\\x4d\\x56\\x06\\xd6\\xb5\\x43\\xe0\\x47\\x84\\x38\\x6a\\xbe\\x7e\\x3f\\xf0\\x61\\x0e\\xdb\\x59\\x6c\\xa4\\x59\\x5c\\x85\\x5b\\x7f\\xa9\\xe8\\x56\\xf1\\x4c\\xd7\\x23\\xbb\\x65\\xb5\\x68\\xfc\\x0f\\x31\\x66\\x55\\xb2\\x93\\x81\\x66\\x62\\x10\\x8b\\x0b\\x38\\xd1\\xa1\\x74\\xd4\\xf2\\x50\\xc6\\x96\\x34\\x8b\\xed\\x4f\\xda\\x51\\xfa\\x13\\x7d\\x1c\\x7d\\x79\\x5f\\xd8\\x33\\x17\\xbe\\xd9\\xce\\xdd\\xfe\\xcc\\xcb\\xa6\\xce\\x92\\x61\\x77\\xe7\\x67\\xa9\\xac\\xb9\\xcf\\x64\\xaf\\x19\\x2a\\x91\\xc6\\xea\\xfa\\xa9\\x7a\\x8b\\x3b\\xdd\\x79\\x0f\\x2d\\xdd\\x56\\xc4\\xc2\\x71\\x3a\\xdb\\x37\\x9a\\xaa\\x99\\xa5\\x54\\xd2\\x08\\x1e\\x23\\x13\\x3a\\x5c\\x13\\x38\\x31\\x57\\x6d\\xe0\\x1e\\x05\\x30\\x7c\\xfb\\x32\\x2b\\xe6\\x0b\\xc1\\x83\\x97\\xb3\\x30\\x29\\x37\\x54\\xd6\\xa3\\x70\\x94\\xd3\\xd0\\x16\\x98\\xf3\\x98\\x2b\\xc2\\x89\\x2f\\x74\\x30\\x80\\xc0\\xea\\x69\\x96\\x2d\\xdd\\xae\\xa8\\xa6\\xa9\\xa4\\xbf\\xbd\\xb6\\x29\\x55\\xaf\\xa0\\x63\\x13\\xd2\\xad\\x4c\\x9b\\x66\\x8a\\x39\\xd4\\xe4\\x78\\xb3\\xd9\\x7a\\xa6\\x3a\\x96\\xbc\\x7d\\xdc\\x68\\x17\\xa1\\x0c\\x7c\\xfb\\x7b\\x97\\x31\\x32\\x29\\x30\\x61\\x85\\x8e\\x54\\xa6\\x9d\\x0c\\xf7\\x79\\x97\\x53\\x62\\xf3\\x09\\x93\\xd0\\x35\\xd9\\xe0\\x83\\x06\\x78\\x32\\x88\\xa8\\x51\\x1c\\x81\\x87\\x1e\\xbd\\xa0\\x9b\\x98\\x1e\\xf8\\x39\\x5a\\x37\\x82\\xe9\\x22\\x41\\x7a\\x98\\x79\\xf3\\xe8\\x31\\x56\\x72\\x04\\x58\\x94\\x72\\xb3\\x9b\\x46\\x42\\xf8\\xc6\\x29\\x9f\\x29\\xba\\xda\\xe8\\x57\\x70\\xf0\\x5b\\x5c\\x11\\x33\\xb7\\x80\\x09\\x5f\\x5d\\x58\\x63\\x7d\\x0d\\xda\\x6e\\x01\\x35\\xad\\xc0\\x0a\\xe7\\x85\\xed\\x82\\x3b\\x01\\x4f\\x8f\\xff\\xed\\x5a\\x2c\\xfe\\xfb\\x07\\xf3\\x20\\xca\\xc0\\xf9\\x7a\\xcc\\x42\\xb4\\xfb\\x66\\xa9\\x2b\\x57\\xe1\\xc0\\xc1\\x46\\xda\\x94\\xef\\xf4\\x29\\xf6\\x74\\xcb\\x74\\x75\\x96\\x97\\x1e\\x7c\\x75\\x48\\x5a\\x39\\x63\\x68\\xe1\\xfd\\x75\\xbf\\x58\\xd8\\x6b\\xd0\\x9f\\x15\\xd2\\x6c\\xcf\\x41\\xf7\\x6e\\x42\\x4f\\x76\\x31\\x7f\\xaa\\x38\\xd9\\x64\\x1c\\xbc\\x35\\x62\\x1b\\xcc\\xb9\\x3d\\xf8\\x3f\\x7c\\x2f\\xed\\xae\\xcf\\x11\\x37\\xab\\xf9\\xb9\\x42\\xc9\\x74\\x15\\xb5\\x23\\x42\\x76\\x31\\xc0\\xe9\\x14\\x09\\x54\\x5a\\xe3\\x94\\xb1\\x76\\x79\\x3d\\x22\\xac\\xdb\\xca\\xa1\\x61\\xda\\xe9\\x97\\xc2\\x8c\\xcc\\xbe\\xf1\\x7a\\xd8\\x6d\\xd0\\xbb\\x6a\\x43\\x8e\\x1c\\xe6\\x08\\x24\\x93\\x18\\xdf\\x5e\\x60\\x27\\xf7\\xe7\\x96\\xe6\\x84\\x2d\\x61\\x05\\x8d\\x9e\\x38\\x12\\xbf\\xc5\\xcc\\xc3\\x75\\x22\\xc3\\xe3\\xa9\\x80\\xc2\\x2c\\xe8\\xfb\\xd4\\x08\\xc2\\x30\\x33\\x3f\\x33\\xe4\\x05\\x1c\\xf2\\x5a\\xa9\\x30\\x59\\x56\\x41\\x0b\\x92\\x5f\\xba\\xed\\xbb\\x18\\xcd\\x05\\x5d\\x57\\x80\\x16\\x44\\x8c\\x29\\x68\\x9e\\xa5\\xeb\\x47\\x53\\x5f\\x17\\x49\\x49\\xa1\\x24\\xe3\\x0f\\xe5\\x84\\x73\\xb8\\xb9\\xb6\\xc9\\xa7\\x38\\x50\\x70\\x88\\xd3\\x48\\xa1\\xcb\\x25\\x82\\xd2\\x39\\xb6\\x79\\x86\\xfb\\x4f\\xa1\\x8a\\xcb\\x98\\x28\\x69\\xd3\\x51\\x36\\x12\\x71\\xa8\\x39\\x85\\x7a\\xa3\\x99\\x8e\\x43\\xb5\\x30\\xc9\\x31\\x49\\x29\\xec\\x22\\x72\\x77\\xe5\\xbb\\x3d\\x0d\\x6e\\x98\\xf0\\x24\\x24\\xf8\\xc4\\xa6\\xcd\\xf8\\xa3\\xb5\\xda\\x7e\\xd8\\x57\\x3e\\xd5\\xe9\\x4c\\xd5\\x85\\x52\\x46\\xa2\\x99\\x86\\xb5\\xf6\\x52\\x68\\x27\\x69\\x1d\\x8d\\x1c\\xe0\\xab\\xde\\x7e\\x21\\x1e\\xf4\\x11\\x56\\xcf\\x4a\\xa6\\x9b\\x20\\x73\\x0f\\x5c\\xea\\x44\\x46\\xdc\\x31\\x1c\\x88\\x45\\xc0\\x17\\xbb\\xd8\\x83\\x9a\\x94\\xbe\\x62\\x86\\x50\\x4a\\x85\\x0a\\x82\\xa6\\x0e\\x74\\xc5\\x10\\x03\\x9d\\x2e\\x3e\\xfc\\x62\\xfb\\xc9\\x8a\\xc2\\x43\\x63\\x38\\xc8\\x0b\\xa1\\xc3\\x35\\xc2\\xd3\\x22\\x31\\xaa\\xdc\\x07\\x47\\x87\\x14\\xd5\\x39\\xdb\\xa0\\x73\\x37\\x9f\\xea\\x6a\\x81\\x17\\x75\\x73\\x49\\x04\\x7e\\x50\\x24\\xb3\\xc5\\x8e\\x06\\xf7\\x5b\\x40\\x4c\\x03\\x83\\x6b\\xc3\\xbc\\xdc\\xce\\x40\\x35\\xbd\\xda\\x79\\xdb\\x64\\x45\\x41\\x22\\x68\\xd5\\x73\\xa4\\xf2\\x42\\x03\\x1c\\xe9\\x2f\\x87\\x56\\x2f\\xd6\\xdf\\xcf\\x30\\x98\\xcc\\x72\\xe6\\x57\\x22\\x59\\x7b\\xd7\\xfc\\x50\\x5e\\x52\\x81\\xa1\\xce\\x84\\x83\\x28\\x75\\xf5\\xfb\\xb2\\x4f\\x06\\xef\\xbe\\x38\\x8c\\x4c\\x97\\xd5\\x1b\\x51\\x76\\x10\\x64\\xf0\\xdb\\x1c\\x9a\\x6e\\xf3\\x89\\xe1\\x25\\x37\\x21\\x89\\xdf\\xe2\\x14\\xed\\x75\\x84\\xc7\\x0a\\x24\\xca\\xf4\\x7d\\xdd\\xdc\\x78\\x91\\x5b\\x25\\xee\\x07\\x86\\xba\\x7a\\xb3\\xdd\\x84\\xef\\x1e\\xfb\\x32\\xb4\\xf7\\xc0\\x69\\x61\\x83\\xf5\\x67\\xfd\\x87\\x2d\\xad\\xf1\\x93\\x04\\x0c\\x4b\\xc8\\x16\\xc6\\xb4\\x9e\\xfd\\x3c\\x62\\x96\\x85\\xc6\\x68\\x78\\x6d\\xf7\\xa3\\x65\\x61\\x51\\xf7\\x9c\\x6f\\xe0\\x7c\\x2c\\xc8\\x64\\x57\\xec\\xd7\\x13\\xdd\\xd7\\xa7\\xf1\\xab\\xa3\\x4c\\x07\\x70\\x0b\\x98\\x9a\\xaf\\x9f\\x6e\\xde\\x2d\\xff\\x74\\xed\\x35\\x6d\\xa8\\x80\\x22\\x1b\\x87\\xbd\\x18\\xcc\\x7d\\xbd\\x94\\xa3\\xd9\\x00\\x38\\x5f\\xc7\\x82\\x3e\\x50\\x9f\\x97\\x70\\xf7\\x2b\\x3e\\xe0\\x13\\xac\\x33\\x48\\xc1\\xb1\\x64\\xe2\\x23\\xda\\xe3\\x5e\\xcb\\x47\\xbb\\x6e\\x0e\\x6a\\x33\\x2d\\xed\\x51\\xb8\\x37\\x2a\\x11\\xfc\\x82\\x54\\xfb\\xfc\\x0c\\xb6\\x49\\x37\\xa5\\x3e\\x09\\x11\\x90\\xda\\x57\\x32\\xa7\\x70\\x34\\x8a\\xdb\\xc8\\xf6\\x44\\xb8\\x32\\x70\\x62\\xf2\\xae\\xf7\\xb7\\x19\\x57\\xe2\\x44\\x8c\\x61\\xbd\\xeb\\x61\\xe1\\xcb\\x53\\x9e\\x55\\x4c\\xc6\\xa1\\x94\\x61\\xec\\xcb\\xfb\\xcf\\xc3\\x30\\xe1\\x57\\x64\\xf2\\x23\\xbe\\xcf\\x7a\\x11\\xe4\\xa7\\x37\\xf7\\x40\\xdf\\x63\\x94\\x5d\\x00\\x17\\x2b\\x73\\xc8\\x11\\x99\\x4a\\xdc\\x4f\\x49\\x79\\x48\\x2d\\xc2\\x09\\x41\\x81\\x2e\\x27\\x99\\x95\\xf0\\x86\\x1f\\x92\\x0c\\x69\\xe7\\xca\\x30\\xf4\\xf6\\x48\\x04\\xdf\\xd6\\xc9\\x30\\xce\\x13\\xeb\\x74\\x0c\\x23\\x19\\x63\\x78\\xfd\\x25\\x32\\xb3\\x75\\x4e\\xc7\\x85\\x0a\\x2d\\x7f\\x45\\xd2\\x98\\xbe\\xde\\xd6\\x2d\\xd2\\x1f\\xfd\\xb1\\x2c\\x7f\\x57\\x41\\x64\\x0d\\x2d\\x55\\x73\\x34\\xec\\x17\\x8b\\x8f\\x83\\x9e\\x3f\\x6a\\xf6\\x7c\\x7d\\x0f\\xf8\\xd1\\x07\\x36\\x80\\x22\\x4f\\xd7\\x76\\xd8\\x4f\\x8b\\x0b\\x1f\\xbd\\x48\\xdb\\xcf\\xfd\\x73\\x58\\x2f\\x11\\x83\\x42\\x84\\x2e\\x77\\xa7\\x39\\x3f\\x8a\\x15\\x70\\x4c\\x07\\x3b\\x27\\xa1\\xd6\\x73\\x21\\x92\\xaa\\x7e\\xcc\\x3b\\x41\\xc4\\xf3\\xa0\\x2d\\x26\\xda\\x46\\xc5\\x97\\xcb\\x83\\x0c\\x05\\x74\\x0d\\xae\\xd1\\xfa\\xf2\\xdb\\x34\\xc7\\x79\\x06\\xf9\\x9b\\x4c\\xe1\\xa4\\x07\\x49\\x86\\xeb\\xf6\\x8b\\x0f\\x1e\\xbc\\xee\\xe1\\x97\\x39\\x23\\x2b\\x13\\x0b\\x3e\\x79\\x2b\\xe1\\x53\\xaa\\xc2\\x31\\xa8\\x07\\xef\\x7c\\x2a\\xa6\\x8c\\x4a\\x73\\xcc\\xa6\\x9c\\x7a\\x09\\x93\\xdd\\x8d\\xb9\\xee\\xe4\\x5a\\x62\\x69\\x8c\\xd7\\x94\\xc1\\xc7\\xe1\\xdb\\x97\\xa1\\xe7\\xad\\x3f\\x8d\\x95\\xfb\\xaa\\xf9\\x5a\\xe3\\x4f\\xda\\x62\\x87\\x34\\xaf\\xfd\\xa7\\x26\\xb4\\x0a\\x62\\xcf\\x2d\\x63\\x56\\x68\\x54\\x5b\\x38\\xb9\\x5e\\xa4\\xf7\\x48\\x61\\xdf\\xe4\\x07\\x50\\x08\\x4c\\x83\\xc3\\x4d\\xa1\\xe4\\xc3\\xbe\\xdb\\xe4\\xbd\\x41\\xd5\\xc9\\x4e\\x2e\\x15\\xd5\\xd9\\xb5\\xbd\\xdb\\xc7\\x92\\x3e\\xb7\\x95\\xb1\\xa7\\x97\\xa1\\x68\\xcc\\xa1\\x82\\x29\\x93\\xe6\\xd7\\xbf\\xf2\\xda\\xb3\\xe3\\x08\\xe9\\xfd\\x7b\\x72\\xbf\\x5e\\x8a\\xc6\\x31\\x7e\\xfd\\xb1\\x4e\\x23\\x18\\x6b\\x9f\\x88\\xfb\\xa7\\x1a\\x69\\x2a\\x8c\\x97\\x54\\x79\\xad\\xa1\\x26\\x16\\x03\\x9c\\x5c\\xac\\x7c\\x68\\xad\\x57\\x62\\xb5\\xb2\\x62\\x65\\x0e\\x5d\\xe8\\xf8\\x8d\\xb4\\x1a\\x9a\\xc2\\x55\\xa0\\x8e\\x92\\xb2\\x26\\x56\\xda\\xb5\\x61\\x40\\xa1\\xe7\\xd7\\x09\\x9c\\xac\\xee\\x86\\x9e\\x09\\x3a\\x25\\x15\\x06\\xee\\x29\\xba\\x79\\xe5\\xda\\xe6\\x51\\x55\\x95\\xb6\\x9d\\xfe\\xa6\\x9e\\x29\\x7a\\x8b\\x95\\xe4\\x75\\x4c\\xcf\\xe8\\xe2\\x77\\x71\\x0f\\x48\\xca\\x88\\xe5\\x81\\x1d\\xef\\x81\\x30\\xaf\\x71\\x20\\xa8\\xdc\\xb4\\x7d\\xae\\xd8\\x43\\x52\\xce\\xc5\\x94\\xe0\\x64\\xed\\xbc\\x4f\\x58\\x7c\\x9b\\x4c\\xb1\\x82\\x32\\x8b\\x7a\\x52\\xa4\\xe6\\x06\\x26\\xc1\\x81\\x94\\x0e\\x16\\x7a\\xf2\\xe2\\x1e\\xf8\\x6d\\xde\\x37\\x77\\x2c\\x33\\xc4\\xba\\x9c\\x1f\\xfb\\xf8\\xa4\\x07\\x89\\x12\\xda\\xd4\\x4d\\xcf\\x0c\\xaf\\x8c\\x35\\x8c\\x7d\\xec\\xb8\\xcc\\xde\\x5f\\xfe\\x02\\x22\\x39\\x11\\x30\\x3b\\x46\\xff\\x2e\\xc2\\x3e\\x09\\xf5\\xa0\\xdf\\x19\\x82\\x4e\\xd1\\x67\\x6f\\x6f\\x58\\x11\\x88\\x13\\x4c\\xae\\xd3\\x0a\\xc0\\x1b\\x36\\x1d\\x82\\x49\\x49\\xd7\\xad\\x5e\\xd5\\x96\\xe3\\x7a\\xbd\\x8b\\x13\\x0a\\x20\\x38\\x35\\x95\\xc9\\x65\\xcf\\xd3\\xc8\\x5d\\x1f\\x97\\x77\\x90\\x37\\x4c\\x77\\xb0\\xe6\\xb8\\x94\\x36\\xd8\\x13\\x5c\\x0f\\xe9\\xa2\\x9b\\x7b\\xcf\\xcf\\xe6\\x2e\\xec\\x7b\\x92\\x2a\\xc2\\x98\\xb6\\xa7\\x23\\x16\\xd0\\x95\\xe7\\x94\\x64\\x38\\x50\\x37\\x14\\x0a\\x7a\\x6b\\x86\\x0f\\x34\\xfe\\x35\\x1d\\xb2\\x08\\x67\\xbb\\xa0\\x38\\x28\\xad\\x58\\x7d\\x92\\xfe\\xc9\\xd5\\x65\\xa9\\xef\\x21\\x07\\x05\\xe8\\xbc\\x3b\\x21\\xd4\\x3e\\x88\\x82\\xa7\\x9a\\xf5\\xfd\\x23\\xa5\\xe0\\xc3\\xe4\\x06\\x26\\xe7\\xe2\\x00\\x82\\xe2\\x97\\xdb\\xcb\\x2c\\x48\\x6a\\x4d\\x13\\xec\\x8d\\xa8\\x7b\\x60\\xf3\\x21\\x3a\\xcf\\x13\\x7a\\x40\\xc3\\xf3\\xb5\\xf6\\xc0\\x8d\\x80\\xfc\\xe6\\x1a\\x91\\xef\\x68\\x71\\xb6\\xa9\\xa1\\x06\\x3d\\x91\\x21\\x9f\\xf9\\x87\\x4c\\x20\\xab\\x66\\xdf\\xc5\\x9e\\x56\\x72\\xe2\\x03\\xaa\\xb2\\x2a\\x4a\\x86\\x50\\x04\\x4c\\x4f\\x7b\\x16\\x14\\xd6\\xec\\x66\\xb3\\x3c\\x54\\xb8\\xb9\\x12\\xb6\\xc4\\xe6\\x46\\x43\\xb2\\x7b\\x42\\x1c\\xd1\\x59\\xb6\\x98\\x00\\x5d\\x10\\xb9\\x7d\\x8c\\x62\\x55\\x5d\\xc4\\xe2\\x79\\xf2\\xb3\\x57\\x49\\xff\\xb9\\x85\\xd4\\x9f\\x32\\xcc\\x6f\\xc1\\x23\\xc5\\x15\\x57\\xba\\xa4\\xdf\\x97\\x87\\x05\\x1d\\xf0\\xc5\\x42\\x70\\x2b\\xff\\x49\\x0b\\x4f\\x5e\\xf4\\x9f\\xe9\\xe6\\xfe\\x15\\xfc\\xc3\\xf0\\x0d\\x98\\x6f\\x6b\\x74\\x55\\xb0\\xb2\\xe1\\x15\\xd6\\x2f\\xcb\\xb8\\x3f\\xdc\\x30\\xb4\\x0a\\x47\\x0e\\x45\\x22\\x73\\xe2\\x24\\x59\\x76\\x52\\x11\\xdf\\xcd\\x8f\\xf6\\x29\\xaa\\x56\\x63\\xb1\\xfd\\x0f\\x96\\x15\\x96\\x84\\x8b\\xe9\\xb7\\x9c\\xf6\\xc1\\x55\\x26\\x6a\\x3d\\x1f\\x52\\x8c\\xac\\x45\\x69\\x46\\xe1\\x10\\x3f\\x86\\xc7\\xb6\\x65\\x6e\\x21\\x39\\xff\\x71\\xac\\xf4\\x21\\x30\\x3b\\x23\\x43\\x68\\xa3\\x19\\xc9\\xc5\\x55\\xb5\\xec\\xd8\\xd1\\xed\\xcb\\xce\\xe6\\xb1\\x55\\x33\\x23\\x43\\x3d\\xb5\\xb9\\xf2\\xe0\\xd0\\x99\\x69\\x47\\xe5\\x41\\xa4\\x03\\x8b\\xa8\\x21\\x74\\x3e\\x4f\\x8e\\xb2\\x4e\\x0e\\x78\\x13\\xab\\x1e\\x41\\x09\\xd2\\x20\\xf4\\xd5\\x4e\\x8b\\x7e\\x7b\\x8a\\x2d\\xf5\\xff\\x64\\x3b\\x10\\x96\\x8e\\xdd\\x41\\x46\\xea\\x45\\x3a\\x63\\x47\\x5d\\x45\\xee\\x87\\x56\\x53\\x1f\\x66\\x49\\x30\\x41\\xc3\\x34\\x3f\\x3a\\x1f\\xe4\\x19\\x18\\x00\\xa8\\x09\\x85\\x57\\xe8\\xc8\\x8a\\x6f\\xe3\\x16\\x6e\\x57\\x05\\x78\\x5b\\x0f\\xaf\\x2a\\x4e\\x5d\\xe3\\xbb\\x36\\x2e\\x8f\\xe3\\xae\\xf7\\x8d\\x9d\\x83\\x25\\x1e\\xbb\\x6f\\xe6\\x10\\x39\\x3a\\x59\\xe9\\xb3\\xfd\\x1e\\x48\\x18\\x38\\x4f\\x0c\\x7a\\xbd\\x68\\x1f\\x2c\\xbb\\x67\\x83\\x39\\x78\\x21\\xd2\\xe4\\x6f\\x36\\xaf\\xa4\\x65\\x69\\x8b\\xe7\\x50\\xb2\\x5a\\x48\\x43\\x2d\\xf9\\x3b\\xd0\\xf3\\xe8\\x20\\x50\\xd3\\x44\\xa1\\xe8\\xfb\\x40\\xe0\\x33\\xbb\\xf1\\x9d\\x94\\x1e\\x8b\\x2f\\xa2\\x17\\xf4\\xee\\x17\\xc3\\x9b\\x26\\x85\\xc2\\x85\\x8e\\xb6\\x4e\\x56\\x2d\\x9f\\x58\\xe4\\x0e\\x26\\x7b\\x20\\x0b\\x30\\xde\\x19\\x23\\x86\\xeb\\xc1\\x6e\\x02\\xfd\\x2f\\x33\\x4f\\xf6\\xb3\\x11\\x6b\\x36\\x1a\\x9f\\x13\\x3a\\xef\\x01\\xe2\\xaf\\xbc\\x19\\xa8\\x97\\xfd\\xbe\\x29\\xf9\\x0f\\x2a\\x49\\xbd\\xbf\\x55\\x72\\x2e\\x2b\\xdd\\xf8\\xfa\\x4d\\x83\\x9d\\xe5\\xe4\\x08\\x51\\xdf\\xe5\\x3f\\xbf\\xea\\x4d\\x8b\\x90\\x65\\x38\\xf8\\xe7\\x1a\\x26\\xee\\x70\\x74\\x65\\xd1\\x70\\x19\\x54\\x6c\\xeb\\x70\\x0c\\x22\\x99\\xfb\\x28\\x91\\x20\\x9d\\xb1\\x65\\xab\\xbd\\xa2\\xb0\\xaa\\xcf\\x49\\xd0\\xaf\\x25\\xed\\x4a\\xe0\\xd5\\x37\\xc7\\xf6\\x5a\\xd7\\xfd\\x35\\xd8\\xb3\\x5b\\x50\\xcd\\xa3\\xd6\\x4d\\x3f\\xfd\\xf9\\xf8\\x83\\x60\\x86\\x00\\x6a\\x5d\\xad\\x7e\\x2e\\x39\\xe8\\x49\\xef\\x13\\x95\\xed\\xaf\\x82\\x9d\\xbf\\xd3\\x09\\x42\\xc6\\x7c\\xad\\xd9\\xae\\x10\\x16\\x70\\x48\\x5e\\xc7\\xdc\\x66\\x50\\x6c\\xbc\\xb5\\xd4\\x65\\x82\\x61\\x06\\xf4\\xf4\\x3b\\x29\\x07\\xab\\x74\\x8e\\xdf\\xd7\\xfa\\x5f\\x49\\xe5\\x87\\x99\\x28\\xd3\\xb8\\xba\\x20\\x4b\\x74\\xa9\\xe2\\xe2\\x43\\xce\\x84\\x22\\xe7\\xf7\\x74\\xf5\\x0d\\x37\\x16\\xd3\\x8b\\x35\\x36\\xba\\x75\\xeb\\xfb\\xb5\\x53\\x74\\x4e\\x0a\\x1a\\x3d\\x48\\x0a\\xd0\\xae\\x34\\x8d\\x84\\x40\\x10\\x34\\x5d\\xec\\x47\\x1a\\xa9\\x5f\\x25\\x8b\\x8a\\x83\\xf1\\x44\\xf0\\xc8\\x30\\x63\\xeb\\xed\\x81\\x3a\\xf6\\xad\\xce\\xec\\xd3\\x86\\xed\\xd8\\xb7\\x6d\\x11\\x93\\x57\\xec\\x2b\\xfc\\xca\\x5e\\x71\\x09\\x10\\x83\\x4b\\x51\\x73\\xfd\\x42\\x4b\\x17\\xfc\\xe4\\x11\\xa1\\x2d\\x53\\x72\\x7f\\x9a\\xcd\\x09\\xaa\\x31\\x55\\x35\\x22\\x49\\xb9\\xed\\xa9\\xb3\\x2a\\xcb\\xb2\\x4b\\x0e\\x20\\x06\\xb8\\xa4\\x0b\\xa2\\xb1\\x79\\xf0\\xd0\\x3f\\xde\\x60\\x62\\xdc\\x05\\xe3\\x4b\\x69\\xe6\\x92\\xca\\xc7\\x22\\xa0\\x12\\xb1\\x6b\\x42\\xb0\\x39\\x15\\xde\\x64\\x70\\x0f\\x44\\xe4\\x77\\xae\\x3e\\xc9\\xf9\\x3e\\xde\\xa9\\xc7\\xf7\\x6e\\x91\\x39\\x29\\x28\\xcd\\x02\\x1a\\xa1\\x4e\\x75\\x2b\\xb1\\x70\\xb1\\x93\\x68\\x90\\xa5\\x11\\x4b\\xf7\\x45\\x94\\x63\\x87\\x1a\\xcc\\xbc\\x0b\\x4c\\x83\\xe7\\xc4\\x83\\x6b\\x20\\x5b\\x3f\\xe7\\x36\\xb8\\x6b\\xf8\\xef\\x2c\\xfd\\xe4\\x5d\\x53\\x3b\\x82\\x2e\\x0f\\xb3\\x6a\\xd1\\xbb\\x85\\x21\\x2c\\x9d\\xf5\\x9d\\xcd\\x49\\x8f\\x25\\x86\\x70\\xd9\\xbc\\x36\\x16\\x45\\xb7\\x12\\xa9\\x4c\\xfd\\x95\\xf8\\xf4\\x6d\\x75\\xdc\\x1f\\xe5\\xd1\\x45\\xb0\\x87\\xbe\\x7f\\xcf\\xd0\\xb2\\x1f\\x37\\x0d\\x86\\xdf\\x0a\\xc7\\x8e\\xcd\\x98\\xe9\\x3a\\x9e\\x25\\x9f\\xd3\\x87\\x4e\\x6d\\x1a\\x07\\x36\\xbe\\x63\\xb8\\xcb\\xe1\\x79\\x9a\\x4d\\x22\\xdb\\x3b\\x68\\x85\\x7e\\xae\\x9c\\xf5\\x7a\\xc6\\x2c\\x64\\xf3\\xc5\\x48\\xec\\xa4\\xe8\\x9d\\xe7\\x5c\\x1a\\x96\\xbb\\x0c\\x23\\xc7\\xc6\\xea\\x7b\\x53\\x5c\\xf4\\x67\\x53\\xe2\\x03\\x02\\x96\\x5e\\x89\\xb8\\x85\\xcf\\x63\\x4b\\x53\\x4d\\x7e\\x8b\\x8d\\x0a\\x2c\\x6d\\x21\\xb8\\xfb\\x46\\x1c\\x09\\x1d\\x8f\\x84\\xfc\\x54\\x4f\\xdb\\xd9\\x07\\xac\\xfd\\x9d\\x4a\\xe9\\x13\\x96\\x2e\\x6b\\x74\\xfb\\xba\\x49\\x9f\\x5e\\xe8\\x9b\\xaa\\xa1\\x64\\x98\\xe5\\xce\\x8a\\xb6\\x04\\xce\\x3d\\x36\\x7e\\x4f\\x83\\x1b\\x34\\xb5\\x05\\xff\\xc8\\xaf\\x68\\x35\\xaa\\xc4\\xda\\xea\\x28\\x7e\\xb7\\xe4\\xcf\\x0e\\xd5\\xd9\\x03\\x0a\\x92\\xe2\\x66\\xa7\\x41\\x72\\x14\\x61\\x5b\\x30\\x8a\\x6c\\xfc\\xb3\\xc4\\x38\\x46\\xee\\xbb\\xa9\\x59\\xcb\\xba\\x10\\xad\\xcf\\xcf\\x7a\\x87\\xc4\\x13\\xab\\x3d\\xef\\xf8\\x50\\x82\\xbe\\x94\\xc1\\x4b\\xcf\\x0c\\x43\\xf0\\x30\\x9d\\xa0\\x0c\\x37\\x8b\\x13\\x19\\x8f\\x7d\\x50\\xe0\\x21\\x8d\\x15\\xfd\\x48\\x4b\\xaf\\x81\\x7a\\x4e\\x91\\x61\\xf7\\x29\\x35\\x71\\x0d\\x70\\x89\\x3f\\xf1\\x8c\\xbe\\xc7\\x78\\x8e\\x52\\x44\\xbf\\xc7\\x2f\\x80\\x18\\xa6\\xdb\\x04\\x07\\xc9\\x30\\x60\\xbf\\x83\\xea\\xca\\x26\\xca\\xcc\\x3e\\xac\\x8f\\xf2\\x8f\\xca\\x97\\xb7\\x0f\\xfc\\x8f\\x77\\xc7\\x56\\x20\\xe7\\x9e\\x4a\\x35\\x5a\\x78\\x47\\x07\\x2b\\xc5\\xc6\\x95\\xcd\\x2a\\x8b\\xce\\x75\\x7e\\x77\\xdf\\xb8\\xf1\\xed\\xfc\\xf4\\x68\\xc9\\xf7\\x82\\x4b\\x9b\\x6f\\x84\\x35\\x3f\\xd7\\x72\\xf6\\x30\\x3f\\xa1\\x5d\\xcb\\x03\\xba\\xfb\\xbc\\x2c\\xd3\\x9e\\xd0\\xfe\\x72\\x6c\\x4e\\x4e\\x1e\\xc6\\x69\\xa7\\x3d\\x63\\x0a\\xbd\\xc9\\xfa\\x74\\x69\\xcc\\xb7\\x72\\x27\\xf9\\x53\\xaf\\xe2\\x78\\x05\\xa6\\x5e\\x2a\\x6b\\xd2\\x21\\xf6\\x3f\\x35\\x07\\xe8\\x05\\x27\\x16\\x18\\xf2\\x6e\\xba\\xd2\\x39\\x0f\\x80\\x37\\xcd\\x91\\xd3\\x83\\x72\\x81\\x1a\\xdd\\x4d\\xe1\\xcc\\xc4\\x77\\xec\\xeb\\xe9\\x6f\\x95\\xf8\\x2c\\xa7\\x4c\\x3a\\xf7\\xf3\\xa8\\x3c\\xbd\\xc2\\xe8\\xf8\\x5c\\x6b\\xc7\\x9e\\x55\\x30\\x61\\x77\\xca\\x83\\x0d\\xf6\\xa5\\xa8\\x97\\xa3\\x24\\x04\\x9c\\x7a\\x77\\x02\\x90\\x5e\\x56\\x46\\xcf\\xa5\\xe6\\x41\\xab\\xc1\\xc1\\x31\\x06\\x9c\\x7f\\xa7\\x1a\\xfc\\x17\\x90\\xdc\\xb5\\x5f\\x5c\\xf6\\x63\\x44\\x9e\\x79\\x03\\x70\\x97\\x61\\x12\\x39\\x08\\xe4\\x9a\\x27\\xdf\\x92\\xfa\\x9c\\x89\\xc5\\x37\\x21\\x98\\xe2\\x78\\xce\\x3f\\x4c\\x8d\\xa4\\x96\\xf0\\x64\\xe8\\xb4\\x77\\x53\\x07\\x41\\x2b\\x07\\x66\\x7a\\x79\\xcb\\xcb\\x33\\xa6\\xbe\\x68\\x9f\\x87\\x8b\\xee\\x81\\x9d\\xb8\\xae\\xfb\\x57\\xc4\\x55\\xa6\\xa8\\x0e\\xae\\x67\\x72\\x10\\x6c\\x55\\x34\\x34\\xa1\\xbb\\xa9\\x23\\x42\\x47\\xae\\x03\\x31\\x15\\x32\\x7b\\x9c\\x98\\x93\\x17\\xeb\\xe1\\x5e\\xc2\\x47\\x44\\x13\\x03\\xe7\\x8f\\x81\\xe4\\x96\\x04\\x9f\\xa9\\x97\\x06\\xb4\\xdd\\xfd\\x39\\x64\\x57\\xbd\\x05\\x09\\x4b\\x8e\\x25\\xda\\x52\\x46\\x28\\xa2\\x62\\x88\\xd1\\x9d\\x79\\xbb\\xdb\\x8b\\x3b\\xca\\xdd\\x7b\\x80\\x54\\x22\\xe0\\xdd\\xe6\\x9f\\x47\\x3f\\x66\\x09\\xaa\\x0e\\xdc\\xf2\\x15\\x93\\x75\\xbd\\xf0\\x7e\\x06\\x70\\x62\\x3e\\xdf\\x7c\\x1e\\xf5\\xf4\\x84\\xb5\\x7d\\xd6\\xf9\\x91\\xc0\\x9f\\xe8\\x2f\\xe6\\x2f\\x00\\x8e\\x14\\xbe\\xe0\\x6f\\x16\\xd5\\xbe\\xf0\\x6d\\xdd\\x74\\x7f\\x86\\xe9\\x1f\\x75\\xd3\\xaa\\xf3\\x7b\\xb1\\x3c\\x3f\\x8d\\x8e\\x8d\\x98\\x06\\x7e\\x74\\xaa\\xc1\\xf0\\xf9\\x26\\x6d\\x0a\\x60\\xf8\\x96\\x9f\\xab\\x9e\\x75\\xd4\\xb8\\x94\\x15\\x47\\x5f\\x60\\xe4\\x69\\x0b\\xa9\\x04\\x35\\xee\\x7b\\xeb\\xec\\xb2\\xa9\\x10\\x3c\\xc4\\xa4\\x11\\xa5\\x3e\\x91\\x61\\xf4\\x71\\xae\\x82\\x26\\x0e\\x0a\\xa8\\xfa\\x95\\xd8\\xe1\\x59\\x39\\xa4\\x52\\x90\\x7c\\x00\\xbb\\x85\\xf6\\x8a\\x6e\\x93\\x41\\x0e\\x24\\xb9\\xd5\\x7b\\x72\\xb9\\xdb\\xe6\\xad\\x5b\\x67\\x85\\x74\\x21\\xe5\\xcb\\xed\\x78\\xf8\\x35\\x20\\x1a\\x64\\x72\\x2f\\x82\\x29\\xd5\\x18\\xc5\\x14\\x79\\xb1\\xb2\\xca\\xa0\\xf9\\x24\\x4e\\xeb\\x87\\x7e\\xdf\\xe6\\x07\\x2a\\x06\\x88\\x9a\\x98\\xab\\xc9\\xc4\\x86\\x29\\xe4\\x51\\x86\\x33\\x3b\\x72\\x6c\\xce\\x68\\x35\\x99\\x27\\x85\\xcc\\x47\\xe4\\x82\\x23\\x6e\\x1a\\x6c\\x2f\\x47\\x41\\x9a\\xfc\\x37\\x71\\xd8\\x67\\xde\\xbd\\xb1\\x9b\\x18\\x4f\\x0a\\xd0\\xc6\\xb2\\xbb\\xd2\\xa6\\x7a\\xdc\\xb9\\x81\\xb8\\x98\\xa1\\xd1\\x06\\x33\\x2b\\xa8\\x7e\\x6e\\x31\\x38\\xce\\x0b\\xe1\\x2d\\xff\\x1d\\x96\\x70\\xb9\\x25\\x4d\\xe7\\xf0\\xbe\\xf6\\xab\\xc7\\xaa\\xef\\x1a\\x15\\x36\\x03\\xe5\\xce\\x24\\xce\\x4b\\x17\\x69\\xe5\\xcb\\x55\\x0c\\xb4\\x1d\\xed\\x93\\xea\\x69\\xd1\\x73\\x56\\x9d\\xdb\\x41\\xc0\\x35\\x8f\\x5a\\xf0\\x6b\\xcb\\xe9\\xbc\\x37\\xfc\\xd1\\xa1\\xcf\\x33\\xfd\\x0c\\x11\\x9d\\x8d\\x7b\\x40\\x39\\x76\\x53\\xbe\\xad\\x79\\x59\\x5c\\x2f\\x39\\xfa\\x89\\xda\\xac\\xc2\\xcb\\x5c\\xe4\\x5c\\x36\\xca\\x18\\x11\\x5d\\xf5\\x40\\xeb\\xf4\\xf2\\xb8\\x4e\\x63\\xb0\\x80\\x5d\\x76\\x6a\\x8d\\x3e\\x21\\x77\\x43\\x37\\xd6\\x9f\\xbb\\x8d\\xca\\x84\\xbf\\xb5\\xbe\\x87\\x40\\xe2\\xe1\\x99\\x5e\\x8a\\x1e\\x3d\\x13\\x62\\x01\\x26\\x79\\xd3\\xf1\\x66\\x2b\\x5b\\x7a\\xf9\\x4e\\x70\\xae\\x61\\x98\\x59\\x7e\\x8c\\xfc\\x07\\xd6\\x46\\x6a\\x4a\\x8f\\x8b\\x74\\x8e\\x9f\\x41\\x76\\xb0\\x51\\x64\\xa2\\x04\\xd3\\x3d\\x80\\x27\\xf5\\x61\\xdc\\xe1\\x5d\\xc8\\x1f\\xd1\\x84\\x9d\\x54\\x9e\\xae\\x9e\\x44\\x87\\x69\\x9c\\x84\\x68\\x47\\xa2\\x84\\x0c\\xec\\x0e\\x3d\\x02\\xda\\xf0\\x1e\\x86\\x70\\x1f\\xa6\\x81\\xf6\\xd2\\xac\\x2d\\xa9\\x0c\\x67\\x0a\\x98\\xcf\\x3b\\x6a\\x07\\xa3\\x16\\x87\\xec\\x38\\x88\\xa6\\x5e\\xdb\\x55\\x3d\\x0a\\xbc\\x39\\x40\\x6a\\x68\\x64\\x3c\\xe8\\xee\\x70\\xa4\\x23\\xfa\\xdd\\x89\\x27\\x40\\x54\\xb4\\xb0\\xd7\\x20\\x28\\x5a\\x42\\x15\\x49\\xdd\\x98\\x23\\xcf\\xd1\\x93\\x24\\x9a\\xa2\\x08\\x20\\xb1\\xcc\\x5c\\x07\\x01\\xbf\\xf8\\xdc\\x50\\x0b\\x6f\\x87\\x92\\xad\\x59\\x1a\\x02\\x5e\\x62\\x74\\xef\\xc8\\x75\\xb5\\x8a\\x24\\xed\\x50\\x1f\\x7f\\x7a\\xd3\\xcc\\xab\\xa2\\x5d\\x3b\\x66\\xcd\\x1b\\xed\\x2c\\xbd\\x38\\x97\\x8a\\x5c\\xf8\\xdb\\x0b\\x00\\x06\\x00\\xf4\\xe6\\xe9\\x31\\x9c\\xa0\\x9a\\x58\\x96\\xe3\\x77\\xc9\\x46\\x4c\\x71\\xfe\\x54\\x99\\x31\\x59\\x95\\x7a\\x0f\\x8e\\xf1\\x7b\\xb6\\x5d\\x93\\x93\\x17\\x4f\\x29\\xd7\\xb5\\x48\\x70\\x7b\\x29\\x40\\x1b\\x99\\x26\\x95\\x5b\\x10\\x4c\\x9f\\x3e\\xea\\x85\\x9f\\x3d\\x75\\xef\\x9c\\x53\\x18\\xa5\\x35\\x8f\\x0f\\x4d\\xa2\\x37\\x4f\\xa2\\xdb\\x18\\x1b\\xb7\\x07\\x9c\\xa8\\x08\\x22\\x99\\x0e\\xb6\\xcd\\x70\\x9d\\xd5\\xab\\x3d\\xda\\x72\\x83\\x4b\\xed\\x16\\x10\\xce\\xde\\xf6\\xf4\\x51\\x7f\\xdc\\x44\\x6f\\x0f\\x23\\xba\\xd1\\xa2\\x05\\xdf\\x87\\xb6\\x1e\\xe5\\xf2\\xeb\\xd5\\x0e\\x94\\x86\\xc8\\x0b\\xdc\\x76\\x73\\x01\\x17\\x36\\x35\\xe6\\x69\\xde\\xac\\x21\\x92\\x15\\xc6\\xfd\\x92\\xf6\\xa3\\x4f\\x02\\x19\\xa1\\x08\\xc5\\xb6\\xf7\\x73\\xb7\\x32\\x6b\\x4a\\x1a\\x05\\xa2\\x9f\\xb2\\x30\\x13\\x72\\xef\\xee\\x81\\xbb\\x36\\x04\\x6f\\x28\\x8a\\x77\\x35\\xcd\\x7c\\x5e\\xb3\\xdf\\xf2\\xc1\\x39\\xbf\\xae\\xe4\\x24\\xf4\\x0f\\x27\\xe6\\x02\\x6f\\xa3\\xb8\\xb8\\xd0\\xfb\\x96\\x96\\x84\\x67\\x85\\x1c\\xee\\xa0\\x60\\x13\\xc7\\xad\\xa9\\xf8\\x65\\xaa\\x18\\x83\\x15\\xd5\\xc9\\x42\\x2f\\x59\\xcc\\xd1\\x1d\\x8a\\xab\\xd1\\x13\\xb4\\x0e\\xdd\\x2d\\xdd\\xd7\\x4b\\xe7\\xac\\x37\\x0b\\x3b\\xc4\\x27\\x6d\\xb6\\x20\\x9e\\xa9\\xe3\\xe3\\x85\\x76\\x08\\xd1\\x2d\\xdb\\xe9\\x6e\\xe4\\x82\\x28\\xd9\\x28\\x47\\x9b\\xfa\\x2f\\xc7\\xe7\\x5f\\xdc\\x0f\\xf7\\xa4\\xf1\\x81\\x33\\xdc\\x5b\\x69\\xa4\\x7a\\xd4\\xe2\\x49\\x40\\x39\\xc7\\xb7\\x63\\x6b\\xb3\\x6f\\x56\\xbd\\x2b\\x47\\x52\\xb9\\x8d\\x3f\\xa5\\x08\\x4e\\xb5\\x13\\xc3\\x2f\\x46\\x36\\x42\\x48\\xa8\\xdd\\xf4\\xce\\x94\\x6a\\xd2\\x09\\xa8\\xe1\\xdb\\xbc\\xea\\x0e\\x57\\x95\\x22\\x70\\x6c\\xfa\\x7f\\x1a\\x9b\\xd9\\xc7\\xe5\\x33\\x16\\xe4\\xc8\\xee\\xcb\\x30\\x3e\\xdd\\xf8\\x8d\\xd7\\xd0\\x1d\\x63\\x50\\x65\\x35\\x0d\\xc6\\x0a\\x7b\\x0d\\x8a\\x43\\xa5\\x51\\x1e\\x1d\\x4e\\xeb\\x7e\\x5a\\x6b\\xfb\\x76\\x6b\\x2e\\xcf\\x55\\xf4\\x7d\\x39\\x38\\xe5\\x0f\\xdf\\x71\\x22\\x0a\\xa1\\xf2\\x32\\x8d\\x02\\x38\\xe0\\x2c\\x80\\xfd\\xb7\\x5f\\xa1\\x9a\\x46\\xca\\x0f\\x83\\x73\\x12\\x00\\x06\\x3b\\x83\\x41\\x14\\x4e\\x21\\x65\\x5a\\x5c\\xcd\\xa4\\x94\\x1c\\x4f\\x7f\\x97\\xd4\\x07\\xd0\\xf9\\xc9\\x80\\xdf\\x7e\\x63\\x1e\\x7d\\xaf\\x23\\xf6\\x26\\x7e\\x0d\\xc5\\x70\\x47\\x9a\\x96\\x78\\xf2\\x49\\xe6\\x35\\x02\\x0c\\x37\\xc6\\x58\\xcc\\x97\\xd2\\xdb\\x26\\xc4\\x3f\\x45\\x10\\x0d\\x32\\xc5\\xfa\\x3b\\x4b\\xde\\x28\\x34\\x52\\x99\\xe1\\x3d\\x0e\\x4d\\x4e\\x79\\x26\\xaf\\x20\\xbb\\xd6\\x15\\x57\\x1b\\x26\\xeb\\x90\\x5c\\xb1\\x01\\x92\\xa1\\xda\\xfb\\xb7\\xd0\\x27\\xe1\\x5f\\xfc\\xcf\\x07\\x4b\\x74\\xe6\\x4e\\xb5\\xff\\xf3\\xb2\\xd7\\x79\\x01\\x66\\x01\\xdd\\x46\\xae\\x06\\x5f\\xbf\\xa0\\xef\\x76\\x1c\\xfd\\xe9\\xca\\x14\\x7b\\x89\\x59\\x37\\xa4\\xf8\\x72\\xe7\\x41\\x3d\\x50\\x02\\xdd\\xd9\\x0b\\x63\\x16\\xc3\\xac\\x51\\x1d\\xaa\\x14\\x73\\xa9\\xf7\\xa3\\x6c\\x67\\xbe\\x99\\xfb\\x88\\xbb\\xc7\\x7b\\x62\\x01\\x88\\xec\\xb9\\x07\\x89\\xb0\\x70\\x5c\\xf1\\xcf\\x02\\xdf\\x2e\\xee\\x01\\x4c\\x13\\x7b\\x8b\\xd3\\x15\\x6d\\xd4\\x93\\xb6\\x09\\xc6\\x42\\xca\\xce\\xa2\\xee\\x67\\x6f\\x79\\xbf\\x8d\\x80\\x22\\x04\\x12\\x02\\xbb\\x95\\x7f\\x36\\x24\\x86\\xd2\\x32\\x64\\x7c\\x98\\x03\\x7f\\x9a\\x3e\\x61\\xaf\\x1b\\x37\\x83\\xa8\\x81\\x69\\x30\\x60\\xcf\\x84\\x4c\\x63\\x6e\\x86\\x1a\\x74\\x86\\xfb\\x7d\\x55\\x78\\x66\\x6f\\xbb\\x3c\\xbe\\xd0\\x28\\x98\\x64\\xa9\\x5f\\x1e\\xaa\\x6c\\x40\\x22\\x75\\xd5\\x2b\\x6a\\x9a\\xab\\xab\\x12\\x5d\\x14\\xcd\\x79\\x1f\\xb8\\x3b\\xb1\\xa6\\xa6\\x04\\x04\\xd1\\x5e\\xc6\\x3e\\x85\\xd8\\x2e\\x60\\x09\\x52\\x95\\xc5\\xe1\\x3c\\x07\\x4d\\xd8\\x56\\x70\\x5d\\x00\\x1a\\x58\\x5e\\x57\\xa8\\x15\\xb8\\xe2\\x3c\\x57\\x02\\xec\\xed\\xfc\\xdf\\xe8\\xb1\\x06\\xcc\\x5d\\x14\\x17\\x39\\xb7\\xd9\\x60\\xee\\x42\\xa8\\x5f\\x72\\xdb\\x4b\\xf1\\xa7\\x88\\x2c\\x15\\x3a\\x3f\\xd1\\x92\\xe1\\x6b\\x09\\xe1\\x17\\x95\\x40\\x66\\x5e\\xdd\\x03\\x38\\xf5\\xd2\\x11\\x82\\x57\\x56\\xfd\\x74\\x1e\\x6c\\xd6\\xdf\\x74\\xa3\\xd1\\x35\\x78\\x0e\\x2b\\x83\\x54\\xe7\\x43\\xac\\x64\\xab\\x2f\\x62\\x40\\xdf\\xdb\\x09\\xb6\\x49\\x83\\x87\\x4b\\xd1\\xba\\x1d\\xd0\\x00\\xb2\\x27\\x8c\\xab\\xe4\\xd8\\x3a\\x42\\xc0\\x0d\\x4a\\x86\\xb6\\xe1\\xef\\xf2\\x70\\xd7\\x3c\\xf2\\x5b\\xb1\\xb5\\x87\\xa7\\xc6\\xdf\\x9f\\x95\\x1c\\x46\\x45\\x7e\\x22\\xb9\\x64\\x45\\x55\\x30\\xe1\\x36\\x36\\x7f\\x95\\xe0\\xa0\\x20\\x1b\\xd2\\x32\\x7c\\xb9\\xdd\\x24\\x8f\\x37\\x5c\\x76\\x59\\x73\\x63\\x93\\x6e\\x63\\xf2\\x5c\\x63\\x6c\\x4c\\x16\\xdc\\xe9\\xf3\\xa0\\x7f\\x27\\xaf\\x7f\\x4d\\xea\\xeb\\x85\\x5f\\xd4\\xed\\xc7\\x52\\x77\\x36\\x4e\\x30\\x16\\xe6\\xe2\\x32\\x4c\\x32\\x60\\x9e\\x3f\\x4d\\x12\\x62\\xf0\\xab\\xdf\\x44\\xc9\\x9f\\x1b\\xc5\\x30\\xcb\\xb9\\xcc\\x46\\xee\\x14\\x55\\xe0\\x42\\x92\\x8d\\x64\\xc5\\xcc\\xbe\\xb8\\x42\\x14\\xd9\\x0f\\x77\\x09\\xda\\xfc\\x8a\\x58\\x79\\x93\\x08\\x35\\xf7\\x2f\\x7d\\x7c\\x38\\x49\\x0c\\x36\\xe9\\x2e\\x06\\x7c\\xd3\\x53\\x3d\\x78\\xab\\x0a\\x93\\xdc\\x5b\\x65\\x2b\\x07\\x2c\\x75\\x73\\xfc\\xf9\\x51\\xa0\\xae\\x69\\xc7\\x85\\xf7\\x18\\x72\\xc6\\x35\\x90\\x32\\xc4\\x4b\\xb2\\x72\\xe3\\x95\\x08\\x49\\x1b\\xcc\\x81\\x3b\\x49\\x99\\xd4\\x78\\x5a\\xf2\\xe4\\xf3\\x76\\xa7\\x29\\x86\\x48\\xe5\\x4b\\x69\\xc2\\x65\\x05\\x9c\\x64\\x87\\xca\\x49\\x56\\xfa\\x3b\\xca\\xed\\x7b\\xe0\\x41\\x8e\\x53\\x87\\x67\\xc1\\x0a\\xbf\\xc0\\x50\\x45\\xfb\\xb0\\xb8\\xcb\\x97\\x00\\xf0\\x25\\xc2\\x6a\\x96\\x55\\xaf\\x8a\\xe5\\x95\\x11\\xa7\\x06\\x00\\x27\\xb8\\xf8\\xc7\\x8e\\x50\\x21\\x46\\x0c\\x27\\x30\\xf8\\x97\\x9f\\x1d\\x9c\\xfc\\x0f\\x19\\x16\\xe9\\xff\\xb6\\x02\\x45\\x1b\\x56\\x41\\x0d\\x70\\xca\\xad\\x2c\\xbf\\xde\\xad\\xdc\\xe9\\x9f\\x7b\\xe0\\x83\\x7f\\x93\\x94\\x9e\\x83\\x6b\\x8a\\xcf\\xee\\x19\\x42\\xbb\\xc9\\x71\\xfa\\xf1\\x15\\x42\\x18\\x5d\\x4b\\xd4\\x39\\x14\\x1a\\x38\\x93\\x1e\\x43\\x57\\x4b\\x1f\\xbe\\x8d\\x99\\x80\\xde\\xea\\x24\\x57\\xf7\\x4c\\x1f\\xe3\\x30\\x09\\x97\\xa5\\x00\\x39\\xfd\\xaf\\xa8\\x80\\x02\\xd0\\xcc\\x7c\\x2c\\x20\\x43\\x20\\xc7\\xbc\\xaf\\xf2\\xdf\\xa3\\xdb\\xf3\\xa5\\x45\\xad\\xc7\\xb6\\xe5\\x2c\\xe4\\x14\\x09\\x55\\x77\\xd4\\xfa\\x64\\x38\\x37\\xdc\\x6e\\x3c\\x63\\x5c\\x42\\xbc\\x4b\\x0e\\xc9\\x67\\xdb\\x30\\xef\\x20\\x1f\\xd4\\x42\\xc4\\x4a\\x71\\x18\\xea\\x1b\\x2c\\x37\\xe4\\x59\\x62\\x3f\\x72\\x2b\\x02\\x24\\xcf\\x38\\x31\\x6b\\xd1\\x86\\x9b\\x4b\\x82\\x13\\x38\\x54\\x2d\\x6f\\xcf\\xa9\\x71\\x7e\\xc9\\x0c\\x6f\\xc6\\x5c\\x34\\x52\\x53\\x57\\x88\\x69\\x57\\x2c\\x2f\\x0d\\xd3\\x26\\x50\\xca\\x50\\xfa\\xff\\x2f\\x21\\xd9\\x7f\\x48\\x3c\\x15\\x94\\xff\\xf3\\xc2\\x25\\x42\\x1c\\x5d\\xe7\\x12\\x5f\\x64\\x60\\x7b\\x4c\\x2e\\xd2\\x96\\x85\\x1d\\x09\\x72\\x11\\xcf\\x26\\x9d\\x52\\xbe\\x50\\x3e\\x53\\x8f\\xaa\\xef\\xf7\\xdb\\x6a\\x17\\x57\\x5a\\x53\\xe7\\xc2\\x22\\x6a\\x54\\x47\\xa5\\x0e\\x2f\\x36\\x17\\x03\\xde\\xb9\\x54\\xb5\\x11\\xe3\\x0a\\x21\\x9c\\x19\\x76\\x16\\xcc\\x94\\xc3\\x06\\xeb\\x15\\xb4\\xaf\\x1d\\x19\\xc2\\x94\\xb7\\xd3\\x97\\x05\\x32\\xbb\\xff\\x3d\\x5d\\x21\\xf4\\x9b\\x8b\\x62\\x36\\x7c\\x84\\x8f\\x3b\\x43\\x63\\x51\\xbd\\x28\\x48\\x93\\x80\\xfc\\x82\\x02\\x74\\xb6\\x9e\\x78\\x52\\xaa\\x4e\\x67\\xbf\\xec\\x2e\\x36\\x4e\\x39\\x50\\xbe\\x23\\xcc\\xaf\\x51\\x89\\x99\\x20\\x7e\\x89\\xc8\\xef\\x00\\x73\\x4f\\x6c\\x4a\\x4a\\x16\\x99\\x4d\\x3e\\xd4\\x18\\xa6\\xde\\x26\\xd4\\x9d\\x62\\xe4\\xaf\\xcb\\x34\\x16\\xf8\\xed\\xfb\\x16\\x43\\xe9\\x52\\xca\\x2b\\x84\\x1f\\x7f\\xdb\\xec\\x8e\\xf2\\x24\\x8f\\x78\\xf1\\xe8\\x8e\\xe2\\xb3\\x7c\\xea\\x97\\x27\\xd4\\x66\\xeb\\x26\\x36\\x98\\x9f\\x0b\\x92\\x9e\\x39\\x45\\xfc\\x9d\\xd4\\x10\\x95\\x48\\xfb\\x19\\x6a\\xbf\\xd5\\x95\\x55\\x51\\x55\\x4d\\xb6\\xf6\\x88\\xad\\x0f\\x46\\x2c\\xb2\\xbd\\x58\\xbf\\x98\\xe3\\x6f\\x30\\x83\\x6c\\x9d\\x61\\x9d\\x3f\\x6f\\x52\\x91\\xc8\\x8e\\x6a\\x4e\\x07\\x83\\x69\\x8e\\x47\\xe0\\xc4\\x37\\x93\\x9e\\xad\\x0d\\x31\\x56\\xa2\\xc4\\xf0\\x98\\x1f\\xb7\\x01\\x25\\x52\\xe5\\x9b\\xc6\\xf2\\xd4\\xab\\xc9\\x0b\\x64\\x63\\x6f\\x2d\\x4f\\x45\\x91\\xdf\\x2d\\xdf\\xde\\x61\\xb5\\xff\\x76\\x0e\\x73\\x78\\xb4\\x46\\xe7\\x21\\xb3\\x4b\\xd9\\xee\\x4e\\x92\\xfe\\xe0\\xe5\\xcc\\x87\\x50\\x19\\x26\\x1e\\x34\\xb7\\x4c\\x86\\x7e\\x47\\x47\\xc2\\x9c\\x4e\\xfb\\xdc\\xcf\\x82\\xd4\\x1d\\x1b\\x4b\\x87\\x00\\xd7\\x21\\x39\\x6f\\x57\\x7b\\x46\\x91\\x53\\xec\\x3e\\x06\\xc7\\x84\\xc6\\x02\\x48\\x5a\\x69\\xb4\\x3b\\xcb\\xd3\\x72\\x86\\xc0\\xd6\\xa9\\x85\\xda\\x0b\\x43\\xed\\xd3\\xee\\x41\\xef\\x3a\\x7d\\xcc\\xe1\\xc7\\x56\\x23\\xc8\\x27\\x8b\\xe7\\x08\\x9f\\x68\\xd6\\xd6\\xe0\\x97\\x9c\\xcc\\xd7\\x83\\x00\\x14\\x1c\\xe5\\xff\\xae\\x08\\xdd\\x3f\\x44\\x2b\\xf9\\x35\\x3f\\x69\\x98\\x5a\\x3b\\xc3\\xcd\\x6c\\xc8\\xdb\\x35\\xfb\\x14\\x8c\\x34\\x7d\\x65\\x1b\\x16\\x10\\x23\\x41\\x1f\\x87\\x7f\\xea\\x1c\\x6d\\xc2\\xd4\\x38\\x27\\xe1\\x58\\x38\\x85\\xa5\\x21\\x47\\xd4\\x0f\\x62\\xd6\\xbb\\x3a\\xe9\\xdd\\xce\\x76\\xb1\\x5f\\xbd\\xa8\\x22\\xa0\\xae\\x8b\\x73\\xa4\\x1e\\x04\\x4c\\xfe\\xdf\\x68\\xc6\\xc7\\xef\\x84\\xc2\\xef\\x81\\x30\\xdf\\x89\\xb1\\x3a\\x02\\xb7\\x56\\x2e\\x01\\xe3\\xee\\x08\\x06\\xab\\xe9\\x6a\\x36\\xa3\\x8d\\x81\\x4e\\xdf\\x8b\\x1a\\x05\\x24\\x51\\x8a\\x31\\xd4\\x98\\xe1\\x87\\xde\\x6d\\xf9\\xd7\\x2e\\x9b\\xd8\\x44\\x35\\xd7\\xb9\\x43\\xc3\\x3b\\xdc\\x4f\\x1c\\xa7\\x8d\\xc9\\x11\\xda\\xef\\x76\\x82\\x5b\\x30\\x43\\x7f\\x9d\\xcb\\x30\\xc8\\xfd\\x0f\\x88\\x5e\\xa9\\xa5\\x9e\\x7d\\xd5\\x55\\x38\\x5d\\xdd\\x59\\x32\\xc3\\x97\\x57\\xfc\\x75\\x95\\x7a\\x21\\x22\\xb1\\x88\\x77\\x3a\\xa7\\x72\\xfe\\xf3\\xa9\\x90\\x9b\\xe9\\x73\\x07\\x3a\\x7b\\x95\\x1f\\xa4\\xeb\\x79\\x2f\\x27\\xac\\x6f\\x75\\x50\\xf4\\x8b\\xcb\\x8d\\x88\\xc8\\x86\\x5f\\xc9\\x9f\\xf2\\x04\\x1c\\x68\\xb8\\xc0\\x0e\\x57\\xa3\\xc7\\x26\\x19\\x9b\\x7e\\xe4\\xb6\\x45\\x3d\\x35\\x52\\x01\\xa1\\xae\\xd7\\x83\\x80\\x13\\xd7\\xa6\\x4c\\xe9\\xbf\\xda\\x91\\xd6\\xa2\\x02\\x2c\\xb3\\xf1\\x31\\x31\\x44\\x04\\x01\\xef\\xe2\\xbf\\x79\\x41\\xcb\\x1a\\xd6\\xf8\\x9c\\x04\\x80\\xe6\\x51\\xc7\\x2b\\x13\\xde\\x56\\xa4\\xdf\\xf8\\xa5\\xd7\\x19\\x56\\xae\\x2e\\x3e\\x35\\x69\\x92\\x74\\x87\\x8b\\xeb\\x77\\x5f\\xdd\\x52\\x28\\x52\\xfb\\x6e\\xe4\\xb4\\xf8\\x78\\xac\\x45\\xc9\\x8b\\x32\\x2e\\x39\\xef\\xe3\\x6f\\x6f\\x84\\xf0\\x29\\x51\\xdc\\x9c\\x9d\\xed\\x18\\xff\\x8e\\x55\\x5a\\x53\\x99\\x24\\x2a\\x38\\x2e\\xa1\\x7b\\xf7\\x11\\x4c\\x32\\x73\\xc9\\xab\\x27\\x74\\xb9\\xe4\\xff\\x47\\xdd\\x5f\\x7f\\xc5\\xf9\\xef\\x59\\xa2\\xf8\\x03\\x05\\x14\\x6e\\x81\\xe0\\x16\\x20\\x78\\xf0\\xe0\\x50\\x24\\xc1\\x42\\x08\\x84\\xe0\\x16\\x08\\x0e\\xc1\\xad\\x70\\x0b\\xee\\x10\\x20\\xb8\\x5b\\xb0\\x40\\x70\\x77\\x87\\xc2\\x49\\x70\\x28\\x9c\\x40\\xaa\\xd0\\xc2\\xbf\\xab\\xcf\\xe9\\xd3\\x73\\xa6\\xbf\\x33\\xdd\\xd3\\xd3\\x9f\\x7b\\xd7\\xba\\x3f\\xec\\x3f\\xe0\\x59\\xcf\\x7b\\xbd\\x7c\\xef\\x5d\\x9c\\xdb\\x13\\xf8\\xf6\\x1f\\x7a\\x27\\x15\\x07\\x91\\xba\\xe1\\x80\\xb3\\x52\\x2e\\xf8\\x51\\xe4\\xb6\\x8f\\x26\\x5c\\x59\\x86\\x48\\x8f\\xae\\x9a\\x2c\\x95\\x27\\x90\\x5a\\xd0\\xc4\\x25\\xd3\\xd9\\x7f\\xc2\\x36\\x07\\xb9\\x1b\\x57\\x54\\x7b\\x72\\x56\\x49\\xca\\xd2\\xda\\xd2\\x82\\x1f\\xb9\\x77\\xcb\\x44\\x17\\xc7\\x60\\x24\\x55\\x4e\\x24\\x8b\\xf2\\x70\\xab\\x7a\\xcd\\xdb\\xa6\\xae\\xa5\\x90\\xe0\\xd9\\x18\\xc7\\x89\\x76\\xc9\\x4c\\x86\\xa6\\x7e\\xb9\\x59\\x7f\\x3e\\x37\\x23\\xfb\\x88\\x1d\\xd2\\x0d\\xfe\\x75\\xda\\x76\\x13\\x38\\x1b\\xed\\xd2\\x6f\\x06\\x0d\\xee\\xa3\\x17\\x9d\\xcf\\x6f\\xa9\\x99\\xe1\\xf9\\x63\\x84\\x9e\\xa7\\x3b\\x26\\xe1\\xd3\\xcf\\xa9\\x30\\x0a\\x03\\xb2\\x7d\\x6d\\x17\\xb9\\x7d\\x98\\x0b\\x7e\\xbd\\x8a\\x20\\xcc\\xb1\\xcf\\xe3\\x6f\\xbc\\x34\\xce\\x99\\x68\\xd0\\x9a\\x66\\xdd\\x0b\\x0a\\x90\\x36\\xb5\\xe3\\xea\\x5f\\x2c\\x09\\x9b\\x08\\x5f\\x24\\x98\\x2e\\xde\\x4e\\xc0\\x0f\\x60\\x97\\x1f\\x16\\x1b\\x06\\xc5\\x39\\x78\\xcd\\x3d\\x00\\x9f\\x33\\x36\\x89\\x42\\x2a\\x19\\xeb\\x5a\\xa6\\x25\\x9b\\x10\\xe8\\x42\\x4a\\x4d\\x84\\x6b\\xbd\\x39\\x23\\x1d\\xe1\\x37\\x42\\x90\\xbb\\xee\\x97\\x8b\\x7d\\xf0\\x1d\\x35\\xbf\\x3a\\xb4\\x75\\x3f\\x1a\\x54\\x63\\xa5\\x82\\xfb\\xf7\\x83\\x1a\\xfe\\x5f\\x8c\\x4a\\x22\\x03\\xa6\\x18\\xde\\x66\\xa6\\x1e\\x3e\\xb4\\x6e\\xd5\\x8e\\xd3\\x6e\\x19\\x2a\\x46\\x53\\xf6\\x3c\\xc5\\x0a\\xea\\x68\\x12\\x3a\\xb4\\x66\\x96\\xf5\\x5a\\x73\\xb7\\xfc\\xc5\\xb6\\xe2\\x3e\\x29\\x1e\\xee\\x43\\xfb\\x6c\\x6c\\x20\\x0c\\x06\\x35\\x5f\\xdb\\x91\\xaa\\x33\\x18\\xf1\\x2d\\x6f\\x4b\\xca\\xf5\\x84\\x42\\xc7\\x64\\xe0\\x07\\x01\\xee\\x14\\x57\\xaa\\x6e\\xd1\\x6b\\xef\\x40\\x08\\xfd\\x86\\x9c\\x09\\xd4\\xb2\\x6f\\x9e\\x9e\\x75\\x26\\xe5\\x78\\x44\\xed\\xc0\\x2b\\xfa\\xa4\\x64\\x72\\xfe\\xe8\\xef\\x97\\x3f\\x39\\x95\\x3a\\x0d\\x05\\xf9\\x2b\\x8b\\x2c\\xc5\\x22\\x29\\x02\\xdf\\xd6\\xd1\\x35\\x2e\\x44\\x85\\xf3\\xfe\\xa5\\x9e\\xd3\\x46\\xc4\\xa9\\xb7\\xc4\\x4a\\xdc\\x51\\x23\\x1a\\x6e\\x94\\x22\\x8b\\xb5\\x41\\xf4\\x41\\xed\\xef\\x4b\\xab\\x99\\x90\\x1f\\x47\\x37\\x54\\xc3\\xc5\\x2d\\xca\\x1f\\xe9\\x2e\\xe9\\x2e\\x77\\x26\\x33\\x51\\x69\\xf9\\xae\\x38\\x83\\xc1\\xe0\\xce\\xe9\\xf6\\x8f\\x38\\x9f\\x27\\x43\\xdf\\x67\\x46\\x02\\x57\\x7f\\xe0\\x3c\\x59\\xf3\\x09\\x9b\\x37\\x2a\\x2f\\x06\\xde\\xd3\\x4e\\xf3\\x41\\x63\\x05\\x83\\x27\\x2f\\xce\\x2b\\x79\\x89\\x7c\\xd4\\xe7\\xce\\xc2\\xdf\\xf9\\x68\\x16\\x2b\\x11\\x94\\x51\\xc6\\x9e\\x60\\x47\\xc8\\x4b\\x3f\\x00\\x21\\x0e\\xb7\\x8e\\x75\\x1f\\x7e\\xdb\\x49\\xbc\\xb3\\x75\\x10\\x5d\\x5a\\xa6\\xad\\x52\\x70\\xca\\x86\\x6e\\x39\\x1d\\xe9\\xd3\\x13\\xd4\\x36\\xcc\\xdd\\xb2\\x9a\\xd9\\xe7\\x86\\x42\\xd4\\x48\\x43\\x64\\xd5\\x9c\\xf6\\x5c\\x20\\xf4\\x0e\\x70\\x5e\\x32\\x5d\\x68\\xa3\\xc6\\x94\\xbd\\xeb\\x68\\x8a\\x95\\xcf\\x8e\\xc2\\x5a\\x97\\x3a\\x7f\\x70\\x5d\\xe4\\x65\\x25\\x23\\x49\\x49\\x0f\\x9e\\x3d\\x13\\x04\\x56\\x09\\x2d\\xe9\\x1b\\x27\\xed\\x55\\x59\\x10\\x1a\\xfa\\xcd\\xc3\\x53\\x79\\x7a\\x9a\\x15\\xa8\\x4d\\x29\\x36\\x21\\x40\\xe4\\xe0\\x97\\x7c\\x24\\xce\\x31\\x91\\x86\\x06\\xd3\\xc0\\x0a\\x10\\xfa\\xf7\\x42\\x3a\\x7f\\xcf\\xac\\xff\\x11\\x18\\x5e\\xb3\\xe7\\x12\\x49\\xa2\\xfa\\x8e\\x18\\x82\\x96\\xbf\\x39\\x8c\\x0d\\x51\\xda\\x77\\x0d\\x96\\x09\\x5b\\x6e\\xf8\\x44\\xdf\\x3f\\xaa\\xc7\\x3f\\x18\\xcb\\x2d\\x5b\\xf4\\x9f\\xb0\\xe5\\x82\\xbf\\xb2\\xb0\\xc3\\x9a\\x60\\x0a\\x6c\\xf1\\x49\\xd4\\xa7\\x03\\xcf\\x17\\xa2\\xa4\\x63\\x18\\x42\\x47\\x28\\x88\\x1a\\xb4\\xb6\\x68\\x2f\\x73\\x89\\x94\\xff\\x16\\x6d\\x92\\x32\\x91\\x7f\\x4d\\x52\\xfd\\xfb\\xae\\x6c\\xd6\\x3e\\x65\\xa2\\xc7\\x7a\\x79\\xe3\\x1d\\xde\\xa3\\x78\\x99\\x2c\\xbd\\x2a\\xff\\x01\\xed\\xe1\\x12\\xd4\\xc7\\x0b\\x0f\\xfe\\x10\\x6c\\xd9\\x53\\x42\\x34\\x98\\x0d\\x70\\xa2\\x8a\\xb9\\xc4\\x16\\xd9\\xe6\\x56\\x66\\xa3\\x4d\\x53\\xa4\\xf3\\xf4\\x6e\\xf5\\x12\\xa3\\x7a\\x1d\\x8b\\x68\\xbe\\x7d\\x7e\\x05\\xfd\\x55\\x2e\\xbe\\x93\\xd1\\x4b\\x84\\x11\\x95\\xd9\\xcc\\xf1\\xb3\\x55\\xec\\xcd\\x58\\x85\\x9e\\xdf\\x94\\x04\\xb1\\xa8\\x7e\\x6f\\xd2\\x2a\\xe0\\x7f\\xa5\\x47\\xc5\\x4c\\xfc\\x4d\\x29\\x17\\x33\\xff\\x9b\\x5c\\xe9\\x92\\xb2\\xeb\\xc5\\x28\\x27\\x55\\xbc\\x79\\x92\\x07\\xa3\\x46\\xaa\\xf6\\xbb\\x45\\x7d\\x25\\xc9\\xcf\\xd8\\x70\\xf5\\x31\\xa5\\x01\\x4c\\x40\\x55\\xce\\xa5\\x45\\x24\\xba\\xae\\xdd\\xf1\\xb5\\x1d\\x2b\\x86\\x02\\x53\\x74\\xe6\\x39\\xf3\\xcc\\xac\\xd6\\x7a\\xb6\\x54\\x1a\\x37\\x3f\\x04\\xe3\\x92\\x6f\\xe9\\xe9\\x55\\xa1\\xc6\\xbb\\xd9\\x9a\\x2e\\xf2\\x09\\x9b\\x6c\\x99\\x49\\xa1\\x56\\x8f\\x74\\x7d\\x54\\x26\\xaf\\x2c\\x8d\\x3d\\xb7\\x2f\\xb8\\xd2\\x73\\xad\\x2f\\x87\\x84\\x1d\\x89\\x6b\\x3d\\x63\\xa3\\x42\\xd0\\x8c\\xf6\\xeb\\xd5\\x6b\\x88\\x81\\x69\\xf5\\xfb\\x2b\\x6d\\x89\\x8b\\x4e\\x1c\\x3c\\x72\\x13\\x09\\x83\\x72\\x52\\x9f\\xce\\x1f\\x1b\\x11\\x5b\\x5e\\x8e\\xd2\\x5f\\xd0\\x16\\x1f\\x80\\x9e\\x83\\x1f\\x29\\xe7\\x8f\\xb9\\xb4\\xf8\\x86\\x6e\\xc8\\x6a\\xba\\x07\\xcb\\xe0\\x80\\x76\\x81\\xee\\xe1\\xf3\\x4b\\xad\\x08\\xc7\\x5a\\x26\\x79\\x2a\\x0c\\x7a\\xae\\x9d\\xea\\x86\\x8e\\xa2\\x82\\xe5\\xa5\\xfd\\x55\\x86\\x06\\xad\\x80\\x94\\xf4\\x8f\\xad\\xe4\\x10\\x49\\x7a\\xa2\\x92\\x76\\xd7\\x0e\\x10\\x62\\x7b\\x37\\xdc\\xf5\\x4c\\xe4\\x72\\xda\\x37\\x9d\\x4d\\xc2\\x24\\xf6\\xc3\\x97\\x7b\\xd0\\x9a\\xd4\\x1e\\x68\\xe9\\x99\\xa4\\x4a\\xe1\\x12\\xd6\\xa9\\x43\\x2e\\x7e\\x01\\x77\\x87\\xf1\\xd0\\xf5\\x02\\x83\\x1b\\x52\\x40\\xd7\\x7e\\x4c\\xdc\\xe2\\xeb\\x82\\x52\\x13\\x1a\\xe3\\x47\\x67\\xec\\xc3\\x00\\x71\\xf7\\xf2\\x79\\x69\\xf4\\x99\\xa3\\x2a\\x7a\\x6b\\x96\\x74\\x43\\x14\\x2b\\xd5\\xfd\\xfb\\x09\\x6f\\x37\\xfa\\x81\\xc6\\xe9\\xe9\\x89\\x01\\x12\\x5a\\xe2\\x81\\x00\\x47\\xf4\\x52\\x40\\x0d\\x0c\\x6e\\x1d\\xb8\\x67\\xfc\\x91\\xe8\\x1d\\x55\\x3f\\xc3\\x33\\x9b\\x82\\x43\\x4a\\x9e\\x04\\x78\\x3f\\x00\\x7a\\xb3\\x28\\xbb\\x4d\\xfd\\x2c\\x6d\\x15\\x2b\\xde\\x62\\x6b\\xfb\\x27\\xf6\\xba\\x3f\\x52\\xd4\\xa1\\x47\\xfa\\xd4\\xbb\\xe1\\xae\\xbe\\x58\\xfd\\xd9\\xd7\\x17\\xec\\xbd\\x8e\\x65\\x59\\x63\\x7d\\xd7\\x68\\xc3\\x55\\xa0\\x0d\\x97\\xbe\\x96\\xbb\\x5b\\x3e\\x8a\\x9f\\x3a\\x39\\x59\\x10\\x16\\xcb\\xe0\\x23\\xd4\\x24\\xb8\\x2e\\x56\\x8e\\xe7\\xc9\\xdd\\xd4\\xbf\\xbc\\x29\\x75\\xfe\\xc5\\xc2\\xec\\x59\\xb4\\x6d\\x7f\\x4a\\x87\\xaf\\xdd\\x96\\x25\\x79\\x06\\xcd\\xdc\\x2f\\xcb\\xba\\x61\\x74\\x5e\\x96\\x49\\xdd\\x95\\xbc\\x61\\xe2\\xda\\x3f\\x8f\\xc6\\xd2\\xa2\\xff\\xa8\\xfd\\x7c\\x43\\xd7\\x0e\\x65\\x63\\xd8\\x5d\\x6c\\xba\\xf3\\x73\\x5f\\x68\\x73\\x91\\x9a\\x8d\\x1f\\x40\\xf4\\xbc\\x22\\xae\\x5e\\xd4\\x54\\x8e\\x7d\\xeb\\xb5\\xe5\\x8b\\xbd\\x2b\\x65\\xbb\\xe0\\x8a\\xa7\\xd9\\x30\\xbd\\xae\\x19\\xfd\\x94\\x18\\xdf\\x52\\xa6\\x12\\xb0\\xfd\\x97\\xff\\xff\\x39\\x40\\xc0\\x86\\xb5\\x29\\xa2\\x45\\x54\\x26\\x46\\x6b\\xde\\xf5\\x01\\x38\\x52\\x79\\xba\\x39\\xf6\\x7a\\x8a\\x4a\\xad\\xd4\\x8d\\x8d\\xd3\\x1f\\x17\\x71\\x24\\xd1\\x7b\\xa9\\x75\\xbd\\x32\\x1f\\x23\\x5d\\xe3\\x6d\\x5a\\xfa\\xca\\xa3\\x9f\\x45\\x90\\xb8\\xaa\\x19\\xce\\x4c\\xf9\\x34\\x40\\x6a\\x6f\\x22\\x10\\x2f\\x11\\x3d\\xd6\\x76\\xd8\\x47\\x15\\x6e\\xa7\\xda\\x27\\x5e\\xb7\\x4a\\x8f\\x18\\x93\\x85\\xbf\\xdc\\x5e\\x31\\x48\\x94\\x07\\x33\\x06\\x28\\xbc\\xcd\\x72\\x31\\xd8\\x8d\\xaa\\xe7\\x25\\xd9\\x0b\\x4f\\x37\\xec\\xf8\\x7e\\x9d\\x38\\x91\\xa7\\xc7\\xc1\\xc7\\xf2\\xfe\\xfe\\x64\\x7d\\x1d\\xde\\xee\\xf1\\x00\\x10\\x9d\\x51\\x9e\\xdd\\x11\\xe2\\x2f\\xb1\\x08\\x8a\\x87\\xa5\\x52\\x89\\x99\\x0e\\x6f\\x9d\\x42\\x88\\xa1\\xca\\x5d\\xc4\\xd6\\x2e\\x51\\xa3\\xbd\\xbb\\x46\\x22\\x12\\x71\\x72\\x2c\\x2e\\x81\\x77\\xb6\\x53\\x4c\\x21\\xa6\\x6a\\x00\\x7d\\xdd\\x50\\x82\\x46\\x36\\x9f\\xcd\\x08\\x9c\\x0c\\xc8\\x35\\x36\\xfe\\xc7\\x1b\\xd6\\x78\\xaf\\x3f\\x28\\x69\\x47\\x1b\\x49\\xa5\\x63\\x1c\\xbc\\xac\\x51\\xa7\\x06\\x4e\\xb4\\xd5\\x33\\x5f\\xe8\\xed\\x24\\x26\\xf0\\x78\\xc3\\x7b\\x17\\xe1\\xc2\\x4e\\x31\\x5f\\x1e\\xfd\\x4a\\x71\\x63\\x41\\xea\\x47\\x60\\xe4\\x59\\xbb\\xc4\\xfb\\xa0\\xfb\\xf1\\x67\\xa6\\x09\\xba\\x74\\x2f\\xd1\\x09\\x94\\x4b\\x7f\\x76\\x97\\xea\\x2a\\xdb\\x39\\x91\\x2a\\xd1\\x46\\x6a\\x26\\x87\\xca\\x92\\x9f\\x9e\\xa5\\xa6\\x5f\\x7e\\xae\\x8f\\x8a\\xc3\\xdb\\x5f\\x88\\xa0\\xa6\\xe2\\x47\\x4b\\xcd\\x49\\x6e\\x31\\x36\\x95\\xd9\\x9a\\x04\\x4f\\x52\\x88\\x27\\x57\\xa6\\x87\\x35\\x65\\x8b\\x26\\x31\\xda\\xbb\\xe3\\x8a\\xed\\xcf\\xe7\\xd8\\xfa\\xdb\\x79\\x51\\x2e\\x8d\\x25\\x62\\x8a\\x4a\\xbc\\x75\\xb4\\xed\\xad\\xb7\\xc3\\xba\\x56\\xe1\\x39\\x27\\x22\\xb1\\xd5\\x7e\\xd4\\x8b\\x1b\\x84\\xc8\\xc3\\xa5\\x6a\\x45\\xbb\\x9a\\x5f\\xe8\\x2e\\xa7\\xaa\\xac\\x74\\x78\\xb6\\xac\\x98\\xb0\\x3c\\xfa\\x45\\xeb\\xa3\\xbc\\x94\\xbc\\x1c\\xe0\\x8d\\x49\\x46\\xf8\\x45\\x0d\\x9c\\x73\\xab\\x87\\xb8\\xa5\\x86\\x85\\xe8\\xb9\\x47\\xba\\x67\\x4f\\xb5\\x0d\\xa5\\x13\\xea\\xfa\\x42\\x8f\\x45\\xcb\\xd7\\x88\\x84\\x7f\\x9e\\x77\\xe2\\x2d\\xbd\\xc1\\x59\\xfd\\x46\\x7e\\xda\\x3d\\x74\\x68\\xa8\\x79\\x9e\\x29\\x72\\xe1\\xbc\\xb8\\x2c\\x5f\\x2b\\xf7\\xe4\\xc8\\xcc\\xa4\\x9b\\x7c\\x2b\\x1b\\x57\\x01\\x11\\x17\\xe3\\x26\\x43\\xa4\\x8c\\x91\\xd0\\xcf\\x95\\x66\\xb7\\xc5\\x13\\xc2\\xb5\\x87\\x26\\x63\\xf4\\x05\\xad\\x13\\x19\\xab\\x19\\xd7\\x75\\x22\\xdd\\x63\\x76\\xfa\\x22\\x17\\xc4\\x16\\x2f\\xa7\\x8b\\x32\\xc7\\x53\\x58\\x3f\\x24\\x33\\xce\\xfd\\xbd\\x87\\x46\\x29\\x13\\xe3\\xcc\\x40\\x29\\x6c\\x52\\x66\\x68\\x7d\\x8d\\xd9\\x92\\x96\\xe3\\x91\\x79\\x48\\xb9\\xfc\\xd2\\x9f\\x88\\x0a\\xf6\\xe6\\xde\\x6d\\xdf\\xef\\x71\\xed\\xf3\\x16\\x9e\\xda\\xaf\\x6d\\x0d\\xec\\x78\\x4c\\x92\\xc1\\x10\\xfa\\x0f\\xc8\\xda\\xb9\\xfe\\xfb\\x04\\x3e\\xdc\\xd1\\x14\\x06\\x3e\\x30\\xed\\xe9\\xd2\\xb2\\xf6\\x37\\xa8\\x9e\\xce\\xf6\\x64\\xa5\\xde\\x93\\x8a\\x0e\\xbd\\xe8\\x32\\x78\\xa0\\x01\\xd1\\x20\\x06\\xc3\\x4f\\xf7\\xb7\\x23\\xb8\\xdc\\x25\\x92\\x66\\x67\\x43\\x47\\xf7\\xe4\\x0b\\x3e\\x32\\xaf\\x54\\x71\\x75\\xb9\\x3f\\x85\\xf8\\xd4\\x5c\\x7a\\xa9\\x81\\xb5\\xff\\xeb\\xa3\\x80\\xaf\\xb9\\x44\\x42\\xa8\\xb1\\x1a\\x99\\xd0\\xa3\\x4b\\xcb\\x31\\xdd\\x60\\x46\\x5c\\x55\\xe6\\x65\\xd7\\x62\\x1f\\x06\\x05\\x15\\xb4\\xd9\\xaa\\xb9\\xd3\\x0c\\x0c\\x7f\\xe2\\x52\\x3f\\x61\\x18\\xb5\\xd5\\x05\\x53\\x63\\x39\\x4e\\x04\\x61\\x7b\\x53\\x79\\x27\\x36\\xf3\\xd2\\x86\\xe8\\x30\\xd8\\xfd\\x82\\x5b\\xd9\\x92\\x4d\\xca\\x0a\\x34\\xb5\\x6f\\xcd\\xff\\xaf\\xf1\\x19\\x2b\\x92\\xfd\\x2f\\x39\\xe8\\x23\\xdf\\x79\\x00\\x1e\\x27\\x67\\xbc\\x74\\x4e\\xb8\\x8a\\x2e\\x5d\\xe3\\xe0\\x89\\xab\\xa6\\xd5\\x2e\\xc8\\xae\\xdf\\xf9\\x40\\x49\\xef\\xf0\\xdb\\x5c\\x51\\x4b\\xcb\\x74\\x4e\\x4b\\xa5\\x54\\xe1\\x46\\x67\\x6b\\x12\\xb3\\xf3\\xf3\\x41\\xd4\\xfa\\x21\\x4f\\xab\\xdf\\xfe\\xbd\\xdb\\xde\\x8b\\xb6\\x99\\x0d\\x42\\xff\\x0d\\x92\\xc6\\x6e\\xd0\\x8e\\x24\\x00\\xdd\\x2d\\x11\\xde\\x37\\x76\\x82\\xe0\\xfd\\x4f\\x1f\\x4d\\x55\\x9a\\xbe\\xc9\\xb2\\xd2\\xdc\\xb5\\x34\\x3c\\x9c\\x8b\\x63\\x23\\xf6\\x15\\x1b\\x26\\x1c\\xe8\\x0f\\x57\\x79\\x02\\xf3\\x62\\xb9\\xf7\\xf9\\xd6\\x1a\\xf9\\x0a\\xa7\\xeb\\x9c\\xed\\x7b\\xd5\\xeb\\xd3\\x4d\\x82\\xfb\\x46\\x13\\x62\\xc4\\x45\\x86\\x64\\xed\\x44\\xbf\\x72\\x32\\x93\\x29\\xa8\\x99\\x1b\\x60\\x7c\\x00\\xf4\\x00\\xd8\\x94\\x7d\\x61\\x14\\xfc\\x59\\x09\\xc5\\xd7\\x37\\x16\\xc4\\x8e\\x6f\\x7d\\xc5\\xaa\\x55\\xe6\\xde\\xc3\\xa6\\x8e\\xe3\\xf3\\xa5\\x4d\\x99\\x6d\\xe1\\xe0\\xd8\\xf3\\xf5\\x74\\xd6\\xbb\\xcb\\xb0\\x0e\\xee\\x36\\xf1\\xb6\\x61\\x96\\x54\\xdf\\xb9\\x08\\x90\\x94\\xf8\\x29\\x4a\\xbb\\xd3\\x41\\xb7\\xe2\\xeb\\xa3\\x5e\\x5e\\x99\\xd7\\xc0\\x55\\x86\\x0a\\xd2\\xa0\\xe3\\xf1\\xdc\\x1f\\x1e\\xf5\\x6e\\x8b\\xcc\\xd1\\x76\\x2d\\xac\\x2b\\x7f\\x88\\xaf\\x84\\xb6\\xad\\xc5\\xaa\\x08\\x32\\x53\\xf1\\xe9\\x44\\x96\\xd9\\x68\\x3c\\xe9\\x8b\\x98\\x9c\\xde\\x44\\xa9\\x18\\x97\\x74\\xac\\x08\\x73\\x70\\xdf\\xcd\\xa1\\x77\\xb8\\xf9\\xc9\\xdc\\xd7\\xde\\x5d\\x2f\\xcb\\x4a\\x6f\\xf3\\x94\\xca\\x42\\xbd\\x17\\xcc\\x22\\x0d\\x43\\xef\\xa3\\xa9\\x80\\xc1\\x43\\x08\\xfd\\x23\\xb8\\x03\\xc6\\x78\\xfe\\x4a\\x2f\\xf7\\xe9\\xb0\\x73\\x2c\\x48\\x50\\xc2\\x2c\\x48\\xf0\\x30\\xc9\\x50\\xa1\\x97\\x86\\x4e\\xea\\x7e\\xce\\x5a\\x38\\x13\\x6b\\x07\\xcc\\x6a\\xc1\\x95\\x38\\xa2\\xb4\\x9b\\xde\\x88\\xe4\\x35\\x9c\\xae\\x1f\\xa5\\xb2\\x73\\xfd\\x22\\x92\\x3a\\x45\\x94\\xad\\xf3\\x71\\x99\\xd9\\xe8\\x01\\x10\\x79\\xbd\\xe9\\x43\\xe3\\x5d\\x91\\x25\\x5b\\x30\\x43\\xa5\\xae\\x5c\\xf8\\x62\\xe2\\x37\\x18\\xaf\\x7b\\x40\\x76\\x37\\x12\\x38\\x3b\\x12\\x18\\x99\\x5f\\xe8\\xf7\\x9a\\x4f\\x67\\x86\\x34\\x72\\xfe\\x78\\x46\\x01\\xc2\\xb0\\x93\\x29\\xad\\xf0\\xa5\\xd1\\x9f\\x6e\\x63\\xaa\\x32\\x7a\\xe9\\x5f\\xfa\\x55\\xf5\\x16\\x99\\x1c\\x41\\xe7\\x55\\xca\\xdc\\x59\\x6f\\x41\\x23\\xf3\\xc8\\xfa\\x9e\\x7f\\x46\\x58\\x4a\\xeb\\xe2\\x69\\xa8\\xf6\\x8d\\xb4\\xa9\\x41\\x3c\\xa1\\x22\\xc6\\xba\\xa5\\xcc\\xeb\\xc9\\x79\\xd7\\x15\\xce\\x0f\\xf4\\xb2\\x3c\\xbf\\xf1\\x58\\x62\\xbb\\x65\\x93\\x58\\x4c\\x41\\x94\\x68\\x4e\\x0b\\xb3\\xe9\\xc0\\xaa\\x7f\\xf8\\xa5\\x5e\\x61\\x10\\x2f\\xa1\\xd5\\x82\\x5e\\x50\\xce\\x17\\x03\\x53\\x33\\x89\\x8e\\x8e\\x64\\xa9\\xce\\xe0\\x5b\\x85\\x8a\\xa1\\x69\\xdb\\x96\\xdb\\x72\\x8c\\xcf\\x3f\\xf4\\xf4\\x88\\xb8\\xd1\\xee\\x56\\x56\\x9c\\xee\\x85\\xa7\\xa2\\x2a\\x05\\x5f\\xce\\xdc\\x0e\\xef\\x04\\x2d\\x92\\x4f\\x08\\x86\\xd0\\xb7\\x73\\x3d\\x55\\x8d\\xec\\xa0\\xfe\\x4c\\x42\\x37\\x36\\xc3\\x67\\x10\\x12\\x89\\x25\\xd1\\x91\\xa9\\x86\\x15\\x9a\\xb3\\x4e\\x44\\xb4\\xff\\xec\\x69\\xfd\\xcc\\x86\\x2e\\x45\\xfc\\x6f\\x3c\\x92\\x33\\x36\\xd1\\x2a\\x05\\x59\\x8d\\x19\\x3f\\x4e\\x9b\\xf9\\x02\\x6f\\xcf\\x9f\\x09\\xca\\x0c\\x2d\\xfc\\xd9\\x52\\xb5\\x36\\xb7\\x39\\x8f\\x84\\x69\\xb6\\xd9\\x14\\x10\\x1d\\x45\\xce\\xcd\\x1b\\xcb\\x18\\xea\\x52\\x9e\\x55\\x46\\x37\\xef\\x9a\\xc3\\x06\\x17\\xed\\xf3\\x4a\\xf5\\x47\\x09\\xfa\\x4a\\x8b\\x72\\x0d\\xf8\\x8d\\x14\\xcf\\xce\\x06\\x5f\\x2e\\x06\\x48\\x4d\\x11\\x6a\\xbc\\xff\\x46\\x63\\x79\\xca\\xf8\\xfe\\xe8\\xbd\\x1a\\x9a\\x6e\\xcb\\x71\\x1e\\x7d\\x6a\\xfe\\xca\\xca\\x90\\x1a\\x36\\x9c\\xc5\\xc1\\x31\\x20\\xbb\\x97\\x2d\\x50\\x4f\\x73\\x47\\x86\\x5c\\xf8\\x01\\x60\\xb2\\x73\\x2d\\x55\\x74\\xf7\\xd0\\x4a\\x13\\x21\\x67\\xf2\\x76\\x65\\x0e\\x0e\\x4e\\x07\\xb6\\x24\\xc9\\x89\\x67\\x25\\x65\\xf1\\x02\\x6e\\xf0\\xd2\\xb4\\x09\\x29\\x4b\\xec\\x9b\\xa4\\x22\\xcf\\xfa\\xbd\\xc7\\xb0\\x49\\x59\\xdf\\x4d\\xe2\\xae\\xdf\\x62\\x16\\xbf\\x24\\x93\\x37\\x56\\x1d\\x71\\x7f\\xf2\\x7d\\x03\\xf8\\x8d\\x43\\xbe\\x16\\x9b\\xf9\\xf7\\xce\\x5d\\x9b\\x1c\\x5e\\x8d\\xff\\x00\\xd8\\xfc\\xa2\\x39\\x7c\\x31\\x65\\xf3\\x7c\\x44\\x8f\\x42\\x7e\\x40\\xd5\\x80\\xe1\\x5d\\x3c\\x57\\x7d\\xc5\\x8a\\xbb\\x2c\\x56\\x94\\x27\\x87\\xc4\\x8b\\x17\\xe3\\x39\\x6f\\x70\\x01\\xa4\\x0c\\xb6\\xee\\x70\\x05\\x34\\xd2\\x5a\\x58\\xdf\\x33\\x66\\x5e\\xc6\\x77\\x67\\x7d\\x30\\x5b\\x14\\x84\\xa8\\x36\\x68\\x6f\\x8f\\x7b\\x31\\x65\\xcf\\x4b\\x25\\xf0\\xfd\\x15\\xac\\xce\\x69\\xd2\\xa2\\xed\\x66\\x23\\x24\\xa6\\x75\\x31\\xeb\\x35\\x16\\xef\\x6e\\x83\\x60\\xd7\\x80\\x84\\x1d\\x28\\x6e\\x6c\\xc1\\x14\\xae\\x1f\\x12\\xdc\\x9d\\xfe\\x25\\xd1\\x01\\xfb\\x3b\\xed\\x6f\\x46\\x86\\xb1\\x49\\x30\\x8d\\x25\\xb2\\xa5\\xc7\\x35\\x51\\xbf\\x9d\\xf3\\x9e\\x32\\x51\\x25\\x86\\xc5\\x7a\\xe7\\xa9\\xff\\x2a\\xf9\\xa4\\xf5\\x1a\\x85\\x24\\xaf\\x9b\\x60\\xd7\\xc2\\xbd\\xac\\x91\\x87\\x01\\x53\\x8c\\xea\\x64\\xfa\\x86\\x1f\\x19\\x25\\xb7\\x24\\x6b\\xe9\\x87\\x03\\x34\\xad\\x9f\\x6f\\x26\\x74\\x43\\xdf\\x62\\x89\\x5f\\x2f\\xc8\\x3d\\x00\\x38\\x0f\\x40\\xa0\\xc3\\x32\\x4b\\xaa\\xfb\\x78\\x26\\xbe\\x32\\xa1\\x8c\\x64\\x24\\x70\\x00\\xee\\x27\\xc2\\x31\\xe3\\x58\\xe0\\xee\\xf5\\x72\\xb8\\x1c\\xd4\\xab\\x95\\x7e\\x82\\xd2\\xa9\\x88\\x16\\x6e\\xe5\\x29\\x85\\xb0\\x4d\\x50\\x0e\\x53\\xad\\x5f\\xee\\xf9\\x73\\xf6\\x37\\xd4\\x21\\x0c\\xc7\\x1b\\x3e\\x36\\x4e\\xeb\\x71\\x48\\x3d\\x16\\x20\\xf2\\x47\\x94\\xf8\\x7f\\x84\\x3e\\x9d\\x17\\x63\\xbb\\xa1\\x4f\\xa6\\x4e\\x19\\x4d\\x0c\\xc7\\x52\\x60\\xd8\\x3d\\x84\\x3c\\xde\\x45\\xd5\\xac\\xdf\\x78\\x4a\\x36\\xcc\\x57\\xae\\x3c\\x00\\xfb\\x5f\\x9f\\xc9\\xf0\\x61\\x97\\xd5\\x39\\x44\\x88\\x3f\\x6e\\x2d\\x8f\\x11\\x1f\\xd0\\x35\\x92\\x67\\xe0\\xba\\xe2\\x26\\xbb\\x1c\\x70\\x1a\\x84\\xbf\\xd3\\xdd\\xcf\\x66\\x58\\xd5\\xea\\xc1\\x23\\x77\\x3b\\xa8\\x79\\xb2\\x8b\\xec\\x77\\x6c\\x71\\x1d\\xeb\\x7c\\x5c\\x55\\x69\\x6c\\x4a\\xf8\\x4b\\x96\\xf5\\xad\\xe6\\x40\\xf7\\x80\\x84\\xc7\\xed\\x1e\\x68\\x59\\x76\\x28\\x3f\\x8d\\x64\\x04\\x7f\\x66\\x0f\\x60\\x8e\\x44\\xaa\\xc6\\x50\\x2b\\x2f\\xc1\\x2c\\x2b\\xf4\\xab\\x3e\\x38\\xaa\\xa3\\x9b\\x05\\x95\\x30\\x83\\x67\\x4f\\xb8\\x16\\x0f\\x43\\x50\\x45\\x56\\x0b\\x46\\x64\\x4e\\x24\\xe8\\xe6\\x09\\xaf\\x9f\\x3b\\xc5\\x0e\\x66\\x2f\\x3f\\x82\\xd0\\x3b\\x5e\\xff\\xb9\\x65\\x73\\xd1\\xd9\\x7f\\xae\\x3f\\x8f\\xa9\\x72\\xf9\\x2a\\x70\\x98\\x31\\x40\\x86\\x48\\xcd\\xf6\\xa7\\xa4\\x54\\xb1\\x5c\\x89\\x4e\\x3f\\x86\\x31\\xe7\\x40\\x9e\\x36\\x7d\\xf2\\xc6\\x03\\x40\\x50\\x52\\x57\\x87\\x0c\\x19\\xaf\\x1d\\x11\\x94\\xf4\\x9e\\x04\\xb5\\x76\\x8e\\xe1\\x9c\\x0f\\x4b\\xb5\\x6a\\x4f\\xba\\x53\\x9e\\xdc\\x29\\xe6\\xe2\\xf5\\x16\\xfd\\x4b\\x90\\x75\\x5a\\x15\\x42\\x48\\x1a\\x71\\x3c\\xbf\\xc4\\x73\\x62\\xad\\x9f\\xab\\x79\\x2a\\x46\\x7c\\x7a\\x7b\\x58\\x93\\x1f\\x20\\xb9\\xd6\\xc3\\x80\\xb7\\x31\\xcd\\x2a\\xb2\\xd8\\x36\\xf0\\x00\\xbc\\x63\\x55\\x4c\\x7f\\xd9\\x6a\\x65\\x14\\x60\\x79\\xb5\\x50\\xc0\\x89\\x61\\xc0\\xbe\\x99\\x25\\x07\\x78\\xfe\\xe9\\x8f\\x52\\xad\\x87\\x3a\\x3f\\x5e\\x69\\x1c\\xcd\\x72\\xfa\\x82\\x41\\x0a\\xdd\\x95\\x02\\xa3\\xe6\\x3e\\x7c\\x16\\x99\\x1e\\x2f\\x50\\x01\\xd9\\x59\\x6d\\x7c\\xf9\\x46\\xde\\x05\\x78\\x01\\x12\\xda\\xca\\xf0\\x1b\\x7e\\xcf\\xf5\\x9b\\x6d\\xfe\\xab\\x0c\\x6d\\xe8\\x87\\x92\\x92\\xbc\\xcb\\xaa\\x47\\xeb\\xb3\\xcd\\xde\\x43\\x9b\\x16\\x7c\\x55\\x93\\x68\\x74\\x52\\xed\\x32\\x9c\\xc0\\x05\\xe7\\xbf\\x0d\\xb9\\x4b\\xed\\xed\\xf3\\x7e\\x34\\x7a\\xee\\x3a\\xd1\\x2a\\x0a\\x8c\\x79\\xab\\x61\\xcc\\x6a\\xea\\xf3\\xbc\\x58\\x52\\xfb\\xac\\x6c\\xc7\\x39\\x14\\x96\\x07\\x16\\x3a\\x5c\\x1a\\x12\\xba\\x51\\xb2\\x3f\\x2e\\xd2\\xc9\\x8d\\x50\\x96\\x68\\x84\\x60\\x02\\x3a\\xf9\\x65\\xd6\\x8b\\x95\\x29\\x95\\x40\\xfa\\xc0\\x8e\\x18\\x5c\\x6a\\x72\\xa7\\x6a\\xf2\\x3f\\xdd\\xfb\\x11\\x51\\xa0\\xb6\\xa1\\x93\\x4a\\x45\\x03\\x55\\x5f\\x59\\xd3\\x92\\x82\\xfc\\x9a\\x84\\x97\\x7c\\x44\\xea\\x6c\\x1d\\x70\\x74\\xc3\\x0c\\x24\\x18\\x3f\\xf2\\xcf\\x08\\x77\\xf9\\x98\\x6b\\xc5\\xf5\\x3d\\x17\\x79\\x36\\x75\\x65\\xa4\\xf4\\x86\\x24\\x29\\xc7\\x48\\x6c\\xf0\\x49\\xbb\\x60\\xd7\\x54\\x9b\\xdf\\xe3\\x1a\\x6d\\x31\\x13\\xd2\\x13\\xc1\\xfd\\x3f\\xe3\\x80\\x6b\\xdd\\x3b\\x39\\x80\\x09\\x3d\\x25\\xda\\x22\\x12\\x78\\x7b\\x56\\xf7\\x17\\xf5\\x16\\x8e\\xfe\\x8f\\x78\\x9e\\x36\\x4f\\xa3\\x69\\xfa\\xb3\\xba\\xec\\x88\\x8b\\xaa\\x17\\x1c\\x28\\xde\\xcb\\xb7\\xd6\\x3a\\x72\\x65\\x23\\x7d\\x2b\\xdb\\xef\\x83\\x25\\xdf\\x1f\\xb3\\x63\\xfd\\xe6\\x3c\\xde\\x3f\\x0a\\x86\\xd0\\x8a\\x74\\x97\\x07\\x3e\\xcd\\x70\\x23\\xcd\\x94\\x4f\\x22\\x8e\\x6a\\xab\\x61\\x88\\xa8\\xd6\\x03\\x33\\x57\\x42\\x15\\x7a\\x08\\xde\\xe8\\xdb\\x52\\x87\\xa6\\xb1\\x7c\\xfe\\xf8\\x42\\x53\\x8a\\xcf\\x29\\x7a\\xa1\\x65\\xc0\\x39\\xe0\\x7a\\x12\\xb4\\x97\\x9f\\x44\\x99\\x8b\\x99\\x1f\\x19\\xeb\\x6e\\x16\\xf2\\x8b\\xb8\\x15\\x2d\\xbe\\xa0\\x1d\\xd0\\x9e\\x15\\x96\\x50\\x11\\x58\\x29\\x6e\\x49\\x63\\x96\\xa3\\x62\\x49\\x5f\\xaf\\xee\\xe0\\xb3\\x4e\\x98\\xe0\\xa9\\x3b\\xc4\\x6b\\x3d\\x0c\\x5a\\x7a\\x21\\x0f\\x96\\x59\\x38\\xab\\x16\\x9f\\xc3\\x58\\x65\\x41\\x56\\x9e\\xd1\\x33\\xcd\\x9a\\xd5\\xd4\\xcb\\x3f\\x15\\x76\\x7f\\x77\\xb2\\x9b\\x90\\x9d\\x55\\x5e\\xf3\\x03\\xc9\\x10\\xec\\x23\\xf4\\x78\\x95\\x81\\x77\\x0c\\xc6\\x8b\\xef\\x1d\\x31\\xe8\\xdc\\xa5\\x86\\xd1\\x68\\xc4\\x8a\\xdc\\xa9\\xd8\\xae\\x6b\\xa7\\xaa\\x80\\xcb\\xb8\\x2e\\x93\\x1b\\xf8\\xca\\x0e\\xcb\\x94\\xc0\\xdf\\xc4\\xf5\\xf8\\xb1\\xb4\\xa7\\x15\\x2e\\x48\\x2a\\xbe\\xe6\\x63\\xca\\x8f\\x64\\xa5\\xa2\\x6b\\x66\\xbe\\xd6\\x80\\x6f\\x32\\x1b\\xa5\\x52\\x6b\\x25\\xf8\\x3b\\x7e\\x43\\x53\\xc2\\x60\\xe0\\x62\\x80\\xb8\\xfc\\xd1\\xdd\\xcf\\x85\\xc2\\xfa\\x6a\\xeb\\xd2\\x63\\x36\\x66\\x78\\x0a\\x65\\x0e\\x36\\x98\\xc7\\x96\\xf6\\x07\\xfc\\xb3\\x00\\x03\\x71\\x85\\x20\\x1f\\x56\\xfa\\x9b\\xc6\\xa8\\x31\\x82\\xa6\\xab\\x69\\x8a\\x8f\\x6b\\xc7\\xd7\\xf7\\xe4\\xe6\\x92\\x16\\x0b\\x66\\xb2\\x1b\\x77\\x84\\xc7\\x48\\x72\\x05\\xd8\\xf6\\x95\\x62\\xf3\\xd1\\xa9\\xe9\\x59\\xa5\\x14\\xf3\\x46\\x55\\x94\\x29\\x8b\\xc7\\xa3\\xbe\\xcb\\x54\\xc8\\xee\\x44\\xf3\\xc7\\x5d\\x99\\x97\\x5d\\x55\\x23\\x12\\x3a\\xf9\\x06\\x9c\\x68\\x67\\x64\\x68\\xa7\\x97\\x31\\xb7\\xc2\\xe5\\xc3\\xf6\\xd9\\x4f\\x5a\\x6a\\x62\\x09\\xde\\x3e\\x27\\xfc\\x18\\x9e\\xaa\\x2e\\x7a\\x68\\x68\\x19\\xd2\\xc1\\x61\\x75\\x49\\xad\\x14\\x79\\x8d\\x34\\x69\\x8a\\x78\\x91\\x6c\\x9a\\x38\\x48\\xd7\\xb4\\x3b\\x43\\x59\\xfd\\x6a\\x9e\\x27\\x3f\\xfd\\x57\\xaf\\x29\\xe5\\x2d\\xd7\\x58\\xbd\\x03\\x16\\x54\\xdd\\x9d\\x42\\x64\\x7a\\xa9\\xfb\\x99\\xcb\\x67\\x26\\x65\\xe4\\xfe\\x7c\\x80\\xa8\\x04\\xcf\\xb3\\x0f\\x74\\x3e\\xb2\\xb3\\x0e\\x4f\\xda\\x5b\\x23\\x47\\x9d\\x70\\x18\\x59\\x9e\\x4b\\x61\\x79\\xe1\\x9e\\x1f\\x51\\x6c\\x14\\x07\\x5a\\xdb\\x44\\x09\\x27\\x2e\\x37\\xaa\\x2f\\x50\\x39\\xab\\x56\\x0b\\x07\\x16\\xd8\\x64\\x53\\x20\\x56\\x87\\x2a\\x8c\\xb4\\x78\\x53\\x00\\x7c\\x7b\\x99\\x58\\xa9\\x72\\x7b\\x78\\xbf\\x1f\\x63\\x13\\x5a\\x9d\\x2f\\xce\\x56\\x48\\xa8\\xe6\\x8e\\x84\\xb3\\x74\\x1a\\x19\\x9a\\xed\\x80\\x97\\x4a\\x7b\\x75\\x30\\xaf\\xdd\\x6f\\x46\\x45\\xac\\x31\\x22\\x1e\\xcd\\x17\\xb1\\xbb\\xf5\\xd0\\xb5\\xe0\\x7a\\x51\\xed\\xbe\\xe7\\xe8\\x62\\x06\\xd8\\x3f\\x07\\xd4\\xb2\\x73\\x63\\x0b\\x63\\xc5\\x77\\xa7\\xdb\\xe9\\x2f\\x15\\x91\\x39\\xe1\\x76\\xba\\xc2\\x34\\x87\\xde\\x94\\x13\\xe0\\x64\\xd2\\x44\\x4a\\xe3\\x5d\\xc9\\x9b\\x85\\x98\\x35\\x2b\\x8e\\x7c\\x54\\xba\\xbe\\x28\\x6f\\x92\\x5b\\xd3\\x29\\x96\\xb2\\xa3\\x02\\x0b\\x2d\\xd1\\x36\\x84\\x3e\\x15\\xde\\x49\\x65\\xfd\\x6c\\xbe\\xc5\\xb7\\x6e\\x9f\\xe5\\x62\\x01\\xfb\\x18\\xc0\\x70\\x1b\\x40\\x93\\xba\\x4f\\x36\\x1d\\x7c\\xbe\\x40\\x44\\xd0\\x90\\xf7\\x49\\x93\\x36\\xbf\\x33\\x8d\\x8d\\xf3\\x33\\xc9\\x9e\\x80\\x8c\\xf8\\xae\\x64\\x27\\x8e\\x21\\xea\\x99\\x77\\xca\\x0d\\xe9\\x01\\x77\\x0c\\xe3\\x1a\\xe3\\x5a\\xe7\\x12\\x1b\\xf3\\x62\\xd1\\xac\\x34\\xa3\\xb5\\xb6\\x34\\xf6\\x8f\\x20\\xe5\\x66\\xbf\\xd9\\x56\\xad\\x57\\x6f\\x89\\x18\\xd4\\x64\\xf7\\x21\\x74\\x25\\xa1\\x7e\\x0c\\x8b\\x07\\x24\\x4b\\x07\\xe9\\xe3\\xdb\\x13\\x45\\x2e\\x4f\\xca\\x37\\x2d\\xa5\\xf5\\xb2\\xdb\\x78\\x51\\x0b\\x79\\x8b\\x7b\\xf3\\xcf\\xad\\x1e\\xd3\\x58\\x15\\x30\\xfc\\x66\\x24\\xdf\\xbe\\x66\\xe8\\x97\\x22\\xed\\x55\\x6e\\xf8\\x11\\x7c\\xd4\\x98\\x8a\\x47\\x1d\\x50\\x46\\xaf\\xdb\\x3c\\xf8\\x3e\\x50\\x7d\\xc5\\xc7\\xa0\\x2d\\xd1\\x35\\xee\\xed\\xe4\\x33\\xd6\\x65\\x08\\x4d\\x06\\x5b\\x89\\x24\\x3b\\x73\\x5c\\x25\\xe0\\x55\\x92\\x40\\xca\\x86\\x17\\x18\\xed\\x5a\\xfd\\x14\\x95\\x6b\\x57\\x71\\x7e\\x47\\xea\\xea\\x78\\x29\\x40\\x1a\\xf4\\x88\\xfe\\xae\\x97\\x39\\xe1\\x14\\xdf\\x2d\\xcf\\x47\\x0e\\x89\\xa7\\x97\\xb2\\x8a\\x2d\\x84\\x34\\x66\\x65\\xf3\\x19\\xa0\\x0d\\x68\\xa2\\x3d\\x79\\x4b\\x24\\x9d\\x39\\xd7\\xfe\\x68\\xe3\\x4d\\xad\\xcd\\xda\\x62\\x07\\xcb\\x2c\\xeb\\xac\\xbd\\xec\\x98\\x2d\\x33\\x29\\xf1\\x1d\\xf4\\x0e\\xc8\\x25\\x52\\x99\\xfe\\x95\\xde\\x43\\xba\\xf2\\x1a\\x7f\\xdd\\xb4\\xde\\xb0\\x74\\x23\\xc2\\x24\\xc2\\xd4\\x08\\x3d\\x1a\\x37\\x31\\x80\\xa9\\xa5\\x29\\x76\\x7e\\x5e\\x77\\xdb\\x38\\x61\\xa0\\x28\\x2d\\xce\\x98\\x6b\\x77\\x29\\x6a\\x66\\x33\\x8e\\x02\\x56\\xfa\\xe3\\xd1\\xcd\\x34\\x63\\x74\\xd5\\xa4\\x06\\x3e\\xa1\\xe2\\xee\\x02\\x72\\xb3\\x9d\\x68\\x33\\x27\\x92\\x75\\xaa\\xae\\xa9\\x92\\x87\\x15\\x4f\\xaa\\x97\\x78\\x34\\xc0\\xf9\\xab\\x18\\xed\\x19\\xec\\x35\\x0c\\x65\\x6d\\x8c\\x3b\\xf2\\x87\\x34\\x7c\\x08\\x3f\\x87\\x7d\\xcf\\x9f\\xc8\\x14\\x42\\x57\\x1d\\x7a\\x36\\x30\\xf3\\xfb\\x49\\xcc\\xaf\\x8c\\x6d\\x8c\\xe3\\x8f\\x7d\\x0c\\x03\\x2d\\x68\\x6f\\xe4\\x70\\x73\\x09\\xbf\\x5c\\x03\\xec\\xf9\\x69\\xcc\\x5f\\x0c\\x02\\x73\\x8a\\x00\\xe9\\x66\\x18\\x2d\\x8c\\x4c\\x9a\\x68\\xb6\\x6d\\xd7\\x4c\\xe1\\x73\\x9e\\xb9\\x4a\\x9f\\x65\\x6c\\xd6\\xf5\\xfc\\x03\\x90\\xde\\x24\\x79\\x56\\xf5\\x68\\xb3\\x72\\x59\\x79\\x7d\\x5f\\x73\\x87\\x7f\\xc0\\x4c\\xed\\xb8\\x1d\\x02\\x73\\xf0\\x1f\\x09\\x78\\x82\\x72\\x33\\xbb\\x58\\xa5\\xae\\x27\\x95\\x8c\\xde\\x7a\\x94\\x26\\xca\\x62\\x39\\xd3\\x48\\x3e\\x89\\x4a\\x92\\xbb\\x5f\\x9b\\xac\\x72\\x9d\\xde\\x14\\x14\\x3f\\xc2\\x97\\x95\\x50\\xad\\xb6\\x81\\x21\\xfa\\x22\\xb0\\xe2\\x6c\\x19\\x32\\x9a\\x2a\\x6c\\x87\\xa5\\xa0\\x55\\xd1\\x06\\xaf\\x0e\\xa4\\xfd\\x87\\x26\\xc1\\xd1\\xbb\\x7a\\x28\\x17\\xa6\\x99\\xdd\\x99\\xdd\\x39\\xd7\\x30\\xcc\\xf1\\x3e\\x76\\x65\\xc6\\xc1\\x15\\xe6\\xdb\\xf3\\x6f\\x46\\xd4\\x51\\x6f\\x90\\x39\\xb1\\xac\\xad\\x37\\xf8\\x5c\\xe6\\xb4\\xd2\\x7a\\xcc\\x4b\\x70\\x3f\\xcf\\xdd\\x68\\x33\\xff\\x10\\xf7\\x07\\x80\\xd4\\x07\\xc2\\xed\\xfa\\xf5\\x88\\x67\\xcc\\xce\\xcd\\xef\\xfe\\x05\\x97\\x88\\xa8\\x94\\x2a\\xed\\x8d\\xfb\\xe1\\xac\\xd6\\x60\\x80\\x10\\xbb\\x50\\x0c\\x35\\xfb\\x9c\\x46\\xa7\\x7a\\x17\\x7e\\xe6\\x29\\x84\\x64\\x10\\x01\\xeb\\x2d\\x7d\\x95\\xf3\\x6b\\x32\\xa6\\xd3\\x4d\\x1e\\x42\\xbe\\xeb\\x4f\\x5c\\x57\\x8d\\xb5\\x27\\x80\\x63\\x3e\\xb3\\xe9\\xb9\\xc5\\xda\\xf6\\x7d\\xfc\\x34\\x07\\x82\\xf6\\xc7\\xe8\\xd0\\x45\\xe0\\x25\\x48\\x90\\x18\\xa0\\x5d\\x88\\x8c\\xd2\\x77\\xa0\\x40\\xfd\\x5e\\x1b\\x22\\xf9\\x5d\\xa1\\x53\\x68\\x33\\x3a\\x77\\x3a\\x2c\\x79\\x3a\\x74\\x08\\xa1\\x65\\x0b\\x73\\xc3\\x33\\x14\\x31\\x8c\\xd3\\x4c\\xb2\\x48\\xdd\\x0e\\x6e\\x98\\x9e\\xc7\\xf2\\x70\\x3b\\xa6\\x8a\\x9b\\x6e\\xed\\x04\\xba\\xdd\\xca\\x51\\x27\\x0f\\x80\\x61\\xfa\\xbc\\xce\\xf4\\x8b\\xd5\\x77\\xd0\\x86\\x0d\\x67\\x3e\\x31\\x3a\\xa7\\x3f\\x46\\x09\\x8f\\xd3\\x8a\\x1e\\x2f\\xdb\\xe5\\xb2\\x51\\xb2\\xe4\\x56\\xd2\\x58\\xd4\\x87\\x7d\\xc6\\x6e\\x5a\\x37\\x25\\x43\\xab\\xc8\\x71\\x7d\\xff\\x2d\\x7d\\xf5\\x15\\xf8\\x99\\xf8\\x66\\xe1\\x8d\\x01\\xa3\\x25\\x74\\x70\\x3e\\x80\\x5b\\xcb\\xa8\\xf1\\x53\\x63\\x8a\\x00\\x44\\xc9\\xb0\\x97\\x29\\x70\\x8b\\x64\\x48\\x58\\xa8\\xa5\\xa8\\xc5\\xcc\\x33\\xaa\\xc9\\x1d\\xf6\\xba\\x67\\xee\\x7c\\x08\\x1e\\xd3\\x61\\xd2\\x09\\x94\\xc2\\x5e\\x03\\x57\\x8d\\x4a\\x09\\xae\\x0e\\x14\\x5c\\xe8\\x65\\x2e\\x76\\x65\\x75\\x66\\xc8\\x91\\x9a\\x41\\x87\\xc1\\xe6\\xea\\x72\\xa1\\x32\\x8c\\x94\\xd2\\xf5\\x5d\\x4e\\x02\\x9f\\x0c\\xc9\\x1c\\x2b\\x54\\x32\\x47\\x72\\xe8\\x2f\\x5e\\x49\\x58\\x32\\x94\\xad\\x94\\xfc\\x5c\\x26\\xcc\\xec\\x01\\x80\\xc4\\xc9\\xac\\x90\\xa1\\x35\\xff\\x53\\xa6\\xc2\\xf4\\xfe\\x29\\xd7\\x5f\\xf8\\x3d\\x1e\\xdb\\x8d\\x2b\\xf8\\x98\\x6b\\xc0\\x8f\\xfe\\x00\\x24\\x8f\\x0c\\xcd\\x2b\\x5c\\xfe\\x7a\\x62\\xb6\\x58\\x28\\x0d\\x4f\\xd8\\xdf\\x93\\x49\\xf6\\xb6\\x06\\x55\\x42\\x79\\xc3\\xc9\\xf6\\x1f\\x00\\x92\\x6a\\xf3\\xf4\\x4d\\xda\\xc1\\x27\\x92\\x1f\\x5f\\xf5\\xf2\\x49\\x86\\x60\\x70\\xc0\\x9c\\xae\\xd4\\xc0\\xed\\x1c\\x23\\xc1\\xca\\x9a\\xae\\x87\\xc9\\x6d\\x33\\xeb\\x59\\xd2\\x87\\xb9\\x26\\x5a\\x7f\\xe3\\x98\\x01\\x55\\x0e\\x83\\x22\\xbc\\x76\\x1b\\xde\\xc1\\xb4\\xf2\\xef\\x99\\xb0\\xd5\\xf8\\xf1\\x65\\xcf\\x06\\xbd\\xf6\\xb9\\x12\\x50\\x61\\x34\\x9d\\xa1\\xba\\x41\\x03\\x2f\\x5e\\x57\\xf8\\x0c\\x74\\x1d\\xc6\\x36\\xd3\\xd7\\xa1\\xbd\\xdc\\x58\\x69\\xfc\\x75\\x36\\xbf\\x24\\xde\\xfc\\x21\\x3e\\x57\\x2d\\xd7\\x74\\x7f\\x0d\\x29\\xac\\xbd\\x79\\x5c\\x3a\\xdf\\x81\\xe7\\xad\\x5e\\x32\\xd6\\x96\\x60\\x0a\\x00\\x0a\\x60\\xc9\\xdd\\x92\\xd7\\xb3\\x08\\x82\\xef\\x2a\\x4c\\x16\\xbf\\xa8\\x85\\xc2\\x76\\x74\\x26\\x34\\x9d\\x06\\xd0\\x86\\xe1\\x91\\xf0\\x7b\\x7e\\x43\\x65\\xa7\\x32\\x6b\\x2f\\x8d\\x77\\xc7\\xef\\xd3\\x44\\x3f\\xd1\\xee\\x82\\x0e\\xa7\\x03\\x84\\xef\\x49\\xf6\\x2f\\xb5\\xae\\x5f\\x1a\\xac\\xbc\\x65\\xf1\\xfc\\xce\\x47\\x86\\x8f\\x36\\xf8\\x6e\\xbe\\x5d\\xa0\\x39\\x0e\\x04\\x31\\x41\\x6c\\x7f\\xfb\\x82\\xfb\\x82\\x10\\x7c\\x25\\x3c\\x33\\x89\\x26\\xfb\\x1f\\xa6\\x4b\\x75\\x06\\x3d\\x00\\x29\\x13\\xfd\\x2d\\xaa\\xda\\xba\\x62\\xf8\\x93\\x46\\x1e\\xfe\\x07\\xd6\\xeb\\x1b\\x17\\xd4\\x42\\x39\\x14\\x9a\\x37\\x75\\x94\\x26\\x58\\x37\\xd0\\xee\\x97\\xbc\\xc3\\x40\\xfd\\x24\\xc1\\xa1\\xae\\x79\\x9a\\x7d\\x45\\xb7\\x81\\xf4\\x00\\xba\\x7b\\x52\\xfd\\x06\\x31\\xaf\\xff\\xb2\\x61\\xa8\\xfb\\x64\\x50\\xb5\\x08\\xb0\\x7b\\xb7\\x56\\x24\\x44\\xd0\\x0e\\xd6\\x73\\x03\\xc8\\xde\\x29\\xfd\\x4b\\xa3\\x67\\x19\\x6b\\xf5\\xdf\\xd6\\xc4\\x2d\\x7d\\x56\\x95\\x57\\x17\\xb8\\x93\\xad\\x19\\x2b\\x4c\\x65\\xf1\\x11\\x20\\x17\\xab\\xc6\\x46\\x75\\x57\\xaf\\x18\\x1e\\xbc\\xdb\\xbb\\x38\\x69\\x0a\\xf6\\x2a\\x1f\\x88\\x94\\x35\\x5d\\xde\\x65\\x8e\\xeb\\x9a\\xc4\\x1a\\x8c\\x96\\xe6\\xf9\\x94\\x71\\x23\\xd3\\xcb\\x43\\xde\\xb7\\x9e\\xc0\\x8d\\xe2\\x66\\xde\\x9f\\xf4\\x98\\xf0\\x3a\\xab\\xa2\\xb5\\xa5\\xe7\\x9f\\x55\\x97\\xf7\\xfd\\x78\\xfb\\x23\\xae\\xc9\\x44\\xed\\xab\\xf4\\x16\\x1a\\x0a\\xf7\\xf0\\x96\\x07\\x81\\x50\\xb6\\xc3\\x33\\xec\\x49\\x78\\xc1\\xd7\\x8d\\x1e\\xb0\\x75\\xf3\\xfd\\x01\\x38\\x5f\\x28\\xd1\\xd9\\x6b\\xd0\\xf3\\x2d\\x8d\\xa4\\x4c\\x56\\xd8\\x9d\\x60\\x07\\xed\\xca\\x60\\x45\\x8d\\x33\\x6f\\x12\\xd4\\xae\\x18\\xd8\\xf3\\xb2\\x8d\\x8d\\x85\\x28\\x27\\x4a\\x0d\\xaa\\x7a\\x5d\\xfb\\xcd\\x35\\x42\\x4a\\x66\\xb5\\x63\\x6f\\xb5\\xa6\\xe1\\x33\\xd5\\x75\\xed\\x5e\\xab\\x94\\xdd\\x41\\xe6\\xa4\\xcd\\x26\\x5d\\x30\\x63\\xdb\\xd9\\x33\\x89\\x9f\\xc7\\x67\\x3f\\x59\\xe5\\xb5\\x08\\x03\\x10\\xbe\\xa5\\x20\\xbd\\x48\\xf6\\x5c\\xe0\\xac\\x70\\x90\\xb2\\x28\\x3f\\x40\\x52\\x79\\x13\\x16\\xfa\\x24\\xee\\x7d\\xfd\\x1c\\x9a\\x61\\x31\\xc4\\x40\\x71\\x90\\xce\\xf3\\x70\\x52\\x5b\\x77\\xc3\\x01\\x7f\\x8f\\x5f\\xfe\\x99\\xdd\\xa7\\x5c\\x82\\x27\\xbb\\x63\\x03\\x9b\\xb2\\x5b\\xd1\\xe9\\x7b\\xb7\\x9a\\x79\\xfa\\x87\\x2d\\xaf\\x1a\\x4e\\x8d\\x69\\xcd\\x44\\xf2\\xaa\\xe9\\x11\\xc9\\xf7\\x75\\xa9\\x1e\\x2d\\xcf\\xd3\\x7c\\xed\\xb5\\xa8\\xb0\\xaf\\x9a\\xcc\\xa9\\xba\\xb9\\x66\\xd5\\xc0\\x8d\\xbd\\x76\\xb6\\x18\\xde\\x9a\\xc4\\x44\\xb2\\x8b\\x79\\x6d\\x73\\x9f\\x84\\x50\\xaf\\x52\\x29\\xf8\\x5e\\x75\\x54\\xad\\x6b\\xa3\\x4b\\x0a\\x97\\x8f\\x33\\x2b\\x78\\x56\\x2e\\x4b\\x92\\x1a\\x53\\x76\\xb3\\x90\\x0f\\xb1\\x58\\xd4\\x99\\x20\\xb4\\x22\\x6c\\x77\\x94\\xdc\\x5f\\x0d\\xfd\\x14\\x4d\\x0b\\xa5\\x58\\xbb\\xb5\\x42\\xdf\\x5e\\xe8\\xc3\\xf3\\x67\\x69\\x48\\x33\\x75\\xf1\\xff\\x59\\xcb\\xa1\\x09\\x2b\\x56\\xfc\\xd6\\xf3\\x00\\x0c\\xe8\\xd5\\x0f\\xf4\\x85\\xae\\xa9\\xd4\\x33\\xa7\\x3a\\x75\\xa8\\x76\\x59\\x44\\xdc\\xea\\x6e\\xf8\\xa2\\x63\\x05\\x71\\x98\\x3e\\x15\\x8c\\x7b\\xba\\x22\\xe0\\xf2\\xd3\\xd8\\x69\\xdc\\xc5\\xa3\\x93\\xbc\\xca\\x72\\xae\\xa3\\x3b\\xcf\\xaa\\x76\\x45\\x7a\\x1d\\x94\\xb9\\x11\\x56\\x0d\\x0a\\xcc\\xde\\x09\\x10\\x61\\x41\\xf8\\xe5\\xb9\\x57\\xb4\\x84\\x36\\xbb\\x3c\\x69\\x54\\xab\\x18\\x1d\\x2c\\x31\\x78\\xcf\\x88\\x90\\x0e\\xb6\\xa6\\x7c\\x24\\x31\\x42\\x86\\x16\\x51\\xc2\\xea\\xd7\\xc4\\x46\\x67\\xfb\\x58\\x42\\x35\\xdc\\x8f\\xb1\\xf9\\x8b\\x61\\x65\\x7d\\x48\\x79\\xb4\\x1d\\xb7\\x12\\x3d\\xdc\\x7a\\xc2\\xaf\\x38\\xc7\\x1c\\x11\\x79\\x5e\\x99\\x4d\\x73\\xe4\\xbc\\x3d\\xf9\\x7d\\xe8\\x4d\\x80\\xa3\\xcb\\x84\\x52\\x2e\\x41\\x99\\x70\\x1c\\xb6\\x15\\x71\\xc2\\x45\\x94\\xc1\\x60\\x4e\\x32\\xe1\\x05\\x9c\\xd6\\xe9\\x9c\\x21\\xeb\\xe3\\xca\\xad\\x7a\\x43\\xb3\\x7c\\x18\\xe4\\xbb\\x77\\x79\\x56\\x89\\x4d\\x6d\\xa3\\xd1\\x32\\xe0\\x72\\xb5\\x20\\x6b\\x82\\x48\\xea\\x6d\\x08\\x15\\x64\\x6d\\x5d\\x26\\xdb\\xdf\\x1d\\xd2\\xcf\\x6e\\x17\\xd7\\xd6\\x2e\\x41\\x79\\xa8\\xcc\\x68\\xe0\\xe9\\x8b\\x9a\\x80\\x6e\\xc2\\x31\\x01\\xe8\\xef\\xd4\\x0f\\x64\\x6e\\xb9\\x18\\x8f\\x6b\\x7e\\xf5\\x37\\x26\\x3c\\x23\\xae\\xf9\\x73\\xcc\\x15\\x84\\xa4\\x08\\x74\\xb3\\x25\\xd0\\xb4\\x9c\\xff\\x63\\xea\\xfb\\xd3\\xfa\\x29\\xf7\\x98\\xd8\\x1e\\xd6\\xc6\\x07\\x5d\\x4f\\x8e\\xbb\\x29\\x5d\\xf1\\xc1\\xb0\\x4f\\xe7\\x6e\\xe8\\x56\\x49\\x8c\\x76\\x2b\\x75\\xa4\\x0a\\x25\\xd3\\x01\\xd2\\x86\\x0d\\x53\\x92\\x62\\x0e\\x9f\\xa4\\x7f\\xf9\\x59\\x36\\xa3\\x5d\\x5c\\x71\\x3e\\xa7\\x25\\x14\\xbf\\x89\\x1b\\xf8\\x66\\xad\\x6c\\x82\\x99\\xbc\\xec\\xa1\\xa7\\x31\\x2d\\x2a\\x16\\xa4\\xa9\\xee\\x4c\\x04\\x38\\x45\\xc7\\x0d\\xb6\\xfb\\x72\\x58\\x23\\x76\\x5f\\x04\\x89\\xa9\\x2b\\x8b\\x6e\\x9d\\xa6\\x7e\\x4a\\x53\\x13\\x21\\xca\\xdd\\xcc\\x94\\xa6\\x41\\x79\\x71\\xe4\\x26\\xe2\\x91\\x45\\x0d\\x33\\x06\\x7c\\x0e\\x50\\xc8\\xa3\\x1b\\x44\\xa9\\x81\\xe9\\x10\\xb0\\x9e\\x86\\xcb\\xe7\\xaa\\x1e\\xfe\\xc5\\x10\\x83\\x9c\\x15\\xc1\\x01\\x11\\x4c\\x49\\x78\\xc9\\xeb\\x73\\x65\\x3b\\xce\\xe9\\xb9\\x17\\xfd\\x0e\\xd4\\x68\\x93\\x9c\\x01\\x9c\\xb6\\xde\\x3a\\x95\\x5f\\x58\\xf8\\xbf\\x31\\x52\\xa2\\x29\\xa0\\x57\\xa8\\x61\\x7c\\xa4\\x9c\\xdd\\x7a\\xc6\\xb1\\x8c\\x0e\\xf6\\x72\\xca\\x0f\\xc0\\xad\\x2c\\x35\\x52\\x28\\xf9\\x39\\xea\\xc6\\xff\\x44\\xf4\\xcb\\x0f\\x63\\xb3\\x75\\xcd\\xf4\\x93\\xb8\\xc8\\x55\\xb6\\x61\\x15\\xf4\\xa9\\xc0\\xe4\\xf0\\x44\\x47\\x9d\\x52\\xae\\x09\\x2c\\x85\\x26\\xd8\\x06\\x84\\x56\\x6a\\xe5\\x1a\\x3a\\x3a\\xe0\\x7c\\xe0\\x8c\\x13\\xed\\x54\\x5b\\x81\\x8b\\x7d\\x05\\x81\\x61\\x58\\x9e\\x8f\\x7b\\x37\\x84\\x99\\xd0\\xb5\\xa7\\x8b\\x0f\\x90\\xa7\\xc9\\xc3\\x97\\xef\\x54\\x1c\\x3b\\xb0\\x10\\x7d\\xcf\\x4f\\x8b\\x46\\xf4\\xda\\x9c\\xec\\x86\\x96\\xe1\\x65\\x67\\x80\\x23\\xd7\\x2c\\x33\\xa4\\x3c\\x76\\x16\\xd8\\xe8\\x2a\\xca\\x8f\\x04\\x5e\\x38\\x0a\\x1a\\x79\\xc3\\x89\\xc2\\x47\\x37\\xee\\x5e\\x4b\\x50\\x56\\xe2\\x4f\\x2b\\x62\\x0f\\xfb\\xe6\\x3a\\xe5\\xec\\x1b\\x7d\\x5e\\x73\\x5d\\x88\\x38\\x48\\xe9\\x5c\\x92\\x21\\xc3\\x87\\x12\\xd1\\x35\\xf1\\x26\\x3a\\x83\\x5c\\x1f\\x00\\xb1\\x5c\\x7c\\xae\\x23\\xef\\xc1\\x1e\\xeb\\x2a\\x73\\xdd\\x90\\xb6\\x60\\xfe\\x6f\\x58\\xd2\\xed\\x5f\\x90\\xb3\\x1e\\x47\\x06\\x1d\\x65\\xde\\xf0\\x18\\x8b\\x01\\x5b\\x79\\x8b\\x74\\x0a\\x87\\x2c\\x05\\xa4\\xd3\\x4c\\xb6\\x82\\x1f\\xd7\\x7e\\x94\\xdd\\x13\\x70\\xe8\\xf3\\x14\\x61\\x36\\xda\\x60\\x75\\x82\\xc7\\xb3\\x32\\xa3\\xf8\\xa6\\xd2\\x41\\x01\\xd2\\x56\\x3f\\xfc\\x19\\x7e\\x2e\\x15\\xbe\\xab\\x80\\x93\\xe0\\xdb\\x1b\\x78\\xfa\\xad\\xde\\xfa\\xda\\x7e\\xe4\\xf1\\x18\\x9c\\x32\\x60\\xc6\\x66\\x83\\x6e\\x19\\x56\\x55\\x15\\xb0\\x3b\\x7a\\xc2\\xfc\\x6d\\xae\\x89\\xf7\\x53\\x76\\xef\\x75\\x9f\\x61\\x1f\\x46\\xca\\x16\\x77\\x37\\xd2\\x50\\xc4\\x66\\xaa\\x81\\x47\\x28\\xbc\\xe2\\x22\\x84\\x65\\xc8\\xf5\\x7b\\xfd\\x2c\\xbc\\xbf\\x46\\xf0\\x07\\x7d\\x1d\\x6c\\x22\\x3f\\x1b\\x0c\\x35\\x69\\x09\\x7b\\x1d\\xf0\\x1a\\xdb\\x38\\x20\\x5e\\x55\\xb8\\x6b\\xdc\\x9c\\xe8\\xf6\\x59\\x6d\\x62\\x5c\\x32\\x0f\\x9a\\x6c\\x63\\x90\\x5f\\xf3\\x35\\xd2\\xa8\\x15\\xc3\\x58\\x3e\\x0f\\x02\\xa8\\x81\\x99\\xe1\\x47\\xaf\\x77\\x06\\x7b\\x29\\x6a\\xbb\\x36\\x58\\x74\\x60\\xc2\\x9b\\x2d\\xcf\\xc3\\xe0\\x0a\\x53\\x3c\\x85\\x33\\x6f\\x9c\\x98\\xfc\\x05\\xa5\\x70\\x0e\\xe7\\xdb\\x95\\xe1\\xdc\\x89\\x4b\\x50\\x71\\xad\\xcf\\x96\\xcf\\xf2\\xbe\\x3b\\x7a\\x5d\\xdc\\x71\\x3e\\x00\\xbd\\xed\\x8d\\x46\\x64\\x3f\\x12\\xe2\\x83\\xb4\\x59\\x44\\x0c\\x26\\xc1\\x59\\x0f\\x80\\xa9\\x8f\\xb2\\xb7\\xf1\\x89\\xa1\\x5c\\x2a\\x68\\x1b\\x94\\x70\\xce\\xbc\\x7f\\x3d\\x27\\xf0\\x00\\x90\\x70\\xef\\xe8\\x4c\\xa4\\xba\\x71\\x17\\xc4\\x1c\\x74\\xe5\\xd1\\x81\\xfd\\x07\\x3a\\xc2\\x15\\x99\\x07\\xd0\\xa3\\xdf\\xdf\\x8f\\xd3\\x03\\x8b\\xa2\\xb9\\x44\\x38\\x3f\\x3a\\x51\\x5f\\xa6\\x28\\xb7\\x11\\x67\\xac\\x69\\x50\\x9e\\xa7\\x2b\\x9d\\x46\\x36\\x5b\\x22\\x39\\x24\\x1f\\xa3\\x59\\x16\\x5f\\x29\\x34\\x68\\x41\\x00\\xf8\\x8c\\xcc\\x7c\\x7b\\x8d\\xb1\\xdc\\x3d\\xc9\\xdb\\x93\\x99\\x9b\\x82\\x93\\x5c\\x22\\x9c\\xe6\\xb9\\x36\\x17\\x9b\\x1b\\x7d\\x88\\xb5\\xec\\xe1\\xf6\\xf0\\x80\\x8b\\xc1\\x7d\\xfb\\xe6\\xb8\\xf9\\x66\\x22\\xcd\\x38\\xd6\\x09\\x07\\x2e\\x9f\\xbc\\x95\\x3e\\x9d\\xd8\\x30\\x2d\\xf5\\xf5\\xbb\\xdc\\x98\\x30\\xf6\\xce\\x64\\x73\\x1b\\x2f\\x1f\\x22\\xd0\\x9f\\x70\\x81\\x23\\x96\\x38\\x1b\\xe0\\x8a\\x73\\x72\\x4d\\x61\\x93\\x46\\xe5\\xf5\\x2a\\x69\\xec\\x10\\x0b\\x6b\\xed\\x68\\xf6\\x57\\xb1\\xfd\\xe9\\xf6\\x9c\\xde\\x9c\\x47\\x89\\xab\\xfc\\x58\\xe5\\x56\\xf3\\x13\\xed\\x86\\x6f\\xcf\\xa5\\xe1\\xe4\\xca\\xdd\\x35\\xfb\\x8b\\x73\\xab\\x25\\x18\\x8e\\x71\\x8c\\x2a\\x21\\x4a\\x64\\x8f\\x86\\xb6\\xb4\\xb5\\x3d\\x10\\x70\\xb9\\xa6\\xb8\\x31\\x7d\\x21\\x6d\\x8c\\x78\\xb5\\xe4\\xdd\\x85\\x48\\xe0\\xb0\\x0e\\x46\\xfc\\xeb\\xe0\\xf1\\xa8\\x90\\x08\\xf6\\xde\\x5b\\x01\\xa2\\xab\\xfe\\x4f\\x05\\x61\\x06\\xc1\\xe9\\x27\\xba\\x3e\\x4c\\x9e\\x05\\x4b\\x75\\xe9\\x76\\xb3\\x85\\x89\\x84\\xbd\\xb1\\x7e\\xc5\\xad\\x39\\x38\\x07\\x02\\x2b\\xfb\\x43\\x8d\\x78\\x11\\x5f\\x4c\\x4a\\x41\\x05\\xff\\xc8\\x16\\xcc\\xc2\\xdb\\x0c\\x8f\\xcf\\xc2\\xf8\\x17\\x6d\\xe2\\x5f\\x54\\x0a\\xd9\\xd5\\x14\\x32\\x45\\x80\\x82\\xc4\\xdd\\xc7\\xbd\\xda\\x9d\\x65\\x48\\x2a\\xd3\\x77\\x7b\\x44\\x2c\\x44\\x2f\\xdb\\x20\\x8a\\x14\\x8c\\xae\\xd2\\x70\\xf0\\x3e\\xe4\\xb1\\x24\\x4e\\xa9\\xbf\\x15\\x4a\\x6f\\xc2\\x48\\xf0\\x3b\\xa1\\x54\\x79\\x71\\x35\\x0f\\x4a\\xee\\x5b\\xe8\\x8c\\xd9\\x4c\\x66\\xce\\xf3\\xa7\\xc3\\x98\\x4e\\x75\\xf4\\x7d\\xee\\xd2\\x73\\x07\\x7f\\x57\\x05\\xd3\\x96\\x82\\x2b\\x6e\\xa7\\xf6\\x52\\x7c\\x94\\x80\\xee\\x5e\\x39\\xbf\\x1b\\xa6\\x25\\x84\\xd3\\x26\\xa1\\x22\\xf7\\x6c\\xea\\x8f\\xf2\\x8d\\x16\\x95\\xec\\xd7\\xc9\\x1d\\x65\\x87\\x26\\xd8\\x41\\x89\\x28\\xff\\xd2\\xa8\\x6a\\xc2\\x9e\\xcd\\xe5\\x9e\\x66\\x46\\xc6\\x8f\\x10\\x60\\xdd\\x54\\x72\\xb3\\xa9\\x33\\x7c\\xd5\\xa2\\x06\\x1e\\x45\\xa3\\xc3\\xec\\x71\\xc3\\x08\\x79\\x8d\\x25\\xa1\\x4c\\x9b\\xb4\\x27\\x5a\\x49\\x59\\x29\\xf9\\x61\\x83\\xa6\\xac\\xf2\\x77\\x05\\x56\\x81\\x05\\xec\\x4b\\xfc\\x98\\x73\\x6e\\xce\\x1b\\x27\\x15\\xc4\\x42\\x70\\xbd\\x44\\xbb\\x9f\\xdd\\x7b\\xfd\\x46\\x7f\\xb1\\xac\\xda\\x55\\x4f\\x5c\\x4f\\x18\\x5e\\x34\\x3c\\xd3\\x38\\x7b\\x16\\x6d\\x9f\\x9a\\x3c\\xbe\\x66\\x3a\\x37\\xc0\\x55\\x03\\xd0\\xca\\x12\\x10\\xfa\\x19\\xa8\\x00\\xe1\\x38\\xfb\\x0f\\xb5\\xc8\\xd4\\xbc\\xde\\xc9\\x01\\xd0\\x3f\\x83\\x18\\xc4\\xbd\\xc5\\x86\\x64\\xc9\\x43\\xf1\\x01\\xe4\\xf7\\x46\\x62\\x5b\\xda\\xde\\xeb\\x19\\xf5\\xad\\x88\\xb9\\xcc\\x91\\x26\\x02\\x4a\\x51\\xe1\\xe1\\x5b\\xc7\\x99\\x9d\\x66\\xc4\\x17\\x6d\\x35\\xae\\x24\\x87\\x67\\x3a\\x25\\xe6\\xcc\\x49\\xf7\\xbe\\x36\\x97\\x3d\\x76\\x4a\\xbc\\x6d\\xcc\\x9f\\xb0\\xd6\\x3f\\xd2\\x10\\xc2\\x93\\x06\\x2b\\x01\\x2f\\xba\\xa7\\x9e\\xfd\\x7f\\x53\\x89\\x2e\\x1c\\x14\\x02\\x4a\\x16\\xe3\\x03\\x14\\x24\\xa7\\xa7\\xfe\\x51\\x4e\\xa4\\xff\\x5f\\x0b\\xa4\\x70\\x8d\\xb7\\xd9\\xad\\xdb\\xae\\x68\\xab\\xc7\\x69\\xcc\\x8c\\xd1\\xfb\\xbc\\xa1\\xa4\\xa2\\x60\\x41\\x9b\\x45\\x33\\x4a\\x92\\x03\\xa0\\xbf\\xfd\\xa4\\xe7\\x7f\\x17\\x47\\x4e\\x18\\x92\\xf7\\x85\\xcb\\x78\\x69\\x98\\xf9\\x85\\xc5\\x0d\\x7c\\x1b\\x86\\xfb\\x93\\xd9\\xbc\\xdd\\x5c\\xe5\\xb7\\x69\\x6d\\x58\\x87\\x4c\\xf4\\x66\\xb7\\x13\\x9d\\x54\\x9b\\xa4\\xbe\\xa9\\x4d\\x51\\xe5\\x3f\\x2a\\x10\\x20\\xda\\x5c\\x14\\x7c\\x61\\x3d\\x3f\\x65\\x3a\\x1a\\x42\\xb1\\x97\\xab\\x06\\x0e\\x39\\xb8\\xa7\\x59\\xb8\\xb5\\xa3\\x2d\\xbd\\x14\\x0c\\x4f\\x80\\xda\\xc6\\xcb\\xc3\\x0f\\xc8\\x1d\\x05\\xa4\\x0e\\x4d\\x37\\x44\\xc2\\x2d\\x82\\x36\\x1d\\x08\\xd7\\x9c\\x9c\\x6c\\x4f\\xaa\\xcc\\xd7\\xe2\\x45\\xcf\\xab\\x3f\\xde\\x48\\x1a\\x3b\\xe6\\x6a\\x87\\xa3\\xe0\\x2f\\xdb\\x11\\x1e\\xd1\\x4c\\x48\\xac\\x38\\xba\\xd1\\x97\\xce\\x4a\\x4d\\x24\\xf2\\x54\\xda\\x87\\x91\\xc0\\x25\\x99\\x5d\\x17\\xc9\\xdb\\x2a\\xdb\\x1e\\x69\\x96\\xb0\\x3e\\xf1\\x37\\x1e\\xfc\\xdb\\xfa\\xc7\\x2d\\x22\\x98\\xfa\\xd3\\x2d\\x7f\\x67\\x1c\\xd8\\xb2\\x1b\\xcb\\x52\\x81\\x4b\\xab\\x69\\x91\\x58\\xc1\\x65\\x56\\xd2\\xbc\\xa9\\x9a\\x53\\xae\\xeb\\x93\\x09\\xa9\\x06\\x26\\x7c\\x9e\\x12\\xf2\\x5e\\x3b\\xed\\x29\\xe9\\xef\\x54\\xd5\\x08\\x00\\xa8\\x4a\\x1f\\x03\\x49\\xfd\\xcd\\x57\\xb3\\x10\\xcc\\x42\\x82\\xcb\\xf8\\x1a\\x39\\x10\\xa2\\xd7\\xfd\\xce\\x56\\xed\\x96\\x63\\x5e\\x58\\x43\\xf5\\x48\\xca\\xa9\\xcb\\xc0\\xa7\\x86\\x2b\\x61\\xe9\\x66\\xcc\\x97\\xeb\\xe7\\x67\\x9b\\xa6\\x9e\\xc0\\x48\\x03\\x34\\x08\\x2d\\x66\\x58\\x8f\\x2a\\x81\\x5e\\xc3\\xfe\\xa7\\x90\\x5e\\xa7\\x24\\x8e\\x21\\xd1\\x8b\\x7d\\x43\\xb7\\xd8\\xb0\\x92\\xfd\\xa9\\x0a\\xf7\\x86\\xf8\\x9e\\x48\\x3e\\x0c\\x2b\\x4c\\xeb\\x77\\x91\\x80\\x71\\x0c\\xd0\\x45\\x59\\xb2\\x19\\xc9\\x0e\\x1c\\xfd\\x6b\\x41\\x8c\\x4e\\x2d\\xfe\\x6f\\xff\\x4a\\xd3\\xbb\\xb5\\xa9\\xe2\\x68\\xd5\\x3a\\xf3\\x09\\xe3\\xf0\\xd3\\x00\\x0e\\x68\\xb0\\x6e\\xd8\\xcb\\xa9\\x63\\x87\\xed\\xad\\x57\\x69\\x78\\xd9\\x25\\xdf\\x6f\\x0f\\x07\\x84\\xa4\\xe8\\xff\\x0c\\xd0\\xf3\\x66\\x68\\x74\\x28\\x51\\x72\\x9c\\x3e\\x96\\x13\\x55\\xf3\\xc6\\x64\\x16\\x03\\x2d\\x2c\\x66\\x6c\\x12\\x58\\xec\\x0e\\x2e\\x2e\\x27\\xe8\\x2b\\xd7\\x4e\\xff\\x0a\\xfa\\x44\\xc5\\x96\\x34\\x08\\x2a\\x93\\xf4\\xe5\\x9a\\x6b\\x63\\xdd\\x40\\x16\\xea\\x06\\x9d\\x0c\\xb3\\xc4\\xa2\\xb1\\x22\\x07\\x1b\\x55\\x2b\\x01\\x7b\\x5d\\x3d\\x6e\\xe2\\x27\\x21\\xdd\\x20\\x72\\xe7\\x48\\x76\\xa0\\x80\\xec\\x1d\\x04\\x3f\\xad\\xe1\\xc5\\x98\\x17\\x5a\\xfa\\x09\\x11\\xf6\\x95\\x87\\x3f\\xb1\\x1b\\xc7\\xdc\\x87\\xe8\\xcc\\xc7\\x43\\x06\\xd9\\xf0\\x85\\xc8\\xb3\\x07\\x80\\xf8\\x43\\x7f\\xf1\\x5e\\xa3\\xf6\\x23\\xc5\\xd2\\x6f\\x61\\x29\\xfb\\x39\\xaf\\x4f\\x88\\x3e\\xbf\\xbf\\x2b\\xd1\\x99\\x33\\x37\\x5e\\xca\\x36\\xec\\x6f\\xea\\xde\\xcd\\xce\\xc4\\x05\\x2e\\x31\\x40\\x0e\\x64\\x75\\x11\\x97\\x72\\x1c\\xc6\\x05\\x49\\x10\\x2c\\x0e\\x9a\\x40\\x15\\xc1\\xa7\\x7e\\x88\\x12\\x33\\x62\\x02\\x00\\xfa\\x00\\xf4\\xf1\\x3f\\x0f\\x81\\xdf\\x3d\\x32\\x78\\xf1\\x46\\x90\\xe8\\x87\\xb4\\x4b\\xbd\\xe7\\x9f\\x73\\x82\\xc1\\xb7\\xc9\\x07\\x17\\xaa\\x1d\\x98\\xd2\\xb9\\xd4\\xf0\\x0e\\xce\\x9f\\x77\\x25\\xdd\\x2e\\x13\\x21\\x29\\xfa\\x0a\\xba\\x53\\xb3\\xe8\\xf2\\xe2\\xd9\\xbe\\xe5\\x2e\\x3d\\x2d\\xe9\\x36\\xe2\\x04\\xc9\\x7d\\x9f\\x0c\\xcd\\x42\\xde\\x6e\\xf2\\x67\\x8b\\x4f\\x82\\x65\\x90\\x16\\xbf\\x8a\\x11\\x86\\x5b\\x01\\x74\\x35\\x9f\\x4c\\xbf\\x6f\\x84\\x4d\\x08\\xc8\\x96\\xcb\\x10\\xf2\\x90\\xae\\xf5\\x34\\xbc\\xfb\\x46\\x86\\x1b\\x70\\xc4\\xd3\\x4a\\xb5\\x5b\\xed\\x35\\x8f\\x8c\\x89\\x3a\\x90\\x26\\x9d\\xb3\\x83\\x7f\\xac\\x95\\x6a\\x3d\\x62\\x2e\\x65\\xb4\\xbc\\xd6\\xf2\\xe8\\xb5\\x50\\x40\\xf8\\x06\\x57\\xc8\\xf3\\x99\\x76\\x83\\x9b\\x69\\x2d\\x91\\x87\\x10\\xba\\xc8\\x68\\xdc\\xbf\\x9d\\xb9\\xbf\\x89\\xd4\\x03\\x38\\x53\\x4a\\x48\\x52\\x7a\\xcc\\xd4\\x41\\x02\\x7c\\x54\\xd7\\x9a\\x8b\\xe5\\x7e\\x4b\\x9f\\xb6\\x1d\\x5e\\xb1\\x9d\\xe5\\x12\\x61\\xa0\\xde\\x54\\xd2\\xb7\\x96\\x32\\xa3\\xe3\\x8a\\xa9\\x53\\x2e\\xb4\\xc9\\x07\\xbc\\x6c\\xa4\\x2b\\xef\\xed\\x20\\xf4\\x2f\\x3c\\x10\\x2f\\xea\\x8e\\xc3\\x3d\\xa5\\xa5\\xf5\\x5e\\x68\\xcd\\xed\\x83\\xe6\\x12\\x3a\\xf4\\xfb\\x37\\x21\\xe6\\x7e\\xf7\\xa8\\x72\\x14\\xc4\\x39\\x3a\\xfd\\x8c\\x0c\\xeb\\xf2\\x40\\xff\\xf3\\x32\\xe8\\x63\\xf7\\x30\\x6d\\x7a\\x01\\x52\\xfa\\xae\\xa2\\x8d\\xbc\\x94\\xdc\\x18\\xef\\xa9\\xd8\\x9f\\x9c\\xd7\\x96\\x3d\\x4d\\xb7\\x39\\x38\\x8b\\xc9\\x16\\x4c\\xa1\\x47\\x95\\x99\\xd1\\x17\\x3b\\x01\\x52\\xb8\\x91\\xe0\\x7f\\xbd\\x36\\xfb\\x76\\x39\\x3f\\xec\\x61\\x29\\x44\\x98\\x5b\\x11\\xae\\x11\\xbc\\xf6\\xa4\\x42\\xcd\\x4b\\x0d\\x0c\\xeb\\xa0\\xcc\\x6a\\xe3\\x87\\x47\\xf0\\x3c\\x4d\\xd4\\x09\\xcb\\xfe\\x68\\xee\\xf8\\x22\\x1b\\x0a\\x4a\\x1a\\xf7\\xbe\\x55\\xed\\xe0\\xfb\\x75\\x68\\xc4\\x8c\\xfc\\xa0\\x14\\xac\\x30\\x9f\\x37\\xaf\\xf5\\x0e\\x5d\\x79\\x88\\xbb\\x2f\\x4e\\xf0\\x97\\x42\\x15\\x58\\x26\\xc6\\x8b\\x2d\\x40\\x78\\xaf\\x1e\\x86\\xbf\\x68\\xc0\\xd2\\x61\\xf2\\x93\\x3c\\xee\\xe6\\x65\\x25\\xe0\\xf6\\x8f\\xc3\\x48\\x26\\xb5\\x15\\x39\\x34\\xc8\\xfe\\xff\\xa1\\xe2\\x84\\x4b\\xb6\\xf8\\x77\\x5f\\x85\\xee\\xeb\\xe4\\xb6\\x4f\\x9a\\xd1\\x72\\xb5\\x44\\x25\\xa2\\x77\\x5c\\x63\\xd2\\x78\\x36\\xaf\\x96\\x8d\\x74\\x49\\x97\\xb4\\xf1\\x41\\x58\\xd7\\x4e\\x89\\xb6\\x8b\\xc7\\xf0\\xd3\\x4a\\xf3\\x38\\x51\\xee\\x22\\x67\\x09\\x6d\\x58\\x36\\x86\\xb5\\xab\\x7f\\x84\\xc8\\xe3\\x19\\x03\\x74\\x18\\x73\\x01\\x3b\\x40\\xea\\x12\\xaf\\x02\\xf8\\x92\\xb6\\x73\\x58\\x27\\x64\\x96\\x9e\\xf5\\x4b\\xff\\x7d\\x50\\xfa\\x42\\x50\\x59\\xfe\\xef\\x1d\\xca\\xfe\\x5f\\x22\\x88\\x2c\\xcd\\x3c\\x95\\xbb\\xe0\\x2a\\x91\\x81\\xf7\\x79\\x35\\x31\\x8f\\x72\\x42\\xec\\x48\\x6f\\xd6\\x34\\x12\\xb8\\x82\\x75\\xfb\\x31\\xa5\\x76\\x19\\x31\\xb5\\x4d\\x9d\\xcb\\x37\\x9f\\xa8\\x05\\xa6\\xa8\\xb6\\xf8\\x95\\xd4\\xfb\\x82\\x4c\\xbd\\xc9\\x8f\\xea\\x5c\\x5e\\x75\\x27\\xcc\\x12\\x2b\\x38\\x19\\xc4\\xc5\\xde\\x62\\xda\\x6d\\xea\\x6b\\x67\\xcf\\x3d\\x09\\x53\\x07\\x6d\\x65\\x15\\x10\\x64\\x3a\\xa3\\x5d\\x54\\x29\\x74\\x77\\x70\\xb7\\x4f\\xd5\\x9f\\x21\\x8e\\x6b\\x04\\xd3\\x3a\\x0e\\xc2\\x5e\\x88\\x5d\\xb0\\x9c\\x3d\\x00\\x92\\x6a\\xe0\\x1f\\x53\\xef\\xfa\\x39\\x87\\xd2\\xb0\\x0a\\xff\\x13\\x9a\\x04\\x67\\xfd\\xd1\\xef\\xc7\\x8f\\xa7\\x0d\\x0c\\x5e\\xd7\\xf4\\x53\\xa7\\x58\\x98\\x06\\x60\\x02\\x4a\\x4e\\x4e\\x74\\x75\\xbc\\xdc\\x15\\xe4\\xc4\\xe6\\x11\\x52\\x98\\x50\\x86\\x18\\x1f\\xc3\\x52\\x54\\x6b\\xdf\\xf3\\x45\\xa3\\xaf\\x27\\x0a\\x1f\\x2b\\x46\\xf6\\x70\\xb4\\x78\\x32\\x7d\\x7a\\x83\\xf7\\xfb\\x79\\x63\\xfd\\x18\\x97\\xa1\\x89\\xf7\\x04\\x82\\x8a\\xb1\\x3b\\x2a\\xa2\\xcd\\xba\\xe9\\x8c\\x7b\\x4a\\xb0\\x52\\x3a\\x51\\x99\\x2c\\xb7\\x35\\x82\\x5b\\xce\\x8b\\x20\\xef\\xf2\\xf0\\x31\\x5b\\x66\\x13\\x63\\xb1\\x1e\\x78\\xa7\\xe4\\x24\\x56\\x6a\\xef\\x03\\x80\\xa5\\x90\\xa7\\x13\\x96\\x4c\\x03\\xfb\\x72\\xec\\x3b\\x28\\x36\\xa8\\xda\\xd3\\x8a\\xc8\\xc5\\xc7\\x7d\\xa5\\xf6\\x0d\\xa0\\xec\\x17\\xff\\xb7\\x83\\x3f\\xbe\\x5b\\x03\\x16\\x69\\xea\\xb6\\x93\\x42\\x92\\x06\\x58\\x9b\\xb7\\x76\\xaa\\x0f\\x4d\\x1d\\x1f\\xac\\x54\\xd1\\x9c\\x34\\xe5\\x6b\\xa2\\xbc\\x23\\xe1\\x5b\\x27\\xa3\\x18\\x78\\x84\\x99\\x34\\x75\\x47\\x10\\x7b\\xba\\x12\\xfd\\x63\\x4e\\xb0\\x33\\x98\\xbc\\xc7\\x87\\x26\\x56\\xb5\\xd6\\xb0\\xad\\x6d\\xc8\\x82\\x75\\x60\\x92\\x6f\\x05\\x45\\x86\\x76\\x98\\xf4\\x26\\x65\\x1e\\xc6\\x1d\\x86\\x1d\\xa9\\x93\\x79\\x41\\x0e\\x5f\\x8c\\x6d\\xae\\x86\\x36\\x0e\\x50\\x88\\xdb\\x27\\x94\\xd6\\x57\\x7e\\x71\\xc2\\xaf\\x7b\\x25\\xba\\x3b\\x1b\\x1b\\x96\\x19\\x4d\\x3f\\x77\\xb8\\x10\\x5f\\x77\\xf1\\xfe\\x55\\x09\\xfe\\x90\\x06\\xad\\x65\\x3d\\x34\\xe7\\xb3\\x9b\\xad\\x03\\x36\\x2a\\xe3\\x7d\\xed\\xfc\\x2f\\x3b\\xf3\\xa6\\x2f\\x94\\x5b\\x6e\\x3d\\xd9\\x6d\\x8f\\xee\\x9d\\x50\\x6a\\x20\\xe1\\x76\\xa2\\x7e\\x23\\x92\\x7a\\x95\\xd7\\xaa\\x8f\\x0c\\x0d\\xf4\\xe4\\x0f\\x70\\x5d\\x60\\x92\\x96\\xd9\\x69\\x87\\x87\\x46\\x8d\\x1b\\x95\\x6f\\x0e\\xd2\\xe9\\x2a\\x47\\x5f\\x27\\x0a\\x85\\xe3\\x98\\x89\\x61\\xdc\\x68\\xaa\\xd8\\x3c\\x00\\xaa\\xfe\\x84\\x2b\\xca\\x2c\\x23\\x26\\x24\\x82\\xf6\\xea\\x44\\x80\\x65\\x6c\\xfd\\x88\\x0f\\x9d\\xf5\\x44\\x98\\xa0\\xfd\\x7b\\xab\\x99\\x9a\\x00\\xf6\\x75\\xa2\\x99\\x2b\\x35\\x70\\xbe\\xcd\\x7c\\xb9\\x77\\xd1\\xf2\\x92\\xa8\\x96\\x2e\\xb3\\x39\\x53\\xa8\\x02\\x33\\x79\\xd7\\x2d\\x5b\\x0b\\xc3\\xcf\\xa4\\x9f\\xe0\\xe5\\x86\\x24\\x21\\x08\\x3c\\xda\\xfd\\xb7\\xe8\\x2d\\xd7\\xb4\\x8e\\xb9\\x8a\\xe7\\x87\\x90\\x22\\x65\\xa2\\x08\\xf1\\xfb\\x34\\x8a\\xd4\\xad\\x56\\xb0\\x66\\x34\\xa2\\xd0\\x51\\x9e\\xbf\\x7b\\xcb\\xf5\\x69\\x80\\x94\\xfc\\x0e\\x6b\\x53\\x03\\x34\\x23\\xd9\\x8d\\x31\\x4e\\xcd\\x36\\x1a\\x65\\x5f\\x6d\\x5e\\xbc\\x62\\xed\\x32\\xc6\\xe2\\xad\\x9c\\x46\\xe2\\xa8\\x80\\xd7\\x04\\x0f\\x9c\\x6e\\xd5\\xec\\x8e\\x66\\xb0\\x39\\x0d\\x3f\\x2d\\xf0\\xd1\\x4b\\x11\\x5e\\xda\\xfe\\xd0\\xbd\\x63\\xd7\\x05\\x76\\x3c\\x80\\x1e\\x42\\xe8\\xd3\\x74\\x17\\x27\\xea\\xcd\\xf3\\x7e\\xd6\\xaf\\xfc\\xce\\x60\\xfe\\xd0\\x97\\xde\\x11\\xd3\\x2c\\x5b\\x05\\xda\\xcc\\x6d\\xbb\\xef\\x25\\xc2\\x7f\\xf7\\x95\\x22\\xcd\\x5c\\x74\\x04\\xff\\x62\\x98\\xce\\xbf\\xc4\\x0b\\xc8\\xb3\\x83\\xdf\\x59\\xea\\x34\\x37\\xd9\\x09\\xaa\\x9c\\xda\\x99\\x12\\x6c\\xb7\\x0c\\x8c\\x37\\xc5\\x06\\xb3\\x04\\xc2\\xf6\\x23\\x3b\\x0b\\x6f\\xe5\\xd7\\x3c\\xed\\x4c\\x2a\\xac\\x2f\\xb5\\xb4\\xdf\\x0f\\x99\\x1a\\x22\\xf9\\x5e\\x78\\x05\\xe6\\xf8\\x0f\\x34\\xb4\\x71\\x11\\xa4\\xef\\x69\\x05\\x4d\\x69\\xc8\\x6d\\x47\\xa3\\x2d\\x36\\xaf\\x45\\xf2\\x7e\\x6a\\xe1\\xe6\\x14\\x6d\\x51\\x7a\\xf5\\xfd\\x0b\\x50\\x5b\\x7b\\x9a\\xed\\xed\\x75\\x67\\x05\\x9a\\x52\\x97\\x7d\\xb2\\xe5\\x5a\\x11\\x47\\x0e\\xbb\\xf8\\x80\\x7b\\xf0\\xe3\\x01\\x80\\x49\\x28\\xe9\\x17\\x7b\\x71\\x94\\xa0\\xdc\\x77\\x94\\x57\\x08\\xa7\\x37\\x35\\x17\\x4f\\x5e\\x55\\xf4\\x4e\\x26\\x68\\xb4\\xb9\\x30\\xcb\\xad\\xaf\\x98\\x7c\\x59\\x8f\\x52\\xe2\\xf3\\x95\\x7e\\x0f\\xa1\\xff\\x80\\x10\\x00\\x5c\\x6f\\xd2\\x70\\x89\\x8f\\x9e\\xb9\\x0c\\xc1\\xe8\\x93\\x8f\\xd9\\xb6\\x0d\\x16\\xe2\\x6f\\x29\\x42\\xe4\\x3f\\x4f\\x3c\\x59\\xd4\\x1d\\x5a\\x76\\x49\\x41\\x6f\\x77\\xfa\\xb1\\xb5\\xdb\\x0e\\x78\\x96\\xf4\\x5f\\xbd\\xf2\\x23\\x6e\\x7a\\x81\\x1a\\xa6\\x53\\x30\\xb2\\x55\\xdd\\x08\\x7e\\x8c\\xc8\\x0a\\xdf\\x22\\xa1\\xc4\\xa0\\x9f\\x83\\xdd\\x9a\\x7e\\xad\\x0e\\xc3\\xf8\\xd4\\xe7\\xe0\\x88\\x7d\\xec\\x97\\x49\\xbd\\x7f\\x4f\\xc7\\x14\\xd5\\xdb\\x50\\x8a\\x4b\\x86\\xfd\\x3c\\x19\\x1e\\xad\\x06\\xb6\\x8b\\xe5\\xf8\\x27\\xe5\\x71\\xd1\\x07\\x20\\xdc\\x0b\\x67\\xde\\x47\\x72\\x1c\\xff\\x85\\x72\\xc6\\xa7\\x36\\x45\\x08\\x63\\xf6\\x2d\\xf5\\x69\\xce\\x67\\xaf\\xbe\\x94\\xf4\\xb9\\x8b\\x38\\x2e\\x8c\\xab\\xe8\\xc8\\x0c\\xf7\\x1b\\x5a\\xc2\\xe5\\x3b\\xdb\\xe5\\x9d\\x68\\xe5\\x47\\x4c\\xf7\\x4c\\x91\\x57\\x0f\\x40\\x7f\\x8b\\xe6\\x60\\x90\\x8f\\x8d\\x70\\x86\\x71\\xbf\\x32\\x23\\x4f\\xa3\\xc4\\xec\\xdd\\xa6\\x2a\\xa0\\x06\\x9e\\x64\\xef\\xfe\\x42\\x6c\\x3d\\x97\\x9a\\x67\\xa3\\x76\\x90\\x6e\\x26\\xa2\\x26\\x6a\\xb5\\xa5\\xd6\\x15\\xe7\\x35\\xfb\\x5f\\x62\\x40\\x61\\x30\\x33\\x93\\x6f\\x2c\\xe6\\x3e\\xf7\\xa7\\xda\\x50\\x68\\xe5\\xfe\\xed\\xc1\\xf9\\x1b\\xe0\\x4c\\x98\\x11\\x3e\\xd6\\x3c\\x6d\\xec\\x3f\\x6b\\x55\\x0d\\xbf\\xf6\\xbf\\xd0\\xc7\\x6c\\x4d\\xd3\\xd4\\x58\\xdf\\x7a\\xee\\x74\\x5b\\x0a\\x5a\\xd3\\xba\\xc0\\xce\\xc7\\x3f\\xe1\\x8c\\xf6\\x10\\x2d\\xb3\\x3b\\x5e\\x6f\\xa1\\xc9\\x4b\\xa6\\xf5\\xaf\\x75\\x31\\x12\\x2e\\xb9\\xe5\\x9b\\x13\\x2e\\x3c\\xbd\\x55\\xaa\\x5e\\x9d\\x50\\x7d\\x42\\xb9\\xc5\\x19\\x29\\xc5\\xa1\\xaf\\xe4\\x1f\\x2a\\xcd\\x3c\\x93\\xf1\\xb6\\x23\\xdb\\x50\\xfa\\x5a\\x95\\x53\\xdf\\x33\\x47\\x42\\xb5\\x54\\xf4\\x32\\x97\\xc8\\x36\\xbf\\x20\\xa4\\xb1\\xaf\\xfa\\x40\\x50\\x5d\\x0d\\x80\\x16\\x1e\\x2a\\xcb\\x8b\\xfd\\xd7\\x78\\x5b\\xff\\x31\\x8e\\xfa\\x01\\xf0\\x6a\\x13\\x2f\\x03\\x0a\\x1f\\x1a\\xbd\\x64\\xa3\\x25\\xc0\\xd3\\x51\\x64\\xb5\\x94\\xf8\\xc6\\xd2\\xf9\\xbc\\xbb\\x0a\\xe1\\xd4\\x4f\\x99\\x4b\\xc4\\x84\\xf0\\x8f\\xad\\x57\\x91\\xd1\\x12\\x97\\x89\\xa4\\xc7\\x5e\\x92\\x30\\xcd\\x39\\xc6\\x92\\x74\\x74\\x31\\xaa\\xb1\\xf3\\x20\\x18\\x7b\\x8d\\x54\\xac\\x2a\\xc9\\x7b\\x9f\\x60\\xb0\\x16\\xd5\\x46\\x52\\x02\\x4d\\x19\\x81\\x5c\\x4c\\xde\\x95\\x7f\\x6b\\xe5\\xf5\\xf7\\x3a\\x59\\xaa\\x34\\xed\\xcb\\xc1\\xcb\\xd6\\xf7\\x4e\\x22\\xbb\\xb6\\xbe\\xaa\\x1c\\x32\\xe0\\x3c\\xbd\\x54\\xb8\\xfa\\x03\\xa1\\xbf\\x91\\x73\\xe9\\x20\\x41\\x92\\x42\\xe3\\x5e\\x36\\x76\\xbe\\x89\\xe3\\x97\\x97\\xa5\\xec\\xae\\x8a\\xfc\\x77\\xdc\\x91\\x23\\xa5\\x26\\x8f\\x5c\\xcc\\xfc\\xbc\\x94\\x03\\x76\\x79\\xc3\\x00\\xfa\\xc2\\x79\\xf3\\xcb\\x88\\xb3\\x18\\x31\\xaa\\xe3\\x73\\x3c\\xab\\x17\\xd1\\xf1\\x27\\x80\\x15\\xc8\\xe2\\xeb\\x49\\xa1\\x29\\x77\\x17\\xee\\xc9\\xca\\x7b\\xf8\\xdb\\xaf\\x2c\\xe9\\x74\\xd4\\x13\\xbb\\xea\\xd0\\x6e\\x6e\\x64\\xd5\\x2c\\x43\\xc4\\x2e\\x43\\x88\\x93\\xde\\xdc\\x5a\\xb4\\x8f\\x09\\xe6\\xd2\\xca\\x87\\x86\\x0c\\x07\\x42\\x27\\x5b\\x7a\\xb5\\xa4\\x68\\xb8\\xa4\\x3d\\x7c\\x8d\\x0c\\xed\\xe0\\x9e\\x1d\\x95\\x94\\x8b\\x32\\xc7\\x85\\x39\\x3f\\x6d\\xbe\\xa7\\x64\\xba\\xca\\xbc\\xf3\\x95\\xa1\\x46\\x8e\\x7b\\xf4\\x7b\\x95\\xc4\\x3a\\xac\\xff\\x68\\x9d\\xfd\\x38\\xf3\\xbb\\x24\\x9e\\xa8\\xa6\\xa2\\xc9\\x2e\\xec\\xe6\\xe7\\x2e\\xdb\\x6a\\xbd\\x34\\x8d\\x95\\xb8\\xef\\xee\\xd7\\xa4\\x9e\\x7b\\x77\\xd0\\xe3\\x64\\x59\\x01\\xd0\\x9a\\x3b\\x4e\\x55\\xdc\\xa0\\x1f\\xba\\xa7\\x1d\\xf3\\xac\\xab\\x99\\x46\\x4b\\x40\\xd9\\x09\\x9c\\x72\\x15\\x8c\\x02\\x41\\x68\\xfc\\x48\\x10\\xae\\xd4\\x1a\\x8e\\x5f\\xdc\\x48\\x72\\x45\\xe5\\x18\\xbc\\xa5\\x4b\\xda\\x3d\\x10\\x7d\\x35\\xb9\\xb8\\x58\\x52\\xe5\\x63\\x7e\\xd4\\xa8\\x06\\x43\\x4d\\xfa\\xc5\\x0b\\x7d\\x13\\x81\\x4c\\x6e\\x2b\\xb8\\x23\\xa8\\x81\\x6b\\x56\\x6d\\x0b\\x9d\\x1f\\x42\\xf8\\xcf\\x77\\xc6\\x31\\xa8\\x84\\x27\\xfd\\x1b\\x04\\xb2\\x1d\\x86\\xe3\\x38\\xb2\\x29\\xb8\\x02\\xbe\\xe3\\x2e\\x32\\x60\\xe6\\x93\\x33\\x75\\x50\\x61\\x8e\\xc8\\x9a\\x9a\\xe7\\xf5\\xfc\\x60\\x7f\\xc6\\x6c\\x2d\\x22\\xa4\\xb7\\xcd\\x96\\xd1\\xb4\\xd1\\x96\\x54\\xf0\\x4a\\x93\\xe1\\x73\\x59\\x0c\\x6b\\x5c\\xf2\\xf6\\x80\\xc1\\x17\\x35\\xe8\\xbb\\x3d\\x76\\xd0\\x0c\\xda\\xd0\\x66\\xed\\x79\\x1c\\xa1\\xb5\\xde\\x51\\x67\\x52\\xe9\\xaf\\x97\\x8e\\x19\\xc1\\x26\\x0b\\x92\\x91\\xb3\\x7a\\x6e\\x80\\xa7\\xf0\\x65\\xb7\\xbe\\x7e\\x46\\x03\\xce\\xb7\\xe5\\x41\\x53\\xe6\\x54\\x5b\\xa7\\x49\\x97\\x4c\\x5e\\x63\\x09\\xd7\\x7d\\xa3\\x88\\xbc\\x3d\\xf7\\x96\\xc7\\x69\\x04\\x31\\xf9\\x76\\x91\\xac\\xb8\\x60\\xaf\\xb9\\x7e\\xca\\x5c\\xac\\x84\\xee\\x6a\\xe6\\x48\\x7e\\x4b\\x64\\x0f\\x2a\\x57\\xf3\\x46\\xae\\x25\\x65\\x59\\x89\\x65\\xdd\\x59\\x74\\xd0\\xc1\\x68\\xee\\xb0\\x72\\xba\\x2d\\xe5\\x7a\\xa5\\xaa\\x43\\x88\\xe2\\xe3\\xb7\\xef\\xfa\\x55\\x7c\\x5d\\xfc\\x43\\xb7\\x43\\x3b\\x01\\x52\\x7a\\xcc\\x5f\\xbb\\x44\\xab\\x39\\x91\\x37\\xfe\\x96\\x3e\\xaf\\x11\\x95\\xeb\\x3d\\x9e\\xc5\\x8a\\xba\\xa3\\xa6\\xcc\\xcc\\x71\\xb7\\xd0\\x85\\x6f\\x2f\\xef\\x2b\\x88\\x6c\\x90\\x6b\\xd1\\xd3\\xec\\x48\\x8a\\x90\\x1a\\x6e\\x13\\x78\\xd6\\x4f\\x74\\x45\\xb1\\x11\\x53\\xc4\\x66\\x80\\x54\\xe8\\x5c\\x63\\x4f\\xc9\\x62\\x5a\\xa9\\x8e\\x6c\\x99\\xce\\xa8\\xb5\\x73\\x24\\xf2\\x75\\xab\\xae\\x22\\x86\\x5f\\xfd\\xe3\\xc4\\xed\\x8a\\x8f\\xcb\\xce\\x4b\\xf2\\x2a\\x1f\\x72\\x89\\x78\\x67\\x7c\\x04\\x37\\x3b\\x71\\x0c\\x57\\x9e\\x65\\xce\\x5f\\x2e\\xfa\\x54\\xb6\\x88\\x16\\xfa\\x66\\x6b\\xd3\\xae\\xbb\\xc3\\x64\\x62\\xd4\\x32\\xe4\\x91\\xfe\\x91\\x6e\\x56\\x39\\x9a\\x3f\\x62\\x47\\x86\\x12\\xab\\xa9\\x9b\\xd8\\xec\\x55\\xc5\\x06\\x5c\\xd6\\x4a\\xbc\\xce\\x4f\\xd0\\x0e\\x38\\x9e\\x07\\xb8\\x44\\x02\\xd5\\xe6\\x36\\x0d\\xee\\x35\\x5d\\x91\\xe8\\xf2\\x79\\x10\\xba\\x10\\x97\\x0f\\x24\\x0e\\xd2\\xfd\\xeb\\xbe\\xea\\xda\\xa0\\xaf\\x0d\\x84\\x22\\x96\\x2c\\x84\\x59\\xd7\\x0b\\x86\\x06\\x44\\xfd\\xf5\\xd6\\x92\\x04\\x2e\\xd4\\x94\\xbd\\x9e\\x11\\x41\\x77\\xe2\\xf7\\x9d\\xaf\\x81\\x22\\x44\\xfa\\xb8\\x5d\\x1b\\xcf\\x27\\x6d\\x07\\xd8\\x29\\x5d\\xc7\\xed\\x3d\\xf9\\xde\\x6f\\x81\\x30\\x49\\x6d\\x86\\x75\\x4a\\x2d\\x5e\\xc2\\x5f\\xdf\\x02\\xc8\\x18\\x45\\x07\\x24\\xb4\\x3f\\xde\\x96\\x48\\x49\\xed\\x81\\x06\\xfc\\x04\\x85\\x8c\\x75\\x0a\\xa3\\x73\\x1f\\x6f\\xeb\\x7e\\x27\\xca\\xbb\\x1d\\xaa\\x5a\\xeb\\xaa\\xa9\\xdd\\x73\\xe4\\xfa\\xc4\\xfd\\x0d\\x4b\\x2d\\x7d\\x5d\\x5a\\xa8\\x76\\xb4\\x74\\xef\\x02\\x6e\\x6d\\xe1\\xdf\\x9a\\x00\\x63\\xd4\\x2e\\x86\\xbe\\xe0\\x49\\x97\\x04\\x8d\\x62\\xbb\\xe3\\x07\\x42\\xe8\\x18\\xf7\\x95\\x15\\xc5\\xd5\\x27\\xd1\\xe4\\x98\\x60\\x36\\x46\\x2e\\x47\\x7f\\x6f\\x25\\x9c\\xb3\\xa5\\xa7\\xfc\\xeb\\x6f\\x45\\x9c\\x13\\xf2\\xd3\\xdc\\xd7\\x49\\x0b\\x1f\\x80\\x67\\xbe\\x87\\xe5\\x85\\x9c\\xd8\\xdd\\xc0\\x24\\x38\\xda\\x47\\x68\\xe1\\x99\\x2b\\x81\\x1a\\xca\\x54\\xd3\\xec\\x8d\\xe5\\xc8\\x68\\x90\\xcb\\xb2\\x5b\\xb5\\xa5\\x16\\xbe\\x00\\x81\\x67\\x63\\x5f\\x0e\\xbe\\x9c\\x53\\x71\\xd6\\xdb\\xe1\\xbc\\xba\\x96\\x06\\x69\\xe3\\xf8\\xa3\\x37\\x09\\x43\\x62\\x92\\x84\\xb6\\xbc\\x5d\\x9d\\xe4\\x95\\x0e\\xf8\\x5e\\x5a\\x95\\xa2\\x86\\x72\\x6f\\xe7\\x39\\x05\\x62\\x62\\xaf\\x68\\xd5\\xc0\\xd5\\xef\\xde\\xbd\\x14\\x7f\\x93\\x97\\x10\\x48\\x79\\xf0\\x5f\\x70\\xa7\\x0c\\x3d\\x70\\x6d\\x68\\x48\\xb4\\x14\\xd5\\x50\\x57\\x1a\\xf7\\xd9\\x2e\\x36\\xea\\xdf\\x84\\x45\\x4f\\x1b\\x91\\xd3\\xbf\\x61\\x69\\xc1\\xcf\\x8c\\x76\\x9a\\xb0\\x6d\\x47\\x8d\\xc2\\xa3\\xa4\\x68\\x5e\\x64\\x28\\xc4\\xaa\\x2f\\x2c\\x30\\x5a\\xf0\\xc9\\x04\\x4b\\x6e\\x5d\\x54\\x93\\x21\\x0c\\x8c\\x58\\x9b\\x67\\x9f\\xb1\\x20\\xfa\\xab\\x16\\x92\\x03\\xac\\x73\\x08\\xb6\\xe3\\xde\\xa4\\x03\\xd7\\xa6\\x06\\x48\\xfa\\x8c\\x8d\\x2c\\xca\\xe5\\xd5\\x11\\x2c\\x51\\xc5\\xd9\\xed\\xcc\\x6b\\xb4\\xd5\\xa6\\x2c\\xd0\\x8b\\xb9\\x5b\\xbb\\x4a\\xb9\\x4d\\x29\\x9f\\xaf\\x76\\x70\\x99\\xbd\\x06\\x9b\\xa6\\x9e\\x5d\\xc6\\xc6\\x4e\\xbf\\xba\\x74\\x85\\x1e\\xdb\\x8c\\x9b\\xfa\\x59\\x49\\xcd\\xb2\\x71\\x7f\\x51\\xe3\\x61\\xfa\\x13\\x72\\xa9\\x10\\xaf\\xf6\\xac\\x0a\\xf7\\x94\\x43\\x32\\x53\\xdc\\x02\\xd0\\x3e\\xe4\\x91\\x7c\\x2b\\xb3\\xe6\\x00\\x1f\\xc7\\xd9\\x57\\x3a\\xeb\\xff\\xfe\\xcc\\xfc\\x7f\\xc9\\x1a\\xe1\\x41\\x2d\\x70\\x3b\\xa1\\x8c\\xd8\\x0d\\x41\\x9e\\x33\\x98\\x8c\\xd7\\x6e\\xd5\\xea\\xd5\\x4c\\x28\\x98\\x50\\xd9\\xf3\\xd8\\x80\\x23\\xf9\\x2f\\xd1\\x7f\\xcc\\xef\\x14\\x50\\x6a\\x58\\x97\\xbd\\x34\\x8a\\x95\\xb7\\x3c\\x0e\\xb4\\x0e\\x4d\\xf4\\xaa\\x63\\x44\\x1f\\x9c\\xf4\\xe9\\xd9\\xe6\\x84\\xed\\x48\\x99\\x3c\\xcc\\x3f\\x3d\\x5b\\xdf\\xdb\\xef\\xe2\\x8f\\x33\\xb8\\x24\\x8f\\x42\\x0c\\x4b\\x56\\x3e\\xfb\\xf4\\x7c\\xfb\\xf4\\x2d\\x76\\xea\\x18\\x0c\\xae\\x97\\x43\\x52\\xcf\\x5c\\x8c\\xe2\\x7d\\x97\\x45\\xe1\\xf2\\xf5\\x02\\x2d\\x51\\x1c\\xb9\\x18\\x20\\x79\\xf3\\x0a\\x75\\x68\\xc7\\xe2\\x52\\x55\\x69\\x8f\\x7c\\x53\\x02\\x1a\\x36\\xec\\xbd\\x9a\\xff\\x22\\x43\\x23\\xb4\\xa3\\x06\\xa3\\x32\\x40\\x94\\x3a\\xea\\xc0\\xab\\x1c\\xa1\\x47\\x03\\x5c\\x5c\\x1b\\x0a\\x61\\xb9\\xad\\xb5\\x29\\xca\\xe5\\x1a\\x16\\x0e\\x1d\\x2c\\x54\\xc3\\x92\\x97\\x55\\xf7\\xaa\\xa1\\xd2\\xe4\\xe9\\x2e\\x12\\xfb\\xc4\\x54\\x38\\xc3\\x5d\\x8c\\x7e\\xba\\xfd\\x80\\xb1\\x7f\\xcf\\xce\\x0c\\x7e\\xb8\\x3a\\x29\\x22\\xd3\\xde\\xcd\\x5e\\x9b\\x59\\x32\\xb2\\xd9\\x16\\x69\\xab\\x98\\x7d\\xd6\\xd7\\x3d\\x2f\\xf9\\x68\\xc7\\x9d\\xe1\\xc3\\xeb\\xc9\\xa4\\x0d\\xcb\\xcf\\x85\\x2a\\x95\\x05\\xb2\\xb0\\x4b\\x67\\x19\\x35\\x9b\\x8c\\x5b\\x5a\\x44\\xd2\\xba\\xf0\\xe7\\x10\\x05\\xd9\\x8b\\x34\\xd1\\x07\\x60\\xb0\\x14\\xa4\\x29\\xcd\\xb4\\x47\\xfa\\x3a\\x21\\xea\\xe7\\xc0\\x36\\x37\\x1e\\x1f\\x28\\xce\\x45\\x97\\xc2\\x9f\\x4a\\x92\\xc3\\x66\\x09\\x73\\x49\\x71\\x85\\x28\\x25\\x23\\x40\\xaa\\x99\\x56\\xbd\\xa4\\x7b\\x0d\\xe7\\x18\\xb3\\x82\\x32\\x84\\x06\\x22\\xd8\\xf9\\xb6\\xed\\x74\\xdc\\x4a\\x01\\x31\\xd8\\x53\\x86\\x2b\\x77\\x97\\x84\\x83\\xeb\\x92\\xa8\\x24\\x76\\xbd\\x13\\x20\\xc6\\x15\\x17\\x63\\x0d\\x7d\\x23\\xfe\\x34\\xc1\\xc5\\x8d\\x5f\\xf4\\xe5\\x53\\x12\\xdf\\xd3\\x33\\xf2\\xc8\\x0e\\x6e\\x54\\xf2\\x37\\x0e\\x6f\\x9d\\x8a\\x7c\\x05\\x8c\\xd2\\xa5\\x3f\\x5d\\xbb\\x88\\xea\\x8f\\x8d\\x88\\xf9\\xd4\\x4f\\x64\\x72\\x96\\xa4\\x47\\x62\\x94\\xef\\xf4\\xf0\\x2c\\x71\\x4d\\x3f\\x19\\x7f\\x0c\\x90\\x86\\x66\\xa8\\x20\\x07\\xc3\\x9f\\x91\\xd2\\xe9\\x5d\\x5f\\x2b\\x52\\x06\\xed\\x63\\x78\\x6b\\x3a\\xcb\\xe0\\x5f\\xdc\\x1e\\xcc\\x95\\xf4\\x88\\x2d\\x9a\\xb0\\x7c\\xbf\\xea\\xf6\\xa2\\xb0\\xc0\\xb8\\x93\\xc5\\xd0\\x9e\\xc4\\xb3\\x23\\x3d\\x93\\x55\\x25\\xf9\\xb6\\x0b\\xb8\\x40\\xe8\\x3d\\x37\\x3a\\x43\\xe7\\xf5\\xdc\\x52\\x93\\x5d\\x83\\x8c\\x7b\\x77\\xe4\\x69\\x3d\\xe0\\x74\\xfc\\xc3\\x55\\xdf\\xfe\\xf4\\x5e\\xfc\\xd8\\x4f\\xd2\\xc5\\x56\\x53\\x78\\x62\\x37\\xb0\\x2a\\xae\\xb5\\xca\\x9e\\x4b\\x94\\x73\\x54\\x51\\x7d\\x4f\\x0f\\x1d\\xb4\\x9b\\xe9\\xb9\\x68\\x64\\x7c\\x6c\\x1e\\x9f\\x5f\\xa5\\x48\\x85\\xeb\\xa5\\x5d\\xaf\\x67\\x20\\xe7\\x89\\x5e\\x2b\\xde\\xf2\\x1d\\x83\\xd8\\x99\\xc0\\xc4\\x07\\x82\\x88\\x36\\x62\\x99\\xa6\\x83\\x37\\x28\\xf1\\xe6\\xbd\\xdc\\x4a\\xba\\x6d\\x79\\x00\\xc4\\x4f\\x54\\xf1\\x51\\x4b\\xef\\x10\\x21\\x73\\xfd\\xc5\\x0d\\x0e\\x90\\x98\\x70\\xd7\\x04\\x90\\x65\\xa6\\x23\\x74\\x70\\x47\\x81\\x0c\\x6d\\x06\\xda\\x2a\\xef\\x80\\x8d\\xca\\xe6\\x25\\xfe\\xd9\\x35\\x30\\xaf\\x84\\x96\\xf3\\xa9\\x84\\x29\\xd6\\x25\\x64\\x80\\x0f\\xba\\x2b\\x7c\\x20\\xcd\\x30\\x3b\\xa3\\x39\\xbd\\xde\\x12\\x4d\\x5c\\x9b\\x6b\\x4c\\x53\\x09\\x5d\\x88\\xee\\x60\\xd5\\x41\\x85\\xbd\\x35\\x64\\x53\\x52\\x6e\\x7e\\x9a\\x3c\\x2b\\x88\\xd1\\x05\\x92\\x8c\\xb6\\x64\\xdb\\x3f\\x32\\xaa\\x5c\\x1f\\x97\\xb4\\xce\\xa6\\xaf\\x6f\\x54\\xeb\\xc2\\xa0\\x25\\x96\\x27\\xf2\\x93\\xf0\\x65\\x07\\x15\\xe7\\xc7\\xd3\\xfe\\x8d\\x84\\x0f\\x4a\\x07\\xd8\\xf3\\x83\\x21\\xf4\\x86\\xc8\\xd8\\x07\\x60\\x18\\x71\\xc6\\x5e\\xb8\\xa9\\xe4\\x7e\\x5b\\xc0\\x82\\xf0\\x72\\xe6\\x52\\xd8\\x48\\x2e\\xd0\\x47\\x79\\x3d\\xf5\\xfd\\xe5\\x94\\x2d\\xcf\\x05\\x82\\x4b\\xf6\\x48\\x89\\xcf\\x61\\x77\\x59\\x37\\x3b\\x6f\\xd9\\x51\\x1e\\x70\\x95\\xa1\\xdc\\x7e\\xdc\\x93\\x2c\\xf9\\x46\\xeb\\x3a\\x65\\x4e\\x82\\x6d\\xb0\\x30\\x79\\xe8\\x4a\\xff\\x56\\x5c\\x60\\x29\\x6e\\xbc\\x8b\\xd8\\xc3\\xf4\\x54\\x0d\\xbd\\x3c\\x94\\x21\\xae\\xaf\\x54\\xbb\\xb2\\x23\\x73\\xa6\\x71\\x35\\x13\\xbb\\x29\\x34\\xbd\\xa2\\x9e\\x46\\x15\\xc0\\xb1\\xcf\\x62\\x84\\xac\\xb5\\x62\\x69\\xd4\\xdb\\x7a\\x58\\x4c\\xbf\\xb3\\x51\\xed\\x6b\\x75\\x30\\x40\\x3d\\x5d\\xe9\\xa8\\x59\\x38\\xee\\x13\\xd8\\x89\\x04\\xdd\\x96\\xb7\\x9c\\x5d\\x20\\x74\\xb5\\x26\\xa6\\x6c\\x45\\x3e\\x77\\xc8\\xc4\\xb3\\x35\\xe8\\xe2\\x3c\\xe5\\x9b\\xaa\\x94\\xe7\\xeb\\x43\\x8f\\xf2\\x7f\\xf0\\x0d\\xfa\\x79\\xc5\\xce\\x1d\\xeb\\x75\\x94\\x10\\x26\\x14\\x2d\\xaf\\x2d\\x77\\xfc\\x34\\x8e\\x1e\\x1a\\xfc\\xa9\\x3d\\x3a\\xa8\\x93\\xa4\\xb3\\x30\\xbe\\x55\\x7a\\x6f\\x91\\xe7\\x6e\\x69\\x1c\\x76\\x9c\\x9f\\x93\\x2a\\xfd\\xeb\\xf2\\x9e\\x1a\\xb8\\x0e\\xee\\xad\\x6c\\x55\\x6a\\x94\\x7c\\x00\\xca\\x69\\x49\\xa2\\x9d\\xf4\\xce\\x13\\x36\\x26\\x0f\\x0b\\x97\\x22\\xb0\\x9f\\x11\\x5b\\x82\\x99\\x8b\\x6c\\xff\\x76\\x88\\x83\\xfe\\x28\\x30\\xc9\\xc8\\x12\\x59\\x65\\xa1\\x0a\\x8c\\xd7\\x44\\x36\\x66\\xd1\\x53\\xba\\x8b\\x55\\xbf\\x71\\x68\\x71\\x31\\xfa\\x80\\x0c\\x7a\\x2f\\x12\\xba\\x55\\xdf\\xf5\\xf3\\xad\\xd3\\x31\\x26\\x60\\x7f\\x2b\\x61\\xca\\x1b\\x52\\x77\\xe9\\xec\\x21\\x84\\xd7\\x44\\x72\\x64\\x18\\x75\\x37\\xb2\\xdd\\x86\\xc3\\x90\\xbc\\x51\\x4e\\x8e\\xf3\\xe3\\x92\\x6b\\x70\\xc3\\x50\\xb2\\x04\\x5b\\xb5\\x1e\\x80\\xa6\\xf6\\x75\\x3b\\xb0\\xc5\\xba\\x16\\x25\\x72\\x50\\x96\\x02\\x26\\xdf\\x09\\x55\\x85\\x0f\\xd3\\xf1\\x95\\xe9\\x3e\\xdb\\xe4\\x96\\x82\\xa2\\x17\\x22\\xa0\\xf3\\x07\\xd6\\xf7\\x3c\\x7a\\x4b\\x11\\x64\\xf2\\xa5\\xad\\xb5\\x8e\\xde\\x09\\xd7\\x9b\\xed\\xa3\\x4a\\xb0\\x9f\\xf9\\x6c\\x32\\xae\\x6a\\x58\\x31\\x7f\\x1b\\x1f\\x79\\xfc\\x6b\\x61\\xf4\\xc2\\x49\\xd9\\x20\\xac\\x8f\\x88\\xf2\\xe5\\x86\\x0a\\x4e\\x31\\xf7\\xab\\x13\\xba\\x9a\\x0d\\x0f\\xd3\\x03\\x01\\x76\\xd0\\x84\\x1f\\x2f\\x34\\x5b\\xbf\\x35\\x74\\xda\\xc4\\x5a\\x7a\\x2c\\x93\\xec\\x65\\xcc\\x6f\\xc1\\xb5\\xa4\\x59\\x5f\\xd1\\x2a\\x07\\x25\\x94\\xaa\\xbb\\xcf\\xf3\\xf4\\x8a\\x61\\x66\\x43\\xd1\\x53\\x7c\\x9c\\x5e\\xcc\\x41\\x7b\\x22\\x29\\x64\\xe4\\x2a\\xca\\x73\\x23\\xc2\\xc7\\xb0\\x62\\x74\\xd3\\xd7\\x1c\\x8f\\xb3\\x83\\xa7\\x80\\xd9\\xca\\xde\\x2b\\x79\\xf8\\xe2\\x8f\\xd1\\xe2\\x2b\\xad\\x86\\xdf\\x3a\\xdf\\x06\\x29\\x77\\x25\\x3f\\x06\\x48\\x82\\x20\\xc8\\xd4\\x70\\x49\\x0a\\x1a\\xd6\\x3e\\xe7\\x03\\xea\\x8f\\x4a\\xf5\\xb5\\x83\\x3e\\xd2\\xcb\\x0f\\xc0\\x75\\x47\\xf2\\x31\\x3d\\x1d\\xf2\\x6d\\xce\\x26\\x17\\x46\\xcb\\x8f\\xaf\\x7c\\x92\\xe4\\x92\\xe4\\xd2\\x9f\\xb5\\xe3\\xa0\\x43\\x0c\\x8f\\x6d\\x5d\\x06\\x4d\\xa8\\x1a\\x3e\\xfb\\xe4\\xbf\\x92\\x11\\x2a\\xf4\\x58\\x5a\\xd6\\xa4\\x81\\x81\\xa0\\x61\\xdd\\x03\\xd3\\x37\\x4a\\x1d\\x69\\x4a\\x34\\xc5\\x50\\xb8\\x3b\\x06\\xbc\\x9c\\x7d\\x48\\x26\\x06\\xf0\\x7d\\x8c\\x2d\\x45\\xc0\\x03\\x85\\x05\\xdf\\xf3\\x34\\x66\\xb7\\x78\\x44\\xe0\\xf6\\x3a\\xc5\\xb2\\x75\\xe1\\xae\\xa9\\x89\\xd3\\x6a\\x57\\xe8\\x1c\\x34\\xa4\\x47\\x73\\xf0\\xd4\\x0d\\x73\\x8a\\x0e\\x99\\x7d\\x0a\\x86\\x50\\x94\\x16\\xe2\\x13\\xbd\\xfc\\x4f\\x38\\x11\\xc2\\x3f\\x39\\x49\\x55\\x5f\\xab\\x3b\\x72\\x8d\\x76\\x70\\xdc\\x2a\\x34\\x4c\\x72\\x67\\x28\\x7c\\x7f\\x02\\x7f\\xdf\\xac\\x9e\\x41\\xd2\\x1c\\x4d\\xbf\\x4b\\x77\\xc7\\x0e\\x1a\\xe9\\x60\\x59\\x7b\\x00\\x7a\\xf4\\x91\\x74\\x9f\\x3e\\x35\\x74\\x2c\\x10\\xc3\\x47\\x41\\xd2\\xcd\\x8c\\xa7\\xd7\\xda\\x93\\xf4\\x44\\x88\\xed\\x86\\x90\\xfc\\xa5\\x25\\x05\\xd2\\xe2\\x59\\xaa\\xae\\x03\\x5b\\x98\\x34\\x21\\x8a\\xb5\\xb2\\x92\\x41\\x6f\\xd6\\xd8\\xc4\\x4d\\x6c\\x24\\x82\\x02\\x53\\xce\\xfb\\x05\\xa3\\x26\\xe0\\x9a\\x8b\\x39\\xf0\\xcf\\x0d\\xcb\\x5f\\x0e\\x78\\xc7\\x13\\xa8\\x49\\x9b\\x5c\\x9e\\x7f\\x41\\x1f\\xfd\\xc9\\xca\\xe7\\x04\\x63\\x82\\x41\\x3a\\x08\\x5b\\xb1\\x6d\\x4d\\x7e\\x80\\x34\\x74\\xf2\\xd6\\xd3\\x65\\x43\\x22\\xa5\\xb6\\x79\\xc6\\x3c\\x54\\x50\\x50\\x68\\x6a\\xc8\\xf3\\x85\\xd7\\xfa\\x25\\x88\\xfe\\x4b\\x07\\x3f\\xf2\\x07\\x74\\x63\\x63\\xc6\\x15\\x95\\xf1\\x9b\\x7d\\x7d\\x94\\x39\\x48\\x84\\x1e\\x5e\\x3a\\x20\\x75\\xbd\\xd0\\xae\\x5a\\xf4\\xcb\\xe0\\x87\\xd0\\xfc\\x94\\xa2\\x8e\\x71\\x0a\\xc4\\x99\\x4b\\x9a\\x08\\xd7\\xda\\x3d\\x95\\xde\\xad\\xbe\\xa5\\x4b\\xf9\\x8f\\x5b\\xb8\\x9d\\xb6\\xf4\\x66\\x80\\x40\\x1b\\x78\\x63\\x76\\x4a\\xe8\\x33\\xc8\\x6f\\xf7\\x2a\\x76\\x67\\x42\\x8a\\xff\\xc8\\x30\\x46\\x58\\x83\\xb1\\x27\\x1a\\xd7\\xed\\x9f\\x86\\x44\\xff\\xc3\\x6b\\x1a\\x38\\x35\\xd8\\x69\\x5d\\xaf\\xc4\\xfb\\x90\\xc6\\x36\\xcb\\x4d\\x6a\\xfd\\x3e\\x40\\x89\\x39\\xee\\x2d\\x81\\xab\\xab\\x1a\\x18\\xcd\\x1c\\x31\\x28\\x5b\\xd7\\xa6\\x5c\\x63\\x59\\x2b\\xe7\\x7c\\x90\\xff\\x32\\x30\\x5b\\xdc\\x97\\xeb\\xa5\\x3e\\x32\\x25\\x79\\xa3\\x2e\\x82\\xd5\\x79\\x3b\\xc3\\x9e\\xe2\\xfb\\xb1\\x8d\\x03\\x15\\x2a\\x7d\\x41\\x76\\xda\\x42\\xc0\\x80\\xd2\\xd2\\x4c\\xda\\x88\\xb8\\x51\\x38\\x78\\x23\\x0e\\x47\\x01\\x9a\\x70\\xd0\\x52\\x2a\\xf2\\x48\\x31\\xb7\\xd0\\x99\\x97\\x84\\xd7\\x00\\xed\\x30\\xdb\\x0a\\xdd\\xb3\\x83\\x73\\x0f\\x39\\x64\\x4a\\xb2\\xfc\\xa8\\x5e\\x57\\xa7\\x78\\x4e\\xa2\\xc5\\xd9\\xcb\\x4f\\x58\\x38\\xb5\\xaf\\xfd\\xd9\\xc6\\xd7\\xb7\\x7e\\xe3\\xd4\\x0d\\x30\\xfe\\x65\\xe3\\x9c\\xd3\\x43\\x3d\\xf1\\x81\\xb4\\x22\\xdd\\xfd\\x6a\\x96\\x8b\\x9a\\x3a\\xc7\\x98\\x2e\\xf2\\x5d\\x46\\x63\\x53\\x86\\x64\\xcf\\x17\\x50\\xa6\\x36\\xfb\\x23\\x1f\\x26\\x6a\\x57\\x20\\x8e\\xbd\\x74\\xa5\\xc9\\xeb\\x68\\x4f\\xe2\\x63\\x80\\x14\\xa1\\x6a\\x94\\xf4\\xe3\\xc8\\xf7\\x14\\x17\\x41\\x35\\xf8\\xda\\x8e\\x60\\x2a\\xfa\\x4c\\x97\\x73\\x5a\\x4d\\x5d\\x3f\\xee\\x7d\\x65\\x73\\xf2\\x59\\x47\\x83\\x51\\xfc\\x68\\xf9\\xad\\x77\\x81\\x71\\x2e\\x06\\x21\\x97\\x3d\\x2a\\xcf\\x07\\x55\\xac\\x63\\x6e\\x22\\xfc\\xd4\\xcd\\x9b\\xc4\\xba\\x41\\xb4\\x68\\xb1\\x4e\\x9a\\x92\\x62\\x79\\x7b\\x8f\\x1b\\x9d\\xae\\x5a\\x32\\x1b\\xb9\\x2b\\xc6\\x86\\xf6\\xeb\\xa9\\x86\\x0f\\xd0\\xa8\\x6e\\x31\\x01\\xaf\\x9d\\x04\\xb8\\x14\\xb3\\x1e\\xde\\x85\\x7e\\xbc\\xce\\xd9\\xcb\\xee\\xaa\\x70\\x3e\\x27\\x23\\xa9\\x0a\\xa8\\x18\\x31\\xcf\\x7d\\x98\\xf3\\x64\\x1b\\x83\\x58\\xb4\\xe0\\x73\\x55\\x23\\x2c\\xa8\\xf0\\x02\\x8a\\xad\\x8f\\xf7\\xdb\\x4f\\xc5\\xa7\\xc9\\x2c\\x89\\x14\\xec\\xba\\xb2\\xc0\\xbd\\xef\\x1e\\x28\\x1e\\xb5\\x99\\xf8\\x00\\x98\\xeb\\xff\\x56\\x19\\x65\\x26\\xde\\x82\\x5b\\x51\\xde\\xbb\\xb5\\x23\\x8a\\x02\\x10\\x95\\x99\\x26\\xc3\\x4b\\x94\\x92\\xd7\\xd4\\xd2\\x9c\\xf2\\xa9\\xf4\\x54\\x69\\xce\\xa0\\x10\\x56\\x47\\x01\\x97\\x23\\x1d\\x3f\\x30\\xd2\\x3d\\xd9\\xa4\\xe0\\x97\\xfe\\xb0\\x73\\x14\\x67\\xdf\\xb7\\x2e\\x8e\\xfb\\xa0\\x00\\xa9\\xcf\\xea\\x0b\\x22\\x76\\x70\\x1e\\x7a\\x6d\\xab\\xfb\\xc5\\xc8\\xd1\\x59\\x69\\xed\\xab\\x3b\\xdb\\x17\\x32\\xc4\\xd6\\x3f\\x18\\x56\\x56\\xbb\\xd6\\x14\\xc8\\xd0\\xca\\xd4\\x0c\\xc7\\x1a\\x2e\\x60\\x5c\\x0d\\x73\\x72\\xdc\\x4a\\xbf\\x39\\x93\\x57\\x5b\\x4d\\xad\\x49\\x12\\xf5\\xbf\\xce\\x81\\x9d\\x7b\\xda\\xca\\xfb\\xfc\\x78\\xdb\\x91\\x3e\\x71\\xc5\\xfb\\x68\\x1d\\x23\\x3a\\xe8\\xeb\\x31\\x15\\xed\\xa3\\xfe\\xb2\\x10\\xf2\\x4f\\x4f\\x54\\x29\\xa1\\xf7\\xa7\\x3a\\x6e\\x09\\x95\\x3c\\x23\\xe1\\x20\\xa2\\xf8\\x8b\\x95\\xcc\\x1b\\xed\\xf2\\x5f\\xad\\x94\\x5f\\x4a\\x99\\x20\\xeb\\xb1\\xe7\\x11\\x1b\\x31\\x24\\x9f\\xea\\x9a\\x8e\\x56\\x62\\x35\\x80\\xb7\\x6f\\x95\\x2a\\x79\\x5c\\x74\\x6a\\x11\\x17\\x09\\xc2\\x47\\xcb\\x41\\xa2\\x3c\\x70\\x6e\\x55\\x97\\x3d\\x76\\x50\\x28\\xaa\\x7f\\x33\\xbc\\xa2\\x8e\\xf7\\xb7\\xe2\\x92\\xdb\\x4e\\xfe\\x48\\x90\\xb0\\xe4\\xe7\\x95\\x61\\x19\\xa3\\x9c\\x18\\x4f\\xcb\\xc0\\xb3\\x1a\\xb7\\x8a\\xb7\\x3e\\x29\\x89\\x72\\xf4\\x1a\\xe8\\xda\\x06\\xb1\\xbf\\x64\\xde\\xe0\\x6b\\x6a\\xce\\xc5\\x45\\xb4\\x59\\xba\\x54\\xac\\x52\\x60\\x74\\x1c\\x42\\x1b\\xed\\x17\\x15\\x56\\x28\\x0f\\x20\\xf0\\x22\\xf7\\x55\\x50\\x9d\\xdb\\xc2\\xf1\\xef\\x55\\x59\\x96\\xd2\\x83\\xed\\x91\\xc4\\xde\\x62\\x2f\\x84\\xb8\\xf7\\x24\\xb8\\x69\\x4f\\xab\\xd3\\x74\\x86\\xe7\\xe8\\x44\\x35\\x95\\xd2\\x20\\xe9\\x48\\x2f\\x59\\x7d\\xf6\\xdb\\xab\\x02\\x66\\xd1\\x72\\x48\\xd0\\xdf\\xdd\\xd1\\xe5\\xf7\\x8d\\x94\\x90\\x91\\x76\\xe9\\x06\\x7c\\x47\\x26\\xbb\\xaf\\xc9\\xf8\\x44\\xbb\\x61\\x7a\\xe7\\xf9\\xbd\\x39\\x36\\x27\\x32\\x91\\x97\\x24\\xcb\\x87\\xe2\\x84\\xd9\\x39\\x12\\x69\\x63\\xb1\\x60\\x48\\xf0\\x02\\xf2\\x5e\\x03\\x6d\\x05\\xaa\\xff\\xc9\\x4b\\x83\\xa4\\xca\\xef\\x15\\xe8\\xac\\xd2\\xfb\\x57\\xb2\\x5d\\xda\\xd7\\x75\\x3f\\xcd\\x81\\xfd\\x96\\xdb\\xe7\\xf3\\x98\\xf3\\x3a\\x83\\x2c\\x98\\x30\\xc6\\xd8\\xfa\\x31\\xd4\\xe0\\xa6\\x54\\x7b\\x72\\x99\\x62\\xd5\\x47\\x6b\\x7d\\xc6\\x57\\x02\\xfd\\x9d\\xcf\\xbe\\xa0\\x8d\\x42\\x83\\x14\\xff\\x74\\x08\\x75\\x05\\x99\\xd6\\xbf\\x20\\x26\\x57\\xda\\xf2\\xcf\\x99\\xef\\x08\\x9c\\xe9\\xd2\\x37\\x1b\\xda\\xe9\\x70\\x43\\x3c\\x4f\\x28\\xb3\\xf5\\xe3\\xf1\\xb5\\xdb\\x80\\x26\\x7f\\x95\\xde\\x9e\\xa0\\x49\\x58\\xbe\\x13\\xd7\\x9e\\x6a\\x48\\xa8\\x5d\\x2a\\x3e\\x26\\x14\\xcb\\xc5\\xd3\\xf8\\xa7\\xe1\\x2c\\x93\\x68\\x35\\x80\\x8a\\x2a\\x83\\xb9\\xc0\\x4d\\x8b\\x55\\x9c\\x7d\\xca\\x2c\\x14\\x7f\\x19\\xa1\\x85\\xbc\\x75\\x8a\\xde\\x95\\xcc\\x6e\\xba\\xe3\\xda\\xc3\\x3d\\x8d\\x0b\\xa7\\xc7\\xb2\\x53\\x3f\\x96\\xb2\\x9f\\x74\\x68\\xfd\\x1c\\x33\\xb2\\x8b\\x52\\x30\\x87\\xbd\\x06\\x0e\\xce\\xf4\\x6d\\xed\\x44\\x5e\\x47\\xb2\\x93\\x68\\x92\\xfb\\xa9\\xe5\\x12\\x8d\\x34\\xc5\\xd1\\xa3\\x7a\\xa8\\xd8\\x92\\x14\\x82\\x90\\x4f\\x3e\\x33\\x9d\\x6e\\x45\\xe3\\x50\\x36\\xba\\x82\\x1a\\xaf\\x2e\\x2b\\xda\\x55\\x37\\xe9\\x8b\\x4a\\xf6\\x45\\x1e\\x0f\\x17\\xd7\\x69\\x2b\\x51\\x2e\\x4e\\xfc\\xa2\\x45\\xc6\\x83\\xa5\\xb3\\xe7\\xa2\\xd6\\x3f\\x60\\xd8\\xb4\\xfc\\x52\\x6e\\x37\\x56\\xe4\\xa1\\x8b\\xfa\\xfa\\x33\\x5a\\x46\\x6c\\x02\\x9b\\xed\\x4a\\x0d\\xec\\x84\\xf8\\xa3\\x12\\x6c\\x0a\\xc3\\xd0\\x67\\x62\\x73\\x1c\\x6f\\x8e\\xce\\x3c\\x5d\\xbb\\xd6\\x2e\\xf0\\x54\\xd4\\xb6\\x56\\x53\\x68\\x7f\\x69\\x6a\\x4e\\x10\\x53\\x2b\\x8b\\x8b\\x29\\x47\\x09\\x10\\x26\\x5b\\x04\\x88\\xa9\\x92\\xf8\\xc8\\x4c\\x49\\x2a\\x10\\xa5\\xba\\x7d\\x22\\x3e\\x5e\\xe9\\xe0\\xfd\\xb2\\xdb\\xe1\\x6b\\x3b\\x56\\xdd\\x46\\xb1\\x09\\x43\\x53\\x65\\xfd\\x13\\x56\\xe2\\x5d\\xee\\xfe\\xc9\\xd3\\xdc\\x23\\xbe\\x60\\x89\\xd6\\x8f\\xfc\\x0f\\x59\\x88\\xec\\x21\\x84\\x5e\\x2c\\xd7\\xc7\\x04\\x0a\\x34\\x20\\x9f\\xe6\\x08\\x27\\x77\\xd9\\xe5\\x35\\x20\\xfa\\xdc\\xd6\\xcf\\xaa\\xe5\\xa6\\x6e\\xf5\\x0b\\x6d\\x39\\x8b\\x27\\x2e\\xc4\\xf0\\x08\\xba\\x5f\\x3a\\x83\\x9b\\x8e\\xd4\\x6d\\xfd\\xc8\\xa6\\x85\\x0f\\x2d\\x82\\xae\\x47\\x38\\x40\\xf8\\x96\\x56\\x43\\xd7\\xd4\\x27\\x6b\\xc4\\xb7\\xf4\\x29\\x03\\x9e\\xbc\\x6d\\x12\\xce\\x48\\xf1\\x00\\xd3\\x48\\x46\\xf2\\xee\\x3f\\x30\\xff\\x12\\x32\\xb4\\xa3\\xc0\\x40\\x2a\\xb0\\x50\\xfd\\x69\\x65\\x49\\x4c\\x9b\\xc3\\x86\\xfe\\x1a\\xaf\\x36\\xaf\\x9b\\x3d\\x91\\xc4\\xe6\\x55\\xe0\\xd9\\x3a\\xee\\x99\\x0a\\xd1\\xe6\\x45\\x60\\x99\\x7c\\xd0\\xce\\xba\\xde\\x68\\xac\\x96\\x11\\x78\\x17\\x42\\x1f\\x23\\x67\\xbe\\x7f\\x7d\\x9f\\x56\\x66\\xff\\xd8\\xe3\\xbb\\x6a\\x23\\xd5\\xc9\\x32\\xad\\xd6\\x57\\x73\\xa9\\x7f\\x93\\x76\\xc6\\xe9\\x07\\xc8\\xd4\\xcd\\xbc\\xa6\\x12\\x0e\\x21\\x78\\x72\\x4f\\xe5\\xf8\\x77\\x63\\xb0\\x74\\x67\\x89\\x2a\\x01\\x25\\x45\\x45\\x3a\\xdb\\xe4\\x79\\xe9\\x27\\x50\\x53\\xf9\\x58\\xf9\\x96\\xb9\\x23\\x0f\\xc6\\x89\\xbe\\x78\\x41\\x91\\xef\\xa0\\x76\\x4f\\xbf\\x3c\\x24\\x5e\\x3f\\xfd\\xf3\\x79\\x0a\\x39\\xc4\\x32\\xe8\\x6d\\x43\\x3c\\xe9\\x0c\\x3f\\xe1\\x8d\\x94\\xea\\xa5\\x5f\\x96\\x15\\xc8\\x61\\x33\\xb5\\x8f\\xa6\\x15\\x2f\\xbc\\x4e\\x95\\x70\\x15\\xad\\x54\\xf1\\x67\\xea\\x47\\x7b\\xab\\x7e\\xc1\\xae\\x0f\\xf8\\xac\\x91\\x0f\\xc0\\x8d\\x77\\x1f\\xa9\\xef\\xb7\\xbb\\x7b\\x73\\x18\\x67\\xf3\\xc5\\x79\\xa5\\x3f\\xc8\\x87\\x3f\\xea\\x65\\xfc\\x9a\\x8d\\xfd\\xb3\\x73\\x2c\\xbb\\x81\\xf7\\x49\\xb7\\x87\\xd3\\x09\\xe8\\x8c\\x6a\\x7c\\x98\\x80\\x00\\x25\\x29\\x39\\x6e\\x24\\x7a\\xec\\x1c\\xcf\\x5f\\x21\\xa1\\x41\\xbb\\xf3\\x7f\\xb1\\x6d\\x2c\\x64\\x23\\xfb\\x9b\\x4d\\x12\\xf0\\xde\\xb0\\x21\\xcf\\x41\\x36\\xdd\\x4d\\xd6\\x93\\x66\\xd4\\x52\\xc8\\xa9\\x59\\xc1\\x8c\\x91\\xef\\x80\\x00\\xf0\\x4c\\xc9\\xc1\\x1c\\x8c\\xf4\\xf9\\xe0\\xeb\\xe9\\xe2\\x24\\xfe\\x6b\\x51\\x65\\xbb\\xa8\\x2d\\x2a\\xa0\\xef\\xd1\\xb5\\xcb\\x74\\xbb\\xc0\\x2a\\x6b\\x04\\x5f\\x2e\\xbe\\x6b\\x35\\x33\\xa2\\xe3\\x87\\xc7\\x86\\x9d\\xd6\\xee\\xdb\\xf9\\x00\\xb9\\x94\\x8f\\x87\\x12\\xa2\\xa2\\x2c\\x70\\x70\\x87\\x14\\xd7\\x3c\\x63\\x7b\\xa4\\x06\\x7e\\x55\\x21\\xb1\\x18\\x19\\x5a\\x3f\\x74\\x67\\x7d\\xed\\x20\\x85\\x9a\\xcc\\xf4\\x89\\xe5\\x9a\\x0c\\x37\\x5f\\xf0\\xfe\\xd9\\x1f\\x43\\xf3\\xe4\\x42\\xf7\\x8b\\xd2\\xf0\\xc8\\xd2\\x6f\\x7c\\xc0\\x00\\x50\\x25\\x32\\x20\\xc2\\x51\\x84\\x2a\\x50\\x99\\x63\\x70\\x48\\x71\\xa1\\x8d\\x0b\\x8c\\xc7\\x01\\x3c\\xe8\\x3b\\xce\\x17\\x17\\x0d\\x06\\xa5\\x6a\\xc9\\x8d\\x65\\x19\\xb2\\x00\\xcf\\xd4\\xc8\\x2a\\xb6\\x85\\x67\\xbc\\x3e\\xe5\\xa1\\xca\\xb6\\x58\\x9c\\x08\\x0e\\x46\\x45\\x8d\\x20\\x25\\x16\\xa7\\x73\\xf2\\x2e\\x25\\xa7\\xd2\\x95\\x2b\\x8a\\xe7\\x4e\\xfe\\x7d\\x1d\\xfc\\xdf\\xc5\\x9b\\x92\\x53\\x17\\x12\\xb9\\x26\\x25\\xdf\\x30\\x40\\x90\\x2c\\xe3\\x2e\\x0e\\x76\\x77\\x59\\xdf\\x44\\x92\\x6f\\xaa\\xdb\\x33\\x1d\\x5f\\x5f\\xfe\\x49\\x9a\\x89\\x83\\xc5\\xae\\x94\\xa2\\xac\\x2d\\xea\\x82\\x66\\x97\\x7f\\x19\\x88\\x1c\\xef\\xa8\\x1b\\x6a\\xd0\\x62\\xa2\\x79\\xb8\\x5f\\x48\\x7f\\x41\\x9b\\xb9\\x95\\x98\\xdb\\xe9\\x6c\\x6d\\xfd\\x91\\xd6\\x17\\x9d\\x2b\\x7d\\x5b\\x3d\\x46\\xf4\\x16\\x80\\x47\\xfe\\x9c\\xaa\\xdc\\x9e\\xbe\\x75\\xf2\\x34\\xfb\\xc1\\x18\\x64\\x2e\\x58\\xa8\\x0b\\xaa\\x36\\xc0\\xdf\\xad\\xf2\\x1c\\xf4\\x0a\\xde\\xd8\\x89\\xf0\\x28\\xee\\x15\\x1e\\x47\\x44\\xf9\\xe4\\xb8\\x72\\x9b\\x28\\x7e\\x78\\xe1\\x3d\\x9b\\x72\\xb9\\x5f\\xea\\xa3\\x98\\x33\\x9a\\xec\\x93\\xa1\\xa3\\x61\\x8f\\x4b\\x08\\x9f\\x90\\xf7\\x15\\xcb\\x25\\xcc\\xf8\\x80\\x38\\x39\\x4c\\xd7\\xec\\xcf\\x3c\\xa8\\xa8\\x2d\\xdb\\xba\\xa8\\x66\\x68\\x45\\xc9\\x38\\xa7\\xe2\\x9b\\xb4\\x5a\\xc9\\xca\\xb0\\x53\\x31\\x32\\x14\\xbb\\x18\\xa1\\x78\\x4d\\x34\\x76\\xe4\\x6e\\x0f\\x93\\x90\\x0c\\xb1\\x92\\x32\\xf9\\x81\\x17\\x19\\x71\\xcf\\xed\\xa7\\xfa\\x32\\x22\\x76\\x17\\x4a\\x1c\\x8c\\x66\\xd1\\x76\\x5e\\x6e\\x2c\\x44\\x12\\x3f\\x1f\\x2d\\x57\\x62\\xde\\x7b\\xfc\\x6a\\xc2\\xe9\\x30\\xbb\\x9d\\x33\\xb4\\xa6\\xc4\\x56\\x8f\\x3c\\x03\\x56\\x2a\\x6b\\x13\\xd5\\x28\\xc3\\x92\\xe1\\x12\\xeb\\x08\\xf6\\xcb\\xe2\\xaa\\xc8\\x18\\xd4\\x5b\\x6d\\xf6\\xb8\\xa0\\x23\\x9d\\x17\\x55\\x6e\\x58\\x13\\x8d\\xdf\\xf6\\x3c\\x8c\\xc5\\xe2\\x4f\\xf7\\x4b\\x5d\\xe7\\xb1\\xd4\\x98\\x57\\x39\\x6e\\x16\\x34\\xe6\\x50\\x8b\\xe2\\x70\\x5c\\x11\\xdb\\x15\\xa5\\x75\\xbd\\xcc\\x25\\xe2\\x88\\x92\\x47\\x12\\x45\\x1c\\x07\\xeb\\xe9\\x8f\\x7c\\x0f\\x3e\\xa5\\x1b\\xef\\x92\\xe9\\xf1\\x7f\\xb6\\x7a\\xfe\\x5b\\x1a\\x17\\xe1\\xda\\x42\\x6b\\x35\\x03\\xda\\x69\\x10\\x39\\xf1\\x14\\x5e\\xd9\\x6f\\xe1\\x29\\x4e\\xa6\\x0c\\x65\\x4f\\x64\\x65\\x0b\\x28\\x28\\x93\\x52\\xd1\\x6d\\x6f\\x69\\x98\\x99\\x19\\x4f\\xd7\\x88\\x79\\x7e\\xcc\\x1a\\x8b\\x05\\x7e\\x0f\\x21\\xaf\\xfa\\x93\\x3b\\x5d\\xa9\\xe7\\x9d\\xa6\\xce\\x3e\\x69\\x9e\\x35\\x01\\x5c\\xa7\\x5f\\xc1\\x07\\xb3\\x45\\xda\\x90\\xa1\\x15\\x0d\\xf3\\x53\\x8f\\x67\\x78\\x0a\\x37\\x98\\x47\\x85\\x3e\\x33\\x74\\x76\\xed\\xdf\\x7b\\x2f\\x7c\\x80\\xd3\\x7d\\x78\\x8f\\x0a\\x2c\\x25\\x22\\xb2\\x8a\\x24\\x1d\\xe2\\xf3\\x2c\\xb6\\x18\\xfc\\x8a\\x36\\x24\\x7a\\x18\\x1b\\x86\\x24\\x9f\\x85\\xca\\x6c\\x14\\xea\\xc9\\xb3\\xb5\\x73\\x48\\x75\\xdb\\xfd\\x62\\x27\\x9c\\x89\\x76\\xf4\\x7a\\x00\\xae\\xaf\\xd5\\xc0\\x91\\x56\\x0d\\xd4\\x73\\x45\\xb7\\x22\\x31\\x85\\xcb\\xc9\\x98\\xe1\\xa9\\xa3\\x6c\\x54\\x7f\\x0c\\xe5\\x3a\\x6a\\xca\\xad\\x45\\x3c\\x28\\x64\\x2c\\xa0\\x6c\\x8e\\x38\\x63\\xfe\\xfe\\x99\\x4e\\xc1\\xc3\\x3b\\x1d\\x41\\x2a\\x02\\x18\\x4c\\x3e\\xf5\\x8b\\x84\\x5e\\xef\\xb7\\xa6\\x79\\x2c\\x37\\x15\\xdf\\x85\\x42\\x87\\x72\\x89\\xc8\\x1a\\x50\\x49\\x65\\x2f\\x0e\\x92\\x60\\xf6\\x15\\xef\\xf4\\x3f\\x05\\x7e\\xd9\\x3a\\x07\\xc7\\x15\\xb9\\x36\\x7c\\x78\\xa4\\x23\\xf7\\x48\\x99\\x85\\xf4\\xd8\\xa0\\x61\\x80\\xd6\\xed\\xf2\\xd0\\xf0\\x76\\x95\\x7a\\xc6\\x9e\\x82\\x74\\xb1\\x67\\x4d\\x83\\x3c\\x55\\xa6\\x17\\x46\\x00\\x6b\\xf5\\x4b\\xfe\\xe4\\x41\\x9b\\x13\\xef\\x02\\xa1\\x1c\\xdc\\x0c\\xf9\\x42\\x8a\\xd9\\x64\\x66\\x10\\x9b\\x17\\x2a\\x78\\x5e\\xf6\\x68\\xb3\\x2a\\xec\\x49\\x56\\x2a\\xae\\xe2\\x21\\x6c\\xff\\xb6\\x6c\\x81\\x01\\x5b\\x92\\x43\\x4c\\xdd\\x75\\x4e\\xbd\\xfd\\xb9\\x04\\xd1\\xe1\\x3b\\xb6\\xee\\x35\\x02\\x16\\x2c\\xd6\\x48\\x33\\x75\\x97\\x93\\x11\\x97\\xab\\x49\\x8c\\x5a\\x9f\\x37\\x88\\x9b\\xfe\\x07\\x80\\x09\\x3b\\xf9\\x2b\\x1c\\xdf\\x51\\x0e\\x9a\\x13\\xeb\\xa3\\x4c\\xb7\\x10\\xb5\\xd9\\x56\\x93\\xe5\\xc0\\xa4\\xc9\\x19\\xf9\\xf9\\x78\\xd9\\x25\\xdb\\xbf\\xc8\\x2b\\xb6\\x08\\xa1\\xf0\\xe6\\x2b\\xc8\\xda\\x45\\xc8\\x80\\x21\\x19\\xd1\\x75\\x67\\x03\\x0b\\xf3\\x23\\xdd\\x4f\\x17\\x54\\xe0\\xde\\x6b\\x7c\\xc4\\x36\\x52\\x31\\x7a\\x69\\x05\\x1a\\x16\\xa2\\xe3\\xea\\x37\\x62\\xe1\\x21\\x28\\x7b\\xee\\x98\\x72\\x95\\xfd\\x26\\x38\\x76\\xdd\\xc5\\x28\\x67\\x63\\xed\\xf3\\xe3\\xc7\\x36\\xb5\\x1f\\xfc\\x0b\\xc7\\x5b\\x9d\\xb8\\xdf\\x0a\\xa2\\x16\\x8a\\x16\\xad\\x9f\\xcf\\x07\\x70\\xbf\\xcb\\x0f\\xfc\\x89\\x3b\\xa9\\x49\\x86\\x96\\x51\\x62\\x35\\xbf\\xe8\\x6a\\x13\\xdf\\x57\\xca\\xdf\\x85\\x5e\\x0f\\x06\\x91\\x7d\\xfc\\x77\\x1e\\xf4\\xd8\\x18\\xc6\\xd1\\x91\\xec\\xb9\\xb8\\xea\\xfb\\xd4\\x3e\\x33\\x38\\xd9\\xd3\\x8f\\xbf\\xe0\\xdb\\xb3\\x0b\\x6a\\x99\\x86\\x3c\\xa1\\x94\\x03\\xbc\\x35\\xbe\\xfc\\x8f\\x48\\xa4\\x08\\x11\\xaa\\x53\\xc3\\x94\\x68\\x17\\x98\\x38\\x43\\x73\\x72\\xa0\\xfd\\x2a\\x46\\xf3\\x85\\xfa\\x54\\x86\\xd4\\xe7\\xc9\\x8f\\x96\\xac\\x63\\x57\\x14\\x1c\\x64\\x4b\\xc4\\x31\\x58\\x33\\x40\\x53\\xe5\\x57\\x7f\\x48\\xa6\\x06\\x1e\\x4d\\x82\\xbe\\xd4\\x98\\x9a\\x33\\x0b\\xb5\\x1d\\x17\\x77\\x15\\x4d\\x48\\xbb\\xd7\\xa6\\x84\\xe3\\xf3\\x07\\xc3\\x54\\x11\\x95\\x19\\x76\\x0e\\x83\\x5e\\xaf\\x71\\x66\\xde\\xe9\\x07\\xe8\\x3b\\x29\\x41\\x19\\x1f\\xc5\\xc6\\x7c\\x80\\xac\\xe8\\xe8\\xad\\xf6\\x4c\\x19\\x40\\x12\\x07\\x56\\x34\\x17\\x18\\xe7\\x25\\x50\\x82\\x2f\\x13\\x22\\xc4\\x7d\\x3b\\x99\\xc1\\xec\\x62\\x64\\x68\\x3b\\xf3\\x0f\\xc0\\x63\\xe1\\x76\\xb1\\x80\\xb9\\xb3\\x25\\xf7\\x18\\x79\\x33\\xa8\\x39\\x95\\x51\\x70\\x02\\xac\\x52\\xb9\\xd4\\xc7\\x65\\xa6\\x60\\xc6\\x5e\\x93\\xa7\\x48\\xbf\\x8b\\x2f\\xa1\\xf3\\x85\\x94\\x8b\\xe1\\xe7\\x35\\x02\\x57\\xa5\\x2a\\x65\\x21\\xd0\\xb0\\xcc\\xc9\\x90\\xa3\\xe0\\xe1\\xa0\\x9f\\x2d\\xb8\\x8f\\x01\\xcf\\xb5\\x70\\xa6\\xda\\xde\\x2e\\xef\\x25\\x67\\x57\\xb7\\x48\\x1f\\x0d\\xad\\xaf\\x80\\x0a\\xe0\\x26\\x8d\\x81\\xa4\\xed\\x60\\x45\\x1c\\xb5\\xdf\\x4e\\x61\\x78\\xd0\\x61\\xf9\\x4b\\xdb\\x96\\x6d\\xb6\\x9d\\x6e\\x08\\xcf\\xce\\x40\\x5f\\xaf\\x4d\\x2c\\xb5\\xe3\\xc4\\x05\\xc6\\xa2\\xf5\\x7b\\x51\\x9d\\xff\\x81\\xd0\\x4b\\x21\\x15\\x06\\xa8\\xe3\\x42\\x7d\\xde\\x99\\x5e\\x00\\xc7\\xaf\\x39\\xf8\\xa3\\xe3\\x7b\\x45\\x07\\x0d\\x88\\xaa\\xf5\\x06\\x93\\xe0\\x22\\xe1\\xf0\\x66\\x5b\\xa7\\x0d\\x54\\xa2\\x5a\\x33\\x5a\\x31\\xcf\\xd2\\x12\\xe8\\xfc\\xdb\\x03\\x40\\x5e\\xe3\\x89\\xa4\\x9e\\x98\\xc3\\x21\\x34\\xd6\\xc0\\xa0\\x25\\x49\\xf4\\xa4\\x3f\\x5f\\xb1\\x96\\xc1\\x13\\x62\\x2e\\xc2\\x6c\\xaa\\xe7\\x11\\x2a\\x4f\\x63\\x79\\xa6\\xfc\\x28\\xee\\xfd\\x38\\xe0\\x79\\xbb\\x46\\x76\\x6b\\xea\\x5a\\xa1\\xb1\\x7f\\xe1\\x24\\xad\\xc1\\x8f\\x11\\xef\\x2f\\x5d\\x3f\\xf2\\xe1\\xc0\\xeb\\xb8\\x84\\x54\\xc9\\x63\\x53\\xf9\\x2a\\x5d\\x73\\x44\\x1f\\x52\\x25\\x62\\x06\\x5f\\xa0\\x94\\xae\\x3f\\x13\\x8e\\xeb\\x5d\\x41\\x1f\\x60\\xe0\\xe1\\x66\\x72\\xd4\\x17\\x73\\xc3\\xb8\\x93\\x4e\\x2e\\x67\\x08\\x75\\x0d\\xdf\\x26\\xad\\xfc\\x8c\\xd6\\x4d\\x29\\x01\\xa6\\xcc\\x25\\xc2\\x41\\xc0\\xba\\x47\\x8f\\xde\\x5a\\x1d\\x0b\\xb3\\x28\\x1a\\x8b\\xda\\xc5\\x36\\x7f\\xc4\\xa6\\x75\\xdf\\x69\\x6f\\xec\\xbd\\x27\\x9e\\xf6\\x91\\x20\\x1c\\xc5\\x63\\xcf\\x83\\xad\\x9a\\xd3\\xe6\\x94\\x55\\x9e\\xc5\\xa8\\x99\\x40\\xd0\\xb3\\x20\\xd8\\x00\\x08\\x3d\\xe5\\xff\\x81\\xa9\\xdc\\xff\\x0e\\xff\\xdb\\x7d\\xf8\\x57\\x38\\x59\\x9d\\x1a\\x58\\xac\\x1a\\xaa\\xa0\\x32\\x1f\\xe8\\x59\\x39\\xdb\\x7c\\xb8\\x24\\x7d\\xeb\\x51\\xc5\\x09\\xef\\x11\\xbf\\x08\\x13\\x50\\x2e\\x3e\\xd0\\xae\\xc6\\x96\\x7c\\x99\\xd5\\x0d\\xa1\\xb5\\x64\\xeb\\xf4\\xe3\\x9a\\xe7\\xa8\\x08\\xfc\\x12\\x24\\x98\\x0e\\x20\\xc6\\x1d\\xde\\x23\\x31\\xef\\x73\\x3c\\x4c\\xbf\\x59\\x4d\\xad\\x3c\\xf1\\x1d\\xb4\\xc0\\xfe\\xb5\\x6b\\x3d\\x00\\x3d\\xba\\x9e\\x77\\x08\\x91\\x7e\\x0a\\xcb\\x7f\\xdd\\x20\\x5e\\x14\\xb2\\xac\\xa5\\x1c\\x90\\xd8\\xbc\\xcc\\x0c\\xce\\x85\\x15\\x79\\xf7\\x4f\\xa4\\xda\\x39\\x37\\xa5\\x93\\xf9\\xb9\\x0c\\x55\\x79\\x7c\\x40\\x79\\xe6\\xdb\\x22\\x06\\xe9\\xc6\\xf3\\x83\\xc2\\x38\\x0f\\xbb\\x19\\xe0\\xa8\\x49\\x0c\\xed\\xb5\\x5f\\x7e\\x02\\x93\\x23\\x15\\x65\\x92\\x02\\xa5\\xbd\\xf2\\x6b\\xb1\\x02\\xe2\\xda\\x59\\x46\\xd6\\xf4\\x6c\\x88\\x5b\\x27\\x3c\\x0a\\xed\\x40\\x9d\\xd0\\x53\\x83\\x16\\x78\\xb4\\xaf\\xc4\\x19\\x79\\x8d\\x13\\x62\\x57\\x13\\x71\\x94\\xc1\\x40\\x64\\xa3\\x5d\\x18\\xd7\\x4a\\x78\\x8e\\x77\\x08\\x53\\x2d\\x21\\x8f\\x23\\xac\\x41\\xa2\\x4f\\xa8\\x72\\x1a\\xf2\\x3c\\x83\\xbf\\x01\\xed\\xf2\\xa6\\x8c\\x5f\\x9f\\xa2\\x70\\x81\\x58\\x5e\\x72\\xd4\\xc0\\xe6\\x5c\\x81\\x2f\\x9b\\x19\\x29\\xba\\xe4\\xa1\\x99\\x05\\x9b\\x18\\xad\\xcb\\xa0\\x69\\xba\\x21\\xde\\xc6\\x7d\\x7e\\x0d\\x6b\\x7f\\xdf\\x27\\x3d\\xdf\\x71\\x21\\x7f\\x2b\\x73\\x3f\\x45\\xc6\\x6b\\x74\\xce\\xf7\\xf0\\x6a\\xe2\\x25\\xfe\\x47\\x28\\xeb\\x44\\x3e\\x1c\\x00\\x6b\\xf9\\x27\\x73\\xee\\x60\\xe7\\xa1\\x16\\x51\\xbf\\xc4\\x4f\\x13\\x5d\\xc2\\xd8\\x6f\\x63\\xdb\\xe8\\x12\\xb5\\x89\\xf2\\x68\\x18\\x76\\x97\\xb9\\x18\\xa9\\x1b\\x1d\\x45\\xdc\\x91\\x65\\x1e\\x9c\\x7d\\x84\\x4e\\xdc\\x85\\x35\\x06\\xa6\\xf6\\x4e\\xd7\\x37\\x97\\x83\\x12\\x5e\\x1e\\x3d\\x77\\xe2\\x62\\x6f\\x52\\x2b\\xb9\\x8f\\x01\\x8d\\xe5\\xad\\xdf\\x6a\\xce\\x64\\xde\\x16\\xa5\\x0c\\x51\\xa1\\x42\\x51\\xe3\\x93\\xc7\\x8f\\xc6\\xed\\x32\\x46\\xa3\\x41\\x43\\xbb\\x71\\xa6\\xea\\x22\\xfd\\xfa\\xb5\\xd9\\x6f\\xe8\\xe9\\x5a\\xbd\\x7b\\x14\\x39\\x89\\x86\\xeb\\x9c\\x9a\\x9e\\x8b\\xd1\\x7a\\xa9\\x81\\xf3\\x7f\\x59\\x3f\\xbf\\x98\\xfa\\x56\\xf8\\xba\\xd5\\x8b\\x98\\xf3\\xe6\\xab\\xf1\\x9b\\x1f\\x98\\x6a\\x02\\x4a\\xeb\\xb8\\x27\\x81\\xf0\\x6a\\xca\\x55\\x45\\x95\\xec\\xa0\\x84\\x57\\xc4\\x7c\\x8f\\x48\\x75\\x9b\\x8f\\xe2\\xaa\\x6c\\x0a\\xc5\\x19\\xa2\\x6e\\x6d\\xba\\xcf\\x0f\\xcb\\xa3\\xb8\\x44\\x0c\\x8b\\xe7\\x9f\\xff\\x3a\\xdf\\x5f\\x40\\x9e\\xe7\\x12\\x96\\xf7\\x7d\\x20\\x39\\xf3\\x16\\x18\\x2e\\x51\\x14\\xc6\\x6b\\xa2\\xe4\\x2a\\xea\\x1c\\x6f\\x94\\xbe\\x13\\x8f\\xdc\\x9d\\xe9\\x49\\x5f\\x8b\\xb6\\xd7\\xda\\xed\\x13\\x11\\x08\\xc7\\x59\\x6e\\x28\\x7d\\x9e\\x8f\\x2e\\x0a\\xc2\\x08\\x46\\x2d\\xa8\\x14\\xdc\\x8a\\x4d\\x9f\\x55\\x7c\\xfa\\x2c\\xe1\\x88\\x63\\x66\\x14\\xbc\\x27\\xa3\\xf7\\xbb\\xf2\\xb7\\x69\\x28\\xe3\\x37\\x6c\\xc0\\xd8\\x5b\\x0d\\xcb\\x22\\x62\\xe3\\x46\\x4a\\x80\\x91\\xb1\\x31\\x06\\xa0\\x1c\\xa9\\x22\\xb0\\x0f\\x1f\\x04\\x91\\xb1\\x98\\xc8\\x8b\\xf5\\x2b\\x41\\x08\\x16\\x09\\x24\\xfe\\x27\\x29\\x59\\xaa\\xa2\\xfc\\x00\\x6a\\x62\\x50\\x3c\\xc7\\x3f\\x54\\xb2\\xd0\\xff\\xe9\\x45\\xd2\\xfd\\x47\\xf5\\x14\\x67\\xec\\xf7\\x98\\xa7\\xc9\\x2e\\xd4\\x55\\x9b\\x53\\xb5\\x70\\xaa\\x03\\x29\\xce\\xf3\\xe7\\x72\\xcb\\x9f\\xd5\\xc0\\x49\\x3e\\x02\\x73\\x3e\\x19\\xba\\x67\\xfb\\x24\\x89\\x3a\\x16\\x9f\\x7c\\x32\\x5e\\xe2\\x9f\\xef\\x47\\x9e\\x45\\x08\\x33\\xd3\\x4a\\xa4\\x0b\\x10\\x35\\x57\\xd3\\x22\\x59\\xd3\\xa1\\x34\\x03\\x7f\\xca\\xbe\\xb2\\x25\\x8e\\x1c\\xee\\xd0\\xbf\\x13\\x95\\x3f\\xe6\\xc3\\xe2\\x3c\\x7a\\x00\\x62\\x2c\\x90\\xf8\\xca\\x45\\x28\\xf7\\xc5\\xed\\xed\\x2c\\x77\\xc9\\x2d\\xda\\x57\\xfc\\xfb\\x87\\x10\\xda\\xad\\xd8\\xfb\\x67\\xa8\\x56\\x9e\\x2d\\xec\\x37\\xee\\xc7\\xa5\\xd8\\x86\\xbd\\x78\\x03\\xb6\\x7b\\xde\\x6e\\x4b\\xe8\\xa0\\x59\\xdc\\x8d\\x0e\\x06\\x14\\xc3\\x3d\\xc9\\xa8\\x8c\\x80\\x4b\\x46\\xda\\xdb\\x5d\\x60\\x0b\\x64\\x88\\xa0\\xfc\\xab\\x9c\\x3c\\xff\\x07\\x3e\\x5b\\xfc\\x45\\x61\\x00\\xad\\x48\\xf6\\x48\\x73\\x71\\x0a\\x67\\x02\\x5c\\xaf\\x97\\x1f\\xc0\\xde\\x91\\x83\\x47\\xfb\\x05\\xdc\\xc4\\xa2\\xc1\\x5b\\xa8\\x2f\\xbe\\x91\\xf7\\x32\\xbb\\x99\\xbc\\x58\\x8e\\x72\\x1f\\x42\\xe9\\x8f\\x88\\xb5\\xde\\xe4\\x89\\xb2\\xc4\\x56\\x77\\xee\\x92\\xe7\\x53\\x7d\\x00\\xaa\\x8a\\x0d\\x49\\xa7\\x70\\xf0\\x1c\\x28\\x61\\x06\\xec\\x3b\\xf5\\xdf\\xd9\\x07\\x85\\xd0\\x94\\x3e\\x7d\\x94\\x03\\x18\\xe1\\xa0\\x22\\x9d\\xc7\\x7b\\x85\\xc6\\xae\\x65\\x90\\xa2\\x5c\\xec\\x39\\x3e\\x4c\\xa5\\xff\\xa3\\x6f\\x7a\\x2a\\xb5\\x87\\xf6\\xef\\x35\\x45\\xfe\\x57\\x28\\xf3\\x2f\\x5e\\xb4\\x71\\xaf\\xb6\\xf3\\xc0\\x55\\xc6\\xbb\\xdb\\x36\\x99\\xff\\x66\\xed\\x47\\x3b\\x23\\x14\\xc2\\x65\\x6e\\x4b\\x0b\\xc9\\xcc\\x2a\\x28\\xab\\xb4\\x61\\x07\\x00\\xc2\\xa0\\xff\\xed\\x56\\xf7\\xcd\\xf4\\x7f\\x46\\x29\\xfc\\x0b\\x81\\xfe\\xdf\\xb5\\x6a\\xfb\\x4f\\xf0\\x47\\x8e\\x72\\xe7\\xef\\xf5\\x01\\x07\\x1a\\x9d\\xe0\\x38\\xcf\\x5f\\xc2\\xb4\\xff\\x6b\\x91\\x39\\xf5\\x97\\x6b\\x39\\xfd\\x7f\\x16\\x4c\\x9b\\x91\\xec\\xff\\x47\\x8f\\xfc\\xff\\x0d\\x70\\xe0\\x6c\\xe1\\xb2\\xff\\xff\\x19\\x03\\xff\\xdb\\x92\\xfd\\xe1\\xd7\\xff\\x2f\\x00\\x00\\xff\\xff\\xfc\\x4b\\x38\\xf0\\x1e\\x96\\x00\\x00\")\n\nfunc testLargeJpg() ([]byte, error) {\n\treturn bindataRead(\n\t\t_testLargeJpg,\n\t\t\"testdata/test-large.jpg\",\n\t)\n}\n\nvar _testMediumHTML = []byte(\"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\xb4\\x59\\x5b\\x73\\xeb\\xb6\\xf1\\x7f\\xf7\\xa7\\x40\\xf0\\x9f\\x7f\\x9e\\x0e\\x05\\x51\\x92\\x65\\x2b\\xa1\\x78\\x9a\\x4b\\xc7\\x69\\x9b\\x4c\\xcf\\x24\\x99\\xe9\\xf4\\xa9\\x83\\xcb\\x92\\x84\\x05\\x02\\x34\\x00\\xca\\x56\\xa6\\x1f\\xbe\\x03\\x90\\xba\\x50\\xa6\\xa4\\xd3\\x4e\\xf2\\x70\\x2c\\x02\\xbb\\xfb\\xdb\\xc5\\x62\\x77\\xb1\\xc0\\xc9\\xbe\\xf8\\xfe\\xef\\xdf\\xfd\\xfa\\xcf\\x4f\\x7f\\x46\\x95\\xaf\\x55\\x9e\\x85\\xbf\\x48\\x51\\x5d\\xae\\x31\\x68\\x9c\\xdf\\x65\\x15\\x50\\x81\\x1a\\x6b\\x0a\\xa9\\x60\\x8d\\x2b\\xef\\x9b\\xaf\\x08\\xa1\\xab\\x09\\x37\\x35\\x49\\x88\\x6b\\x80\\x13\\xd3\\x80\\x76\\x40\\x2d\\xaf\\x48\\x3a\\x49\\x09\\xce\\xef\\x10\\xca\\x6a\\xf0\\x14\\xf1\\x8a\\x5a\\x07\\x7e\\x8d\\x5b\\x5f\\x24\\x8f\\x27\\x04\\x4d\\x6b\\x58\\xe3\\xad\\x84\\xd7\\xc6\\x58\\x8f\\x11\\x37\\xda\\x83\\xf6\\x6b\\xfc\\x2a\\x85\\xaf\\xd6\\x02\\xb6\\x92\\x43\\x12\\x07\\x1f\\x90\\xd4\\xd2\\x4b\\xaa\\x12\\xc7\\xa9\\x82\\x75\\x3a\\x99\\x76\\x40\\x4a\\xea\\x0d\\xaa\\x2c\\x14\\x6b\\x4c\\x12\\xc2\\x8c\\xf1\\xce\\x5b\\xda\\x4c\\x6a\\xa9\\x27\\xdc\\xb9\\x8f\\xdb\\xf5\\x23\\x03\\x9e\\x32\\x46\\xe7\\x30\\x9b\\x03\\x67\\x74\\x36\\xe3\\x45\\xc1\\xd2\\xd5\\x03\\x9d\\x89\\xc5\\x62\\x4a\\x8b\\x45\\x3a\\x65\\xe9\\xbd\\xc0\\xc8\\x82\\x5a\\x63\\xe7\\x77\\x0a\\x5c\\x05\\xe0\\xc7\\x14\\x38\\xe9\\xa1\\xc7\\x7d\\x10\\x8f\\x69\\x90\\x5d\\xf0\\xc7\\x95\\x60\\x30\\x7f\\x58\\xce\\x17\\xf7\\xc5\\x92\\x15\\x30\\x87\\xe5\\x8c\\x2d\\x60\\x31\\x15\\x73\\x31\\x5d\\x5e\\xc0\\xf5\\xd2\\x2b\\xc8\\x9f\\xcc\\xf7\\x86\\x67\\xa4\\x1b\\xdc\\x65\\x24\\x38\\x3a\\xbf\\xcb\\x98\\x11\\xbb\\xfc\\x2e\\xd3\\x74\\x8b\\xb8\\xa2\\xce\\xad\\xb1\\xa6\\x5b\\x46\\x2d\\xea\\x7e\\x12\\x01\\x05\\x6d\\x95\\xc7\\xc8\\x9a\\xb0\\x21\\x9a\\x6e\\x65\\x49\\xbd\\x34\\xba\\xc3\\x16\\xf2\\x20\\x17\\x7c\\x4a\\xa5\\x06\\xfb\\x8e\\xd2\\x43\\x05\\x8d\\x3d\\x15\\xa1\\x8c\\xb5\\xde\\x1b\\x8d\\xfc\\xae\\x81\\x35\\xee\\x06\\xf8\\x4c\\xc0\\x9b\\xb2\\x54\\x80\\x91\\xa0\\x9e\\xf6\\x83\\xa0\\x46\\x29\\xda\\xb8\\xc3\\x34\\xb5\\x65\\xd8\\xf1\\x49\\x2f\\x73\\x20\\x77\\x6a\\x10\\xca\\x5c\\x43\\xf5\\x1e\\xd8\\xd9\\xc4\\x68\\xb5\\xc3\\xf9\\xaf\\x11\\x0d\\x1d\\x97\\x93\\x91\\xc0\\x37\\x2a\\x24\\xb9\\xd1\\x09\\xa3\\x16\\xe7\\x7f\\x0c\\x53\\x46\\xba\\xe5\\xf7\\x23\\x7a\\xe6\\x05\\x66\\xa9\\x16\\x78\\x1f\\x18\\x38\\xcf\\x9c\\xb7\\x46\\x97\\xfb\\x0d\\xed\\x47\\x19\\xa1\\xd1\\xed\\x44\\xc8\\xed\\xfb\\x9d\\xe9\\x7c\\x82\\xc6\\x7d\\x94\\xb5\\xea\\x44\\xe5\\x9e\\x49\\xd3\\xed\\xc1\\x87\\x31\\x38\\xf7\\x3c\\x94\\x7b\\xb9\\x05\\x9c\\x67\\xf4\\x68\\xd3\\x0f\\xa6\\x86\\x60\\x41\\x46\\x94\\x1c\\x08\\x9d\\x70\\x25\\x84\\x32\\xd3\\x7a\\x9c\\x7f\\x13\\x7e\\x86\\xdc\\x19\\x69\\x55\\xff\\x55\\x18\\x5b\\x9f\\x79\\xe0\\xc4\\xaa\\x48\\xed\\xbf\\xad\\x2c\\x2b\\x8f\\x91\\x14\\x6b\\xfc\\x96\\x74\\x05\\x01\\xa3\\x60\\x9d\\xd1\\xc1\\xa8\\x3e\\x62\\x7b\\x42\\x9e\\x49\\xdd\\xb4\\x7e\\x8f\\x1c\\x70\\x92\\x10\\xb1\\xd6\\xa8\\x21\\x44\\xf2\\xd2\\x82\\xdd\\xe1\\x3e\\x30\\x3d\\xbc\\x79\\xdc\\x97\\x8f\\x17\\x8c\\x1a\\x45\\x39\\x54\\x46\\x09\\xb0\\x6b\\xfc\\xcb\\x1e\\x99\\x04\\xb4\\x13\\xef\\x1f\\x7e\\x34\\x0d\\x3f\\x17\\x73\\x64\\x40\\x7a\\x6e\\x6b\\x66\\xc2\\x5e\\xee\\x77\\xa5\\x9a\\xe5\\x9d\\x06\\x54\\x18\\x8b\\x9e\\x0c\\xfa\\x44\\xf9\\x86\\x96\\xe0\\x32\\x52\\xcd\\x3a\\x9e\\xbb\\xde\\x5f\\xbd\\xc4\\x09\\x5a\\x5c\\x6c\\x52\\x5a\\xd3\\x36\\xc7\\x4c\\xb8\\xe2\\x81\\xc3\\x0a\\x69\\xeb\\x4d\\x61\\x78\\x1b\\x36\\x7a\\xff\\x89\\xd1\\x96\\xaa\\x16\\xd6\\x78\\xd4\\x01\\xd1\\xbc\\xa6\\xb3\\x0d\\xb1\\x1d\\x92\\x75\\xa8\\xb1\\xa8\\xa1\\xbe\\x42\\xc6\\xa2\\x0d\\xec\\x5e\\x8d\\x15\\x93\\x81\\x47\\xc7\\xb3\\xe3\\x68\\x73\\xc2\\xbc\\x3e\\x8d\\xbe\\xbe\\x58\\xf4\\x8c\\xcc\\x6b\\xc4\\xbc\\x3e\\xd6\\xa6\\x0e\\xd9\\xb5\\xac\\x96\\x1e\\xe7\\x4f\\xe6\\x8b\\x61\\x4a\\x85\\x8d\\x39\\x4d\\xb7\\x7d\\x8a\\xf4\\xfb\\xb6\\xdf\\xaf\\xbb\\xac\\xe9\\x92\\x0a\\x55\\xc6\\x79\\x87\\x84\\xe1\\x6d\\x0d\\xda\\xc7\\xfa\\x10\\x57\\x79\\x08\\xe6\\xfe\\x5c\\x2a\\x4d\\x38\\xba\\x26\\xc6\\x96\\x24\\xa8\\x0d\\x31\\xbd\\xf7\\x84\\xbb\\x33\\x1a\\x7d\\x2b\\x3d\\x6b\\xf9\\x06\\xfc\\x07\\xf4\\x24\\xfd\\x0f\\x2d\\xfb\\x80\\x9e\\x8c\\x09\\x85\\xe7\\x93\\x35\\xcf\\xc0\\x3d\\xfa\\xc1\\x38\\x2f\\x75\\x89\\xa8\\x16\\xe8\\x47\\xda\\x6a\\x5e\\x35\\x54\\x4c\\x10\\xfa\\x39\\x1c\\x83\\xbe\\x02\\x94\\xd1\\x3b\\x34\\x9e\\x41\\xe8\\x13\\x2d\\x63\\xd2\\x45\\xd3\\xa4\\x0e\\x8b\\xe9\\x4c\\x8d\\x5c\\x88\\x0a\\x11\\x90\\xf7\\xf6\\x20\\x6f\\x50\\x5c\\xdd\\x5d\\xd0\\x55\\x1b\\x0b\\x93\\xbb\\x41\\x00\\x5a\\xf3\\x3a\\x52\\xd3\\x55\\xe2\\xea\\x64\\x89\\x0f\\xf1\\xd6\\x85\\xe6\\x22\\xff\\x64\\x9a\\x56\\x51\\x7b\\x1a\\x94\\x8b\\x83\\xb7\\x8f\\x05\\x45\\x49\\xe7\\x93\\x56\\xc7\\x23\\x49\\xe0\\x4b\\xa5\\xa1\\x94\\xbe\\x6a\\x59\\x3c\\xe3\\xe9\\xab\\x0b\\xff\\x12\\x27\\x36\\x49\\x69\\xc2\\x27\\xce\\xaf\\x92\\x63\\x21\\xb9\\x84\\x26\\x4a\\x2b\\x9f\\xa9\\xda\\x52\\xf2\\xfc\\xea\\x93\\xd2\\x0c\\xb0\\xce\\x89\\x57\\x91\\x4a\\xa9\\x93\\xd2\\x68\\xc9\\xc3\\xd7\\x00\\x66\\x40\\xb9\\x8e\\x61\\x12\\x0b\\x42\\x3a\\x12\\xff\\x0e\\x41\\x06\\xa4\\x5b\\x28\\xee\\x45\\x25\\xc2\\xca\\x2d\\x58\\x52\\xef\\xdc\\x8b\\x3a\\x87\\x3a\\xa7\\xdf\\xc0\\x0b\\x41\\x4c\\x1a\\x6b\\xbc\\x61\\x6d\\xd1\\x7d\\x9c\\x21\\x8e\\x70\\xdc\\xc0\\xac\\x8d\\x68\\x15\\xc4\\xe5\\x94\\x66\\x74\\xc1\\x23\\x1c\\x37\\x30\\xad\\x54\\x8a\\x92\\x57\\x60\\xce\\x84\\xa4\\x3a\\xc3\\x3b\\xa3\\x5e\\xc5\\xaa\\x76\\x0d\\x58\\x05\\xa2\\x04\\x4b\\x0a\\xca\\xac\\xe4\\x84\\x1b\\x0b\\x84\\x57\\x54\\x6a\\x6e\\x04\\x10\\x57\\xc9\\x7a\\xa0\\xe0\\xf3\\x44\\xae\\x6a\\x7d\\x96\\xfa\\xb7\\xaa\\x0d\\xa6\\x0e\\xa1\\x4f\\xe6\\xaf\\xca\\x2b\\xc9\\x48\\xf3\\x32\\x10\\xed\\xa6\\xae\\x4a\\x35\\x9b\\x92\\x80\\xb5\\xc6\\x0e\\x37\\xe0\\x38\\x7d\\x5d\\xda\\x9a\\x1a\\x7c\\x05\\xad\\x23\\x5c\\x49\\xd0\\xfe\\x5f\\xc7\\x68\\xe8\\x09\\x43\\xd8\\xdb\\xfc\\x57\\xf5\\x59\\xc3\\x0a\\x59\\x12\\x1e\\x0f\\xc2\\xf1\\xf9\\xab\\xf2\\x4e\\xda\\xb6\\x71\\xa0\\x89\\x32\\xa5\\x3d\\xb3\\xed\\x8c\\x76\\x1d\\xc7\\x5b\\xf0\\xbc\\xb2\\xc4\\x83\\xf3\\xb2\\xd8\\x11\\xea\\x1c\\xd8\\x61\\xcc\\x5d\\xe0\\xb9\\x8a\\xdb\\x6a\\xf9\\xd6\\x48\\xbe\\x51\\x40\\x36\\xb4\\x32\\xc6\\x27\\x15\\xe5\\x9b\\x01\\xec\\x38\\xcb\\x08\\xaa\\x99\\xb4\\x0c\\x6c\\x3c\\x7e\\x7e\\xa3\\x0d\\xce\\xcf\\x26\\xc6\\x24\\x0e\\xe7\\xd5\\x1b\\xe1\\x76\\xd7\\x78\\x43\\x9c\\xab\\x82\\xe4\\x28\\xe1\\x06\\x82\\x06\\x4f\\xe2\\x4d\\x2a\\x9c\\xe8\\x97\\x28\\x37\\x30\\x0c\\x6d\\x7d\\x35\\x3b\\x13\\xef\\x26\\xc7\\x24\\xc3\\xe1\\x39\\x39\\xe1\\x2d\\x6d\\xc3\\x83\\xf0\\xd8\\xfc\\x98\\x7c\\xb3\\x29\\x27\\x52\\x93\\xba\\x34\\x93\\x6d\\xd4\\x3a\\x98\\xb8\\x22\\xb1\\xa3\\xb5\\x1a\\x8a\\xf4\\x33\\xef\\x65\\x14\\x65\\xf2\\x2d\\x5a\\xb1\\x9d\\x05\\x60\\x9c\\x9f\\xcf\\xf4\\xcd\\xfa\\xb0\\xf3\\xbd\\xd2\\xbd\\x9f\\x9e\\xc1\\xe1\\xf0\\xfd\\xc9\\x58\\x18\\x39\\x79\\x6f\\x9e\\xbb\\xe7\\x0d\\x79\\xb0\\xed\\xc9\\xa0\\x5f\\x3c\\xd5\\x82\\x5a\\x71\\x02\\x49\\x2f\\x89\\xb8\\x96\\x59\\x68\\x7a\\xb9\\x96\\x25\\x61\\xe0\\xa4\\x37\\x76\\x77\\x53\\x3a\\x34\\x4d\\x6e\\xd8\\x35\\xbd\\xca\\x8d\\x24\\x7d\\x2f\\xe4\\x70\\xbe\\xff\\x42\\x7f\\x42\\xa5\\x49\\x02\\xf1\\x26\\xd6\\x49\\x36\\xc6\\x6e\\xf4\\xa3\\x59\\x0b\\x70\\xfc\\x4b\\x5a\\x37\\x5f\\xbf\\xac\\x83\\xa2\\x96\\x96\\xf0\\xff\\xf3\\x6f\\x4a\\x13\\xe7\\xdc\\xda\\x79\\x6a\\x5d\\xfc\\x8e\\x6d\\xe3\\xcf\\xfb\\x05\\x48\\x70\\x38\\xff\\xc9\\x38\\x8f\\x22\\x47\\xd0\\xfc\\x01\\x1d\\x1b\\x96\\xdf\\x41\\x73\\x61\\xec\\xe6\\xa2\\xe6\\x3a\\x68\\x8e\\x1c\\x7f\\x80\\xe6\\xb6\\x11\\xd4\\x83\\xb8\\xa4\\xdb\\x02\\x07\\xed\\xd5\\x0e\\xf5\\x7c\\xb1\\xab\\x34\\xba\\x6f\\x5a\\x07\\x37\\xb4\\xe1\\x15\\xe7\\xd0\\x3b\\xc7\\x80\\xed\\xae\\x51\\x85\\x31\\x1e\\xec\\xe1\\x2e\\xcf\\x15\\x50\\x5b\\xc8\\xb7\\x1b\\xef\\x05\\xd7\\xd7\\xd9\\x9f\\x21\\xa5\\x10\\x86\\x48\\xe7\\xda\\x60\\xf4\\x3f\\x80\\x39\\xe9\\x01\\xfd\\x25\\x8e\\x0f\\x81\\x32\\xb8\\x52\\x84\\x02\\x94\\xd4\\xad\\x0f\\x39\\xf0\\xef\\xfe\\x12\\x70\\xab\\x8b\\x47\\x3f\\xf6\\x0e\\x1c\\x87\\x6c\\x5a\\xa5\\xfa\\xab\\xe7\\x31\\x1c\\xff\\x0f\\xe7\\xdf\\x52\\xbe\\x09\\x3d\\xb6\\x37\\x5d\\xe1\\x3d\\xdc\\x38\\xce\\x3c\\x76\\xe2\\x29\\x57\\x19\\xeb\\x79\\xeb\\x1d\\x46\\x9e\\x32\\xa9\\x05\\xbc\\xad\\x71\\x92\\x1e\\x5c\\x57\\x1b\\x41\\x15\\x7e\\x7f\\xb9\\x8b\\xf3\\x89\\x90\\x54\\x99\\xf2\\x98\\xdb\\xef\\x18\\xfa\\x47\\xae\\xd3\\xae\\xfb\\x1d\\xcf\\xe0\\x4d\\x66\\x78\\xd9\\x1a\\x7d\\x99\\xe1\\xca\\x1c\\x9e\\x5e\\x84\\x74\\xb5\\x3c\\xda\\x89\\xa8\\x95\\x34\\xa9\\xa4\\x10\\xa0\\xd7\\xd8\\xdb\\x16\\x70\\xfe\\xa5\\x97\\x35\\xb8\\xaf\\xcf\\xaf\\x63\\x7d\\x1d\\x1b\\x9a\\x12\\x5f\\xa6\\x70\\xfe\\x37\\xd8\\x31\\x13\\x8a\\xd1\\xc1\\x3b\\xa7\\x57\\x8b\\x93\\x1a\\x79\\x69\\x49\\xcc\\x88\\xdd\\x70\\x41\\x9e\\x32\\x05\\xc3\\x19\\x9b\\x67\\x5e\\x20\\xaa\\x64\\xa9\\xd7\\x78\\xbf\\x9b\\x2c\\xff\\x98\\x11\\x96\\x67\\xc4\\x8b\\x40\\xce\\xd1\\x57\\xe8\\xd7\\x4a\\x3a\\x54\\x83\\x6e\\xbb\\x49\\xe2\\xed\\x67\\xe1\\x90\\x73\\x9c\\xfe\\xaa\\x1c\\x02\\xf6\\x12\\xd2\\x58\\xcc\\x8e\\x82\\x17\\xe7\\xe0\\x7f\\x6d\\xeb\\x26\\x84\\x9e\\x14\\xa0\\xbd\\x2c\\x24\\xd8\\xff\\xce\\xda\\x32\\x00\\x86\\xdb\\xa6\\x46\\xfb\\xd1\\x29\\xfc\\x93\\xe9\\xe3\\x1a\\x99\\x02\\x35\\x31\\x31\\xfe\\x77\\x74\\x36\\x8e\\x0e\\x5a\\xdc\\x42\\xff\\x6c\\xff\\x0c\\x15\\xca\\x71\\x85\\x31\\xdb\\x7e\\x67\\x55\\x70\\x61\\x6d\\x6f\\xb4\\x6e\\x54\\x28\\x51\\x63\\xda\\xc8\\x59\\x74\\xde\\x8c\\xef\\xbe\\xbe\\x7e\\x76\\xca\\x32\\xaf\\xc7\\x13\\x36\\xff\\x2e\\x24\\xf3\\xfb\\xa7\\x92\\x83\\xfe\\x93\\x97\\x92\\xc1\\xbb\\x96\\xe3\\x56\\x36\\x1e\\x39\\xcb\\x63\\x4b\\xf0\\x1c\\x5f\\xcc\\x92\\xd9\\x64\\x3a\\x99\\xc7\\xd7\\xf0\\x67\\xf7\\x71\\xbb\\x2e\\x58\\xb1\\xe2\\x0f\\x0f\\x62\\xca\\x17\\x30\\xe7\\xf3\\x05\\x5d\\x3c\\xde\\xaf\\x1e\\xa7\\x3c\\x85\\xfb\\x79\\xba\\x64\\xcb\\x59\\x3a\\x4b\\x97\\x53\\xfe\\x18\\xdf\\x42\\x23\\xe0\\x7b\\xe4\\xe1\\x23\\x7b\\x84\\xbd\\xa7\\x82\\x3e\\xf0\\x74\\x3a\\x2f\\x78\\x2a\\x80\\x32\\xbe\\x9a\\xdd\\x73\\x9e\\x16\\x82\\x31\\xb6\\x84\\xc5\\x7d\\xca\\x67\\x69\\xc1\\x1f\\xa6\\xd7\\x60\\xe3\\xd3\\x7a\\x44\\x9b\\x3f\\xa4\\x02\\x1e\\xe6\\x29\\x4f\\x1f\\xc5\\x2a\\xe5\\x8b\\xd5\\x4a\\xac\\xa6\\x2c\\xa5\\x6c\\xca\\x8a\\xf9\\x0a\\x78\\xb1\\x5c\\x8a\\x25\\x2f\\x1e\\x06\\x68\\xa4\\x7f\\x33\\x27\\xf1\\xbf\\x30\\xfe\\x13\\x00\\x00\\xff\\xff\\xaa\\x02\\x23\\x78\\xd2\\x18\\x00\\x00\")\n\nfunc testMediumHTML() ([]byte, error) {\n\treturn bindataRead(\n\t\t_testMediumHTML,\n\t\t\"testdata/test-medium.html\",\n\t)\n}\n\nvar _testSmallTxt = []byte(\"\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\xff\\x0a\\xc9\\xc8\\x2c\\x56\\xc8\\x2c\\x56\\x48\\x54\\x28\\x49\\xad\\x28\\x51\\x48\\xcb\\xcc\\x49\\xd5\\x03\\x04\\x00\\x00\\xff\\xff\\x11\\xe2\\x00\\xb1\\x14\\x00\\x00\\x00\")\n\nfunc testSmallTxt() ([]byte, error) {\n\treturn bindataRead(\n\t\t_testSmallTxt,\n\t\t\"testdata/test-small.txt\",\n\t)\n}\n\n// Asset loads and returns the asset for the given name.\n// It returns an error if the asset could not be found or\n// could not be loaded.\nfunc Asset(name string) ([]byte, error) {\n\tcannonicalName := strings.Replace(name, \"\\\\\", \"/\", -1)\n\tif f, ok := _bindata[cannonicalName]; ok {\n\t\treturn f()\n\t}\n\treturn nil, fmt.Errorf(\"Asset %s not found\", name)\n}\n\n// AssetNames returns the names of the assets.\nfunc AssetNames() []string {\n\tnames := make([]string, 0, len(_bindata))\n\tfor name := range _bindata {\n\t\tnames = append(names, name)\n\t}\n\treturn names\n}\n\n// _bindata is a table, holding each asset generator, mapped to its name.\nvar _bindata = map[string]func() ([]byte, error){\n\t\"test-large.jpg\":   testLargeJpg,\n\t\"test-medium.html\": testMediumHTML,\n\t\"test-small.txt\":   testSmallTxt,\n}\n\n// AssetDir returns the file names below a certain\n// directory embedded in the file by go-bindata.\n// For example if you run go-bindata on data/... and data contains the\n// following hierarchy:\n//\n//\tdata/\n//\t  foo.txt\n//\t  img/\n//\t    a.png\n//\t    b.png\n//\n// then AssetDir(\"data\") would return []string{\"foo.txt\", \"img\"}\n// AssetDir(\"data/img\") would return []string{\"a.png\", \"b.png\"}\n// AssetDir(\"foo.txt\") and AssetDir(\"notexist\") would return an error\n// AssetDir(\"\") will return []string{\"data\"}.\nfunc AssetDir(name string) ([]string, error) {\n\tnode := _bintree\n\tif len(name) != 0 {\n\t\tcannonicalName := strings.Replace(name, \"\\\\\", \"/\", -1)\n\t\tpathList := strings.SplitSeq(cannonicalName, \"/\")\n\t\tfor p := range pathList {\n\t\t\tnode = node.Children[p]\n\t\t\tif node == nil {\n\t\t\t\treturn nil, fmt.Errorf(\"Asset %s not found\", name)\n\t\t\t}\n\t\t}\n\t}\n\tif node.Func != nil {\n\t\treturn nil, fmt.Errorf(\"Asset %s not found\", name)\n\t}\n\trv := make([]string, 0, len(node.Children))\n\tfor name := range node.Children {\n\t\trv = append(rv, name)\n\t}\n\treturn rv, nil\n}\n\ntype _bintreeT struct {\n\tFunc     func() ([]byte, error)\n\tChildren map[string]*_bintreeT\n}\n\nvar _bintree = &_bintreeT{nil, map[string]*_bintreeT{\n\t\"testdata\": {nil, map[string]*_bintreeT{\n\t\t\"test-large.jpg\":   {testLargeJpg, map[string]*_bintreeT{}},\n\t\t\"test-medium.html\": {testMediumHTML, map[string]*_bintreeT{}},\n\t\t\"test-small.txt\":   {testSmallTxt, map[string]*_bintreeT{}},\n\t}},\n}}\n"
  },
  {
    "path": "blob/drivertest/drivertest.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package drivertest provides a conformance test for implementations of\n// driver.\npackage drivertest // import \"gocloud.dev/blob/drivertest\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/md5\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"testing/iotest\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/escape\"\n)\n\n// Harness descibes the functionality test harnesses must provide to run\n// conformance tests.\ntype Harness interface {\n\t// MakeDriver creates a driver.Bucket to test.\n\t// Multiple calls to MakeDriver during a test run must refer to the\n\t// same storage bucket; i.e., a blob created using one driver.Bucket must\n\t// be readable by a subsequent driver.Bucket.\n\tMakeDriver(ctx context.Context) (driver.Bucket, error)\n\t// MakeDriverForNonexistentBucket creates a driver.Bucket for a nonexistent\n\t// bucket. If that concept doesn't make sense for a driver, return (nil, nil).\n\tMakeDriverForNonexistentBucket(ctx context.Context) (driver.Bucket, error)\n\t// HTTPClient should return an unauthorized *http.Client, or nil.\n\t// Required if the service supports SignedURL.\n\tHTTPClient() *http.Client\n\t// Close closes resources used by the harness.\n\tClose()\n}\n\n// HarnessMaker describes functions that construct a harness for running tests.\n// It is called exactly once per test; Harness.Close() will be called when the test is complete.\ntype HarnessMaker func(ctx context.Context, t *testing.T) (Harness, error)\n\n// AsTest represents a test of As functionality.\n// The conformance test:\n// 1. Calls BucketCheck.\n// 2. Creates a blob in a directory, using BeforeWrite as a WriterOption.\n// 3. Fetches the blob's attributes and calls AttributeCheck.\n// 4. Creates a Reader for the blob using BeforeReader as a ReaderOption,\n//\n//\tand calls ReaderCheck with the resulting Reader.\n//\n// 5. Calls List using BeforeList as a ListOption, with Delimiter set so\n//\n//\tthat only the directory is returned, and calls ListObjectCheck\n//\ton the single directory list entry returned.\n//\n// 6. Calls List using BeforeList as a ListOption, and calls ListObjectCheck\n//\n//\ton the single blob entry returned.\n//\n// 7. Tries to read a non-existent blob, and calls ErrorCheck with the error.\n// 8. Makes a copy of the blob, using BeforeCopy as a CopyOption.\n// 9. Calls SignedURL using BeforeSign as a SignedURLOption for each supported\n//\n//\tsigning method (i.e. GET, PUT and DELETE).\n//\n// For example, an AsTest might set a driver-specific field to a custom\n// value in BeforeWrite, and then verify the custom value was returned in\n// AttributesCheck and/or ReaderCheck.\ntype AsTest interface {\n\t// Name should return a descriptive name for the test.\n\tName() string\n\t// BucketCheck will be called to allow verification of Bucket.As.\n\tBucketCheck(b *blob.Bucket) error\n\t// ErrorCheck will be called to allow verification of Bucket.ErrorAs.\n\tErrorCheck(b *blob.Bucket, err error) error\n\t// BeforeRead will be passed directly to ReaderOptions as part of reading\n\t// a test blob.\n\tBeforeRead(as func(any) bool) error\n\t// BeforeWrite will be passed directly to WriterOptions as part of creating\n\t// a test blob.\n\tBeforeWrite(as func(any) bool) error\n\t// BeforeCopy will be passed directly to CopyOptions as part of copying\n\t// the test blob.\n\tBeforeCopy(as func(any) bool) error\n\t// BeforeList will be passed directly to ListOptions as part of listing the\n\t// test blob.\n\tBeforeList(as func(any) bool) error\n\t// BeforeSign will be passed directly to SignedURLOptions as part of\n\t// generating a signed URL to the test blob.\n\tBeforeSign(as func(any) bool) error\n\t// AttributesCheck will be called after fetching the test blob's attributes.\n\t// It should call attrs.As and verify the results.\n\tAttributesCheck(attrs *blob.Attributes) error\n\t// ReaderCheck will be called after creating a blob.Reader.\n\t// It should call r.As and verify the results.\n\tReaderCheck(r *blob.Reader) error\n\t// ListObjectCheck will be called after calling List with the test object's\n\t// name as the Prefix. It should call o.As and verify the results.\n\tListObjectCheck(o *blob.ListObject) error\n}\n\ntype verifyAsFailsOnNil struct{}\n\nfunc (verifyAsFailsOnNil) Name() string {\n\treturn \"verify As returns false when passed nil\"\n}\n\nfunc (verifyAsFailsOnNil) BucketCheck(b *blob.Bucket) error {\n\tif b.As(nil) {\n\t\treturn errors.New(\"want Bucket.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) ErrorCheck(b *blob.Bucket, err error) (ret error) {\n\tdefer func() {\n\t\tif recover() == nil {\n\t\t\tret = errors.New(\"want ErrorAs to panic when passed nil\")\n\t\t}\n\t}()\n\tb.ErrorAs(err, nil)\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) BeforeRead(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want BeforeReader's As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) BeforeWrite(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want BeforeWrite's As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) BeforeCopy(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want BeforeCopy's As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) BeforeList(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want BeforeList's As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) BeforeSign(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want BeforeSign's As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) AttributesCheck(attrs *blob.Attributes) error {\n\tif attrs.As(nil) {\n\t\treturn errors.New(\"want Attributes.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) ReaderCheck(r *blob.Reader) error {\n\tif r.As(nil) {\n\t\treturn errors.New(\"want Reader.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) ListObjectCheck(o *blob.ListObject) error {\n\tif o.As(nil) {\n\t\treturn errors.New(\"want ListObject.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\n// RunConformanceTests runs conformance tests for driver implementations of blob.\nfunc RunConformanceTests(t *testing.T, newHarness HarnessMaker, asTests []AsTest) {\n\tt.Helper()\n\n\tt.Run(\"TestNonexistentBucket\", func(t *testing.T) {\n\t\ttestNonexistentBucket(t, newHarness)\n\t})\n\tt.Run(\"TestList\", func(t *testing.T) {\n\t\ttestList(t, newHarness)\n\t})\n\tt.Run(\"TestListWeirdKeys\", func(t *testing.T) {\n\t\ttestListWeirdKeys(t, newHarness)\n\t})\n\tt.Run(\"TestListDelimiters\", func(t *testing.T) {\n\t\ttestListDelimiters(t, newHarness)\n\t})\n\tt.Run(\"TestDirsWithCharactersBeforeDelimiter\", func(t *testing.T) {\n\t\ttestDirsWithCharactersBeforeDelimiter(t, newHarness)\n\t})\n\tt.Run(\"TestRead\", func(t *testing.T) {\n\t\ttestRead(t, newHarness)\n\t})\n\tt.Run(\"TestAttributes\", func(t *testing.T) {\n\t\ttestAttributes(t, newHarness)\n\t})\n\tt.Run(\"TestWrite\", func(t *testing.T) {\n\t\ttestWrite(t, newHarness)\n\t})\n\tt.Run(\"TestCanceledWrite\", func(t *testing.T) {\n\t\ttestCanceledWrite(t, newHarness)\n\t})\n\tt.Run(\"TestConcurrentWriteAndRead\", func(t *testing.T) {\n\t\ttestConcurrentWriteAndRead(t, newHarness)\n\t})\n\tt.Run(\"TestUploadDownload\", func(t *testing.T) {\n\t\ttestUploadDownload(t, newHarness)\n\t})\n\tt.Run(\"TestMetadata\", func(t *testing.T) {\n\t\ttestMetadata(t, newHarness)\n\t})\n\tt.Run(\"TestMD5\", func(t *testing.T) {\n\t\ttestMD5(t, newHarness)\n\t})\n\tt.Run(\"TestCopy\", func(t *testing.T) {\n\t\ttestCopy(t, newHarness)\n\t})\n\tt.Run(\"TestDelete\", func(t *testing.T) {\n\t\ttestDelete(t, newHarness)\n\t})\n\tt.Run(\"TestKeys\", func(t *testing.T) {\n\t\ttestKeys(t, newHarness)\n\t})\n\tt.Run(\"TestSignedURL\", func(t *testing.T) {\n\t\ttestSignedURL(t, newHarness)\n\t})\n\tt.Run(\"TestIfNotExist\", func(t *testing.T) {\n\t\ttestIfNotExist(t, newHarness)\n\t})\n\tasTests = append(asTests, verifyAsFailsOnNil{})\n\tt.Run(\"TestAs\", func(t *testing.T) {\n\t\tfor _, st := range asTests {\n\t\t\tif st.Name() == \"\" {\n\t\t\t\tt.Fatalf(\"AsTest.Name is required\")\n\t\t\t}\n\t\t\tt.Run(st.Name(), func(t *testing.T) {\n\t\t\t\ttestAs(t, newHarness, st)\n\t\t\t})\n\t\t}\n\t})\n}\n\n// RunBenchmarks runs benchmarks for driver implementations of blob.\nfunc RunBenchmarks(b *testing.B, bkt *blob.Bucket) {\n\tb.Helper()\n\n\tb.Run(\"BenchmarkRead\", func(b *testing.B) {\n\t\tbenchmarkRead(b, bkt)\n\t})\n\tb.Run(\"BenchmarkWriteReadDelete\", func(b *testing.B) {\n\t\tbenchmarkWriteReadDelete(b, bkt)\n\t})\n}\n\n// testNonexistentBucket tests the functionality of IsAccessible.\nfunc testNonexistentBucket(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\t// Get a driver instance pointing to a nonexistent bucket.\n\t{\n\t\tdrv, err := h.MakeDriverForNonexistentBucket(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif drv == nil {\n\t\t\t// No such thing as a \"nonexistent bucket\" for this driver.\n\t\t\tt.Skip()\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\t\texists, err := b.IsAccessible(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif exists {\n\t\t\tt.Error(\"got IsAccessible true for nonexistent bucket, want false\")\n\t\t}\n\t}\n\n\t// Verify that IsAccessible returns true for a real bucket.\n\t{\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\t\texists, err := b.IsAccessible(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif !exists {\n\t\t\tt.Error(\"got IsAccessible false for real bucket, want true\")\n\t\t}\n\t}\n}\n\n// testList tests the functionality of List.\nfunc testList(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst keyPrefix = \"blob-for-list\"\n\tcontent := []byte(\"hello\")\n\n\tkeyForIndex := func(i int) string { return fmt.Sprintf(\"%s-%d\", keyPrefix, i) }\n\tgotIndices := func(t *testing.T, objs []*driver.ListObject) []int {\n\t\tt.Helper()\n\n\t\tvar got []int\n\t\tfor _, obj := range objs {\n\t\t\tif !strings.HasPrefix(obj.Key, keyPrefix) {\n\t\t\t\tt.Errorf(\"got name %q, expected it to have prefix %q\", obj.Key, keyPrefix)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ti, err := strconv.Atoi(obj.Key[len(keyPrefix)+1:])\n\t\t\tif err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgot = append(got, i)\n\t\t}\n\t\treturn got\n\t}\n\n\ttests := []struct {\n\t\tname      string\n\t\tpageSize  int\n\t\tprefix    string\n\t\twantPages [][]int\n\t\twant      []int\n\t}{\n\t\t{\n\t\t\tname:      \"no objects\",\n\t\t\tprefix:    \"no-objects-with-this-prefix\",\n\t\t\twantPages: [][]int{nil},\n\t\t},\n\t\t{\n\t\t\tname:      \"exactly 1 object due to prefix\",\n\t\t\tprefix:    keyForIndex(1),\n\t\t\twantPages: [][]int{{1}},\n\t\t\twant:      []int{1},\n\t\t},\n\t\t{\n\t\t\tname:      \"no pagination\",\n\t\t\tprefix:    keyPrefix,\n\t\t\twantPages: [][]int{{0, 1, 2}},\n\t\t\twant:      []int{0, 1, 2},\n\t\t},\n\t\t{\n\t\t\tname:      \"by 1\",\n\t\t\tprefix:    keyPrefix,\n\t\t\tpageSize:  1,\n\t\t\twantPages: [][]int{{0}, {1}, {2}},\n\t\t\twant:      []int{0, 1, 2},\n\t\t},\n\t\t{\n\t\t\tname:      \"by 2\",\n\t\t\tprefix:    keyPrefix,\n\t\t\tpageSize:  2,\n\t\t\twantPages: [][]int{{0, 1}, {2}},\n\t\t\twant:      []int{0, 1, 2},\n\t\t},\n\t\t{\n\t\t\tname:      \"by 3\",\n\t\t\tprefix:    keyPrefix,\n\t\t\tpageSize:  3,\n\t\t\twantPages: [][]int{{0, 1, 2}},\n\t\t\twant:      []int{0, 1, 2},\n\t\t},\n\t}\n\n\tctx := context.Background()\n\n\t// Creates blobs for sub-tests below.\n\t// We only create the blobs once, for efficiency and because there's\n\t// no guarantee that after we create them they will be immediately returned\n\t// from List. The very first time the test is run against a Bucket, it may be\n\t// flaky due to this race.\n\tinit := func(t *testing.T) (driver.Bucket, func()) {\n\t\tt.Helper()\n\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\t// See if the blobs are already there.\n\t\tb := blob.NewBucket(drv)\n\t\titer := b.List(&blob.ListOptions{Prefix: keyPrefix})\n\t\tfound := iterToSetOfKeys(ctx, t, iter)\n\t\tfor i := range 3 {\n\t\t\tkey := keyForIndex(i)\n\t\t\tif !found[key] {\n\t\t\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\t\t\tb.Close()\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn drv, func() { b.Close(); h.Close() }\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tdrv, done := init(t)\n\t\t\tdefer done()\n\n\t\t\tvar gotPages [][]int\n\t\t\tvar got []int\n\t\t\tvar nextPageToken []byte\n\t\t\tfor {\n\t\t\t\tpage, err := drv.ListPaged(ctx, &driver.ListOptions{\n\t\t\t\t\tPageSize:  tc.pageSize,\n\t\t\t\t\tPrefix:    tc.prefix,\n\t\t\t\t\tPageToken: nextPageToken,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tgotThisPage := gotIndices(t, page.Objects)\n\t\t\t\tgot = append(got, gotThisPage...)\n\t\t\t\tgotPages = append(gotPages, gotThisPage)\n\t\t\t\tif len(page.NextPageToken) == 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnextPageToken = page.NextPageToken\n\t\t\t}\n\t\t\tif diff := cmp.Diff(gotPages, tc.wantPages); diff != \"\" {\n\t\t\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", gotPages, tc.wantPages, diff)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, tc.want); diff != \"\" {\n\t\t\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, tc.want, diff)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Verify pagination works when inserting in a retrieved page.\n\tt.Run(\"PaginationConsistencyAfterInsert\", func(t *testing.T) {\n\t\tdrv, done := init(t)\n\t\tdefer done()\n\n\t\t// Fetch a page of 2 results: 0, 1.\n\t\tpage, err := drv.ListPaged(ctx, &driver.ListOptions{\n\t\t\tPageSize: 2,\n\t\t\tPrefix:   keyPrefix,\n\t\t})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot := gotIndices(t, page.Objects)\n\t\twant := []int{0, 1}\n\t\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\t\tt.Fatalf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, want, diff)\n\t\t}\n\n\t\t// Insert a key \"0a\" in the middle of the page we already retrieved.\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\t\tkey := page.Objects[0].Key + \"a\"\n\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer func() {\n\t\t\t_ = b.Delete(ctx, key)\n\t\t}()\n\n\t\t// Fetch the next page. It should not include 0, 0a, or 1, and it should\n\t\t// include 2.\n\t\tpage, err = drv.ListPaged(ctx, &driver.ListOptions{\n\t\t\tPrefix:    keyPrefix,\n\t\t\tPageToken: page.NextPageToken,\n\t\t})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot = gotIndices(t, page.Objects)\n\t\twant = []int{2}\n\t\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, want, diff)\n\t\t}\n\t})\n\n\t// Verify pagination works when deleting in a retrieved page.\n\tt.Run(\"PaginationConsistencyAfterDelete\", func(t *testing.T) {\n\t\tdrv, done := init(t)\n\t\tdefer done()\n\n\t\t// Fetch a page of 2 results: 0, 1.\n\t\tpage, err := drv.ListPaged(ctx, &driver.ListOptions{\n\t\t\tPageSize: 2,\n\t\t\tPrefix:   keyPrefix,\n\t\t})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot := gotIndices(t, page.Objects)\n\t\twant := []int{0, 1}\n\t\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\t\tt.Fatalf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, want, diff)\n\t\t}\n\n\t\t// Delete key \"1\".\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\t\tkey := page.Objects[1].Key\n\t\tif err := b.Delete(ctx, key); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer func() {\n\t\t\t_ = b.WriteAll(ctx, key, content, nil)\n\t\t}()\n\n\t\t// Fetch the next page. It should not include 0 or 1, and it should\n\t\t// include 2.\n\t\tpage, err = drv.ListPaged(ctx, &driver.ListOptions{\n\t\t\tPrefix:    keyPrefix,\n\t\t\tPageToken: page.NextPageToken,\n\t\t})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot = gotIndices(t, page.Objects)\n\t\twant = []int{2}\n\t\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, want, diff)\n\t\t}\n\t})\n}\n\n// testListWeirdKeys tests the functionality of List on weird keys.\nfunc testListWeirdKeys(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst keyPrefix = \"list-weirdkeys-\"\n\tcontent := []byte(\"hello\")\n\tctx := context.Background()\n\n\t// We're going to create a blob for each of the weird key strings, and\n\t// then verify we can see them with List.\n\twant := map[string]bool{}\n\tfor _, k := range escape.WeirdStrings {\n\t\twant[keyPrefix+k] = true\n\t}\n\n\t// Creates blobs for sub-tests below.\n\t// We only create the blobs once, for efficiency and because there's\n\t// no guarantee that after we create them they will be immediately returned\n\t// from List. The very first time the test is run against a Bucket, it may be\n\t// flaky due to this race.\n\tinit := func(t *testing.T) (*blob.Bucket, func()) {\n\t\tt.Helper()\n\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\t// See if the blobs are already there.\n\t\tb := blob.NewBucket(drv)\n\t\titer := b.List(&blob.ListOptions{Prefix: keyPrefix})\n\t\tfound := iterToSetOfKeys(ctx, t, iter)\n\t\tfor _, k := range escape.WeirdStrings {\n\t\t\tkey := keyPrefix + k\n\t\t\tif !found[key] {\n\t\t\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\t\t\tb.Close()\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn b, func() { b.Close(); h.Close() }\n\t}\n\n\tb, done := init(t)\n\tdefer done()\n\n\titer := b.List(&blob.ListOptions{Prefix: keyPrefix})\n\tgot := iterToSetOfKeys(ctx, t, iter)\n\n\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, want, diff)\n\t}\n}\n\n// listResult is a recursive view of the hierarchy. It's used to verify List\n// using Delimiter.\ntype listResult struct {\n\tKey   string\n\tIsDir bool\n\t// If IsDir is true and recursion is enabled, the recursive listing of the directory.\n\tSub []listResult\n}\n\n// doList lists b using prefix and delim.\n// If recurse is true, it recurses into directories filling in listResult.Sub.\nfunc doList(ctx context.Context, b *blob.Bucket, prefix, delim string, recurse bool) ([]listResult, error) {\n\titer := b.List(&blob.ListOptions{\n\t\tPrefix:    prefix,\n\t\tDelimiter: delim,\n\t})\n\tvar retval []listResult\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tif obj != nil {\n\t\t\t\treturn nil, errors.New(\"obj is not nil on EOF\")\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tvar sub []listResult\n\t\tif obj.IsDir && recurse {\n\t\t\tsub, err = doList(ctx, b, obj.Key, delim, true)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\tretval = append(retval, listResult{\n\t\t\tKey:   obj.Key,\n\t\t\tIsDir: obj.IsDir,\n\t\t\tSub:   sub,\n\t\t})\n\t}\n\treturn retval, nil\n}\n\n// testListDelimiters tests the functionality of List using Delimiters.\nfunc testListDelimiters(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst keyPrefix = \"blob-for-delimiters-\"\n\tcontent := []byte(\"hello\")\n\n\t// The set of files to use for these tests. The strings in each entry will\n\t// be joined using delim, so the result is a directory structure like this\n\t// (using / as delimiter):\n\t// dir1/a.txt\n\t// dir1/b.txt\n\t// dir1/subdir/c.txt\n\t// dir1/subdir/d.txt\n\t// dir2/e.txt\n\t// f.txt\n\tkeys := [][]string{\n\t\t{\"dir1\", \"a.txt\"},\n\t\t{\"dir1\", \"b.txt\"},\n\t\t{\"dir1\", \"subdir\", \"c.txt\"},\n\t\t{\"dir1\", \"subdir\", \"d.txt\"},\n\t\t{\"dir2\", \"e.txt\"},\n\t\t{\"f.txt\"},\n\t}\n\n\t// Test with several different delimiters.\n\ttests := []struct {\n\t\tname, delim string\n\t\t// Expected result of doList with an empty delimiter.\n\t\t// All keys should be listed at the top level, with no directories.\n\t\twantFlat []listResult\n\t\t// Expected result of doList with delimiter and recurse = true.\n\t\t// All keys should be listed, with keys in directories in the Sub field\n\t\t// of their directory.\n\t\twantRecursive []listResult\n\t\t// Expected result of repeatedly calling driver.ListPaged with delimiter\n\t\t// and page size = 1.\n\t\twantPaged []listResult\n\t\t// expected result of doList with delimiter and recurse = false\n\t\t// after dir2/e.txt is deleted\n\t\t// dir1/ and f.txt should be listed; dir2/ should no longer be present\n\t\t// because there are no keys in it.\n\t\twantAfterDel []listResult\n\t}{\n\t\t{\n\t\t\tname:  \"fwdslash\",\n\t\t\tdelim: \"/\",\n\t\t\twantFlat: []listResult{\n\t\t\t\t{Key: keyPrefix + \"/dir1/a.txt\"},\n\t\t\t\t{Key: keyPrefix + \"/dir1/b.txt\"},\n\t\t\t\t{Key: keyPrefix + \"/dir1/subdir/c.txt\"},\n\t\t\t\t{Key: keyPrefix + \"/dir1/subdir/d.txt\"},\n\t\t\t\t{Key: keyPrefix + \"/dir2/e.txt\"},\n\t\t\t\t{Key: keyPrefix + \"/f.txt\"},\n\t\t\t},\n\t\t\twantRecursive: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"/dir1/\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t{Key: keyPrefix + \"/dir1/a.txt\"},\n\t\t\t\t\t\t{Key: keyPrefix + \"/dir1/b.txt\"},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   keyPrefix + \"/dir1/subdir/\",\n\t\t\t\t\t\t\tIsDir: true,\n\t\t\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t\t\t{Key: keyPrefix + \"/dir1/subdir/c.txt\"},\n\t\t\t\t\t\t\t\t{Key: keyPrefix + \"/dir1/subdir/d.txt\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"/dir2/\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t{Key: keyPrefix + \"/dir2/e.txt\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"/f.txt\"},\n\t\t\t},\n\t\t\twantPaged: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"/dir1/\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"/dir2/\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"/f.txt\"},\n\t\t\t},\n\t\t\twantAfterDel: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"/dir1/\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"/f.txt\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"backslash\",\n\t\t\tdelim: \"\\\\\",\n\t\t\twantFlat: []listResult{\n\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\a.txt\"},\n\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\b.txt\"},\n\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\subdir\\\\c.txt\"},\n\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\subdir\\\\d.txt\"},\n\t\t\t\t{Key: keyPrefix + \"\\\\dir2\\\\e.txt\"},\n\t\t\t\t{Key: keyPrefix + \"\\\\f.txt\"},\n\t\t\t},\n\t\t\twantRecursive: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"\\\\dir1\\\\\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\a.txt\"},\n\t\t\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\b.txt\"},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   keyPrefix + \"\\\\dir1\\\\subdir\\\\\",\n\t\t\t\t\t\t\tIsDir: true,\n\t\t\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\subdir\\\\c.txt\"},\n\t\t\t\t\t\t\t\t{Key: keyPrefix + \"\\\\dir1\\\\subdir\\\\d.txt\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"\\\\dir2\\\\\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t{Key: keyPrefix + \"\\\\dir2\\\\e.txt\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"\\\\f.txt\"},\n\t\t\t},\n\t\t\twantPaged: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"\\\\dir1\\\\\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"\\\\dir2\\\\\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"\\\\f.txt\"},\n\t\t\t},\n\t\t\twantAfterDel: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"\\\\dir1\\\\\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"\\\\f.txt\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:  \"abc\",\n\t\t\tdelim: \"abc\",\n\t\t\twantFlat: []listResult{\n\t\t\t\t{Key: keyPrefix + \"abcdir1abca.txt\"},\n\t\t\t\t{Key: keyPrefix + \"abcdir1abcb.txt\"},\n\t\t\t\t{Key: keyPrefix + \"abcdir1abcsubdirabcc.txt\"},\n\t\t\t\t{Key: keyPrefix + \"abcdir1abcsubdirabcd.txt\"},\n\t\t\t\t{Key: keyPrefix + \"abcdir2abce.txt\"},\n\t\t\t\t{Key: keyPrefix + \"abcf.txt\"},\n\t\t\t},\n\t\t\twantRecursive: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"abcdir1abc\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t{Key: keyPrefix + \"abcdir1abca.txt\"},\n\t\t\t\t\t\t{Key: keyPrefix + \"abcdir1abcb.txt\"},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tKey:   keyPrefix + \"abcdir1abcsubdirabc\",\n\t\t\t\t\t\t\tIsDir: true,\n\t\t\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t\t\t{Key: keyPrefix + \"abcdir1abcsubdirabcc.txt\"},\n\t\t\t\t\t\t\t\t{Key: keyPrefix + \"abcdir1abcsubdirabcd.txt\"},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"abcdir2abc\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t\tSub: []listResult{\n\t\t\t\t\t\t{Key: keyPrefix + \"abcdir2abce.txt\"},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"abcf.txt\"},\n\t\t\t},\n\t\t\twantPaged: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"abcdir1abc\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"abcdir2abc\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"abcf.txt\"},\n\t\t\t},\n\t\t\twantAfterDel: []listResult{\n\t\t\t\t{\n\t\t\t\t\tKey:   keyPrefix + \"abcdir1abc\",\n\t\t\t\t\tIsDir: true,\n\t\t\t\t},\n\t\t\t\t{Key: keyPrefix + \"abcf.txt\"},\n\t\t\t},\n\t\t},\n\t}\n\n\tctx := context.Background()\n\n\t// Creates blobs for sub-tests below.\n\t// We only create the blobs once, for efficiency and because there's\n\t// no guarantee that after we create them they will be immediately returned\n\t// from List. The very first time the test is run against a Bucket, it may be\n\t// flaky due to this race.\n\tinit := func(t *testing.T, delim string) (driver.Bucket, *blob.Bucket, func()) {\n\t\tt.Helper()\n\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\n\t\t// See if the blobs are already there.\n\t\tprefix := keyPrefix + delim\n\t\titer := b.List(&blob.ListOptions{Prefix: prefix})\n\t\tfound := iterToSetOfKeys(ctx, t, iter)\n\t\tfor _, keyParts := range keys {\n\t\t\tkey := prefix + strings.Join(keyParts, delim)\n\t\t\tif !found[key] {\n\t\t\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\t\t\tb.Close()\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn drv, b, func() { b.Close(); h.Close() }\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tdrv, b, done := init(t, tc.delim)\n\t\t\tdefer done()\n\n\t\t\t// Fetch without using delimiter.\n\t\t\tgot, err := doList(ctx, b, keyPrefix+tc.delim, \"\", true)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, tc.wantFlat); diff != \"\" {\n\t\t\t\tt.Errorf(\"with no delimiter, got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, tc.wantFlat, diff)\n\t\t\t}\n\n\t\t\t// Fetch using delimiter, recursively.\n\t\t\tgot, err = doList(ctx, b, keyPrefix+tc.delim, tc.delim, true)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, tc.wantRecursive); diff != \"\" {\n\t\t\t\tt.Errorf(\"with delimiter, got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, tc.wantRecursive, diff)\n\t\t\t}\n\n\t\t\t// Test pagination via driver.ListPaged.\n\t\t\tvar nextPageToken []byte\n\t\t\tgot = nil\n\t\t\tfor {\n\t\t\t\tpage, err := drv.ListPaged(ctx, &driver.ListOptions{\n\t\t\t\t\tPrefix:    keyPrefix + tc.delim,\n\t\t\t\t\tDelimiter: tc.delim,\n\t\t\t\t\tPageSize:  1,\n\t\t\t\t\tPageToken: nextPageToken,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tif len(page.Objects) > 1 {\n\t\t\t\t\tt.Errorf(\"got %d objects on a page, want 0 or 1\", len(page.Objects))\n\t\t\t\t}\n\t\t\t\tfor _, obj := range page.Objects {\n\t\t\t\t\tgot = append(got, listResult{\n\t\t\t\t\t\tKey:   obj.Key,\n\t\t\t\t\t\tIsDir: obj.IsDir,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif len(page.NextPageToken) == 0 {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tnextPageToken = page.NextPageToken\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, tc.wantPaged); diff != \"\" {\n\t\t\t\tt.Errorf(\"paged got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, tc.wantPaged, diff)\n\t\t\t}\n\n\t\t\t// Delete dir2/e.txt and verify that dir2/ is no longer returned.\n\t\t\tkey := strings.Join(append([]string{keyPrefix}, \"dir2\", \"e.txt\"), tc.delim)\n\t\t\tif err := b.Delete(ctx, key); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t// Attempt to restore dir2/e.txt at the end of the test for the next run.\n\t\t\tdefer func() {\n\t\t\t\t_ = b.WriteAll(ctx, key, content, nil)\n\t\t\t}()\n\n\t\t\tgot, err = doList(ctx, b, keyPrefix+tc.delim, tc.delim, false)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, tc.wantAfterDel); diff != \"\" {\n\t\t\t\tt.Errorf(\"after delete, got\\n%v\\nwant\\n%v\\ndiff\\n%s\", got, tc.wantAfterDel, diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// testDirsWithCharactersBeforeDelimiter tests a case where there's\n// a directory on a pagination boundary that ends with a character that's\n// less than the delimiter.\n// See https://github.com/google/go-cloud/issues/3089.\nfunc testDirsWithCharactersBeforeDelimiter(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst keyPrefix = \"blob-for-dirs-with-chars-before-delimiter/\"\n\tcontent := []byte(\"hello\")\n\n\t// The set of files to use for these tests.\n\tkeys := []string{\n\t\t\"testFile1\",\n\t\t\"t/t/t\",\n\t\t\"t-/t.\",\n\t\t\"dir1/testFile1dir1\",\n\t\t\"dir2/testFile1dir2\",\n\t\t\"d\",\n\t}\n\n\t// Note that \"t-/\" is before \"t/\". The delimiter is included in the\n\t// alphabetical ordering.\n\twant := []string{\"d\", \"dir1/\", \"dir2/\", \"t-/\", \"t/\", \"testFile1\"}\n\n\t// Create blobs.\n\t// We only create the blobs once, for efficiency and because there's\n\t// no guarantee that after we create them they will be immediately returned\n\t// from List. The very first time the test is run against a Bucket, it may be\n\t// flaky due to this race.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\n\t// See if the blobs are already there.\n\titer := b.List(&blob.ListOptions{Prefix: keyPrefix})\n\tfound := iterToSetOfKeys(ctx, t, iter)\n\tfor _, key := range keys {\n\t\tkey = keyPrefix + key\n\t\tif !found[key] {\n\t\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\t\tb.Close()\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}\n\t}\n\tdefer b.Close()\n\tdefer h.Close()\n\n\topts := &blob.ListOptions{\n\t\tPrefix:    keyPrefix,\n\t\tDelimiter: \"/\",\n\t}\n\t// All page sizes should return the same end result.\n\tfor pageSize := 10; pageSize != 0; pageSize-- {\n\t\tvar got []string\n\t\tobjs, token, err := b.ListPage(ctx, blob.FirstPageToken, pageSize, opts)\n\t\tfor {\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tfor _, o := range objs {\n\t\t\t\tkey := strings.TrimPrefix(o.Key, keyPrefix)\n\t\t\t\tgot = append(got, key)\n\t\t\t}\n\t\t\tif token == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tobjs, token, err = b.ListPage(ctx, token, pageSize, opts)\n\t\t}\n\t\tif !reflect.DeepEqual(want, got) {\n\t\t\tt.Fatalf(\"For page size %d, got \\n%v\\nwant\\n%v\", pageSize, got, want)\n\t\t}\n\t}\n}\n\nfunc iterToSetOfKeys(ctx context.Context, t *testing.T, iter *blob.ListIterator) map[string]bool {\n\tt.Helper()\n\n\tretval := map[string]bool{}\n\tfor {\n\t\tif item, err := iter.Next(ctx); err == io.EOF {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\tt.Fatal(err)\n\t\t} else {\n\t\t\tretval[item.Key] = true\n\t\t}\n\t}\n\treturn retval\n}\n\n// testRead tests the functionality of NewReader, NewRangeReader, and Reader.\nfunc testRead(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-reading\"\n\tcontent := []byte(\"abcdefghijklmnopqurstuvwxyz\")\n\tcontentSize := int64(len(content))\n\n\ttests := []struct {\n\t\tname           string\n\t\tkey            string\n\t\toffset, length int64\n\t\twant           []byte\n\t\twantReadSize   int64\n\t\twantErr        bool\n\t\t// set to true to skip creation of the object for\n\t\t// tests where we expect an error without any actual\n\t\t// read.\n\t\tskipCreate bool\n\t}{\n\t\t{\n\t\t\tname:    \"read of nonexistent key fails\",\n\t\t\tkey:     \"key-does-not-exist\",\n\t\t\tlength:  -1,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:       \"negative offset fails\",\n\t\t\tkey:        key,\n\t\t\toffset:     -1,\n\t\t\twantErr:    true,\n\t\t\tskipCreate: true,\n\t\t},\n\t\t{\n\t\t\tname: \"length 0 read\",\n\t\t\tkey:  key,\n\t\t\twant: []byte{},\n\t\t},\n\t\t{\n\t\t\tname:         \"read from positive offset to end\",\n\t\t\tkey:          key,\n\t\t\toffset:       10,\n\t\t\tlength:       -1,\n\t\t\twant:         content[10:],\n\t\t\twantReadSize: contentSize - 10,\n\t\t},\n\t\t{\n\t\t\tname:         \"read a part in middle\",\n\t\t\tkey:          key,\n\t\t\toffset:       10,\n\t\t\tlength:       5,\n\t\t\twant:         content[10:15],\n\t\t\twantReadSize: 5,\n\t\t},\n\t\t{\n\t\t\tname:         \"read in full\",\n\t\t\tkey:          key,\n\t\t\tlength:       -1,\n\t\t\twant:         content,\n\t\t\twantReadSize: contentSize,\n\t\t},\n\t\t{\n\t\t\tname:         \"read in full with negative length not -1\",\n\t\t\tkey:          key,\n\t\t\tlength:       -42,\n\t\t\twant:         content,\n\t\t\twantReadSize: contentSize,\n\t\t},\n\t}\n\n\tctx := context.Background()\n\n\t// Creates a blob for sub-tests below.\n\tinit := func(t *testing.T, skipCreate bool) (*blob.Bucket, func()) {\n\t\tt.Helper()\n\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tif skipCreate {\n\t\t\treturn b, func() { b.Close(); h.Close() }\n\t\t}\n\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\tb.Close()\n\t\t\tt.Fatal(err)\n\t\t}\n\t\treturn b, func() {\n\t\t\t_ = b.Delete(ctx, key)\n\t\t\tb.Close()\n\t\t\th.Close()\n\t\t}\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tb, done := init(t, tc.skipCreate)\n\t\t\tdefer done()\n\n\t\t\tr, err := b.NewRangeReader(ctx, tc.key, tc.offset, tc.length, nil)\n\t\t\tif (err != nil) != tc.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, tc.wantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer r.Close()\n\t\t\t// Make the buffer bigger than needed to make sure we actually only read\n\t\t\t// the expected number of bytes.\n\t\t\tgot := make([]byte, tc.wantReadSize+10)\n\t\t\tn, err := r.Read(got)\n\t\t\t// EOF error is optional, see https://golang.org/pkg/io/#Reader.\n\t\t\tif err != nil && err != io.EOF {\n\t\t\t\tt.Errorf(\"unexpected error during read: %v\", err)\n\t\t\t}\n\t\t\tif int64(n) != tc.wantReadSize {\n\t\t\t\tt.Errorf(\"got read length %d want %d\", n, tc.wantReadSize)\n\t\t\t}\n\t\t\tif !cmp.Equal(got[:tc.wantReadSize], tc.want) {\n\t\t\t\tt.Errorf(\"got %q want %q\", string(got), string(tc.want))\n\t\t\t}\n\t\t\tif r.Size() != contentSize {\n\t\t\t\tt.Errorf(\"got size %d want %d\", r.Size(), contentSize)\n\t\t\t}\n\t\t\tif r.ModTime().IsZero() {\n\t\t\t\tt.Errorf(\"got zero mod time, want non-zero\")\n\t\t\t}\n\t\t\t// For tests that successfully read, recreate the io.Reader and\n\t\t\t// test it with iotest.TestReader.\n\t\t\tr, err = b.NewRangeReader(ctx, tc.key, tc.offset, tc.length, nil)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"failed to recreate Reader: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer r.Close()\n\t\t\tif err = iotest.TestReader(r, tc.want); err != nil {\n\t\t\t\tt.Errorf(\"iotest.TestReader failed: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t})\n\t}\n}\n\n// testAttributes tests Attributes.\nfunc testAttributes(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tdirKey             = \"someDir\"\n\t\tkey                = dirKey + \"/blob-for-attributes\"\n\t\tcontentType        = \"text/plain\"\n\t\tcacheControl       = \"no-cache\"\n\t\tcontentDisposition = \"inline\"\n\t\tcontentEncoding    = \"identity\"\n\t\tcontentLanguage    = \"en\"\n\t)\n\tcontent := []byte(\"Hello World!\")\n\n\tctx := context.Background()\n\n\t// Creates a blob for sub-tests below.\n\tinit := func(t *testing.T) (*blob.Bucket, func()) {\n\t\tt.Helper()\n\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\topts := &blob.WriterOptions{\n\t\t\tContentType:        contentType,\n\t\t\tCacheControl:       cacheControl,\n\t\t\tContentDisposition: contentDisposition,\n\t\t\tContentEncoding:    contentEncoding,\n\t\t\tContentLanguage:    contentLanguage,\n\t\t}\n\t\tif err := b.WriteAll(ctx, key, content, opts); err != nil {\n\t\t\tb.Close()\n\t\t\tt.Fatal(err)\n\t\t}\n\t\treturn b, func() {\n\t\t\t_ = b.Delete(ctx, key)\n\t\t\tb.Close()\n\t\t\th.Close()\n\t\t}\n\t}\n\n\tb, done := init(t)\n\tdefer done()\n\n\tfor _, badKey := range []string{\n\t\t\"not-found\",\n\t\tdirKey,\n\t\tdirKey + \"/\",\n\t} {\n\t\t_, err := b.Attributes(ctx, badKey)\n\t\tif err == nil {\n\t\t\tt.Errorf(\"got nil want error\")\n\t\t} else if gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\tt.Errorf(\"got %v want NotFound error\", err)\n\t\t} else if !strings.Contains(err.Error(), badKey) {\n\t\t\tt.Errorf(\"got %v want error to include missing key\", err)\n\t\t}\n\t}\n\n\ta, err := b.Attributes(ctx, key)\n\tif err != nil {\n\t\tt.Fatalf(\"failed Attributes: %v\", err)\n\t}\n\t// Also make a Reader so we can verify the subset of attributes\n\t// that it exposes.\n\tr, err := b.NewReader(ctx, key, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"failed Attributes: %v\", err)\n\t}\n\tif a.CacheControl != cacheControl {\n\t\tt.Errorf(\"got CacheControl %q want %q\", a.CacheControl, cacheControl)\n\t}\n\tif a.ContentDisposition != contentDisposition {\n\t\tt.Errorf(\"got ContentDisposition %q want %q\", a.ContentDisposition, contentDisposition)\n\t}\n\tif a.ContentEncoding != contentEncoding {\n\t\tt.Errorf(\"got ContentEncoding %q want %q\", a.ContentEncoding, contentEncoding)\n\t}\n\tif a.ContentLanguage != contentLanguage {\n\t\tt.Errorf(\"got ContentLanguage %q want %q\", a.ContentLanguage, contentLanguage)\n\t}\n\tif a.ContentType != contentType {\n\t\tt.Errorf(\"got ContentType %q want %q\", a.ContentType, contentType)\n\t}\n\tif r.ContentType() != contentType {\n\t\tt.Errorf(\"got Reader.ContentType() %q want %q\", r.ContentType(), contentType)\n\t}\n\tif !a.CreateTime.IsZero() {\n\t\tif a.CreateTime.After(a.ModTime) {\n\t\t\tt.Errorf(\"CreateTime %v is after ModTime %v\", a.CreateTime, a.ModTime)\n\t\t}\n\t}\n\tif a.ModTime.IsZero() {\n\t\tt.Errorf(\"ModTime not set\")\n\t}\n\tif a.Size != int64(len(content)) {\n\t\tt.Errorf(\"got Size %d want %d\", a.Size, len(content))\n\t}\n\tif r.Size() != int64(len(content)) {\n\t\tt.Errorf(\"got Reader.Size() %d want %d\", r.Size(), len(content))\n\t}\n\tif a.ETag == \"\" {\n\t\tt.Error(\"ETag not set\")\n\t}\n\t// Some basic syntax checks on ETag based on https://en.wikipedia.org/wiki/HTTP_ETag.\n\t// It should be of the form \"xxxx\" or W/\"xxxx\".\n\tif !strings.HasPrefix(a.ETag, \"W/\\\"\") && !strings.HasPrefix(a.ETag, \"\\\"\") {\n\t\tt.Errorf(\"ETag should start with W/\\\" or \\\" (got %s)\", a.ETag)\n\t}\n\tif !strings.HasSuffix(a.ETag, \"\\\"\") {\n\t\tt.Errorf(\"ETag should end with \\\" (got %s)\", a.ETag)\n\t}\n\tr.Close()\n\n\t// Modify and re-fetch attributes.\n\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ta2, err := b.Attributes(ctx, key)\n\tif err != nil {\n\t\tt.Errorf(\"failed Attributes#2: %v\", err)\n\t}\n\tif a2.ModTime.Before(a.ModTime) {\n\t\tt.Errorf(\"ModTime %v is before %v\", a2.ModTime, a.ModTime)\n\t}\n}\n\n// loadTestData loads test data, inlined using go-bindata.\nfunc loadTestData(tb testing.TB, name string) []byte {\n\ttb.Helper()\n\n\tdata, err := Asset(name)\n\tif err != nil {\n\t\ttb.Fatal(err)\n\t}\n\treturn data\n}\n\n// testWrite tests the functionality of NewWriter and Writer.\nfunc testWrite(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-reading\"\n\tconst existingContent = \"existing content\"\n\tsmallText := loadTestData(t, \"test-small.txt\")\n\tmediumHTML := loadTestData(t, \"test-medium.html\")\n\tlargeJpg := loadTestData(t, \"test-large.jpg\")\n\thelloWorld := []byte(\"hello world\")\n\thelloWorldMD5 := md5.Sum(helloWorld)\n\n\ttests := []struct {\n\t\tname                        string\n\t\tkey                         string\n\t\texists                      bool\n\t\tcontent                     []byte\n\t\tcontentType                 string\n\t\tdisableContentTypeDetection bool\n\t\tcontentMD5                  []byte\n\t\tfirstChunk                  int\n\t\twantContentType             *regexp.Regexp\n\t\twantErr                     bool\n\t\twantReadErr                 bool // if wantErr is true, and Read after err should fail with something other than NotExists\n\t}{\n\t\t{\n\t\t\tname:        \"write to empty key fails\",\n\t\t\twantErr:     true,\n\t\t\twantReadErr: true, // read from empty key fails, but not always with NotExists\n\t\t},\n\t\t{\n\t\t\tname: \"no write then close results in empty blob\",\n\t\t\tkey:  key,\n\t\t},\n\t\t{\n\t\t\tname: \"no write then close results in empty blob, blob existed\",\n\t\t\tkey:  key,\n\t\t},\n\t\t{\n\t\t\tname:        \"invalid ContentType fails\",\n\t\t\tkey:         key,\n\t\t\tcontentType: \"application/octet/stream\",\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tname:            \"ContentType is discovered if not provided\",\n\t\t\tkey:             key,\n\t\t\tcontent:         mediumHTML,\n\t\t\twantContentType: regexp.MustCompile(\"text/html\"),\n\t\t},\n\t\t{\n\t\t\tname:                        \"ContentType is left empty if not provided and DisableContentTypeDetection is true\",\n\t\t\tkey:                         key,\n\t\t\tcontent:                     mediumHTML,\n\t\t\tdisableContentTypeDetection: true,\n\t\t\t// Sadly we can't really verify this; even though we write the ContentType\n\t\t\t// empty, different providers return different values when we read it,\n\t\t\t// from \"application/octet-stream\" to their own sniffing.\n\t\t\t// wantContentType:             regexp.MustCompile(\"^$\"),\n\t\t},\n\t\t{\n\t\t\tname:            \"write with explicit ContentType overrides discovery\",\n\t\t\tkey:             key,\n\t\t\tcontent:         mediumHTML,\n\t\t\tcontentType:     \"application/json\",\n\t\t\twantContentType: regexp.MustCompile(\"application/json\"),\n\t\t},\n\t\t{\n\t\t\tname:       \"Content md5 match\",\n\t\t\tkey:        key,\n\t\t\tcontent:    helloWorld,\n\t\t\tcontentMD5: helloWorldMD5[:],\n\t\t},\n\t\t{\n\t\t\tname:       \"Content md5 did not match\",\n\t\t\tkey:        key,\n\t\t\tcontent:    []byte(\"not hello world\"),\n\t\t\tcontentMD5: helloWorldMD5[:],\n\t\t\twantErr:    true,\n\t\t},\n\t\t{\n\t\t\tname:       \"Content md5 did not match, blob existed\",\n\t\t\texists:     true,\n\t\t\tkey:        key,\n\t\t\tcontent:    []byte(\"not hello world\"),\n\t\t\tcontentMD5: helloWorldMD5[:],\n\t\t\twantErr:    true,\n\t\t},\n\t\t{\n\t\t\tname:            \"a small text file gets a ContentType\",\n\t\t\tkey:             key,\n\t\t\tcontent:         smallText,\n\t\t\twantContentType: regexp.MustCompile(\"text/plain.*\"),\n\t\t},\n\t\t{\n\t\t\tname:            \"a large jpg file gets a ContentType\",\n\t\t\tkey:             key,\n\t\t\tcontent:         largeJpg,\n\t\t\twantContentType: regexp.MustCompile(\"image/jpeg\"),\n\t\t},\n\t\t{\n\t\t\tname:            \"a large jpg file written in two chunks gets a ContentType\",\n\t\t\tkey:             key,\n\t\t\tfirstChunk:      10,\n\t\t\tcontent:         largeJpg,\n\t\t\twantContentType: regexp.MustCompile(\"image/jpeg\"),\n\t\t},\n\t\t// TODO(issue #304): Fails for GCS.\n\t\t/*\n\t\t\t{\n\t\t\t\tname:            \"ContentType is parsed and reformatted\",\n\t\t\t\tkey:             key,\n\t\t\t\tcontent:         []byte(\"foo\"),\n\t\t\t\tcontentType:     `FORM-DATA;name=\"foo\"`,\n\t\t\t\twantContentType: `form-data; name=foo`,\n\t\t\t},\n\t\t*/\n\t}\n\n\tctx := context.Background()\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\th, err := newHarness(ctx, t)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdefer h.Close()\n\t\t\tdrv, err := h.MakeDriver(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tb := blob.NewBucket(drv)\n\t\t\tdefer b.Close()\n\n\t\t\t// If the test wants the blob to already exist, write it.\n\t\t\tif tc.exists {\n\t\t\t\tif err := b.WriteAll(ctx, key, []byte(existingContent), nil); err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tdefer func() {\n\t\t\t\t\t_ = b.Delete(ctx, key)\n\t\t\t\t}()\n\t\t\t}\n\n\t\t\t// Write the content.\n\t\t\topts := &blob.WriterOptions{\n\t\t\t\tContentType:                 tc.contentType,\n\t\t\t\tDisableContentTypeDetection: tc.disableContentTypeDetection,\n\t\t\t\tContentMD5:                  tc.contentMD5[:],\n\t\t\t}\n\t\t\tw, err := b.NewWriter(ctx, tc.key, opts)\n\t\t\tif err == nil {\n\t\t\t\tif len(tc.content) > 0 {\n\t\t\t\t\tif tc.firstChunk == 0 {\n\t\t\t\t\t\t// Write the whole thing.\n\t\t\t\t\t\t_, err = w.Write(tc.content)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Write it in 2 chunks.\n\t\t\t\t\t\t_, err = w.Write(tc.content[:tc.firstChunk])\n\t\t\t\t\t\tif err == nil {\n\t\t\t\t\t\t\t_, err = w.Write(tc.content[tc.firstChunk:])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\terr = w.Close()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (err != nil) != tc.wantErr {\n\t\t\t\tt.Errorf(\"NewWriter or Close got err %v want error %v\", err, tc.wantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\t// The write failed; verify that it had no effect.\n\t\t\t\tbuf, err := b.ReadAll(ctx, tc.key)\n\t\t\t\tif tc.exists {\n\t\t\t\t\t// Verify the previous content is still there.\n\t\t\t\t\tif !bytes.Equal(buf, []byte(existingContent)) {\n\t\t\t\t\t\tt.Errorf(\"Write failed as expected, but content doesn't match expected previous content; got \\n%s\\n want \\n%s\", string(buf), existingContent)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Verify that the read fails with NotFound.\n\t\t\t\t\tif err == nil {\n\t\t\t\t\t\tt.Error(\"Write failed as expected, but Read after that didn't return an error\")\n\t\t\t\t\t} else if !tc.wantReadErr && gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\t\t\t\tt.Errorf(\"Write failed as expected, but Read after that didn't return the right error; got %v want NotFound\", err)\n\t\t\t\t\t} else if !strings.Contains(err.Error(), tc.key) {\n\t\t\t\t\t\tt.Errorf(\"got %v want error to include missing key\", err)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer func() { _ = b.Delete(ctx, tc.key) }()\n\n\t\t\t// Read it back.\n\t\t\tbuf, err := b.ReadAll(ctx, tc.key)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif !bytes.Equal(buf, tc.content) {\n\t\t\t\tif len(buf) < 100 && len(tc.content) < 100 {\n\t\t\t\t\tt.Errorf(\"read didn't match write; got \\n%s\\n want \\n%s\", string(buf), string(tc.content))\n\t\t\t\t} else {\n\t\t\t\t\tt.Error(\"read didn't match write, content too large to display\")\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Verify the ContentType.\n\t\t\tif tc.wantContentType != nil {\n\t\t\t\tattrs, err := b.Attributes(ctx, tc.key)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tif !tc.wantContentType.MatchString(attrs.ContentType) {\n\t\t\t\t\tt.Errorf(\"got ContentType %q, want one matching %v\", attrs.ContentType, tc.wantContentType)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\n// testCanceledWrite tests the functionality of canceling an in-progress write.\nfunc testCanceledWrite(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-canceled-write\"\n\tcontent := []byte(\"hello world\")\n\tcancelContent := []byte(\"going to cancel\")\n\n\ttests := []struct {\n\t\tdescription string\n\t\tcontentType string\n\t\texists      bool\n\t}{\n\t\t{\n\t\t\t// The write will be buffered in the portable type as part of\n\t\t\t// ContentType detection, so the first call to the Driver will be Close.\n\t\t\tdescription: \"EmptyContentType\",\n\t\t},\n\t\t{\n\t\t\t// The write will be sent to the Driver, which may do its own\n\t\t\t// internal buffering.\n\t\t\tdescription: \"NonEmptyContentType\",\n\t\t\tcontentType: \"text/plain\",\n\t\t},\n\t\t{\n\t\t\tdescription: \"BlobExists\",\n\t\t\texists:      true,\n\t\t},\n\t\t// TODO(issue #482): Find a way to test that a chunked upload that's interrupted\n\t\t// after some chunks are uploaded cancels correctly.\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.description, func(t *testing.T) {\n\t\t\tcancelCtx, cancel := context.WithCancel(ctx)\n\t\t\th, err := newHarness(ctx, t)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdefer h.Close()\n\t\t\tdrv, err := h.MakeDriver(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tb := blob.NewBucket(drv)\n\t\t\tdefer b.Close()\n\n\t\t\topts := &blob.WriterOptions{\n\t\t\t\tContentType: test.contentType,\n\t\t\t}\n\t\t\t// If the test wants the blob to already exist, write it.\n\t\t\tif test.exists {\n\t\t\t\tif err := b.WriteAll(ctx, key, content, opts); err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tdefer func() {\n\t\t\t\t\t_ = b.Delete(ctx, key)\n\t\t\t\t}()\n\t\t\t}\n\n\t\t\t// Create a writer with the context that we're going\n\t\t\t// to cancel.\n\t\t\tw, err := b.NewWriter(cancelCtx, key, opts)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t// Write the content.\n\t\t\tif _, err := w.Write(cancelContent); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\n\t\t\t// Verify that the previous content (if any) is still readable,\n\t\t\t// because the write hasn't been Closed yet.\n\t\t\tgot, err := b.ReadAll(ctx, key)\n\t\t\tif test.exists {\n\t\t\t\t// The previous content should still be there.\n\t\t\t\tif !cmp.Equal(got, content) {\n\t\t\t\t\tt.Errorf(\"during unclosed write, got %q want %q\", string(got), string(content))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// The read should fail; the write hasn't been Closed so the\n\t\t\t\t// blob shouldn't exist.\n\t\t\t\tif err == nil {\n\t\t\t\t\tt.Error(\"wanted read to return an error when write is not yet Closed\")\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cancel the context to abort the write.\n\t\t\tcancel()\n\t\t\t// Close should return some kind of canceled context error.\n\t\t\t// We can't verify the kind of error cleanly, so we just verify there's\n\t\t\t// an error.\n\t\t\tif err := w.Close(); err == nil {\n\t\t\t\tt.Errorf(\"got Close error %v want canceled ctx error\", err)\n\t\t\t}\n\n\t\t\t// Verify the write was truly aborted.\n\t\t\tgot, err = b.ReadAll(ctx, key)\n\t\t\tif test.exists {\n\t\t\t\t// The previous content should still be there.\n\t\t\t\tif !cmp.Equal(got, content) {\n\t\t\t\t\tt.Errorf(\"after canceled write, got %q want %q\", string(got), string(content))\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// The read should fail; the write was aborted so the\n\t\t\t\t// blob shouldn't exist.\n\t\t\t\tif err == nil {\n\t\t\t\t\tt.Error(\"wanted read to return an error when write was canceled\")\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\n// testMetadata tests writing and reading the key/value metadata for a blob.\nfunc testMetadata(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-metadata\"\n\thello := []byte(\"hello\")\n\n\tweirdMetadata := map[string]string{}\n\tfor _, k := range escape.WeirdStrings {\n\t\tweirdMetadata[k] = k\n\t}\n\n\ttests := []struct {\n\t\tname        string\n\t\tmetadata    map[string]string\n\t\tcontent     []byte\n\t\tcontentType string\n\t\twant        map[string]string\n\t\twantErr     bool\n\t}{\n\t\t{\n\t\t\tname:     \"empty\",\n\t\t\tcontent:  hello,\n\t\t\tmetadata: map[string]string{},\n\t\t\twant:     nil,\n\t\t},\n\t\t{\n\t\t\tname:     \"empty key fails\",\n\t\t\tcontent:  hello,\n\t\t\tmetadata: map[string]string{\"\": \"empty key value\"},\n\t\t\twantErr:  true,\n\t\t},\n\t\t{\n\t\t\tname:     \"duplicate case-insensitive key fails\",\n\t\t\tcontent:  hello,\n\t\t\tmetadata: map[string]string{\"abc\": \"foo\", \"aBc\": \"bar\"},\n\t\t\twantErr:  true,\n\t\t},\n\t\t{\n\t\t\tname:    \"valid metadata\",\n\t\t\tcontent: hello,\n\t\t\tmetadata: map[string]string{\n\t\t\t\t\"key_a\": \"value-a\",\n\t\t\t\t\"kEy_B\": \"value-b\",\n\t\t\t\t\"key_c\": \"vAlUe-c\",\n\t\t\t},\n\t\t\twant: map[string]string{\n\t\t\t\t\"key_a\": \"value-a\",\n\t\t\t\t\"key_b\": \"value-b\",\n\t\t\t\t\"key_c\": \"vAlUe-c\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:     \"valid metadata with empty body\",\n\t\t\tcontent:  nil,\n\t\t\tmetadata: map[string]string{\"foo\": \"bar\"},\n\t\t\twant:     map[string]string{\"foo\": \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname:        \"valid metadata with content type\",\n\t\t\tcontent:     hello,\n\t\t\tcontentType: \"text/plain\",\n\t\t\tmetadata:    map[string]string{\"foo\": \"bar\"},\n\t\t\twant:        map[string]string{\"foo\": \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"weird metadata keys\",\n\t\t\tcontent:  hello,\n\t\t\tmetadata: weirdMetadata,\n\t\t\twant:     weirdMetadata,\n\t\t},\n\t\t{\n\t\t\tname:     \"non-utf8 metadata key\",\n\t\t\tcontent:  hello,\n\t\t\tmetadata: map[string]string{escape.NonUTF8String: \"bar\"},\n\t\t\twantErr:  true,\n\t\t},\n\t\t{\n\t\t\tname:     \"non-utf8 metadata value\",\n\t\t\tcontent:  hello,\n\t\t\tmetadata: map[string]string{\"foo\": escape.NonUTF8String},\n\t\t\twantErr:  true,\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\th, err := newHarness(ctx, t)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdefer h.Close()\n\n\t\t\tdrv, err := h.MakeDriver(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tb := blob.NewBucket(drv)\n\t\t\tdefer b.Close()\n\t\t\topts := &blob.WriterOptions{\n\t\t\t\tMetadata:    tc.metadata,\n\t\t\t\tContentType: tc.contentType,\n\t\t\t}\n\t\t\terr = b.WriteAll(ctx, key, hello, opts)\n\t\t\tif (err != nil) != tc.wantErr {\n\t\t\t\tt.Errorf(\"got error %v want error %v\", err, tc.wantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer func() {\n\t\t\t\t_ = b.Delete(ctx, key)\n\t\t\t}()\n\t\t\ta, err := b.Attributes(ctx, key)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(a.Metadata, tc.want); diff != \"\" {\n\t\t\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", a.Metadata, tc.want, diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// testMD5 tests reading MD5 hashes via List and Attributes.\nfunc testMD5(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\n\t// Define two blobs with different content; we'll write them and then verify\n\t// their returned MD5 hashes.\n\tconst aKey, bKey = \"blob-for-md5-aaa\", \"blob-for-md5-bbb\"\n\taContent, bContent := []byte(\"hello\"), []byte(\"goodbye\")\n\taMD5 := md5.Sum(aContent)\n\tbMD5 := md5.Sum(bContent)\n\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\tdefer b.Close()\n\n\t// Write the two blobs.\n\tif err := b.WriteAll(ctx, aKey, aContent, nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() { _ = b.Delete(ctx, aKey) }()\n\tif err := b.WriteAll(ctx, bKey, bContent, nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() { _ = b.Delete(ctx, bKey) }()\n\n\t// Check the MD5 we get through Attributes. Note that it's always legal to\n\t// return a nil MD5.\n\taAttr, err := b.Attributes(ctx, aKey)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif aAttr.MD5 != nil && !bytes.Equal(aAttr.MD5, aMD5[:]) {\n\t\tt.Errorf(\"got MD5\\n%x\\nwant\\n%x\", aAttr.MD5, aMD5)\n\t}\n\n\tbAttr, err := b.Attributes(ctx, bKey)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif bAttr.MD5 != nil && !bytes.Equal(bAttr.MD5, bMD5[:]) {\n\t\tt.Errorf(\"got MD5\\n%x\\nwant\\n%x\", bAttr.MD5, bMD5)\n\t}\n\n\t// Check the MD5 we get through List. Note that it's always legal to\n\t// return a nil MD5.\n\titer := b.List(&blob.ListOptions{Prefix: \"blob-for-md5-\"})\n\tobj, err := iter.Next(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif obj.Key != aKey {\n\t\tt.Errorf(\"got name %q want %q\", obj.Key, aKey)\n\t}\n\tif obj.MD5 != nil && !bytes.Equal(obj.MD5, aMD5[:]) {\n\t\tt.Errorf(\"got MD5\\n%x\\nwant\\n%x\", obj.MD5, aMD5)\n\t}\n\tobj, err = iter.Next(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif obj.Key != bKey {\n\t\tt.Errorf(\"got name %q want %q\", obj.Key, bKey)\n\t}\n\tif obj.MD5 != nil && !bytes.Equal(obj.MD5, bMD5[:]) {\n\t\tt.Errorf(\"got MD5\\n%x\\nwant\\n%x\", obj.MD5, bMD5)\n\t}\n}\n\n// testCopy tests the functionality of Copy.\nfunc testCopy(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tsrcKey             = \"blob-for-copying-src\"\n\t\tdstKey             = \"blob-for-copying-dest\"\n\t\tdstKeyExists       = \"blob-for-copying-dest-exists\"\n\t\tcontentType        = \"text/plain\"\n\t\tcacheControl       = \"no-cache\"\n\t\tcontentDisposition = \"inline\"\n\t\tcontentEncoding    = \"identity\"\n\t\tcontentLanguage    = \"en\"\n\t)\n\tcontents := []byte(\"Hello World\")\n\n\tctx := context.Background()\n\tt.Run(\"NonExistentSourceFails\", func(t *testing.T) {\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer h.Close()\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\n\t\terr = b.Copy(ctx, dstKey, \"does-not-exist\", nil)\n\t\tif err == nil {\n\t\t\tt.Errorf(\"got nil want error\")\n\t\t} else if gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\tt.Errorf(\"got %v want NotFound error\", err)\n\t\t} else if !strings.Contains(err.Error(), \"does-not-exist\") {\n\t\t\tt.Errorf(\"got %v want error to include missing key\", err)\n\t\t}\n\t})\n\n\tt.Run(\"Works\", func(t *testing.T) {\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer h.Close()\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\n\t\t// Create the source blob.\n\t\twopts := &blob.WriterOptions{\n\t\t\tContentType:        contentType,\n\t\t\tCacheControl:       cacheControl,\n\t\t\tContentDisposition: contentDisposition,\n\t\t\tContentEncoding:    contentEncoding,\n\t\t\tContentLanguage:    contentLanguage,\n\t\t\tMetadata:           map[string]string{\"foo\": \"bar\"},\n\t\t}\n\t\tif err := b.WriteAll(ctx, srcKey, contents, wopts); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\t// Grab its attributes to compare to the copy's attributes later.\n\t\twantAttr, err := b.Attributes(ctx, srcKey)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\t// Clear uncomparable fields.\n\t\tclearUncomparableFields := func(a *blob.Attributes) {\n\t\t\ta.CreateTime = time.Time{}\n\t\t\ta.ModTime = time.Time{}\n\t\t\ta.ETag = \"\"\n\t\t}\n\t\tclearUncomparableFields(wantAttr)\n\n\t\t// Create another blob that we're going to overwrite.\n\t\tif err := b.WriteAll(ctx, dstKeyExists, []byte(\"clobber me\"), nil); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\t// Copy the source to the destination.\n\t\tif err := b.Copy(ctx, dstKey, srcKey, nil); err != nil {\n\t\t\tt.Errorf(\"got unexpected error copying blob: %v\", err)\n\t\t}\n\t\t// Read the copy.\n\t\tgot, err := b.ReadAll(ctx, dstKey)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif !cmp.Equal(got, contents) {\n\t\t\tt.Errorf(\"got %q want %q\", string(got), string(contents))\n\t\t}\n\t\t// Verify attributes of the copy.\n\t\tgotAttr, err := b.Attributes(ctx, dstKey)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tclearUncomparableFields(gotAttr)\n\t\tif diff := cmp.Diff(gotAttr, wantAttr, cmpopts.IgnoreUnexported(blob.Attributes{})); diff != \"\" {\n\t\t\tt.Errorf(\"got %v want %v diff %s\", gotAttr, wantAttr, diff)\n\t\t}\n\n\t\t// Copy the source to the second destination, where there's an existing blob.\n\t\t// It should be overwritten.\n\t\tif err := b.Copy(ctx, dstKeyExists, srcKey, nil); err != nil {\n\t\t\tt.Errorf(\"got unexpected error copying blob: %v\", err)\n\t\t}\n\t\t// Read the copy.\n\t\tgot, err = b.ReadAll(ctx, dstKeyExists)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif !cmp.Equal(got, contents) {\n\t\t\tt.Errorf(\"got %q want %q\", string(got), string(contents))\n\t\t}\n\t\t// Verify attributes of the copy.\n\t\tgotAttr, err = b.Attributes(ctx, dstKeyExists)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tclearUncomparableFields(gotAttr)\n\t\tif diff := cmp.Diff(gotAttr, wantAttr, cmpopts.IgnoreUnexported(blob.Attributes{})); diff != \"\" {\n\t\t\tt.Errorf(\"got %v want %v diff %s\", gotAttr, wantAttr, diff)\n\t\t}\n\t})\n}\n\n// testDelete tests the functionality of Delete.\nfunc testDelete(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-deleting\"\n\n\tctx := context.Background()\n\tt.Run(\"NonExistentFails\", func(t *testing.T) {\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer h.Close()\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\n\t\terr = b.Delete(ctx, \"does-not-exist\")\n\t\tif err == nil {\n\t\t\tt.Errorf(\"got nil want error\")\n\t\t} else if gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\tt.Errorf(\"got %v want NotFound error\", err)\n\t\t} else if !strings.Contains(err.Error(), \"does-not-exist\") {\n\t\t\tt.Errorf(\"got %v want error to include missing key\", err)\n\t\t}\n\t})\n\n\tt.Run(\"Works\", func(t *testing.T) {\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer h.Close()\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\n\t\t// Create the blob.\n\t\tif err := b.WriteAll(ctx, key, []byte(\"Hello world\"), nil); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\t// Delete it.\n\t\tif err := b.Delete(ctx, key); err != nil {\n\t\t\tt.Errorf(\"got unexpected error deleting blob: %v\", err)\n\t\t}\n\t\t// Subsequent read fails with NotFound.\n\t\t_, err = b.NewReader(ctx, key, nil)\n\t\tif err == nil {\n\t\t\tt.Errorf(\"read after delete got nil, want error\")\n\t\t} else if gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\tt.Errorf(\"read after delete want NotFound error, got %v\", err)\n\t\t} else if !strings.Contains(err.Error(), key) {\n\t\t\tt.Errorf(\"got %v want error to include missing key\", err)\n\t\t}\n\t\t// Subsequent delete also fails.\n\t\terr = b.Delete(ctx, key)\n\t\tif err == nil {\n\t\t\tt.Errorf(\"delete after delete got nil, want error\")\n\t\t} else if gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\tt.Errorf(\"delete after delete got %v, want NotFound error\", err)\n\t\t} else if !strings.Contains(err.Error(), key) {\n\t\t\tt.Errorf(\"got %v want error to include missing key\", err)\n\t\t}\n\t})\n}\n\n// testConcurrentWriteAndRead tests that concurrent writing to multiple blob\n// keys and concurrent reading from multiple blob keys works.\nfunc testConcurrentWriteAndRead(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\tdefer b.Close()\n\n\t// Prepare data. Each of the numKeys blobs has dataSize bytes, with each byte\n\t// set to the numeric key index. For example, the blob at \"key0\" consists of\n\t// all dataSize bytes set to 0.\n\tconst numKeys = 20\n\tconst dataSize = 4 * 1024\n\tkeyData := make(map[int][]byte)\n\tfor k := range numKeys {\n\t\tdata := make([]byte, dataSize)\n\t\tfor i := range dataSize {\n\t\t\tdata[i] = byte(k)\n\t\t}\n\t\tkeyData[k] = data\n\t}\n\n\tblobName := func(k int) string {\n\t\treturn fmt.Sprintf(\"key%d\", k)\n\t}\n\n\tvar wg sync.WaitGroup\n\n\terrs := make(chan error, numKeys)\n\n\t// Write all blobs concurrently.\n\tfor k := range numKeys {\n\t\twg.Add(1)\n\t\tgo func(key int) {\n\t\t\tif err := b.WriteAll(ctx, blobName(key), keyData[key], nil); err != nil {\n\t\t\t\terrs <- fmt.Errorf(\"WriteAll key=%v: %w\", key, err)\n\t\t\t}\n\t\t\twg.Done()\n\t\t}(k)\n\t\tdefer b.Delete(ctx, blobName(k))\n\t}\n\twg.Wait()\n\n\tclose(errs)\n\n\tfor err := range errs {\n\t\tt.Fatalf(\"got error from concurrent blob write: %v\", err)\n\t}\n\n\terrs = make(chan error, numKeys)\n\n\t// Read all blobs concurrently and verify that they contain the expected data.\n\tfor k := range numKeys {\n\t\twg.Add(1)\n\t\tgo func(key int) {\n\t\t\tbuf, err := b.ReadAll(ctx, blobName(key))\n\t\t\tif err != nil {\n\t\t\t\terrs <- err\n\t\t\t} else if !bytes.Equal(buf, keyData[key]) {\n\t\t\t\terrs <- fmt.Errorf(\"read data mismatch for key %d\", key)\n\t\t\t}\n\t\t\twg.Done()\n\t\t}(k)\n\t}\n\twg.Wait()\n\n\tclose(errs)\n\n\tfor err := range errs {\n\t\tt.Fatalf(\"got error from concurrent blob write: %v\", err)\n\t}\n}\n\n// testUploadDownload tests that Upload and Download work. For many drivers,\n// these are implemented in the concrete type, but drivers that implement Reader.Download\n// and/or Writer.Upload will have those called directly.\nfunc testUploadDownload(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-upload-download\"\n\tconst contents = \"up and down\"\n\tcontentsMD5 := md5.Sum([]byte(contents))\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\tdefer b.Close()\n\n\t// Write a blob using Upload.\n\tif err := b.Upload(ctx, key, strings.NewReader(contents), &blob.WriterOptions{ContentType: \"text\"}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer b.Delete(ctx, key)\n\n\t// Read the blob using Download.\n\tvar bb bytes.Buffer\n\terr = b.Download(ctx, key, &bb, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif bb.String() != contents {\n\t\tt.Errorf(\"read data mismatch for key %s\", key)\n\t}\n\n\t// Write another blob using Upload and ContentMD5 checking (this disables the Upload optimization).\n\tif err := b.Upload(ctx, key, strings.NewReader(contents), &blob.WriterOptions{ContentMD5: contentsMD5[:], ContentType: \"text\"}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer b.Delete(ctx, key)\n}\n\n// testKeys tests a variety of weird keys.\nfunc testKeys(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst keyPrefix = \"weird-keys\"\n\tcontent := []byte(\"hello\")\n\tctx := context.Background()\n\n\tt.Run(\"non-UTF8 fails\", func(t *testing.T) {\n\t\th, err := newHarness(ctx, t)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer h.Close()\n\t\tdrv, err := h.MakeDriver(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tb := blob.NewBucket(drv)\n\t\tdefer b.Close()\n\n\t\t// Write the blob.\n\t\tkey := keyPrefix + escape.NonUTF8String\n\t\tif err := b.WriteAll(ctx, key, content, nil); err == nil {\n\t\t\tt.Error(\"got nil error, expected error for using non-UTF8 string as key\")\n\t\t}\n\t})\n\n\tfor description, key := range escape.WeirdStrings {\n\t\tt.Run(description, func(t *testing.T) {\n\t\t\th, err := newHarness(ctx, t)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"Failed to create harness: %v\", err)\n\t\t\t}\n\t\t\tdefer h.Close()\n\t\t\tdrv, err := h.MakeDriver(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"Failed to make driver: %v\", err)\n\t\t\t}\n\t\t\tb := blob.NewBucket(drv)\n\t\t\tdefer b.Close()\n\n\t\t\t// Write the blob.\n\t\t\tkey = keyPrefix + key\n\t\t\tif err := b.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\t\tt.Fatalf(\"Failed to write blob at key %q: %v\", key, err)\n\t\t\t}\n\n\t\t\tdefer func() {\n\t\t\t\terr := b.Delete(ctx, key)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Errorf(\"Failed to delete blob at key %q: %v\", key, err)\n\t\t\t\t}\n\t\t\t}()\n\n\t\t\t// Verify read works.\n\t\t\tgot, err := b.ReadAll(ctx, key)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"Failed to read blob at key %q: %v\", key, err)\n\t\t\t}\n\t\t\tif !cmp.Equal(got, content) {\n\t\t\t\tt.Errorf(\"When reading blob, got %q want %q\", string(got), string(content))\n\t\t\t}\n\n\t\t\t// Verify Attributes works.\n\t\t\t_, err = b.Attributes(ctx, key)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"Failed to get attributes for key %q: %v\", key, err)\n\t\t\t}\n\n\t\t\t// Verify SignedURL works.\n\t\t\turl, err := b.SignedURL(ctx, key, nil)\n\t\t\tif gcerrors.Code(err) != gcerrors.Unimplemented {\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Errorf(\"Failed to get SignedURL for key %q: %v\", key, err)\n\t\t\t\t}\n\t\t\t\tclient := h.HTTPClient()\n\t\t\t\tif client == nil {\n\t\t\t\t\tt.Error(\"can't verify SignedURL, Harness.HTTPClient() returned nil\")\n\t\t\t\t}\n\t\t\t\tresp, err := client.Get(url)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"GET using SignedURL for key %q failed: %v\", key, err)\n\t\t\t\t}\n\t\t\t\tdefer resp.Body.Close()\n\t\t\t\tif resp.StatusCode != 200 {\n\t\t\t\t\tt.Fatalf(\"GET using SignedURL for key %q got status code %d, want 200\", key, resp.StatusCode)\n\t\t\t\t}\n\t\t\t\tgot, err := io.ReadAll(resp.Body)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"GET using SignedURL for key %q got 200, but failed to ready body: %v\", key, err)\n\t\t\t\t}\n\t\t\t\tif !bytes.Equal(got, content) {\n\t\t\t\t\tt.Errorf(\"GET using SignedURL for key %q got body %q, want %q\", key, string(got), string(content))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the blob.\n\t\t\tcopyToKey := key + \"-copy\"\n\t\t\tif err := b.Copy(ctx, copyToKey, key, nil); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdefer func() {\n\t\t\t\terr := b.Delete(ctx, copyToKey)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Error(err)\n\t\t\t\t}\n\t\t\t}()\n\t\t\tgot, err = b.ReadAll(ctx, copyToKey)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif !cmp.Equal(got, content) {\n\t\t\t\tt.Errorf(\"copied got %q want %q\", string(got), string(content))\n\t\t\t}\n\t\t})\n\t}\n}\n\n// testSignedURL tests the functionality of SignedURL.\nfunc testSignedURL(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-signing\"\n\tconst contents = \"hello world\"\n\n\tctx := context.Background()\n\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\tdefer b.Close()\n\n\t// Verify that a negative Expiry gives an error. This is enforced in the\n\t// portable type, so works regardless of driver support.\n\t_, err = b.SignedURL(ctx, key, &blob.SignedURLOptions{Expiry: -1 * time.Minute})\n\tif err == nil {\n\t\tt.Error(\"got nil error, expected error for negative SignedURLOptions.Expiry\")\n\t}\n\n\t// Generate a signed URL for GET.\n\tgetURL, err := b.SignedURL(ctx, key, nil)\n\tif err != nil {\n\t\tif gcerrors.Code(err) == gcerrors.Unimplemented {\n\t\t\tt.Skipf(\"SignedURL not supported\")\n\t\t\treturn\n\t\t}\n\t\tt.Fatal(err)\n\t} else if getURL == \"\" {\n\t\tt.Fatal(\"got empty GET url\")\n\t}\n\n\t// Copy getURL, but remove all query params. This URL should not be allowed\n\t// to GET since the client is unauthorized.\n\tgetURLNoParamsURL, err := url.Parse(getURL)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to parse getURL: %v\", err)\n\t}\n\tgetURLNoParamsURL.RawQuery = \"\"\n\tgetURLNoParams := getURLNoParamsURL.String()\n\tconst (\n\t\tallowedContentType   = \"text/plain\"\n\t\tdifferentContentType = \"application/octet-stream\"\n\t)\n\n\t// Generate a signed URL for PUT, with a non-empty ContentType.\n\tputURLWithContentType, err := b.SignedURL(ctx, key, &blob.SignedURLOptions{\n\t\tMethod:      http.MethodPut,\n\t\tContentType: allowedContentType,\n\t})\n\tif gcerrors.Code(err) == gcerrors.Unimplemented {\n\t\tt.Log(\"PUT URLs with content type not supported, skipping\")\n\t} else if err != nil {\n\t\tt.Fatal(err)\n\t} else if putURLWithContentType == \"\" {\n\t\tt.Fatal(\"got empty PUT url\")\n\t}\n\n\t// Generate a signed URL for PUT, with an empty ContentType that's enforced.\n\tputURLEnforcedAbsentContentType, err := b.SignedURL(ctx, key, &blob.SignedURLOptions{\n\t\tMethod:                   http.MethodPut,\n\t\tEnforceAbsentContentType: true,\n\t})\n\tif gcerrors.Code(err) == gcerrors.Unimplemented {\n\t\tt.Log(\"PUT URLs with enforced absent content type not supported, skipping\")\n\t} else if err != nil {\n\t\tt.Fatal(err)\n\t} else if putURLEnforcedAbsentContentType == \"\" {\n\t\tt.Fatal(\"got empty PUT url\")\n\t}\n\n\t// Same as above, but not enforced.\n\tputURLWithoutContentType, err := b.SignedURL(ctx, key, &blob.SignedURLOptions{\n\t\tMethod: http.MethodPut,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t} else if putURLWithoutContentType == \"\" {\n\t\tt.Fatal(\"got empty PUT url\")\n\t}\n\n\t// Generate a signed URL for DELETE.\n\tdeleteURL, err := b.SignedURL(ctx, key, &blob.SignedURLOptions{Method: http.MethodDelete})\n\tif gcerrors.Code(err) == gcerrors.Unimplemented {\n\t\tt.Log(\"DELETE URLs not supported, skipping\")\n\t} else if err != nil {\n\t\tt.Fatal(err)\n\t} else if deleteURL == \"\" {\n\t\tt.Fatal(\"got empty DELETE url\")\n\t}\n\n\tclient := h.HTTPClient()\n\tif client == nil {\n\t\tt.Fatal(\"can't verify SignedURL, Harness.HTTPClient() returned nil\")\n\t}\n\n\t// PUT the blob. Try with all URLs, only putURL should work when given the\n\t// content type used in the signature.\n\ttype signedURLTest struct {\n\t\turlDescription string\n\t\turl            string\n\t\tcontentType    string\n\t\twantSuccess    bool\n\t}\n\ttests := []signedURLTest{\n\t\t{\"getURL\", getURL, \"\", false},\n\t}\n\tif deleteURL != \"\" {\n\t\ttests = append(tests, signedURLTest{\"deleteURL\", deleteURL, \"\", false})\n\t}\n\tif putURLWithContentType != \"\" {\n\t\t// Allowed content type should work.\n\t\t// Different or empty content type should fail.\n\t\ttests = append(tests, signedURLTest{\"putURLWithContentType\", putURLWithContentType, allowedContentType, true})\n\t\ttests = append(tests, signedURLTest{\"putURLWithContentType\", putURLWithContentType, differentContentType, false})\n\t\ttests = append(tests, signedURLTest{\"putURLWithContentType\", putURLWithContentType, \"\", false})\n\t}\n\tif putURLEnforcedAbsentContentType != \"\" {\n\t\t// Empty content type should work, non-empty should fail.\n\t\ttests = append(tests, signedURLTest{\"putURLEnforcedAbsentContentType\", putURLEnforcedAbsentContentType, \"\", true})\n\t\ttests = append(tests, signedURLTest{\"putURLEnforcedAbsentContentType\", putURLEnforcedAbsentContentType, differentContentType, false})\n\t}\n\tif putURLWithoutContentType != \"\" {\n\t\t// Empty content type should work.\n\t\ttests = append(tests, signedURLTest{\"putURLWithoutContentType\", putURLWithoutContentType, \"\", true})\n\t\t// From the SignedURLOptions docstring:\n\t\t// If EnforceAbsentContentType is false and ContentType is the empty string,\n\t\t// then PUTing without a Content-Type header will succeed, but it is\n\t\t// implementation-specific whether providing a Content-Type header will fail.\n\t\t// --> so, we don't have a test for putURLWithoutContentType and a non-empty ContentType.\n\t}\n\tfor _, test := range tests {\n\t\treq, err := http.NewRequest(http.MethodPut, test.url, strings.NewReader(contents))\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to create PUT HTTP request using %q: %v\", test.urlDescription, err)\n\t\t}\n\t\tif test.contentType != \"\" {\n\t\t\treq.Header.Set(\"Content-Type\", test.contentType)\n\t\t}\n\t\tif resp, err := client.Do(req); err != nil {\n\t\t\tt.Fatalf(\"PUT to %q with ContentType %q failed: %v\", test.urlDescription, test.contentType, err)\n\t\t} else {\n\t\t\tdefer resp.Body.Close()\n\t\t\tsuccess := resp.StatusCode >= 200 && resp.StatusCode < 300\n\t\t\tif success != test.wantSuccess {\n\t\t\t\tt.Errorf(\"PUT to %q with ContentType %q got status code %d, wanted 2xx? %v\", test.urlDescription, test.contentType, resp.StatusCode, test.wantSuccess)\n\t\t\t\tgotBody, _ := io.ReadAll(resp.Body)\n\t\t\t\tt.Error(string(gotBody))\n\t\t\t}\n\t\t}\n\t}\n\n\t// GET it. Try with all URLs, only getURL should work.\n\ttests = nil\n\tif deleteURL != \"\" {\n\t\ttests = append(tests, signedURLTest{\"deleteURL\", deleteURL, \"\", false})\n\t}\n\ttests = append(tests, []signedURLTest{\n\t\t{\"putURLWithoutContentType\", putURLWithoutContentType, \"\", false},\n\t\t{\"getURLNoParams\", getURLNoParams, \"\", false},\n\t\t{\"getURL\", getURL, \"\", true},\n\t}...)\n\tfor _, test := range tests {\n\t\tif resp, err := client.Get(test.url); err != nil {\n\t\t\tt.Fatalf(\"GET with %s URL failed: %v\", test.urlDescription, err)\n\t\t} else {\n\t\t\tdefer resp.Body.Close()\n\t\t\tsuccess := resp.StatusCode >= 200 && resp.StatusCode < 300\n\t\t\tif success != test.wantSuccess {\n\t\t\t\tt.Errorf(\"GET to %q got status code %d, want 2xx? %v\", test.urlDescription, resp.StatusCode, test.wantSuccess)\n\t\t\t\tgotBody, _ := io.ReadAll(resp.Body)\n\t\t\t\tt.Error(string(gotBody))\n\t\t\t} else if success {\n\t\t\t\tgotBody, err := io.ReadAll(resp.Body)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Errorf(\"GET to %q failed to read response body: %v\", test.urlDescription, err)\n\t\t\t\t} else if gotBodyStr := string(gotBody); gotBodyStr != contents {\n\t\t\t\t\tt.Errorf(\"GET to %q got body %q, want %q\", test.urlDescription, gotBodyStr, contents)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// DELETE it. Try with all URLs, only deleteURL should work.\n\ttests = []signedURLTest{\n\t\t{\"getURL\", getURL, \"\", false},\n\t\t{\"putURLWithoutContentType\", putURLWithoutContentType, \"\", false},\n\t}\n\tif deleteURL != \"\" {\n\t\ttests = append(tests, signedURLTest{\"deleteURL\", deleteURL, \"\", true})\n\t}\n\tfor _, test := range tests {\n\t\treq, err := http.NewRequest(http.MethodDelete, test.url, nil)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to create DELETE HTTP request using %q: %v\", test.urlDescription, err)\n\t\t}\n\t\tif resp, err := client.Do(req); err != nil {\n\t\t\tt.Fatalf(\"DELETE to %q failed: %v\", test.urlDescription, err)\n\t\t} else {\n\t\t\tdefer resp.Body.Close()\n\t\t\tsuccess := resp.StatusCode >= 200 && resp.StatusCode < 300\n\t\t\tif success != test.wantSuccess {\n\t\t\t\tgotBody, _ := io.ReadAll(resp.Body)\n\t\t\t\tt.Error(string(gotBody))\n\t\t\t\tt.Fatalf(\"DELETE to %q got status code %d, want 2xx? %v\", test.urlDescription, resp.StatusCode, test.wantSuccess)\n\t\t\t}\n\t\t}\n\t}\n\n\t// GET should fail now that the blob has been deleted.\n\tif deleteURL != \"\" {\n\t\tif resp, err := client.Get(getURL); err != nil {\n\t\t\tt.Errorf(\"GET after DELETE failed: %v\", err)\n\t\t} else {\n\t\t\tdefer resp.Body.Close()\n\t\t\tif resp.StatusCode != 404 {\n\t\t\t\tt.Errorf(\"GET after DELETE got status code %d, want 404\", resp.StatusCode)\n\t\t\t\tgotBody, _ := io.ReadAll(resp.Body)\n\t\t\t\tt.Error(string(gotBody))\n\t\t\t}\n\t\t}\n\t}\n}\n\n// testAs tests the various As functions, using AsTest.\nfunc testAs(t *testing.T, newHarness HarnessMaker, st AsTest) {\n\tt.Helper()\n\n\tconst (\n\t\tdir     = \"mydir\"\n\t\tkey     = dir + \"/as-test\"\n\t\tcopyKey = dir + \"/as-test-copy\"\n\t)\n\tcontent := []byte(\"hello world\")\n\tctx := context.Background()\n\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\tdefer b.Close()\n\n\t// Verify Bucket.As.\n\tif err := st.BucketCheck(b); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Create a blob, using the provided callback.\n\tif err := b.WriteAll(ctx, key, content, &blob.WriterOptions{BeforeWrite: st.BeforeWrite}); err != nil {\n\t\tt.Error(err)\n\t}\n\tdefer func() { _ = b.Delete(ctx, key) }()\n\n\t// Verify Attributes.As.\n\tattrs, err := b.Attributes(ctx, key)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := st.AttributesCheck(attrs); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Verify Reader.As.\n\tr, err := b.NewReader(ctx, key, &blob.ReaderOptions{BeforeRead: st.BeforeRead})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer r.Close()\n\tif err := st.ReaderCheck(r); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Verify ListObject.As for the directory.\n\titer := b.List(&blob.ListOptions{Prefix: dir, Delimiter: \"/\", BeforeList: st.BeforeList})\n\tfound := false\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif found {\n\t\t\tt.Fatal(\"got a second object returned from List, only wanted one\")\n\t\t}\n\t\tfound = true\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tif err := st.ListObjectCheck(obj); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}\n\n\t// Verify ListObject.As for the blob.\n\titer = b.List(&blob.ListOptions{Prefix: key, BeforeList: st.BeforeList})\n\tfound = false\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif found {\n\t\t\tt.Fatal(\"got a second object returned from List, only wanted one\")\n\t\t}\n\t\tfound = true\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tif err := st.ListObjectCheck(obj); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}\n\n\t_, gotErr := b.NewReader(ctx, \"key-does-not-exist\", nil)\n\tif gotErr == nil {\n\t\tt.Fatalf(\"got nil error from NewReader for nonexistent key, want an error\")\n\t}\n\tif err := st.ErrorCheck(b, gotErr); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Copy the blob, using the provided callback.\n\tif err := b.Copy(ctx, copyKey, key, &blob.CopyOptions{BeforeCopy: st.BeforeCopy}); err != nil {\n\t\tt.Error(err)\n\t} else {\n\t\tdefer func() { _ = b.Delete(ctx, copyKey) }()\n\t}\n\n\tfor _, method := range []string{http.MethodGet, http.MethodPut, http.MethodDelete} {\n\t\t_, err = b.SignedURL(ctx, key, &blob.SignedURLOptions{Method: method, BeforeSign: st.BeforeSign})\n\t\tif err != nil && gcerrors.Code(err) != gcerrors.Unimplemented {\n\t\t\tt.Errorf(\"got err %v when signing url with method %q\", err, method)\n\t\t}\n\t}\n}\n\nfunc testIfNotExist(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst key = \"blob-for-if-not-exist\"\n\tconst contents = \"up and down\"\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb := blob.NewBucket(drv)\n\tdefer func() { _ = b.Close() }()\n\n\topts := blob.WriterOptions{\n\t\tContentType: \"text\",\n\t\tIfNotExist:  true,\n\t}\n\n\t// Create the new blob; expected to work since it doesn't exist.\n\tw1, err := b.NewWriter(ctx, key, &opts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\t_ = b.Delete(ctx, key)\n\t}()\n\tif _, err := w1.Write([]byte(contents)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := w1.Close(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Attempt a second write to the same key; expected to fail in\n\t// either Write or Close, with FailedPrecondition.\n\tw2, err := b.NewWriter(ctx, key, &opts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif _, err = w2.Write([]byte(contents)); err == nil {\n\t\terr = w2.Close()\n\t} else {\n\t\t_ = w2.Close()\n\t}\n\tif err == nil {\n\t\tt.Error(\"expected error rewriting key with IfNotExist, got nil\")\n\t}\n\tif code := gcerrors.Code(err); code != gcerrors.FailedPrecondition {\n\t\tt.Errorf(\"expected FailedPrecondition error, got %v\", code)\n\t}\n}\n\nfunc benchmarkRead(b *testing.B, bkt *blob.Bucket) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tconst key = \"readbenchmark-blob\"\n\n\tcontent := loadTestData(b, \"test-large.jpg\")\n\tif err := bkt.WriteAll(ctx, key, content, nil); err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer func() {\n\t\t_ = bkt.Delete(ctx, key)\n\t}()\n\n\tb.ResetTimer()\n\tb.RunParallel(func(pb *testing.PB) {\n\t\tvar buffer bytes.Buffer\n\t\tbuffer.Grow(len(content))\n\n\t\tfor pb.Next() {\n\t\t\tbuffer.Reset()\n\t\t\tr, err := bkt.NewReader(ctx, key, nil)\n\t\t\tif err != nil {\n\t\t\t\tb.Error(err)\n\t\t\t}\n\n\t\t\tif _, err = io.Copy(&buffer, r); err != nil {\n\t\t\t\tb.Error(err)\n\t\t\t}\n\t\t\tr.Close()\n\t\t\tif !bytes.Equal(buffer.Bytes(), content) {\n\t\t\t\tb.Error(\"read didn't match write\")\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc benchmarkWriteReadDelete(b *testing.B, bkt *blob.Bucket) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tconst baseKey = \"writereaddeletebenchmark-blob-\"\n\n\tcontent := loadTestData(b, \"test-large.jpg\")\n\tvar nextID uint32\n\n\tb.ResetTimer()\n\tb.RunParallel(func(pb *testing.PB) {\n\t\tkey := fmt.Sprintf(\"%s%d\", baseKey, atomic.AddUint32(&nextID, 1))\n\t\tfor pb.Next() {\n\t\t\tif err := bkt.WriteAll(ctx, key, content, nil); err != nil {\n\t\t\t\tb.Error(err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbuf, err := bkt.ReadAll(ctx, key)\n\t\t\tif err != nil {\n\t\t\t\tb.Error(err)\n\t\t\t}\n\t\t\tif !bytes.Equal(buf, content) {\n\t\t\t\tb.Error(\"read didn't match write\")\n\t\t\t}\n\t\t\tif err := bkt.Delete(ctx, key); err != nil {\n\t\t\t\tb.Error(err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "blob/example_openbucket_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/blob\"\n\t_ \"gocloud.dev/blob/memblob\"\n)\n\nfunc Example_openFromURL() {\n\tctx := context.Background()\n\n\t// Connect to a bucket using a URL.\n\t// This example uses \"memblob\", the in-memory implementation.\n\t// We need to add a blank import line to register the memblob driver's\n\t// URLOpener, which implements blob.BucketURLOpener:\n\t// import _ \"gocloud.dev/blob/memblob\"\n\t// memblob registers for the \"mem\" scheme.\n\t// All blob.OpenBucket URLs also work with \"blob+\" or \"blob+bucket+\" prefixes,\n\t// e.g., \"blob+mem://\" or \"blob+bucket+mem://\".\n\tb, err := blob.OpenBucket(ctx, \"mem://\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Now we can use b to read or write to blobs in the bucket.\n\tif err := b.WriteAll(ctx, \"my-key\", []byte(\"hello world\"), nil); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdata, err := b.ReadAll(ctx, \"my-key\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(data))\n\t// Output:\n\t// hello world\n}\n\nfunc Example_openFromURLWithPrefix() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Connect to a bucket using a URL, using the \"prefix\" query parameter to\n\t// target a subfolder in the bucket.\n\t// The prefix should end with \"/\", so that the resulting bucket operates\n\t// in a subfolder.\n\tb, err := blob.OpenBucket(ctx, \"mem://?prefix=a/subfolder/\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Bucket operations on <key> will be translated to \"a/subfolder/<key>\".\n}\n\nfunc Example_openFromURLWithSingleKey() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Connect to a bucket using a URL, using the \"key\" query parameter to\n\t// make the bucket always reference that key.\n\tb, err := blob.OpenBucket(ctx, \"mem://?key=foo.txt\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Bucket operations will ignore the passed-in key and always reference foo.txt.\n}\n"
  },
  {
    "path": "blob/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob_test\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\n\t\"cloud.google.com/go/storage\"\n\t\"github.com/aws/smithy-go\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/fileblob\"\n\n\t_ \"gocloud.dev/blob/gcsblob\"\n\t_ \"gocloud.dev/blob/s3blob\"\n)\n\nfunc ExampleBucket_NewReader() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar bucket *blob.Bucket\n\n\t// Open the key \"foo.txt\" for reading with the default options.\n\tr, err := bucket.NewReader(ctx, \"foo.txt\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer r.Close()\n\t// Readers also have a limited view of the blob's metadata.\n\tfmt.Println(\"Content-Type:\", r.ContentType())\n\tfmt.Println()\n\t// Copy from the reader to stdout.\n\tif _, err := io.Copy(os.Stdout, r); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc ExampleBucket_NewRangeReader() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar bucket *blob.Bucket\n\n\t// Open the key \"foo.txt\" for reading at offset 1024 and read up to 4096 bytes.\n\tr, err := bucket.NewRangeReader(ctx, \"foo.txt\", 1024, 4096, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer r.Close()\n\t// Copy from the read range to stdout.\n\tif _, err := io.Copy(os.Stdout, r); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc ExampleBucket_NewWriter() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar bucket *blob.Bucket\n\n\t// Open the key \"foo.txt\" for writing with the default options.\n\tw, err := bucket.NewWriter(ctx, \"foo.txt\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t_, writeErr := fmt.Fprintln(w, \"Hello, World!\")\n\t// Always check the return value of Close when writing.\n\tcloseErr := w.Close()\n\tif writeErr != nil {\n\t\tlog.Fatal(writeErr)\n\t}\n\tif closeErr != nil {\n\t\tlog.Fatal(closeErr)\n\t}\n}\n\nfunc ExampleBucket_NewWriter_cancel() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar bucket *blob.Bucket\n\n\t// Create a cancelable context from the existing context.\n\twriteCtx, cancelWrite := context.WithCancel(ctx)\n\tdefer cancelWrite()\n\n\t// Open the key \"foo.txt\" for writing with the default options.\n\tw, err := bucket.NewWriter(writeCtx, \"foo.txt\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Assume some writes happened and we encountered an error.\n\t// Now we want to abort the write.\n\n\tif err != nil {\n\t\t// First cancel the context.\n\t\tcancelWrite()\n\t\t// You must still close the writer to avoid leaking resources.\n\t\tw.Close()\n\t}\n}\n\nfunc ExampleBucket_Delete() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar bucket *blob.Bucket\n\n\tif err := bucket.Delete(ctx, \"foo.txt\"); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc Example() {\n\t// Connect to a bucket when your program starts up.\n\t// This example uses the file-based implementation in fileblob, and creates\n\t// a temporary directory to use as the root directory.\n\tdir, cleanup := newTempDir()\n\tdefer cleanup()\n\tbucket, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n\n\t// We now have a *blob.Bucket! We can write our application using the\n\t// *blob.Bucket type, and have the freedom to change the initialization code\n\t// above to choose a different service-specific driver later.\n\n\t// In this example, we'll write a blob and then read it.\n\tctx := context.Background()\n\tif err := bucket.WriteAll(ctx, \"foo.txt\", []byte(\"Go Cloud Development Kit\"), nil); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tb, err := bucket.ReadAll(ctx, \"foo.txt\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(b))\n\n\t// Output:\n\t// Go Cloud Development Kit\n}\n\nfunc ExampleBucket_ErrorAs() {\n\t// This example is specific to the s3blob implementation; it demonstrates\n\t// access to the underlying smithy.APIError type.\n\t// The types exposed for ErrorAs by s3blob are documented in\n\t// https://godoc.org/gocloud.dev/blob/s3blob#hdr-As\n\n\tctx := context.Background()\n\n\tb, err := blob.OpenBucket(ctx, \"s3://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t_, err = b.ReadAll(ctx, \"nosuchfile\")\n\tif err != nil {\n\t\tvar awsErr smithy.APIError\n\t\tif b.ErrorAs(err, &awsErr) {\n\t\t\tfmt.Println(awsErr.ErrorCode())\n\t\t}\n\t}\n}\n\nfunc ExampleBucket_List() {\n\t// Connect to a bucket when your program starts up.\n\t// This example uses the file-based implementation.\n\tdir, cleanup := newTempDir()\n\tdefer cleanup()\n\n\t// Create the file-based bucket.\n\tbucket, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n\n\t// Create some blob objects for listing: \"foo[0..4].txt\".\n\tctx := context.Background()\n\tfor i := range 5 {\n\t\tif err := bucket.WriteAll(ctx, fmt.Sprintf(\"foo%d.txt\", i), []byte(\"Go Cloud Development Kit\"), nil); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\t// Iterate over them.\n\t// This will list the blobs created above because fileblob is strongly\n\t// consistent, but is not guaranteed to work on all services.\n\tli := bucket.List(nil)\n\tfor {\n\t\tobj, err := li.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tfmt.Println(obj.Key)\n\t}\n\n\t// Alternatively, use All to iterate (and optionally download):\n\tfmt.Println()\n\tfmt.Println(\"Now, using an iterator:\")\n\tli = bucket.List(nil)\n\titer, errFn := li.All(ctx)\n\tfor obj, download := range iter {\n\t\tvar buf bytes.Buffer\n\t\tif err := download(&buf, nil /* default ReaderOptions */); err != nil {\n\t\t\tlog.Fatalf(\"download of %q failed: %v\", obj.Key, err)\n\t\t}\n\t\tfmt.Printf(\"%s: %s\\n\", obj.Key, string(buf.Bytes()))\n\t}\n\tif err := errFn(); err != nil {\n\t\tlog.Fatalf(\"iteration failed: %v\", err)\n\t}\n\n\t// Output:\n\t// foo0.txt\n\t// foo1.txt\n\t// foo2.txt\n\t// foo3.txt\n\t// foo4.txt\n\t//\n\t// Now, using an iterator:\n\t// foo0.txt: Go Cloud Development Kit\n\t// foo1.txt: Go Cloud Development Kit\n\t// foo2.txt: Go Cloud Development Kit\n\t// foo3.txt: Go Cloud Development Kit\n\t// foo4.txt: Go Cloud Development Kit\n}\n\nfunc ExampleBucket_List_withDelimiter() {\n\t// Connect to a bucket when your program starts up.\n\t// This example uses the file-based implementation.\n\tdir, cleanup := newTempDir()\n\tdefer cleanup()\n\n\t// Create the file-based bucket.\n\tbucket, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n\n\t// Create some blob objects in a hierarchy.\n\tctx := context.Background()\n\tfor _, key := range []string{\n\t\t\"dir1/subdir/a.txt\",\n\t\t\"dir1/subdir/b.txt\",\n\t\t\"dir2/c.txt\",\n\t\t\"d.txt\",\n\t} {\n\t\tif err := bucket.WriteAll(ctx, key, []byte(\"Go Cloud Development Kit\"), nil); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\t// list lists files in b starting with prefix. It uses the delimiter \"/\",\n\t// and recurses into \"directories\", adding 2 spaces to indent each time.\n\t// It will list the blobs created above because fileblob is strongly\n\t// consistent, but is not guaranteed to work on all services.\n\tvar list func(context.Context, *blob.Bucket, string, string)\n\tlist = func(ctx context.Context, b *blob.Bucket, prefix, indent string) {\n\t\titer := b.List(&blob.ListOptions{\n\t\t\tDelimiter: \"/\",\n\t\t\tPrefix:    prefix,\n\t\t})\n\t\tfor {\n\t\t\tobj, err := iter.Next(ctx)\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tlog.Fatal(err)\n\t\t\t}\n\t\t\tfmt.Printf(\"%s%s\\n\", indent, obj.Key)\n\t\t\tif obj.IsDir {\n\t\t\t\tlist(ctx, b, obj.Key, indent+\"  \")\n\t\t\t}\n\t\t}\n\t}\n\tlist(ctx, bucket, \"\", \"\")\n\n\t// Output:\n\t// d.txt\n\t// dir1/\n\t//   dir1/subdir/\n\t//     dir1/subdir/a.txt\n\t//     dir1/subdir/b.txt\n\t// dir2/\n\t//   dir2/c.txt\n}\n\nfunc ExampleBucket_ListPage() {\n\t// Connect to a bucket when your program starts up.\n\t// This example uses the file-based implementation.\n\tdir, cleanup := newTempDir()\n\tdefer cleanup()\n\n\t// Create the file-based bucket.\n\tbucket, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n\n\t// Create some blob objects for listing: \"foo[0..7].txt\".\n\tctx := context.Background()\n\tfor i := range 8 {\n\t\tif err := bucket.WriteAll(ctx, fmt.Sprintf(\"foo%d.txt\", i), []byte(\"Go Cloud Development Kit\"), nil); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n\n\t// Iterate over them in pages.\n\t// This will list the blobs created above because fileblob is strongly\n\t// consistent, but is not guaranteed to work on all services.\n\n\t// The first page of 3 results.\n\tobjs, token, err := bucket.ListPage(ctx, blob.FirstPageToken, 3, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfor _, obj := range objs {\n\t\tfmt.Println(obj.Key)\n\t}\n\tfmt.Println(\"END OF PAGE 1\")\n\n\t// The second page of 3 results.\n\tobjs, token, err = bucket.ListPage(ctx, token, 3, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfor _, obj := range objs {\n\t\tfmt.Println(obj.Key)\n\t}\n\tfmt.Println(\"END OF PAGE 2\")\n\n\t// The third page with the last 2 results.\n\tobjs, token, err = bucket.ListPage(ctx, token, 3, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfor _, obj := range objs {\n\t\tfmt.Println(obj.Key)\n\t}\n\tfmt.Println(\"END OF PAGE 3\")\n\n\t// There are no more pages, so token is now nil. Calling ListPage again will return io.EOF.\n\tif token != nil {\n\t\tfmt.Println(\"Token was not nil.\")\n\t}\n\n\t// Output:\n\t// foo0.txt\n\t// foo1.txt\n\t// foo2.txt\n\t// END OF PAGE 1\n\t// foo3.txt\n\t// foo4.txt\n\t// foo5.txt\n\t// END OF PAGE 2\n\t// foo6.txt\n\t// foo7.txt\n\t// END OF PAGE 3\n}\n\nfunc ExampleBucket_As() {\n\t// This example is specific to the gcsblob implementation; it demonstrates\n\t// access to the underlying cloud.google.com/go/storage.Client type.\n\t// The types exposed for As by gcsblob are documented in\n\t// https://godoc.org/gocloud.dev/blob/gcsblob#hdr-As\n\n\t// This URL will open the bucket \"my-bucket\" using default credentials.\n\tctx := context.Background()\n\tb, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Access storage.Client fields via gcsClient here.\n\tvar gcsClient *storage.Client\n\tif b.As(&gcsClient) {\n\t\temail, err := gcsClient.ServiceAccount(ctx, \"project-name\")\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\t_ = email\n\t} else {\n\t\tlog.Println(\"Unable to access storage.Client through Bucket.As\")\n\t}\n}\n\nfunc ExampleWriterOptions() {\n\t// This example is specific to the gcsblob implementation; it demonstrates\n\t// access to the underlying cloud.google.com/go/storage.Writer type.\n\t// The types exposed for As by gcsblob are documented in\n\t// https://godoc.org/gocloud.dev/blob/gcsblob#hdr-As\n\n\tctx := context.Background()\n\n\tb, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\tbeforeWrite := func(as func(any) bool) error {\n\t\tvar sw *storage.Writer\n\t\tif as(&sw) {\n\t\t\tfmt.Println(sw.ChunkSize)\n\t\t}\n\t\treturn nil\n\t}\n\n\toptions := blob.WriterOptions{BeforeWrite: beforeWrite}\n\tif err := b.WriteAll(ctx, \"newfile.txt\", []byte(\"hello\\n\"), &options); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc ExampleListObject_As() {\n\t// This example is specific to the gcsblob implementation; it demonstrates\n\t// access to the underlying cloud.google.com/go/storage.ObjectAttrs type.\n\t// The types exposed for As by gcsblob are documented in\n\t// https://godoc.org/gocloud.dev/blob/gcsblob#hdr-As\n\n\tctx := context.Background()\n\n\tb, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\titer := b.List(nil)\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\t// Access storage.ObjectAttrs via oa here.\n\t\tvar oa storage.ObjectAttrs\n\t\tif obj.As(&oa) {\n\t\t\t_ = oa.Owner\n\t\t}\n\t}\n}\n\nfunc ExampleListOptions() {\n\t// This example is specific to the gcsblob implementation; it demonstrates\n\t// access to the underlying cloud.google.com/go/storage.Query type.\n\t// The types exposed for As by gcsblob are documented in\n\t// https://godoc.org/gocloud.dev/blob/gcsblob#hdr-As\n\n\tctx := context.Background()\n\n\tb, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\tbeforeList := func(as func(any) bool) error {\n\t\t// Access storage.Query via q here.\n\t\tvar q *storage.Query\n\t\tif as(&q) {\n\t\t\t_ = q.Delimiter\n\t\t}\n\t\treturn nil\n\t}\n\n\titer := b.List(&blob.ListOptions{Prefix: \"\", Delimiter: \"/\", BeforeList: beforeList})\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\t_ = obj\n\t}\n}\n\nfunc ExamplePrefixedBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tvar bucket *blob.Bucket\n\n\t// Wrap the bucket using blob.PrefixedBucket.\n\t// The prefix should end with \"/\", so that the resulting bucket operates\n\t// in a subfolder.\n\tbucket = blob.PrefixedBucket(bucket, \"a/subfolder/\")\n\n\t// The original bucket is no longer usable; it has been closed.\n\t// The wrapped bucket should be closed when done.\n\tdefer bucket.Close()\n\n\t// Bucket operations on <key> will be translated to \"a/subfolder/<key>\".\n}\n\nfunc ExampleSingleKeyBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tvar bucket *blob.Bucket\n\n\t// Wrap the bucket using blob.SingleKeyBucket.\n\t// The bucket always references the provided key.\n\tbucket = blob.SingleKeyBucket(bucket, \"foo.txt\")\n\n\t// The original bucket is no longer usable; it has been closed.\n\t// The wrapped bucket should be closed when done.\n\tdefer bucket.Close()\n\n\t// Bucket operations will ignore the passed-in key and always reference foo.txt.\n}\n\nfunc ExampleReader_As() {\n\t// This example is specific to the gcsblob implementation; it demonstrates\n\t// access to the underlying cloud.google.com/go/storage.Reader type.\n\t// The types exposed for As by gcsblob are documented in\n\t// https://godoc.org/gocloud.dev/blob/gcsblob#hdr-As\n\n\tctx := context.Background()\n\n\tb, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\tr, err := b.NewReader(ctx, \"gopher.png\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer r.Close()\n\n\t// Access storage.Reader via sr here.\n\tvar sr *storage.Reader\n\tif r.As(&sr) {\n\t\t_ = sr.Attrs\n\t}\n}\n\nfunc ExampleAttributes_As() {\n\t// This example is specific to the gcsblob implementation; it demonstrates\n\t// access to the underlying cloud.google.com/go/storage.ObjectAttrs type.\n\t// The types exposed for As by gcsblob are documented in\n\t// https://godoc.org/gocloud.dev/blob/gcsblob#hdr-As\n\tctx := context.Background()\n\n\tb, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\tattrs, err := b.Attributes(ctx, \"gopher.png\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tvar oa storage.ObjectAttrs\n\tif attrs.As(&oa) {\n\t\tfmt.Println(oa.Owner)\n\t}\n}\n\nfunc newTempDir() (string, func()) {\n\tdir, err := os.MkdirTemp(\"\", \"go-cloud-blob-example\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn dir, func() { os.RemoveAll(dir) }\n}\n"
  },
  {
    "path": "blob/fileblob/attrs.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fileblob\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n)\n\nconst attrsExt = \".attrs\"\n\nvar errAttrsExt = fmt.Errorf(\"file extension %q is reserved\", attrsExt)\n\n// xattrs stores extended attributes for an object. The format is like\n// filesystem extended attributes, see\n// https://www.freedesktop.org/wiki/CommonExtendedAttributes.\ntype xattrs struct {\n\tCacheControl       string            `json:\"user.cache_control\"`\n\tContentDisposition string            `json:\"user.content_disposition\"`\n\tContentEncoding    string            `json:\"user.content_encoding\"`\n\tContentLanguage    string            `json:\"user.content_language\"`\n\tContentType        string            `json:\"user.content_type\"`\n\tMetadata           map[string]string `json:\"user.metadata\"`\n\tMD5                []byte            `json:\"md5\"`\n}\n\n// setAttrs creates a \"path.attrs\" file along with blob to store the attributes,\n// it uses JSON format.\nfunc setAttrs(path string, xa xattrs) error {\n\tf, err := os.Create(path + attrsExt)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := json.NewEncoder(f).Encode(xa); err != nil {\n\t\tf.Close()\n\t\tos.Remove(f.Name())\n\t\treturn err\n\t}\n\treturn f.Close()\n}\n\n// getAttrs looks at the \"path.attrs\" file to retrieve the attributes and\n// decodes them into a xattrs struct. It doesn't return error when there is no\n// such .attrs file.\nfunc getAttrs(path string) (xattrs, error) {\n\tf, err := os.Open(path + attrsExt)\n\tif err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\t// Handle gracefully for non-existent .attr files.\n\t\t\treturn xattrs{\n\t\t\t\tContentType: \"application/octet-stream\",\n\t\t\t}, nil\n\t\t}\n\t\treturn xattrs{}, err\n\t}\n\txa := new(xattrs)\n\tif err := json.NewDecoder(f).Decode(xa); err != nil {\n\t\tf.Close()\n\t\treturn xattrs{}, err\n\t}\n\treturn *xa, f.Close()\n}\n"
  },
  {
    "path": "blob/fileblob/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fileblob_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/fileblob\"\n)\n\nfunc ExampleOpenBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// The directory you pass to fileblob.OpenBucket must exist first.\n\tconst myDir = \"path/to/local/directory\"\n\tif err := os.MkdirAll(myDir, 0o777); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a file-based bucket.\n\tbucket, err := fileblob.OpenBucket(myDir, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n}\n\nfunc Example_openBucketFromURL() {\n\t// Create a temporary directory.\n\tdir, err := os.MkdirTemp(\"\", \"go-cloud-fileblob-example\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer os.RemoveAll(dir)\n\n\t// On Unix, append the dir to \"file://\".\n\t// On Windows, convert \"\\\" to \"/\" and add a leading \"/\":\n\tdirpath := filepath.ToSlash(dir)\n\tif os.PathSeparator != '/' && !strings.HasPrefix(dirpath, \"/\") {\n\t\tdirpath = \"/\" + dirpath\n\t}\n\n\t// blob.OpenBucket creates a *blob.Bucket from a URL.\n\tctx := context.Background()\n\tb, err := blob.OpenBucket(ctx, \"file://\"+dirpath)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Now we can use b to read or write files to the container.\n\terr = b.WriteAll(ctx, \"my-key\", []byte(\"hello world\"), nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdata, err := b.ReadAll(ctx, \"my-key\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(data))\n\n\t// Output:\n\t// hello world\n}\n"
  },
  {
    "path": "blob/fileblob/fileblob.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package fileblob provides a blob implementation that uses the filesystem.\n// Use OpenBucket to construct a *blob.Bucket.\n//\n// To avoid partial writes, fileblob writes to a temporary file and then renames\n// the temporary file to the final path on Close. By default, it creates these\n// temporary files in `os.TempDir`. If `os.TempDir` is on a different mount than\n// your base bucket path, the `os.Rename` will fail with `invalid cross-device link`.\n// To avoid this, either configure the temp dir to use by setting the environment\n// variable `TMPDIR`, or set `Options.NoTempDir` to `true` (fileblob will create\n// the temporary files next to the actual files instead of in a temporary directory).\n//\n// By default fileblob stores blob metadata in \"sidecar\" files under the original\n// filename with an additional \".attrs\" suffix.\n// This behaviour can be changed via `Options.Metadata`;\n// writing of those metadata files can be suppressed by setting it to\n// `MetadataDontWrite` or its equivalent \"metadata=skip\" in the URL for the opener.\n// In either case, absent any stored metadata many `blob.Attributes` fields\n// will be set to default values.\n//\n// # URLs\n//\n// For blob.OpenBucket, fileblob registers for the scheme \"file\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Escaping\n//\n// Go CDK supports all UTF-8 strings; to make this work with services lacking\n// full UTF-8 support, strings must be escaped (during writes) and unescaped\n// (during reads). The following escapes are performed for fileblob:\n//   - Blob keys: ASCII characters 0-31 are escaped to \"__0x<hex>__\".\n//     If os.PathSeparator != \"/\", it is also escaped.\n//     Additionally, the \"/\" in \"../\", the trailing \"/\" in \"//\", and a trailing\n//     \"/\" is key names are escaped in the same way.\n//     On Windows, the characters \"<>:\"|?*\" are also escaped.\n//\n// # As\n//\n// fileblob exposes the following types for As:\n//   - Bucket: os.FileInfo\n//   - Error: *os.PathError\n//   - ListObject: os.FileInfo\n//   - Reader: io.Reader\n//   - ReaderOptions.BeforeRead: *os.File\n//   - Attributes: os.FileInfo\n//   - CopyOptions.BeforeCopy: *os.File\n//   - WriterOptions.BeforeWrite: *os.File\npackage fileblob // import \"gocloud.dev/blob/fileblob\"\n\nimport (\n\t\"context\"\n\t\"crypto/hmac\"\n\t\"crypto/md5\"\n\t\"crypto/sha256\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"io/fs\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/escape\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\nconst defaultPageSize = 1000\n\nfunc init() {\n\tblob.DefaultURLMux().RegisterBucket(Scheme, &URLOpener{})\n}\n\n// Scheme is the URL scheme fileblob registers its URLOpener under on\n// blob.DefaultMux.\nconst Scheme = \"file\"\n\n// URLOpener opens file bucket URLs like \"file:///foo/bar/baz\".\n//\n// The URL's host is ignored unless it is \".\", which is used to signal a\n// relative path. For example, \"file://./../..\" uses \"../..\" as the path.\n//\n// If os.PathSeparator != \"/\", any leading \"/\" from the path is dropped\n// and remaining '/' characters are converted to os.PathSeparator.\n//\n// The following query parameters are supported:\n//\n//   - create_dir: (any non-empty value) the directory is created (using os.MkDirAll)\n//     if it does not already exist.\n//   - dir_file_mode: any directories that are created (the base directory when create_dir\n//     is true, or subdirectories for keys) are created using this os.FileMode, parsed\n//     using os.Parseuint. Defaults to 0777.\n//   - no_tmp_dir: (any non-empty value) temporary files are created next to the final\n//     path instead of in os.TempDir.\n//   - base_url: the base URL to use to construct signed URLs; see URLSignerHMAC\n//   - secret_key_path: path to read for the secret key used to construct signed URLs;\n//     see URLSignerHMAC\n//   - metadata: if set to \"skip\", won't write metadata such as blob.Attributes\n//     as per the package docstring\n//\n// If either of base_url / secret_key_path are provided, both must be.\n//\n//   - file:///a/directory\n//     -> Passes \"/a/directory\" to OpenBucket.\n//   - file://localhost/a/directory\n//     -> Also passes \"/a/directory\".\n//   - file://./../..\n//     -> The hostname is \".\", signaling a relative path; passes \"../..\".\n//   - file:///c:/foo/bar on Windows.\n//     -> Passes \"c:\\foo\\bar\".\n//   - file://localhost/c:/foo/bar on Windows.\n//     -> Also passes \"c:\\foo\\bar\".\n//   - file:///a/directory?base_url=/show&secret_key_path=secret.key\n//     -> Passes \"/a/directory\" to OpenBucket, and sets Options.URLSigner\n//     to a URLSignerHMAC initialized with base URL \"/show\" and secret key\n//     bytes read from the file \"secret.key\".\ntype URLOpener struct {\n\t// Options specifies the default options to pass to OpenBucket.\n\tOptions Options\n}\n\n// OpenBucketURL opens a blob.Bucket based on u.\nfunc (o *URLOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\tpath := u.Path\n\t// Hostname == \".\" means a relative path, so drop the leading \"/\".\n\t// Also drop the leading \"/\" on Windows.\n\tif u.Host == \".\" || os.PathSeparator != '/' {\n\t\tpath = strings.TrimPrefix(path, \"/\")\n\t}\n\topts, err := o.forParams(ctx, u.Query())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open bucket %v: %v\", u, err)\n\t}\n\treturn OpenBucket(filepath.FromSlash(path), opts)\n}\n\nvar recognizedParams = map[string]bool{\n\t\"create_dir\":      true,\n\t\"base_url\":        true,\n\t\"secret_key_path\": true,\n\t\"metadata\":        true,\n\t\"no_tmp_dir\":      true,\n\t\"dir_file_mode\":   true,\n}\n\ntype metadataOption string // Not exported as subject to change.\n\n// Settings for Options.Metadata.\nconst (\n\t// Metadata gets written to a separate file.\n\tMetadataInSidecar metadataOption = \"\"\n\t// Writes won't carry metadata, as per the package docstring.\n\tMetadataDontWrite metadataOption = \"skip\"\n)\n\nfunc (o *URLOpener) forParams(ctx context.Context, q url.Values) (*Options, error) {\n\tfor k := range q {\n\t\tif _, ok := recognizedParams[k]; !ok {\n\t\t\treturn nil, fmt.Errorf(\"invalid query parameter %q\", k)\n\t\t}\n\t}\n\topts := new(Options)\n\t*opts = o.Options\n\n\t// Note: can't just use q.Get, because then we can't distinguish between\n\t// \"not set\" (we should leave opts alone) vs \"set to empty string\" (which is\n\t// one of the legal values, we should override opts).\n\tmetadataVal := q[\"metadata\"]\n\tif len(metadataVal) > 0 {\n\t\tswitch metadataOption(metadataVal[0]) {\n\t\tcase MetadataDontWrite:\n\t\t\topts.Metadata = MetadataDontWrite\n\t\tcase MetadataInSidecar:\n\t\t\topts.Metadata = MetadataInSidecar\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"fileblob.OpenBucket: unsupported value for query parameter 'metadata'\")\n\t\t}\n\t}\n\tif q.Get(\"create_dir\") != \"\" {\n\t\topts.CreateDir = true\n\t}\n\tif fms := q.Get(\"dir_file_mode\"); fms != \"\" {\n\t\tfm, err := strconv.ParseUint(fms, 10, 32)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"fileblob.OpenBucket: invalid dir_file_mode %q: %v\", fms, err)\n\t\t}\n\t\topts.DirFileMode = os.FileMode(fm)\n\t}\n\tif q.Get(\"no_tmp_dir\") != \"\" {\n\t\topts.NoTempDir = true\n\t}\n\tbaseURL := q.Get(\"base_url\")\n\tkeyPath := q.Get(\"secret_key_path\")\n\tif (baseURL == \"\") != (keyPath == \"\") {\n\t\treturn nil, errors.New(\"fileblob.OpenBucket: must supply both base_url and secret_key_path query parameters\")\n\t}\n\tif baseURL != \"\" {\n\t\tburl, err := url.Parse(baseURL)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tsk, err := os.ReadFile(keyPath)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\topts.URLSigner = NewURLSignerHMAC(burl, sk)\n\t}\n\treturn opts, nil\n}\n\n// Options sets options for constructing a *blob.Bucket backed by fileblob.\ntype Options struct {\n\t// URLSigner implements signing URLs (to allow access to a resource without\n\t// further authorization) and verifying that a given URL is unexpired and\n\t// contains a signature produced by the URLSigner.\n\t// URLSigner is only required for utilizing the SignedURL API.\n\tURLSigner URLSigner\n\n\t// If true, create the directory backing the Bucket if it does not exist\n\t// (using os.MkdirAll).\n\tCreateDir bool\n\n\t// The FileMode to use when creating directories for the top-level directory\n\t// backing the bucket (when CreateDir is true), and for subdirectories for keys.\n\t// Defaults to 0777.\n\tDirFileMode os.FileMode\n\n\t// If true, don't use os.TempDir for temporary files, but instead place them\n\t// next to the actual files. This may result in \"stranded\" temporary files\n\t// (e.g., if the application is killed before the file cleanup runs).\n\t//\n\t// If your bucket directory is on a different mount than os.TempDir, you will\n\t// need to set this to true, as os.Rename will fail across mount points.\n\tNoTempDir bool\n\n\t// Refers to the strategy for how to deal with metadata (such as blob.Attributes).\n\t// For supported values please see the Metadata* constants.\n\t// If left unchanged, 'MetadataInSidecar' will be used.\n\tMetadata metadataOption\n}\n\ntype bucket struct {\n\tdir  string\n\topts *Options\n}\n\n// openBucket creates a driver.Bucket that reads and writes to dir.\n// dir must exist.\nfunc openBucket(dir string, opts *Options) (driver.Bucket, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif opts.DirFileMode == 0 {\n\t\topts.DirFileMode = os.FileMode(0o777)\n\t}\n\n\tabsdir, err := filepath.Abs(dir)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to convert %s into an absolute path: %v\", dir, err)\n\t}\n\tinfo, err := os.Stat(absdir)\n\n\t// Optionally, create the directory if it does not already exist.\n\tif err != nil && opts.CreateDir && os.IsNotExist(err) {\n\t\terr = os.MkdirAll(absdir, opts.DirFileMode)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"tried to create directory but failed: %v\", err)\n\t\t}\n\t\tinfo, err = os.Stat(absdir)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !info.IsDir() {\n\t\treturn nil, fmt.Errorf(\"%s is not a directory\", absdir)\n\t}\n\treturn &bucket{dir: absdir, opts: opts}, nil\n}\n\n// OpenBucket creates a *blob.Bucket backed by the filesystem and rooted at\n// dir, which must exist. See the package documentation for an example.\nfunc OpenBucket(dir string, opts *Options) (*blob.Bucket, error) {\n\tdrv, err := openBucket(dir, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn blob.NewBucket(drv), nil\n}\n\nfunc (b *bucket) Close() error {\n\treturn nil\n}\n\n// escapeKey does all required escaping for UTF-8 strings to work the filesystem.\nfunc escapeKey(s string) string {\n\ts = escape.HexEscape(s, func(r []rune, i int) bool {\n\t\tc := r[i]\n\t\tswitch {\n\t\tcase c < 32:\n\t\t\treturn true\n\t\t// We're going to replace '/' with os.PathSeparator below. In order for this\n\t\t// to be reversible, we need to escape raw os.PathSeparators.\n\t\tcase os.PathSeparator != '/' && c == os.PathSeparator:\n\t\t\treturn true\n\t\t// For \"../\", escape the trailing slash.\n\t\tcase i > 1 && c == '/' && r[i-1] == '.' && r[i-2] == '.':\n\t\t\treturn true\n\t\t// For \"//\", escape the trailing slash.\n\t\tcase i > 0 && c == '/' && r[i-1] == '/':\n\t\t\treturn true\n\t\t// Escape the trailing slash in a key.\n\t\tcase c == '/' && i == len(r)-1:\n\t\t\treturn true\n\t\t// https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file\n\t\tcase os.PathSeparator == '\\\\' && (c == '>' || c == '<' || c == ':' || c == '\"' || c == '|' || c == '?' || c == '*'):\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\t// Replace \"/\" with os.PathSeparator if needed, so that the local filesystem\n\t// can use subdirectories.\n\tif os.PathSeparator != '/' {\n\t\ts = strings.Replace(s, \"/\", string(os.PathSeparator), -1)\n\t}\n\treturn s\n}\n\n// unescapeKey reverses escapeKey.\nfunc unescapeKey(s string) string {\n\tif os.PathSeparator != '/' {\n\t\ts = strings.Replace(s, string(os.PathSeparator), \"/\", -1)\n\t}\n\ts = escape.HexUnescape(s)\n\treturn s\n}\n\nfunc (b *bucket) ErrorCode(err error) gcerrors.ErrorCode {\n\tswitch {\n\tcase os.IsNotExist(err):\n\t\treturn gcerrors.NotFound\n\tdefault:\n\t\treturn gcerrors.Unknown\n\t}\n}\n\n// path returns the full path for a key\nfunc (b *bucket) path(key string) (string, error) {\n\tpath := filepath.Join(b.dir, escapeKey(key))\n\t// Ensure that the key hasn't escaped the bucket root.\n\tif !strings.HasPrefix(\n\t\tfilepath.Clean(path)+string(os.PathSeparator),\n\t\t// Note: b.dir is already Cleaned via Abs in the constructor.\n\t\tb.dir+string(os.PathSeparator)) {\n\t\treturn \"\", fmt.Errorf(\"fileblob: key %q escapes bucket root\", key)\n\t}\n\tif strings.HasSuffix(path, attrsExt) {\n\t\treturn \"\", errAttrsExt\n\t}\n\treturn path, nil\n}\n\n// forKey returns the full path, os.FileInfo, and attributes for key.\nfunc (b *bucket) forKey(key string) (string, os.FileInfo, *xattrs, error) {\n\tpath, err := b.path(key)\n\tif err != nil {\n\t\treturn \"\", nil, nil, err\n\t}\n\tinfo, err := os.Stat(path)\n\tif err != nil {\n\t\treturn \"\", nil, nil, err\n\t}\n\tif info.IsDir() {\n\t\treturn \"\", nil, nil, os.ErrNotExist\n\t}\n\txa, err := getAttrs(path)\n\tif err != nil {\n\t\treturn \"\", nil, nil, err\n\t}\n\treturn path, info, &xa, nil\n}\n\n// ListPaged implements driver.ListPaged.\nfunc (b *bucket) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\tvar pageToken string\n\tif len(opts.PageToken) > 0 {\n\t\tpageToken = string(opts.PageToken)\n\t}\n\tpageSize := opts.PageSize\n\tif pageSize == 0 {\n\t\tpageSize = defaultPageSize\n\t}\n\t// If opts.Delimiter != \"\", lastPrefix contains the last \"directory\" key we\n\t// added. It is used to avoid adding it again; all files in this \"directory\"\n\t// are collapsed to the single directory entry.\n\tvar lastPrefix string\n\tvar lastKeyAdded string\n\n\t// If the Prefix contains a \"/\", we can set the root of the Walk\n\t// to the path specified by the Prefix as any files below the path will not\n\t// match the Prefix.\n\t// Note that we use \"/\" explicitly and not os.PathSeparator, as the opts.Prefix\n\t// is in the unescaped form.\n\troot := b.dir\n\tif i := strings.LastIndex(opts.Prefix, \"/\"); i > -1 {\n\t\troot = filepath.Join(root, opts.Prefix[:i])\n\t}\n\n\t// Ensure that the Prefix hasn't escaped the bucket root.\n\tif b.dir != string(os.PathSeparator) && !strings.HasPrefix(\n\t\tfilepath.Clean(root)+string(os.PathSeparator),\n\t\t// Note: b.dir is already Cleaned via Abs in the constructor.\n\t\tb.dir+string(os.PathSeparator)) {\n\t\treturn nil, fmt.Errorf(\"fileblob: key %q escapes bucket root\", opts.Prefix)\n\t}\n\n\t// Do a full recursive scan of the root directory.\n\tvar result driver.ListPage\n\terr := filepath.WalkDir(root, func(path string, info fs.DirEntry, err error) error {\n\t\tif err != nil {\n\t\t\t// Couldn't read this file/directory for some reason; just skip it.\n\t\t\treturn nil\n\t\t}\n\t\t// Skip the self-generated attribute files.\n\t\tif strings.HasSuffix(path, attrsExt) {\n\t\t\treturn nil\n\t\t}\n\t\t// os.Walk returns the root directory; skip it.\n\t\tif path == b.dir {\n\t\t\treturn nil\n\t\t}\n\t\t// Strip the <b.dir> prefix from path.\n\t\tprefixLen := len(b.dir)\n\t\t// Include the separator for non-root.\n\t\tif b.dir != \"/\" {\n\t\t\tprefixLen++\n\t\t}\n\t\tpath = path[prefixLen:]\n\t\t// Unescape the path to get the key.\n\t\tkey := unescapeKey(path)\n\t\t// Skip all directories. If opts.Delimiter is set, we'll create\n\t\t// pseudo-directories later.\n\t\t// Note that returning nil means that we'll still recurse into it;\n\t\t// we're just not adding a result for the directory itself.\n\t\tif info.IsDir() {\n\t\t\tkey += \"/\"\n\t\t\t// Avoid recursing into subdirectories if the directory name already\n\t\t\t// doesn't match the prefix; any files in it are guaranteed not to match.\n\t\t\tif len(key) > len(opts.Prefix) && !strings.HasPrefix(key, opts.Prefix) {\n\t\t\t\treturn filepath.SkipDir\n\t\t\t}\n\t\t\t// Similarly, avoid recursing into subdirectories if we're making\n\t\t\t// \"directories\" and all of the files in this subdirectory are guaranteed\n\t\t\t// to collapse to a \"directory\" that we've already added.\n\t\t\tif lastPrefix != \"\" && strings.HasPrefix(key, lastPrefix) {\n\t\t\t\treturn filepath.SkipDir\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t\t// Skip files/directories that don't match the Prefix.\n\t\tif !strings.HasPrefix(key, opts.Prefix) {\n\t\t\treturn nil\n\t\t}\n\t\tvar md5 []byte\n\t\tif xa, err := getAttrs(path); err == nil {\n\t\t\t// Note: we only have the MD5 hash for blobs that we wrote.\n\t\t\t// For other blobs, md5 will remain nil.\n\t\t\tmd5 = xa.MD5\n\t\t}\n\t\tfi, err := info.Info()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(*os.FileInfo)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = fi\n\t\t\treturn true\n\t\t}\n\t\tobj := &driver.ListObject{\n\t\t\tKey:     key,\n\t\t\tModTime: fi.ModTime(),\n\t\t\tSize:    fi.Size(),\n\t\t\tMD5:     md5,\n\t\t\tAsFunc:  asFunc,\n\t\t}\n\t\t// If using Delimiter, collapse \"directories\".\n\t\tif opts.Delimiter != \"\" {\n\t\t\t// Strip the prefix, which may contain Delimiter.\n\t\t\tkeyWithoutPrefix := key[len(opts.Prefix):]\n\t\t\t// See if the key still contains Delimiter.\n\t\t\t// If no, it's a file and we just include it.\n\t\t\t// If yes, it's a file in a \"sub-directory\" and we want to collapse\n\t\t\t// all files in that \"sub-directory\" into a single \"directory\" result.\n\t\t\tif idx := strings.Index(keyWithoutPrefix, opts.Delimiter); idx != -1 {\n\t\t\t\tprefix := opts.Prefix + keyWithoutPrefix[0:idx+len(opts.Delimiter)]\n\t\t\t\t// We've already included this \"directory\"; don't add it.\n\t\t\t\tif prefix == lastPrefix {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\t// Update the object to be a \"directory\".\n\t\t\t\tobj = &driver.ListObject{\n\t\t\t\t\tKey:    prefix,\n\t\t\t\t\tIsDir:  true,\n\t\t\t\t\tAsFunc: asFunc,\n\t\t\t\t}\n\t\t\t\tlastPrefix = prefix\n\t\t\t}\n\t\t}\n\t\t// If there's a pageToken, skip anything before it.\n\t\tif pageToken != \"\" && obj.Key <= pageToken {\n\t\t\treturn nil\n\t\t}\n\t\t// If we've already got a full page of results, set NextPageToken and stop.\n\t\t// Unless the current object is a directory, in which case there may\n\t\t// still be objects coming that are alphabetically before it (since\n\t\t// we appended the delimiter). In that case, keep going; we'll trim the\n\t\t// extra entries (if any) before returning.\n\t\tif len(result.Objects) == pageSize && !obj.IsDir {\n\t\t\tresult.NextPageToken = []byte(result.Objects[pageSize-1].Key)\n\t\t\treturn io.EOF\n\t\t}\n\t\tresult.Objects = append(result.Objects, obj)\n\t\t// Normally, objects are added in the correct order (by Key).\n\t\t// However, sometimes adding the file delimiter messes that up (e.g.,\n\t\t// if the file delimiter is later in the alphabet than the last character\n\t\t// of a key).\n\t\t// Detect if this happens and swap if needed.\n\t\tif len(result.Objects) > 1 && obj.Key < lastKeyAdded {\n\t\t\ti := len(result.Objects) - 1\n\t\t\tresult.Objects[i-1], result.Objects[i] = result.Objects[i], result.Objects[i-1]\n\t\t\tlastKeyAdded = result.Objects[i].Key\n\t\t} else {\n\t\t\tlastKeyAdded = obj.Key\n\t\t}\n\t\treturn nil\n\t})\n\tif err != nil && err != io.EOF {\n\t\treturn nil, err\n\t}\n\tif len(result.Objects) > pageSize {\n\t\tresult.Objects = result.Objects[0:pageSize]\n\t\tresult.NextPageToken = []byte(result.Objects[pageSize-1].Key)\n\t}\n\treturn &result, nil\n}\n\n// As implements driver.As.\nfunc (b *bucket) As(i any) bool {\n\tp, ok := i.(*os.FileInfo)\n\tif !ok {\n\t\treturn false\n\t}\n\tfi, err := os.Stat(b.dir)\n\tif err != nil {\n\t\treturn false\n\t}\n\t*p = fi\n\treturn true\n}\n\n// As implements driver.ErrorAs.\nfunc (b *bucket) ErrorAs(err error, i any) bool {\n\tif perr, ok := err.(*os.PathError); ok {\n\t\tif p, ok := i.(**os.PathError); ok {\n\t\t\t*p = perr\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Attributes implements driver.Attributes.\nfunc (b *bucket) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\t_, info, xa, err := b.forKey(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &driver.Attributes{\n\t\tCacheControl:       xa.CacheControl,\n\t\tContentDisposition: xa.ContentDisposition,\n\t\tContentEncoding:    xa.ContentEncoding,\n\t\tContentLanguage:    xa.ContentLanguage,\n\t\tContentType:        xa.ContentType,\n\t\tMetadata:           xa.Metadata,\n\t\t// CreateTime left as the zero time.\n\t\tModTime: info.ModTime(),\n\t\tSize:    info.Size(),\n\t\tMD5:     xa.MD5,\n\t\tETag:    fmt.Sprintf(\"\\\"%x-%x\\\"\", info.ModTime().UnixNano(), info.Size()),\n\t\tAsFunc: func(i any) bool {\n\t\t\tp, ok := i.(*os.FileInfo)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = info\n\t\t\treturn true\n\t\t},\n\t}, nil\n}\n\n// NewRangeReader implements driver.NewRangeReader.\nfunc (b *bucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tpath, info, xa, err := b.forKey(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tf, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opts.BeforeRead != nil {\n\t\tif err := opts.BeforeRead(func(i any) bool {\n\t\t\tp, ok := i.(**os.File)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = f\n\t\t\treturn true\n\t\t}); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif offset > 0 {\n\t\tif _, err := f.Seek(offset, io.SeekStart); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tr := io.Reader(f)\n\tif length >= 0 {\n\t\tr = io.LimitReader(r, length)\n\t}\n\treturn &reader{\n\t\tr: r,\n\t\tc: f,\n\t\tattrs: driver.ReaderAttributes{\n\t\t\tContentType: xa.ContentType,\n\t\t\tModTime:     info.ModTime(),\n\t\t\tSize:        info.Size(),\n\t\t},\n\t}, nil\n}\n\ntype reader struct {\n\tr     io.Reader\n\tc     io.Closer\n\tattrs driver.ReaderAttributes\n}\n\nfunc (r *reader) Read(p []byte) (int, error) {\n\tif r.r == nil {\n\t\treturn 0, io.EOF\n\t}\n\treturn r.r.Read(p)\n}\n\nfunc (r *reader) Close() error {\n\tif r.c == nil {\n\t\treturn nil\n\t}\n\treturn r.c.Close()\n}\n\nfunc (r *reader) Attributes() *driver.ReaderAttributes {\n\treturn &r.attrs\n}\n\nfunc (r *reader) As(i any) bool {\n\tp, ok := i.(*io.Reader)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = r.r\n\treturn true\n}\n\nfunc createTemp(path string, noTempDir bool) (*os.File, error) {\n\t// Use a custom createTemp function rather than os.CreateTemp() as\n\t// os.CreateTemp() sets the permissions of the tempfile to 0600, rather than\n\t// 0666, making it inconsistent with the directories and attribute files.\n\ttry := 0\n\tfor {\n\t\t// Append the current time with nanosecond precision and .tmp to the\n\t\t// base path. If the file already exists try again. Nanosecond changes enough\n\t\t// between each iteration to make a conflict unlikely. Using the full\n\t\t// time lowers the chance of a collision with a file using a similar\n\t\t// pattern, but has undefined behavior after the year 2262.\n\t\tvar name string\n\t\tif noTempDir {\n\t\t\tname = path\n\t\t} else {\n\t\t\tname = filepath.Join(os.TempDir(), filepath.Base(path))\n\t\t}\n\t\tname += \".\" + strconv.FormatInt(time.Now().UnixNano(), 16) + \".tmp\"\n\t\tf, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0o666)\n\t\tif os.IsExist(err) {\n\t\t\tif try++; try < 10000 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, &os.PathError{Op: \"createtemp\", Path: path + \".*.tmp\", Err: os.ErrExist}\n\t\t}\n\t\treturn f, err\n\t}\n}\n\n// NewTypedWriter implements driver.NewTypedWriter.\nfunc (b *bucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\tpath, err := b.path(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := os.MkdirAll(filepath.Dir(path), b.opts.DirFileMode); err != nil {\n\t\treturn nil, err\n\t}\n\tf, err := createTemp(path, b.opts.NoTempDir)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opts.BeforeWrite != nil {\n\t\tif err := opts.BeforeWrite(func(i any) bool {\n\t\t\tp, ok := i.(**os.File)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = f\n\t\t\treturn true\n\t\t}); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif b.opts.Metadata == MetadataDontWrite {\n\t\tw := &writer{\n\t\t\tctx:        ctx,\n\t\t\tFile:       f,\n\t\t\tpath:       path,\n\t\t\tifNotExist: opts.IfNotExist,\n\t\t\tmu:         &sync.Mutex{},\n\t\t}\n\t\treturn w, nil\n\t}\n\n\tvar metadata map[string]string\n\tif len(opts.Metadata) > 0 {\n\t\tmetadata = opts.Metadata\n\t}\n\tattrs := xattrs{\n\t\tCacheControl:       opts.CacheControl,\n\t\tContentDisposition: opts.ContentDisposition,\n\t\tContentEncoding:    opts.ContentEncoding,\n\t\tContentLanguage:    opts.ContentLanguage,\n\t\tContentType:        contentType,\n\t\tMetadata:           metadata,\n\t}\n\tw := &writerWithSidecar{\n\t\tctx:        ctx,\n\t\tf:          f,\n\t\tpath:       path,\n\t\tattrs:      attrs,\n\t\tcontentMD5: opts.ContentMD5,\n\t\tmd5hash:    md5.New(),\n\t\tifNotExist: opts.IfNotExist,\n\t\tmu:         &sync.Mutex{},\n\t}\n\treturn w, nil\n}\n\n// writerWithSidecar implements the strategy of storing metadata in a distinct file.\ntype writerWithSidecar struct {\n\tctx        context.Context\n\tf          *os.File\n\tpath       string\n\tattrs      xattrs\n\tcontentMD5 []byte\n\t// We compute the MD5 hash so that we can store it with the file attributes,\n\t// not for verification.\n\tmd5hash    hash.Hash\n\tifNotExist bool\n\tmu         *sync.Mutex\n}\n\nfunc (w *writerWithSidecar) Write(p []byte) (n int, err error) {\n\tn, err = w.f.Write(p)\n\tif err != nil {\n\t\t// Don't hash the unwritten tail twice when writing is resumed.\n\t\tw.md5hash.Write(p[:n])\n\t\treturn n, err\n\t}\n\tif _, err := w.md5hash.Write(p); err != nil {\n\t\treturn n, err\n\t}\n\treturn n, nil\n}\n\nfunc (w *writerWithSidecar) Close() error {\n\terr := w.f.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Always delete the temp file. On success, it will have been renamed so\n\t// the Remove will fail.\n\tdefer func() {\n\t\t_ = os.Remove(w.f.Name())\n\t}()\n\n\t// Check if the write was cancelled.\n\tif err := w.ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\n\tmd5sum := w.md5hash.Sum(nil)\n\tw.attrs.MD5 = md5sum\n\n\t// Write the attributes file.\n\tif err := setAttrs(w.path, w.attrs); err != nil {\n\t\treturn err\n\t}\n\n\tif w.ifNotExist {\n\t\tw.mu.Lock()\n\t\tdefer w.mu.Unlock()\n\t\t_, err = os.Stat(w.path)\n\t\tif err == nil {\n\t\t\treturn gcerr.New(gcerrors.FailedPrecondition, err, 1, \"File already exist\")\n\t\t}\n\t}\n\t// Rename the temp file to path.\n\tif err := os.Rename(w.f.Name(), w.path); err != nil {\n\t\t_ = os.Remove(w.path + attrsExt)\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// writer is a file with a temporary name until closed.\n//\n// Embedding os.File allows the likes of io.Copy to use optimizations.,\n// which is why it is not folded into writerWithSidecar.\ntype writer struct {\n\t*os.File\n\tctx        context.Context\n\tpath       string\n\tifNotExist bool\n\tmu         *sync.Mutex\n}\n\nfunc (w *writer) Upload(r io.Reader) error {\n\t_, err := w.ReadFrom(r)\n\treturn err\n}\n\nfunc (w *writer) Close() error {\n\terr := w.File.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Always delete the temp file. On success, it will have been renamed so\n\t// the Remove will fail.\n\ttempname := w.File.Name()\n\tdefer os.Remove(tempname)\n\n\t// Check if the write was cancelled.\n\tif err := w.ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\n\tif w.ifNotExist {\n\t\tw.mu.Lock()\n\t\tdefer w.mu.Unlock()\n\t\t_, err = os.Stat(w.path)\n\t\tif err == nil {\n\t\t\treturn gcerr.New(gcerrors.FailedPrecondition, err, 1, \"File already exist\")\n\t\t}\n\t}\n\n\t// Rename the temp file to path.\n\tif err := os.Rename(tempname, w.path); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// Copy implements driver.Copy.\nfunc (b *bucket) Copy(ctx context.Context, dstKey, srcKey string, opts *driver.CopyOptions) error {\n\t// Note: we could use NewRangeReader here, but since we need to copy all of\n\t// the metadata (from xa), it's more efficient to do it directly.\n\tsrcPath, _, xa, err := b.forKey(srcKey)\n\tif err != nil {\n\t\treturn err\n\t}\n\tf, err := os.Open(srcPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\t// We'll write the copy using Writer, to avoid re-implementing making of a\n\t// temp file, cleaning up after partial failures, etc.\n\twopts := driver.WriterOptions{\n\t\tCacheControl:       xa.CacheControl,\n\t\tContentDisposition: xa.ContentDisposition,\n\t\tContentEncoding:    xa.ContentEncoding,\n\t\tContentLanguage:    xa.ContentLanguage,\n\t\tMetadata:           xa.Metadata,\n\t\tBeforeWrite:        opts.BeforeCopy,\n\t}\n\t// Create a cancelable context so we can cancel the write if there are\n\t// problems.\n\twriteCtx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\tw, err := b.NewTypedWriter(writeCtx, dstKey, xa.ContentType, &wopts)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = io.Copy(w, f)\n\tif err != nil {\n\t\tcancel() // cancel before Close cancels the write\n\t\tw.Close()\n\t\treturn err\n\t}\n\treturn w.Close()\n}\n\n// Delete implements driver.Delete.\nfunc (b *bucket) Delete(ctx context.Context, key string) error {\n\tpath, err := b.path(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = os.Remove(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err = os.Remove(path + attrsExt); err != nil && !os.IsNotExist(err) {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// SignedURL implements driver.SignedURL\nfunc (b *bucket) SignedURL(ctx context.Context, key string, opts *driver.SignedURLOptions) (string, error) {\n\tif b.opts.URLSigner == nil {\n\t\treturn \"\", gcerr.New(gcerr.Unimplemented, nil, 1, \"fileblob.SignedURL: bucket does not have an Options.URLSigner\")\n\t}\n\tif opts.BeforeSign != nil {\n\t\tif err := opts.BeforeSign(func(any) bool { return false }); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\tsurl, err := b.opts.URLSigner.URLFromKey(ctx, key, opts)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn surl.String(), nil\n}\n\n// URLSigner defines an interface for creating and verifying a signed URL for\n// objects in a fileblob bucket. Signed URLs are typically used for granting\n// access to an otherwise-protected resource without requiring further\n// authentication, and callers should take care to restrict the creation of\n// signed URLs as is appropriate for their application.\ntype URLSigner interface {\n\t// URLFromKey defines how the bucket's object key will be turned\n\t// into a signed URL. URLFromKey must be safe to call from multiple goroutines.\n\tURLFromKey(ctx context.Context, key string, opts *driver.SignedURLOptions) (*url.URL, error)\n\n\t// KeyFromURL must be able to validate a URL returned from URLFromKey.\n\t// KeyFromURL must only return the object if if the URL is\n\t// both unexpired and authentic. KeyFromURL must be safe to call from\n\t// multiple goroutines. Implementations of KeyFromURL should not modify\n\t// the URL argument.\n\tKeyFromURL(ctx context.Context, surl *url.URL) (string, error)\n}\n\n// URLSignerHMAC signs URLs by adding the object key, expiration time, and a\n// hash-based message authentication code (HMAC) into the query parameters.\n// Values of URLSignerHMAC with the same secret key will accept URLs produced by\n// others as valid.\ntype URLSignerHMAC struct {\n\tbaseURL   *url.URL\n\tsecretKey []byte\n}\n\n// NewURLSignerHMAC creates a URLSignerHMAC. If the secret key is empty,\n// then NewURLSignerHMAC panics.\nfunc NewURLSignerHMAC(baseURL *url.URL, secretKey []byte) *URLSignerHMAC {\n\tif len(secretKey) == 0 {\n\t\tpanic(\"creating URLSignerHMAC: secretKey is required\")\n\t}\n\tuc := new(url.URL)\n\t*uc = *baseURL\n\treturn &URLSignerHMAC{\n\t\tbaseURL:   uc,\n\t\tsecretKey: secretKey,\n\t}\n}\n\n// URLFromKey creates a signed URL by copying the baseURL and appending the\n// object key, expiry, and signature as a query params.\nfunc (h *URLSignerHMAC) URLFromKey(ctx context.Context, key string, opts *driver.SignedURLOptions) (*url.URL, error) {\n\tsURL := new(url.URL)\n\t*sURL = *h.baseURL\n\n\tq := sURL.Query()\n\tq.Set(\"obj\", key)\n\tq.Set(\"expiry\", strconv.FormatInt(time.Now().Add(opts.Expiry).Unix(), 10))\n\tq.Set(\"method\", opts.Method)\n\tif opts.ContentType != \"\" {\n\t\tq.Set(\"contentType\", opts.ContentType)\n\t}\n\tq.Set(\"signature\", h.getMAC(q))\n\tsURL.RawQuery = q.Encode()\n\n\treturn sURL, nil\n}\n\nfunc (h *URLSignerHMAC) getMAC(q url.Values) string {\n\tsignedVals := url.Values{}\n\tsignedVals.Set(\"obj\", q.Get(\"obj\"))\n\tsignedVals.Set(\"expiry\", q.Get(\"expiry\"))\n\tsignedVals.Set(\"method\", q.Get(\"method\"))\n\tif contentType := q.Get(\"contentType\"); contentType != \"\" {\n\t\tsignedVals.Set(\"contentType\", contentType)\n\t}\n\tmsg := signedVals.Encode()\n\n\thsh := hmac.New(sha256.New, h.secretKey)\n\thsh.Write([]byte(msg))\n\treturn base64.RawURLEncoding.EncodeToString(hsh.Sum(nil))\n}\n\n// KeyFromURL checks expiry and signature, and returns the object key\n// only if the signed URL is both authentic and unexpired.\nfunc (h *URLSignerHMAC) KeyFromURL(ctx context.Context, sURL *url.URL) (string, error) {\n\tq := sURL.Query()\n\n\texp, err := strconv.ParseInt(q.Get(\"expiry\"), 10, 64)\n\tif err != nil || time.Now().Unix() > exp {\n\t\treturn \"\", errors.New(\"retrieving blob key from URL: key cannot be retrieved\")\n\t}\n\n\tif !h.checkMAC(q) {\n\t\treturn \"\", errors.New(\"retrieving blob key from URL: key cannot be retrieved\")\n\t}\n\treturn q.Get(\"obj\"), nil\n}\n\nfunc (h *URLSignerHMAC) checkMAC(q url.Values) bool {\n\tmac := q.Get(\"signature\")\n\texpected := h.getMAC(q)\n\t// This compares the Base-64 encoded MACs\n\treturn hmac.Equal([]byte(mac), []byte(expected))\n}\n"
  },
  {
    "path": "blob/fileblob/fileblob_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fileblob\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/blob/drivertest\"\n\t\"gocloud.dev/gcerrors\"\n)\n\ntype harness struct {\n\tdir         string\n\tprefix      string\n\tmetadataHow metadataOption\n\tnoTempDir   bool\n\tserver      *httptest.Server\n\turlSigner   URLSigner\n\tcloser      func()\n}\n\nfunc newHarness(ctx context.Context, t *testing.T, prefix string, metadataHow metadataOption, noTempDir bool) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tif metadataHow == MetadataDontWrite {\n\t\t// Skip tests for if no metadata gets written.\n\t\t// For these it is currently undefined whether any gets read (back).\n\t\tswitch name := t.Name(); {\n\t\tcase strings.Contains(name, \"ContentType\"), strings.HasSuffix(name, \"TestAttributes\"), strings.Contains(name, \"TestMetadata/\"):\n\t\t\tt.SkipNow()\n\t\t\treturn nil, nil\n\t\t}\n\t}\n\n\tdir := filepath.Join(os.TempDir(), \"go-cloud-fileblob\")\n\tif err := os.MkdirAll(dir, os.ModePerm); err != nil {\n\t\treturn nil, err\n\t}\n\tif prefix != \"\" {\n\t\tif err := os.MkdirAll(filepath.Join(dir, prefix), os.ModePerm); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\th := &harness{dir: dir, prefix: prefix, metadataHow: metadataHow, noTempDir: noTempDir}\n\n\tlocalServer := httptest.NewServer(http.HandlerFunc(h.serveSignedURL))\n\th.server = localServer\n\n\tu, err := url.Parse(h.server.URL)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\th.urlSigner = NewURLSignerHMAC(u, []byte(\"I'm a secret key\"))\n\n\th.closer = func() { _ = os.RemoveAll(dir); localServer.Close() }\n\n\treturn h, nil\n}\n\nfunc (h *harness) serveSignedURL(w http.ResponseWriter, r *http.Request) {\n\tobjKey, err := h.urlSigner.KeyFromURL(r.Context(), r.URL)\n\tif err != nil {\n\t\tw.WriteHeader(http.StatusForbidden)\n\t\treturn\n\t}\n\n\tallowedMethod := r.URL.Query().Get(\"method\")\n\tif allowedMethod == \"\" {\n\t\tallowedMethod = http.MethodGet\n\t}\n\tif allowedMethod != r.Method {\n\t\tw.WriteHeader(http.StatusForbidden)\n\t\treturn\n\t}\n\tcontentType := r.URL.Query().Get(\"contentType\")\n\tif r.Header.Get(\"Content-Type\") != contentType {\n\t\tw.WriteHeader(http.StatusForbidden)\n\t\treturn\n\t}\n\n\tbucket, err := OpenBucket(h.dir, &Options{})\n\tif err != nil {\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\treturn\n\t}\n\tdefer bucket.Close()\n\n\tswitch r.Method {\n\tcase http.MethodGet:\n\t\treader, err := bucket.NewReader(r.Context(), objKey, nil)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\t\tdefer reader.Close()\n\t\tio.Copy(w, reader)\n\tcase http.MethodPut:\n\t\twriter, err := bucket.NewWriter(r.Context(), objKey, &blob.WriterOptions{\n\t\t\tContentType: contentType,\n\t\t})\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tio.Copy(writer, r.Body)\n\t\tif err := writer.Close(); err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\tcase http.MethodDelete:\n\t\tif err := bucket.Delete(r.Context(), objKey); err != nil {\n\t\t\tw.WriteHeader(http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\tdefault:\n\t\tw.WriteHeader(http.StatusForbidden)\n\t}\n}\n\nfunc (h *harness) HTTPClient() *http.Client {\n\treturn &http.Client{}\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Bucket, error) {\n\topts := &Options{\n\t\tURLSigner: h.urlSigner,\n\t\tMetadata:  h.metadataHow,\n\t\tNoTempDir: h.noTempDir,\n\t}\n\tdrv, err := openBucket(h.dir, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif h.prefix == \"\" {\n\t\treturn drv, nil\n\t}\n\treturn driver.NewPrefixedBucket(drv, h.prefix), nil\n}\n\nfunc (h *harness) MakeDriverForNonexistentBucket(ctx context.Context) (driver.Bucket, error) {\n\t// Does not make sense for this driver, as it verifies\n\t// that the directory exists in OpenBucket.\n\treturn nil, nil\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc TestConformance(t *testing.T) {\n\tnewHarnessNoPrefix := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, \"\", MetadataInSidecar, false)\n\t}\n\tdrivertest.RunConformanceTests(t, newHarnessNoPrefix, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc TestConformanceNoTempDir(t *testing.T) {\n\tnewHarnessNoTmpDir := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, \"\", MetadataInSidecar, true)\n\t}\n\tdrivertest.RunConformanceTests(t, newHarnessNoTmpDir, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc TestConformanceWithPrefix(t *testing.T) {\n\tconst prefix = \"some/prefix/dir/\"\n\tnewHarnessWithPrefix := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, prefix, MetadataInSidecar, false)\n\t}\n\tdrivertest.RunConformanceTests(t, newHarnessWithPrefix, []drivertest.AsTest{verifyAs{prefix: prefix}})\n}\n\nfunc TestConformanceSkipMetadata(t *testing.T) {\n\tnewHarnessSkipMetadata := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, \"\", MetadataDontWrite, false)\n\t}\n\tdrivertest.RunConformanceTests(t, newHarnessSkipMetadata, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc BenchmarkFileblob(b *testing.B) {\n\tdir := filepath.Join(os.TempDir(), \"go-cloud-fileblob\")\n\tif err := os.MkdirAll(dir, os.ModePerm); err != nil {\n\t\tb.Fatal(err)\n\t}\n\tbkt, err := OpenBucket(dir, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, bkt)\n}\n\n// File-specific unit tests.\nfunc TestNewBucket(t *testing.T) {\n\tt.Run(\"BucketDirMissing\", func(t *testing.T) {\n\t\tdir := t.TempDir()\n\n\t\t_, gotErr := OpenBucket(filepath.Join(dir, \"notfound\"), nil)\n\t\tif gotErr == nil {\n\t\t\tt.Errorf(\"got nil want error\")\n\t\t}\n\t})\n\tt.Run(\"BucketDirMissingWithCreateDir\", func(t *testing.T) {\n\t\tdir := t.TempDir()\n\n\t\tb, gotErr := OpenBucket(filepath.Join(dir, \"notfound\"), &Options{CreateDir: true})\n\t\tif gotErr != nil {\n\t\t\tt.Errorf(\"got error %v\", gotErr)\n\t\t}\n\t\tdefer b.Close()\n\n\t\t// Make sure the subdir has gotten permissions to be used.\n\t\tgotErr = b.WriteAll(context.Background(), \"key\", []byte(\"delme\"), nil)\n\t\tif gotErr != nil {\n\t\t\tt.Errorf(\"got error writing to bucket from CreateDir %v\", gotErr)\n\t\t}\n\t})\n\tt.Run(\"BucketIsFile\", func(t *testing.T) {\n\t\tdir := t.TempDir()\n\n\t\tf, err := os.CreateTemp(dir, \"fileblob\")\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\t_, gotErr := OpenBucket(f.Name(), nil)\n\t\tif gotErr == nil {\n\t\t\tt.Errorf(\"got nil want error\")\n\t\t}\n\t})\n}\n\nfunc TestSignedURLReturnsUnimplementedWithNoURLSigner(t *testing.T) {\n\tdir := t.TempDir()\n\n\tb, err := OpenBucket(dir, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer b.Close()\n\t_, gotErr := b.SignedURL(context.Background(), \"key\", nil)\n\tif gcerrors.Code(gotErr) != gcerrors.Unimplemented {\n\t\tt.Errorf(\"want Unimplemented error, got %v\", gotErr)\n\t}\n}\n\ntype verifyAs struct {\n\tprefix string\n}\n\nfunc (verifyAs) Name() string { return \"verify As types for fileblob\" }\n\nfunc (verifyAs) BucketCheck(b *blob.Bucket) error {\n\tvar fi os.FileInfo\n\tif !b.As(&fi) {\n\t\treturn errors.New(\"Bucket.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) BeforeRead(as func(any) bool) error {\n\tvar f *os.File\n\tif !as(&f) {\n\t\treturn errors.New(\"BeforeRead.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) BeforeWrite(as func(any) bool) error {\n\tvar f *os.File\n\tif !as(&f) {\n\t\treturn errors.New(\"BeforeWrite.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) BeforeCopy(as func(any) bool) error {\n\tvar f *os.File\n\tif !as(&f) {\n\t\treturn errors.New(\"BeforeCopy.As failed\")\n\t}\n\treturn nil\n}\nfunc (verifyAs) BeforeList(as func(any) bool) error { return nil }\nfunc (verifyAs) BeforeSign(as func(any) bool) error { return nil }\nfunc (verifyAs) AttributesCheck(attrs *blob.Attributes) error {\n\tvar fi os.FileInfo\n\tif !attrs.As(&fi) {\n\t\treturn errors.New(\"Attributes.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ReaderCheck(r *blob.Reader) error {\n\tvar ior io.Reader\n\tif !r.As(&ior) {\n\t\treturn errors.New(\"Reader.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ListObjectCheck(o *blob.ListObject) error {\n\tvar fi os.FileInfo\n\tif !o.As(&fi) {\n\t\treturn errors.New(\"ListObject.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyAs) ErrorCheck(b *blob.Bucket, err error) error {\n\tvar perr *os.PathError\n\tif !b.ErrorAs(err, &perr) {\n\t\treturn errors.New(\"want ErrorAs to succeed for PathError\")\n\t}\n\twantSuffix := filepath.Join(\"go-cloud-fileblob\", v.prefix, \"key-does-not-exist\")\n\tif got := perr.Path; !strings.HasSuffix(got, wantSuffix) {\n\t\treturn fmt.Errorf(\"got path %q, want suffix %q\", got, wantSuffix)\n\t}\n\treturn nil\n}\n\nfunc TestOpenBucketFromURL(t *testing.T) {\n\tconst subdir = \"mysubdir\"\n\tdir := filepath.Join(os.TempDir(), \"fileblob\")\n\tif err := os.MkdirAll(dir, os.ModePerm); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := os.MkdirAll(filepath.Join(dir, subdir), os.ModePerm); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := os.WriteFile(filepath.Join(dir, \"myfile.txt\"), []byte(\"hello world\"), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// To avoid making another temp dir, use the bucket directory to hold the secret key file.\n\tsecretKeyPath := filepath.Join(dir, \"secret.key\")\n\tif err := os.WriteFile(secretKeyPath, []byte(\"secret key\"), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := os.WriteFile(filepath.Join(dir, subdir, \"myfileinsubdir.txt\"), []byte(\"hello world in subdir\"), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// Convert dir to a URL path, adding a leading \"/\" if needed on Windows.\n\tdirpath := filepath.ToSlash(dir)\n\tif os.PathSeparator != '/' && !strings.HasPrefix(dirpath, \"/\") {\n\t\tdirpath = \"/\" + dirpath\n\t}\n\n\ttests := []struct {\n\t\tURL         string\n\t\tKey         string\n\t\tWantErr     bool\n\t\tWantReadErr bool\n\t\tWant        string\n\t}{\n\t\t// Bucket doesn't exist -> error at construction time.\n\t\t{\"file:///bucket-not-found\", \"\", true, false, \"\"},\n\t\t// File doesn't exist -> error at read time.\n\t\t{\"file://\" + dirpath, \"filenotfound.txt\", false, true, \"\"},\n\t\t// Relative path using host=\".\"; bucket is created but error at read time.\n\t\t{\"file://./../..\", \"filenotfound.txt\", false, true, \"\"},\n\t\t// OK.\n\t\t{\"file://\" + dirpath, \"myfile.txt\", false, false, \"hello world\"},\n\t\t// OK, with no_tmp_dir.\n\t\t{\"file://\" + dirpath + \"?no_tmp_dir\", \"myfile.txt\", false, false, \"hello world\"},\n\t\t// OK, host is ignored.\n\t\t{\"file://localhost\" + dirpath, \"myfile.txt\", false, false, \"hello world\"},\n\t\t// OK, with prefix.\n\t\t{\"file://\" + dirpath + \"?prefix=\" + subdir + \"/\", \"myfileinsubdir.txt\", false, false, \"hello world in subdir\"},\n\t\t// Subdir does not exist.\n\t\t{\"file://\" + dirpath + \"subdir\", \"\", true, false, \"\"},\n\t\t// Subdir does not exist, but create_dir creates it. Error is at file read time.\n\t\t{\"file://\" + dirpath + \"subdir2?create_dir=true\", \"filenotfound.txt\", false, true, \"\"},\n\t\t// Invalid dir_file_mode.\n\t\t{\"file://\" + dirpath + \"subdir?dir_file_mode=x\", \"myfile.txt\", true, false, \"\"},\n\t\t// Another invalid dir_file_mode.\n\t\t{\"file://\" + dirpath + \"subdir?dir_file_mode=-1\", \"myfile.txt\", true, false, \"\"},\n\t\t// Valid dir_file_mode.\n\t\t{\"file://\" + dirpath + \"subdir3?dir_file_mode=666&create_dir=true\", \"filenotfound.txt\", false, true, \"\"},\n\t\t// Invalid query parameter.\n\t\t{\"file://\" + dirpath + \"?param=value\", \"myfile.txt\", true, false, \"\"},\n\t\t// Unrecognized value for parameter \"metadata\".\n\t\t{\"file://\" + dirpath + \"?metadata=nosuchstrategy\", \"myfile.txt\", true, false, \"\"},\n\t\t// OK, with params.\n\t\t{\n\t\t\tfmt.Sprintf(\"file://%s?base_url=/show&secret_key_path=%s\", dirpath, secretKeyPath),\n\t\t\t\"myfile.txt\", false, false, \"hello world\",\n\t\t},\n\t\t// Bad secret key filename.\n\t\t{\n\t\t\tfmt.Sprintf(\"file://%s?base_url=/show&secret_key_path=%s\", dirpath, \"bad\"),\n\t\t\t\"myfile.txt\", true, false, \"\",\n\t\t},\n\t\t// Missing base_url.\n\t\t{\n\t\t\tfmt.Sprintf(\"file://%s?secret_key_path=%s\", dirpath, secretKeyPath),\n\t\t\t\"myfile.txt\", true, false, \"\",\n\t\t},\n\t\t// Missing secret_key_path.\n\t\t{\"file://\" + dirpath + \"?base_url=/show\", \"myfile.txt\", true, false, \"\"},\n\t}\n\n\tctx := context.Background()\n\tfor i, test := range tests {\n\t\tb, err := blob.OpenBucket(ctx, test.URL)\n\t\tif b != nil {\n\t\t\tdefer b.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"#%d: %s: got error %v, want error %v\", i, test.URL, err, test.WantErr)\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tgot, err := b.ReadAll(ctx, test.Key)\n\t\tif (err != nil) != test.WantReadErr {\n\t\t\tt.Errorf(\"%s: got read error %v, want error %v\", test.URL, err, test.WantReadErr)\n\t\t}\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif string(got) != test.Want {\n\t\t\tt.Errorf(\"%s: got %q want %q\", test.URL, got, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestEscapeBucketRoot(t *testing.T) {\n\tctx := context.Background()\n\ttdir := t.TempDir()\n\tdir := filepath.Join(tdir, \"go-cloud-fileblob\")\n\tif err := os.MkdirAll(dir, os.ModePerm); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tb, err := OpenBucket(dir, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\tit := b.List(&blob.ListOptions{\n\t\tPrefix: \"../\",\n\t})\n\t_, err = it.Next(ctx)\n\tif err == nil || err == io.EOF || !strings.Contains(err.Error(), \"escapes bucket root\") {\n\t\tt.Fatalf(\"Got no error or unexpected error when trying to escape bucket root via List (got %v)\", err)\n\t}\n\n\terr = b.Delete(ctx, \"..\")\n\tif err == nil || !strings.Contains(err.Error(), \"escapes bucket root\") {\n\t\tt.Fatalf(\"Got no error or unexpected error when trying to escape bucket root via Delete (got %v)\", err)\n\t}\n}\n\nfunc TestListAtRoot(t *testing.T) {\n\tif runtime.GOOS == \"windows\" {\n\t\tt.Skip(\"/ as root is a unix concept\")\n\t}\n\n\tctx := context.Background()\n\tb, err := OpenBucket(\"/\", nil)\n\tif err != nil {\n\t\tt.Fatalf(\"Got error creating bucket; %#v\", err)\n\t}\n\tdefer b.Close()\n\n\tdir := t.TempDir()\n\n\tf, err := os.Create(filepath.Join(dir, \"file.txt\"))\n\tif err != nil {\n\t\tt.Fatalf(\"Got error creating file: %#v\", err)\n\t}\n\tdefer f.Close()\n\n\tit := b.List(&blob.ListOptions{\n\t\tPrefix: dir[1:],\n\t})\n\tobj, err := it.Next(ctx)\n\tif err != nil {\n\t\tt.Fatalf(\"Got error reading next item from list: %#v\", err)\n\t}\n\tif obj.Key != filepath.Join(dir, \"file.txt\")[1:] {\n\t\tt.Fatalf(\"Got unexpected filename in list: %q\", obj.Key)\n\t}\n\t_, err = it.Next(ctx)\n\tif err != io.EOF {\n\t\tt.Fatalf(\"Expecting an EOF on next item in list, got: %#v\", err)\n\t}\n}\n\nfunc TestSkipMetadata(t *testing.T) {\n\tdir := t.TempDir()\n\n\tdirpath := filepath.ToSlash(dir)\n\tif os.PathSeparator != '/' && !strings.HasPrefix(dirpath, \"/\") {\n\t\tdirpath = \"/\" + dirpath\n\t}\n\n\ttests := []struct {\n\t\tURL         string\n\t\twantSidecar bool\n\t}{\n\t\t{\"file://\" + dirpath + \"?metadata=skip\", false},\n\t\t{\"file://\" + dirpath, true},                // Implicitly sets the default strategy…\n\t\t{\"file://\" + dirpath + \"?metadata=\", true}, // … and explicitly.\n\t}\n\n\tctx := t.Context()\n\tfor _, test := range tests {\n\t\tb, err := blob.OpenBucket(ctx, test.URL)\n\t\tif b != nil {\n\t\t\tdefer b.Close()\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\terr = b.WriteAll(ctx, \"key\", []byte(\"hello world\"), &blob.WriterOptions{\n\t\t\tContentType: \"text/plain\",\n\t\t})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\t_, err = os.Stat(filepath.Join(dir, \"key\"+attrsExt))\n\t\tif gotSidecar := !errors.Is(err, os.ErrNotExist); test.wantSidecar != gotSidecar {\n\t\t\tt.Errorf(\"Metadata sidecar file (extension %s) exists: %v, did we want it: %v\",\n\t\t\t\tattrsExt, gotSidecar, test.wantSidecar)\n\t\t}\n\t\tb.Delete(ctx, \"key\")\n\t}\n}\n"
  },
  {
    "path": "blob/gcsblob/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcsblob_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/gcsblob\"\n\t\"gocloud.dev/gcp\"\n)\n\nfunc ExampleOpenBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create an HTTP client.\n\t// This example uses the default HTTP transport and the credentials\n\t// created above.\n\tclient, err := gcp.NewHTTPClient(\n\t\tgcp.DefaultTransport(),\n\t\tgcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a *blob.Bucket.\n\tbucket, err := gcsblob.OpenBucket(ctx, client, \"my-bucket\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n}\n\nfunc Example_openBucketFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/blob/gcsblob\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// blob.OpenBucket creates a *blob.Bucket from a URL.\n\t// This URL will open the bucket \"my-bucket\" using default credentials.\n\tbucket, err := blob.OpenBucket(ctx, \"gs://my-bucket\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n}\n"
  },
  {
    "path": "blob/gcsblob/gcsblob.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcsblob provides a blob implementation that uses GCS. Use OpenBucket\n// to construct a *blob.Bucket.\n//\n// # URLs\n//\n// For blob.OpenBucket, gcsblob registers for the scheme \"gs\".\n// The default URL opener will set up a connection using default credentials\n// from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// You may force the use of an unauthenticated client by setting\n// GoogleAccessID to \"-\" (via Options or via the URL parameter \"access_id\").\n// Some environments, such as GCE, come without a private key. In such cases\n// the IAM Credentials API will be configured for use in Options.MakeSignBytes,\n// which will introduce latency to any and all calls to bucket.SignedURL\n// that you can avoid by installing a service account credentials file or\n// obtaining and configuring a private key:\n// https://cloud.google.com/iam/docs/creating-managing-service-account-keys\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Escaping\n//\n// Go CDK supports all UTF-8 strings; to make this work with services lacking\n// full UTF-8 support, strings must be escaped (during writes) and unescaped\n// (during reads). The following escapes are performed for gcsblob:\n//   - Blob keys: ASCII characters 10 and 13 are escaped to \"__0x<hex>__\".\n//     Additionally, the \"/\" in \"../\" is escaped in the same way.\n//\n// # As\n//\n// gcsblob exposes the following types for As:\n//   - Bucket: *storage.Client\n//   - Error: *googleapi.Error\n//   - ListObject: storage.ObjectAttrs\n//   - ListOptions.BeforeList: *storage.Query\n//   - Reader: *storage.Reader\n//   - ReaderOptions.BeforeRead: **storage.ObjectHandle, *storage.Reader (if accessing both, must be in that order)\n//   - Attributes: storage.ObjectAttrs\n//   - CopyOptions.BeforeCopy: *CopyObjectHandles, *storage.Copier (if accessing both, must be in that order)\n//   - WriterOptions.BeforeWrite: **storage.ObjectHandle, *storage.Writer (if accessing both, must be in that order)\n//   - SignedURLOptions.BeforeSign: *storage.SignedURLOptions\npackage gcsblob // import \"gocloud.dev/blob/gcsblob\"\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"cloud.google.com/go/compute/metadata\"\n\t\"cloud.google.com/go/storage\"\n\t\"github.com/google/wire\"\n\t\"golang.org/x/oauth2/google\"\n\t\"google.golang.org/api/googleapi\"\n\t\"google.golang.org/api/iterator\"\n\t\"google.golang.org/api/option\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/escape\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n)\n\nconst defaultPageSize = 1000\n\nfunc init() {\n\tblob.DefaultURLMux().RegisterBucket(Scheme, new(lazyCredsOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\n// readDefaultCredentials gets the field values from the supplied JSON data.\n// For its possible formats please see\n// https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-go\n//\n// Use \"golang.org/x/oauth2/google\".DefaultCredentials.JSON to get\n// the contents of the preferred credential file.\n//\n// Returns null-values for fields that have not been obtained.\nfunc readDefaultCredentials(credFileAsJSON []byte) (AccessID string, PrivateKey []byte) {\n\t// For example, a credentials file as generated for service accounts through the web console.\n\tvar contentVariantA struct {\n\t\tClientEmail string `json:\"client_email\"`\n\t\tPrivateKey  string `json:\"private_key\"`\n\t}\n\tif err := json.Unmarshal(credFileAsJSON, &contentVariantA); err == nil {\n\t\tAccessID = contentVariantA.ClientEmail\n\t\tPrivateKey = []byte(contentVariantA.PrivateKey)\n\t}\n\tif AccessID != \"\" {\n\t\treturn\n\t}\n\n\t// If obtained through the REST API.\n\tvar contentVariantB struct {\n\t\tName           string `json:\"name\"`\n\t\tPrivateKeyData string `json:\"privateKeyData\"`\n\t}\n\tif err := json.Unmarshal(credFileAsJSON, &contentVariantB); err == nil {\n\t\tnextFieldIsAccessID := false\n\t\tfor s := range strings.SplitSeq(contentVariantB.Name, \"/\") {\n\t\t\tif nextFieldIsAccessID {\n\t\t\t\tAccessID = s\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tnextFieldIsAccessID = s == \"serviceAccounts\"\n\t\t}\n\t\tPrivateKey = []byte(contentVariantB.PrivateKeyData)\n\t}\n\n\treturn\n}\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenBucketURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\to.init.Do(func() {\n\t\tvar opts Options\n\t\tvar creds *google.Credentials\n\t\tif os.Getenv(\"STORAGE_EMULATOR_HOST\") != \"\" {\n\t\t\tcreds, _ = google.CredentialsFromJSON(ctx, []byte(`{\"type\": \"service_account\", \"project_id\": \"my-project-id\"}`))\n\t\t} else {\n\t\t\tvar err error\n\t\t\t// Check if universe_domain is specified in the URL query parameters\n\t\t\tuniverseDomain := u.Query().Get(\"universe_domain\")\n\t\t\tif universeDomain != \"\" {\n\t\t\t\tcreds, err = gcp.DefaultCredentialsWithParams(ctx, google.CredentialsParams{\n\t\t\t\t\tUniverseDomain: universeDomain,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tcreds, err = gcp.DefaultCredentials(ctx)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"Warning: unable to load GCP Default Credentials: %v\", err)\n\t\t\t\t// Use empty credentials, in case the user isn't going to actually use\n\t\t\t\t// them; e.g., getting signed URLs with GoogleAccessID=-.\n\t\t\t\tcreds, _ = google.CredentialsFromJSON(ctx, []byte(`{\"type\": \"service_account\"}`))\n\t\t\t}\n\n\t\t\t// Populate default values from credentials files, where available.\n\t\t\topts.GoogleAccessID, opts.PrivateKey = readDefaultCredentials(creds.JSON)\n\n\t\t\tud, err := creds.GetUniverseDomain()\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"Warning: unable to load GCP Universe Domain: %v\", err)\n\t\t\t} else if ud != \"\" {\n\t\t\t\topts.ClientOptions = append(opts.ClientOptions, option.WithUniverseDomain(ud))\n\t\t\t}\n\n\t\t\t// ... else, on GCE, at least get the instance's main service account.\n\t\t\tif opts.GoogleAccessID == \"\" && metadata.OnGCE() {\n\t\t\t\tmc := metadata.NewClient(nil)\n\t\t\t\topts.GoogleAccessID, _ = mc.Email(\"\")\n\t\t\t}\n\t\t}\n\n\t\t// Provide a default factory for SignBytes for environments without a private key.\n\t\tif len(opts.PrivateKey) <= 0 && opts.GoogleAccessID != \"\" {\n\t\t\tiam := new(credentialsClient)\n\t\t\t// We cannot hold onto the first context: it might've been cancelled already.\n\t\t\tctx := context.Background()\n\t\t\topts.MakeSignBytes = iam.CreateMakeSignBytesWith(ctx, opts.GoogleAccessID)\n\t\t}\n\n\t\tclient, err := gcp.NewHTTPClient(gcp.DefaultTransport(), creds.TokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client, Options: opts}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open bucket %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenBucketURL(ctx, u)\n}\n\n// Scheme is the URL scheme gcsblob registers its URLOpener under on\n// blob.DefaultMux.\nconst Scheme = \"gs\"\n\n// URLOpener opens GCS URLs like \"gs://mybucket\".\n//\n// The URL host is used as the bucket name.\n//\n// The following query parameters are supported:\n//\n//   - anonymous: A value of \"true\" forces the use of an unauthenticated client.\n//   - access_id: Sets Options.GoogleAccessID; only used in SignedURL, except that\n//     a value of \"-\" forces the use of an unauthenticated client.\n//   - private_key_path: Path to read for Options.PrivateKey; only used in SignedURL.\n//   - universe_domain: Sets the universe domain for the client.\ntype URLOpener struct {\n\t// Client must be set to a non-nil HTTP client authenticated with\n\t// Cloud Storage scope or equivalent (unless anonymous=true).\n\tClient *gcp.HTTPClient\n\n\t// Options specifies the default options to pass to OpenBucket.\n\tOptions Options\n}\n\n// OpenBucketURL opens the GCS bucket with the same name as the URL's host.\nfunc (o *URLOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\topts, client, err := o.forParams(ctx, u.Query())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open bucket %v: %v\", u, err)\n\t}\n\treturn OpenBucket(ctx, client, u.Host, opts)\n}\n\nfunc (o *URLOpener) forParams(ctx context.Context, q url.Values) (*Options, *gcp.HTTPClient, error) {\n\tfor k := range q {\n\t\tif k != \"access_id\" && k != \"private_key_path\" && k != \"anonymous\" && k != \"universe_domain\" {\n\t\t\treturn nil, nil, fmt.Errorf(\"invalid query parameter %q\", k)\n\t\t}\n\t}\n\topts := new(Options)\n\t*opts = o.Options\n\tclient := o.Client\n\tif anon := q.Get(\"anonymous\"); anon != \"\" {\n\t\tisAnon, err := strconv.ParseBool(anon)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"invalid value %q for query parameter \\\"anonymous\\\": %w\", anon, err)\n\t\t}\n\t\tif isAnon {\n\t\t\topts.clear()\n\t\t\tclient = gcp.NewAnonymousHTTPClient(gcp.DefaultTransport())\n\t\t}\n\t}\n\tif accessID := q.Get(\"access_id\"); accessID != \"\" && accessID != opts.GoogleAccessID {\n\t\topts.clear()\n\t\tif accessID == \"-\" {\n\t\t\tclient = gcp.NewAnonymousHTTPClient(gcp.DefaultTransport())\n\t\t} else {\n\t\t\topts.GoogleAccessID = accessID\n\t\t}\n\t}\n\tif keyPath := q.Get(\"private_key_path\"); keyPath != \"\" {\n\t\tpk, err := os.ReadFile(keyPath)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\topts.PrivateKey = pk\n\t} else if _, exists := q[\"private_key_path\"]; exists {\n\t\t// A possible default value has been cleared by setting this to an empty value:\n\t\t// The private key might have expired, or falling back to SignBytes/MakeSignBytes\n\t\t// is intentional such as for tests or involving a key stored in a HSM/TPM.\n\t\topts.PrivateKey = nil\n\t}\n\treturn opts, client, nil\n}\n\n// Options sets options for constructing a *blob.Bucket backed by GCS.\ntype Options struct {\n\t// GoogleAccessID represents the authorizer for SignedURL.\n\t// If set to \"-\", an unauthenticated client will be used.\n\t// Required to use SignedURL.\n\t// See https://godoc.org/cloud.google.com/go/storage#SignedURLOptions.\n\tGoogleAccessID string\n\n\t// PrivateKey is the Google service account private key.\n\t// Exactly one of PrivateKey or SignBytes must be non-nil to use SignedURL.\n\t// See https://godoc.org/cloud.google.com/go/storage#SignedURLOptions.\n\t// Deprecated: Use MakeSignBytes instead.\n\tPrivateKey []byte\n\n\t// SignBytes is a function for implementing custom signing.\n\t// Exactly one of PrivateKey, SignBytes, or MakeSignBytes must be non-nil to use SignedURL.\n\t// See https://godoc.org/cloud.google.com/go/storage#SignedURLOptions.\n\t// Deprecated: Use MakeSignBytes instead.\n\tSignBytes func([]byte) ([]byte, error)\n\n\t// MakeSignBytes is a factory for functions that are being used in place of an empty SignBytes.\n\t// If your implementation of 'SignBytes' needs a request context, set this instead.\n\tMakeSignBytes func(requestCtx context.Context) SignBytesFunc\n\n\t// Client provides a *storage.Client to use, instead of constructing one based on\n\t// the HTTPClient. When set, you must pass nil as the gcp.HTTPClient to OpenBucket.\n\t//\n\t// For example, this can be used to create a Bucket backed by a gRPC client.\n\tClient *storage.Client\n\n\t// ClientOptions are passed when constructing the storage.Client.\n\t// Ignored if Client is set.\n\tClientOptions []option.ClientOption\n}\n\n// clear clears all the fields of o.\nfunc (o *Options) clear() {\n\to.GoogleAccessID = \"\"\n\to.PrivateKey = nil\n\to.SignBytes = nil\n\to.MakeSignBytes = nil\n}\n\n// SignBytesFunc is shorthand for the signature of Options.SignBytes.\ntype SignBytesFunc func([]byte) ([]byte, error)\n\n// openBucket returns a GCS Bucket that communicates using the given HTTP client.\nfunc openBucket(ctx context.Context, client *gcp.HTTPClient, bucketName string, opts *Options) (*bucket, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif bucketName == \"\" {\n\t\treturn nil, errors.New(\"gcsblob.OpenBucket: bucketName is required\")\n\t}\n\tif opts.Client != nil {\n\t\tif client != nil {\n\t\t\treturn nil, errors.New(\"gcsblob.OpenBucket: client must be nil when providing Options.Client\")\n\t\t}\n\t\treturn &bucket{name: bucketName, client: opts.Client, opts: opts}, nil\n\t}\n\tif client == nil {\n\t\treturn nil, errors.New(\"gcsblob.OpenBucket: client is required\")\n\t}\n\n\t// We wrap the provided http.Client to add a Go CDK User-Agent.\n\tclientOpts := []option.ClientOption{option.WithHTTPClient(useragent.HTTPClient(&client.Client, \"blob\"))}\n\tif host := os.Getenv(\"STORAGE_EMULATOR_HOST\"); host != \"\" {\n\t\tclientOpts = []option.ClientOption{\n\t\t\toption.WithoutAuthentication(),\n\t\t\toption.WithEndpoint(\"http://\" + host + \"/storage/v1/\"),\n\t\t\toption.WithHTTPClient(http.DefaultClient),\n\t\t}\n\t}\n\tclientOpts = append(clientOpts, opts.ClientOptions...)\n\tc, err := storage.NewClient(ctx, clientOpts...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &bucket{name: bucketName, client: c, opts: opts}, nil\n}\n\n// OpenBucket returns a *blob.Bucket backed by an existing GCS bucket. See the\n// package documentation for an example.\nfunc OpenBucket(ctx context.Context, client *gcp.HTTPClient, bucketName string, opts *Options) (*blob.Bucket, error) {\n\tdrv, err := openBucket(ctx, client, bucketName, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn blob.NewBucket(drv), nil\n}\n\n// bucket represents a GCS bucket, which handles read, write and delete operations\n// on objects within it.\ntype bucket struct {\n\tname   string\n\tclient *storage.Client\n\topts   *Options\n}\n\nvar emptyBody = io.NopCloser(strings.NewReader(\"\"))\n\n// reader reads a GCS object. It implements driver.Reader.\ntype reader struct {\n\tbody  io.ReadCloser\n\tattrs driver.ReaderAttributes\n\traw   *storage.Reader\n}\n\nfunc (r *reader) Read(p []byte) (int, error) {\n\treturn r.body.Read(p)\n}\n\n// Close closes the reader itself. It must be called when done reading.\nfunc (r *reader) Close() error {\n\treturn r.body.Close()\n}\n\nfunc (r *reader) Attributes() *driver.ReaderAttributes {\n\treturn &r.attrs\n}\n\nfunc (r *reader) As(i any) bool {\n\tp, ok := i.(**storage.Reader)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = r.raw\n\treturn true\n}\n\nfunc (b *bucket) ErrorCode(err error) gcerrors.ErrorCode {\n\tif errors.Is(err, storage.ErrObjectNotExist) || errors.Is(err, storage.ErrBucketNotExist) {\n\t\treturn gcerrors.NotFound\n\t}\n\tif gerr, ok := err.(*googleapi.Error); ok {\n\t\tswitch gerr.Code {\n\t\tcase http.StatusForbidden:\n\t\t\t// 'Permission 'storage.objects.list' denied on resource (or it may not exist)'\n\t\t\t// So we have to pick one.\n\t\t\treturn gcerrors.NotFound\n\t\tcase http.StatusNotFound:\n\t\t\treturn gcerrors.NotFound\n\t\tcase http.StatusPreconditionFailed:\n\t\t\treturn gcerrors.FailedPrecondition\n\t\tcase http.StatusTooManyRequests:\n\t\t\treturn gcerrors.ResourceExhausted\n\t\t}\n\t}\n\treturn gcerrors.Unknown\n}\n\nfunc (b *bucket) Close() error {\n\treturn nil\n}\n\n// ListPaged implements driver.ListPaged.\nfunc (b *bucket) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\tbkt := b.client.Bucket(b.name)\n\tquery := &storage.Query{\n\t\tPrefix:    escapeKey(opts.Prefix),\n\t\tDelimiter: escapeKey(opts.Delimiter),\n\t}\n\tif opts.BeforeList != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(**storage.Query)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = query\n\t\t\treturn true\n\t\t}\n\t\tif err := opts.BeforeList(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tpageSize := opts.PageSize\n\tif pageSize == 0 {\n\t\tpageSize = defaultPageSize\n\t}\n\titer := bkt.Objects(ctx, query)\n\tpager := iterator.NewPager(iter, pageSize, string(opts.PageToken))\n\tvar objects []*storage.ObjectAttrs\n\tnextPageToken, err := pager.NextPage(&objects)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpage := driver.ListPage{NextPageToken: []byte(nextPageToken)}\n\tif len(objects) > 0 {\n\t\tpage.Objects = make([]*driver.ListObject, len(objects))\n\t\tfor i, obj := range objects {\n\t\t\ttoCopy := obj\n\t\t\tasFunc := func(val any) bool {\n\t\t\t\tp, ok := val.(*storage.ObjectAttrs)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t*p = *toCopy\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif obj.Prefix == \"\" {\n\t\t\t\t// Regular blob.\n\t\t\t\tpage.Objects[i] = &driver.ListObject{\n\t\t\t\t\tKey:     unescapeKey(obj.Name),\n\t\t\t\t\tModTime: obj.Updated,\n\t\t\t\t\tSize:    obj.Size,\n\t\t\t\t\tMD5:     obj.MD5,\n\t\t\t\t\tAsFunc:  asFunc,\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// \"Directory\".\n\t\t\t\tpage.Objects[i] = &driver.ListObject{\n\t\t\t\t\tKey:    unescapeKey(obj.Prefix),\n\t\t\t\t\tIsDir:  true,\n\t\t\t\t\tAsFunc: asFunc,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// GCS always returns \"directories\" at the end; sort them.\n\t\tsort.Slice(page.Objects, func(i, j int) bool {\n\t\t\treturn page.Objects[i].Key < page.Objects[j].Key\n\t\t})\n\t}\n\treturn &page, nil\n}\n\n// As implements driver.As.\nfunc (b *bucket) As(i any) bool {\n\tp, ok := i.(**storage.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = b.client\n\treturn true\n}\n\n// As implements driver.ErrorAs.\nfunc (b *bucket) ErrorAs(err error, i any) bool {\n\tswitch v := err.(type) {\n\tcase *googleapi.Error:\n\t\tif p, ok := i.(**googleapi.Error); ok {\n\t\t\t*p = v\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Attributes implements driver.Attributes.\nfunc (b *bucket) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\tkey = escapeKey(key)\n\tbkt := b.client.Bucket(b.name)\n\tobj := bkt.Object(key)\n\tattrs, err := obj.Attrs(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// GCS seems to unquote the ETag; restore them.\n\t// It should be of the form \"xxxx\" or W/\"xxxx\".\n\teTag := attrs.Etag\n\tif !strings.HasPrefix(eTag, \"W/\\\"\") && !strings.HasPrefix(eTag, \"\\\"\") && !strings.HasSuffix(eTag, \"\\\"\") {\n\t\teTag = fmt.Sprintf(\"%q\", eTag)\n\t}\n\treturn &driver.Attributes{\n\t\tCacheControl:       attrs.CacheControl,\n\t\tContentDisposition: attrs.ContentDisposition,\n\t\tContentEncoding:    attrs.ContentEncoding,\n\t\tContentLanguage:    attrs.ContentLanguage,\n\t\tContentType:        attrs.ContentType,\n\t\tMetadata:           attrs.Metadata,\n\t\tCreateTime:         attrs.Created,\n\t\tModTime:            attrs.Updated,\n\t\tSize:               attrs.Size,\n\t\tMD5:                attrs.MD5,\n\t\tETag:               eTag,\n\t\tAsFunc: func(i any) bool {\n\t\t\tp, ok := i.(*storage.ObjectAttrs)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = *attrs\n\t\t\treturn true\n\t\t},\n\t}, nil\n}\n\n// NewRangeReader implements driver.NewRangeReader.\nfunc (b *bucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tkey = escapeKey(key)\n\tbkt := b.client.Bucket(b.name)\n\tobj := bkt.Object(key)\n\n\t// Add an extra level of indirection so that BeforeRead can replace obj\n\t// if needed. For example, ObjectHandle.If returns a new ObjectHandle.\n\t// Also, make the Reader lazily in case this replacement happens.\n\tobjp := &obj\n\tmakeReader := func() (*storage.Reader, error) {\n\t\treturn (*objp).NewRangeReader(ctx, offset, length)\n\t}\n\n\tvar r *storage.Reader\n\tvar rerr error\n\tmadeReader := false\n\tif opts.BeforeRead != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif p, ok := i.(***storage.ObjectHandle); ok && !madeReader {\n\t\t\t\t*p = objp\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif p, ok := i.(**storage.Reader); ok {\n\t\t\t\tif !madeReader {\n\t\t\t\t\tr, rerr = makeReader()\n\t\t\t\t\tmadeReader = true\n\t\t\t\t\tif r == nil {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t*p = r\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeRead(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif !madeReader {\n\t\tr, rerr = makeReader()\n\t}\n\tif rerr != nil {\n\t\treturn nil, rerr\n\t}\n\treturn &reader{\n\t\tbody: r,\n\t\tattrs: driver.ReaderAttributes{\n\t\t\tContentType: r.Attrs.ContentType,\n\t\t\tModTime:     r.Attrs.LastModified,\n\t\t\tSize:        r.Attrs.Size,\n\t\t},\n\t\traw: r,\n\t}, nil\n}\n\n// escapeKey does all required escaping for UTF-8 strings to work with GCS.\nfunc escapeKey(key string) string {\n\treturn escape.HexEscape(key, func(r []rune, i int) bool {\n\t\tswitch {\n\t\t// GCS doesn't handle these characters (determined via experimentation).\n\t\tcase r[i] == 10 || r[i] == 13:\n\t\t\treturn true\n\t\t// For \"../\", escape the trailing slash.\n\t\tcase i > 1 && r[i] == '/' && r[i-1] == '.' && r[i-2] == '.':\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n}\n\n// unescapeKey reverses escapeKey.\nfunc unescapeKey(key string) string {\n\treturn escape.HexUnescape(key)\n}\n\n// NewTypedWriter implements driver.NewTypedWriter.\nfunc (b *bucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\tkey = escapeKey(key)\n\tbkt := b.client.Bucket(b.name)\n\tobj := bkt.Object(key)\n\n\tif opts.IfNotExist {\n\t\tobj = obj.If(storage.Conditions{DoesNotExist: true})\n\t}\n\t// Add an extra level of indirection so that BeforeWrite can replace obj\n\t// if needed. For example, ObjectHandle.If returns a new ObjectHandle.\n\t// Also, make the Writer lazily in case this replacement happens.\n\tobjp := &obj\n\tmakeWriter := func() *storage.Writer {\n\t\tw := (*objp).NewWriter(ctx)\n\t\tw.CacheControl = opts.CacheControl\n\t\tw.ContentDisposition = opts.ContentDisposition\n\t\tw.ContentEncoding = opts.ContentEncoding\n\t\tw.ContentLanguage = opts.ContentLanguage\n\t\tw.ContentType = contentType\n\t\tw.ChunkSize = bufferSize(opts.BufferSize)\n\t\tw.Metadata = opts.Metadata\n\t\tw.MD5 = opts.ContentMD5\n\t\tw.ForceEmptyContentType = opts.DisableContentTypeDetection\n\t\treturn w\n\t}\n\n\tvar w *storage.Writer\n\tif opts.BeforeWrite != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif p, ok := i.(***storage.ObjectHandle); ok && w == nil {\n\t\t\t\t*p = objp\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif p, ok := i.(**storage.Writer); ok {\n\t\t\t\tif w == nil {\n\t\t\t\t\tw = makeWriter()\n\t\t\t\t}\n\t\t\t\t*p = w\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeWrite(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif w == nil {\n\t\tw = makeWriter()\n\t}\n\treturn w, nil\n}\n\n// CopyObjectHandles holds the ObjectHandles for the destination and source\n// of a Copy. It is used by the BeforeCopy As hook.\ntype CopyObjectHandles struct {\n\tDst, Src *storage.ObjectHandle\n}\n\n// Copy implements driver.Copy.\nfunc (b *bucket) Copy(ctx context.Context, dstKey, srcKey string, opts *driver.CopyOptions) error {\n\tdstKey = escapeKey(dstKey)\n\tsrcKey = escapeKey(srcKey)\n\tbkt := b.client.Bucket(b.name)\n\n\t// Add an extra level of indirection so that BeforeCopy can replace the\n\t// dst or src ObjectHandles if needed.\n\t// Also, make the Copier lazily in case this replacement happens.\n\thandles := CopyObjectHandles{\n\t\tDst: bkt.Object(dstKey),\n\t\tSrc: bkt.Object(srcKey),\n\t}\n\tmakeCopier := func() *storage.Copier {\n\t\treturn handles.Dst.CopierFrom(handles.Src)\n\t}\n\n\tvar copier *storage.Copier\n\tif opts.BeforeCopy != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif p, ok := i.(**CopyObjectHandles); ok && copier == nil {\n\t\t\t\t*p = &handles\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif p, ok := i.(**storage.Copier); ok {\n\t\t\t\tif copier == nil {\n\t\t\t\t\tcopier = makeCopier()\n\t\t\t\t}\n\t\t\t\t*p = copier\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeCopy(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif copier == nil {\n\t\tcopier = makeCopier()\n\t}\n\t_, err := copier.Run(ctx)\n\treturn err\n}\n\n// Delete implements driver.Delete.\nfunc (b *bucket) Delete(ctx context.Context, key string) error {\n\tkey = escapeKey(key)\n\tbkt := b.client.Bucket(b.name)\n\tobj := bkt.Object(key)\n\treturn obj.Delete(ctx)\n}\n\nfunc (b *bucket) SignedURL(ctx context.Context, key string, dopts *driver.SignedURLOptions) (string, error) {\n\tnumSigners := 0\n\tif b.opts.PrivateKey != nil {\n\t\tnumSigners++\n\t}\n\tif b.opts.SignBytes != nil {\n\t\tnumSigners++\n\t}\n\tif b.opts.MakeSignBytes != nil {\n\t\tnumSigners++\n\t}\n\tif b.opts.GoogleAccessID == \"\" || numSigners != 1 {\n\t\treturn \"\", gcerr.New(gcerr.Unimplemented, nil, 1, \"gcsblob: to use SignedURL, you must call OpenBucket with a valid Options.GoogleAccessID and exactly one of Options.PrivateKey, Options.SignBytes, or Options.MakeSignBytes\")\n\t}\n\n\tkey = escapeKey(key)\n\topts := &storage.SignedURLOptions{\n\t\tExpires:        time.Now().Add(dopts.Expiry),\n\t\tMethod:         dopts.Method,\n\t\tContentType:    dopts.ContentType,\n\t\tGoogleAccessID: b.opts.GoogleAccessID,\n\t\tPrivateKey:     b.opts.PrivateKey,\n\t\tSignBytes:      b.opts.SignBytes,\n\t}\n\tif b.opts.MakeSignBytes != nil {\n\t\topts.SignBytes = b.opts.MakeSignBytes(ctx)\n\t}\n\tif dopts.BeforeSign != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tv, ok := i.(**storage.SignedURLOptions)\n\t\t\tif ok {\n\t\t\t\t*v = opts\n\t\t\t}\n\t\t\treturn ok\n\t\t}\n\t\tif err := dopts.BeforeSign(asFunc); err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn storage.SignedURL(b.name, key, opts)\n}\n\nfunc bufferSize(size int) int {\n\tif size == 0 {\n\t\treturn googleapi.DefaultUploadChunkSize\n\t} else if size > 0 {\n\t\treturn size\n\t}\n\treturn 0 // disable buffering\n}\n"
  },
  {
    "path": "blob/gcsblob/gcsblob_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcsblob\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"os/user\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"time\"\n\n\t\"cloud.google.com/go/storage\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/blob/drivertest\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"google.golang.org/api/googleapi\"\n)\n\nconst (\n\t// These constants capture values that were used during the last -record.\n\t//\n\t// If you want to use --record mode,\n\t// 1. Create a bucket in your GCP project:\n\t//    https://console.cloud.google.com/storage/browser, then \"Create Bucket\".\n\t// 2. Update the bucketName constant to your bucket name.\n\t// 3. Create a service account in your GCP project and update the\n\t//    serviceAccountID constant to it.\n\t// 4. Download a private key to a .pem file as described here:\n\t//    https://godoc.org/cloud.google.com/go/storage#SignedURLOptions\n\t//    and pass a path to it via the --privatekey flag.\n\t// TODO(issue #300): Use Terraform to provision a bucket, and get the bucket\n\t//    name from the Terraform output instead (saving a copy of it for replay).\n\tbucketName       = \"go-cloud-blob-test-bucket\"\n\tserviceAccountID = \"storage-updater@go-cloud-test-216917.iam.gserviceaccount.com\"\n)\n\nvar pathToPrivateKey = flag.String(\"privatekey\", \"\", \"path to .pem file containing private key (required for --record); defaults to ~/Downloads/gcs-private-key.pem\")\n\ntype harness struct {\n\tclient *gcp.HTTPClient\n\topts   *Options\n\trt     http.RoundTripper\n\tcloser func()\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\topts := &Options{GoogleAccessID: serviceAccountID}\n\tif *setup.Record {\n\t\tif *pathToPrivateKey == \"\" {\n\t\t\tusr, _ := user.Current()\n\t\t\t*pathToPrivateKey = filepath.Join(usr.HomeDir, \"Downloads\", \"gcs-private-key.pem\")\n\t\t}\n\t\t// Use a real private key for signing URLs during -record.\n\t\tpk, err := os.ReadFile(*pathToPrivateKey)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Couldn't find private key at %v: %v\", *pathToPrivateKey, err)\n\t\t}\n\t\topts.PrivateKey = pk\n\t} else {\n\t\t// Use a dummy signer in replay mode.\n\t\topts.SignBytes = func(b []byte) ([]byte, error) { return []byte(\"signed!\"), nil }\n\t}\n\tclient, rt, done := setup.NewGCPClient(ctx, t)\n\treturn &harness{client: client, opts: opts, rt: rt, closer: done}, nil\n}\n\nfunc (h *harness) HTTPClient() *http.Client {\n\treturn &http.Client{Transport: h.rt}\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Bucket, error) {\n\treturn openBucket(ctx, h.client, bucketName, h.opts)\n}\n\nfunc (h *harness) MakeDriverForNonexistentBucket(ctx context.Context) (driver.Bucket, error) {\n\treturn openBucket(ctx, h.client, \"bucket-does-not-exist\", h.opts)\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyContentLanguage{}})\n}\n\nfunc BenchmarkGcsblob(b *testing.B) {\n\tctx := context.Background()\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tclient, err := gcp.NewHTTPClient(gcp.DefaultTransport(), gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tbkt, err := OpenBucket(context.Background(), client, bucketName, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, bkt)\n}\n\nconst language = \"nl\"\n\n// verifyContentLanguage uses As to access the underlying GCS types and\n// read/write the ContentLanguage field.\ntype verifyContentLanguage struct{}\n\nfunc (verifyContentLanguage) Name() string {\n\treturn \"verify ContentLanguage can be written and read through As\"\n}\n\nfunc (verifyContentLanguage) BucketCheck(b *blob.Bucket) error {\n\tvar client *storage.Client\n\tif !b.As(&client) {\n\t\treturn errors.New(\"Bucket.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) ErrorCheck(b *blob.Bucket, err error) error {\n\t// Can't really verify this one because the storage library returns\n\t// a sentinel error, storage.ErrObjectNotExist, for \"not exists\"\n\t// instead of the supported As type googleapi.Error.\n\t// Call ErrorAs anyway, and expect it to fail.\n\tvar to *googleapi.Error\n\tif b.ErrorAs(err, &to) {\n\t\treturn errors.New(\"expected ErrorAs to fail\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeRead(as func(any) bool) error {\n\tvar objp **storage.ObjectHandle\n\tif !as(&objp) {\n\t\treturn errors.New(\"BeforeRead.As failed to get ObjectHandle\")\n\t}\n\tvar sr *storage.Reader\n\tif !as(&sr) {\n\t\treturn errors.New(\"BeforeRead.As failed to get Reader\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeWrite(as func(any) bool) error {\n\tvar objp **storage.ObjectHandle\n\tif !as(&objp) {\n\t\treturn errors.New(\"Writer.As failed to get ObjectHandle\")\n\t}\n\tvar sw *storage.Writer\n\tif !as(&sw) {\n\t\treturn errors.New(\"Writer.As failed to get Writer\")\n\t}\n\tsw.ContentLanguage = language\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeCopy(as func(any) bool) error {\n\tvar coh *CopyObjectHandles\n\tif !as(&coh) {\n\t\treturn errors.New(\"BeforeCopy.As failed to get CopyObjectHandles\")\n\t}\n\tvar copier *storage.Copier\n\tif !as(&copier) {\n\t\treturn errors.New(\"BeforeCopy.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeList(as func(any) bool) error {\n\tvar q *storage.Query\n\tif !as(&q) {\n\t\treturn errors.New(\"List.As failed\")\n\t}\n\t// Nothing to do.\n\treturn nil\n}\n\nfunc (verifyContentLanguage) BeforeSign(as func(any) bool) error {\n\tvar opts *storage.SignedURLOptions\n\tif !as(&opts) {\n\t\treturn errors.New(\"BeforeSign.As failed\")\n\t}\n\t// Nothing to do.\n\treturn nil\n}\n\nfunc (verifyContentLanguage) AttributesCheck(attrs *blob.Attributes) error {\n\tvar oa storage.ObjectAttrs\n\tif !attrs.As(&oa) {\n\t\treturn errors.New(\"Attributes.As returned false\")\n\t}\n\tif got := oa.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\nfunc (verifyContentLanguage) ReaderCheck(r *blob.Reader) error {\n\tvar rr *storage.Reader\n\tif !r.As(&rr) {\n\t\treturn errors.New(\"Reader.As returned false\")\n\t}\n\t// GCS doesn't return Content-Language via storage.Reader.\n\treturn nil\n}\n\nfunc (verifyContentLanguage) ListObjectCheck(o *blob.ListObject) error {\n\tvar oa storage.ObjectAttrs\n\tif !o.As(&oa) {\n\t\treturn errors.New(\"ListObject.As returned false\")\n\t}\n\tif o.IsDir {\n\t\treturn nil\n\t}\n\tif got := oa.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\n// GCS-specific unit tests.\nfunc TestBufferSize(t *testing.T) {\n\ttests := []struct {\n\t\tsize int\n\t\twant int\n\t}{\n\t\t{\n\t\t\tsize: 5 * 1024 * 1024,\n\t\t\twant: 5 * 1024 * 1024,\n\t\t},\n\t\t{\n\t\t\tsize: 0,\n\t\t\twant: googleapi.DefaultUploadChunkSize,\n\t\t},\n\t\t{\n\t\t\tsize: -1024,\n\t\t\twant: 0,\n\t\t},\n\t}\n\tfor i, test := range tests {\n\t\tgot := bufferSize(test.size)\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"%d) got buffer size %d, want %d\", i, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestOpenBucket(t *testing.T) {\n\ttests := []struct {\n\t\tdescription string\n\t\tbucketName  string\n\t\tnilClient   bool\n\t\twant        string\n\t\twantErr     bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty bucket name results in error\",\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"nil client results in error\",\n\t\t\tbucketName:  \"foo\",\n\t\t\tnilClient:   true,\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"success\",\n\t\t\tbucketName:  \"foo\",\n\t\t\twant:        \"foo\",\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.description, func(t *testing.T) {\n\t\t\tvar client *gcp.HTTPClient\n\t\t\tif !test.nilClient {\n\t\t\t\tvar done func()\n\t\t\t\tclient, _, done = setup.NewGCPClient(ctx, t)\n\t\t\t\tdefer done()\n\t\t\t}\n\n\t\t\t// Create driver impl.\n\t\t\tdrv, err := openBucket(ctx, client, test.bucketName, nil)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif err == nil && drv != nil && drv.name != test.want {\n\t\t\t\tt.Errorf(\"got %q want %q\", drv.name, test.want)\n\t\t\t}\n\n\t\t\t// Create portable type.\n\t\t\tb, err := OpenBucket(ctx, client, test.bucketName, nil)\n\t\t\tif b != nil {\n\t\t\t\tdefer b.Close()\n\t\t\t}\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// TestBeforeReadNonExistentKey tests using BeforeRead on a nonexistent key.\nfunc TestBeforeReadNonExistentKey(t *testing.T) {\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tbucket := blob.NewBucket(drv)\n\tdefer bucket.Close()\n\n\t// Try reading a nonexistent key.\n\t_, err = bucket.NewReader(ctx, \"nonexistent-key\", &blob.ReaderOptions{\n\t\tBeforeRead: func(asFunc func(any) bool) error {\n\t\t\tvar objp **storage.ObjectHandle\n\t\t\tif !asFunc(&objp) {\n\t\t\t\treturn errors.New(\"Reader.As failed to get ObjectHandle\")\n\t\t\t}\n\t\t\tvar rp *storage.Reader\n\t\t\tif asFunc(&rp) {\n\t\t\t\treturn errors.New(\"Reader.As unexpectedly got storage.Reader\")\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t})\n\tif err == nil || gcerrors.Code(err) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v, wanted NotFound for Read\", err)\n\t}\n}\n\n// TestPreconditions tests setting of ObjectHandle preconditions via As.\nfunc TestPreconditions(t *testing.T) {\n\tconst (\n\t\tkey     = \"precondition-key\"\n\t\tkey2    = \"precondition-key2\"\n\t\tcontent = \"hello world\"\n\t)\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdrv, err := h.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tbucket := blob.NewBucket(drv)\n\tdefer bucket.Close()\n\n\t// Try writing with a failing precondition.\n\tif err := bucket.WriteAll(ctx, key, []byte(content), &blob.WriterOptions{\n\t\tBeforeWrite: func(asFunc func(any) bool) error {\n\t\t\tvar objp **storage.ObjectHandle\n\t\t\tif !asFunc(&objp) {\n\t\t\t\treturn errors.New(\"Writer.As failed to get ObjectHandle\")\n\t\t\t}\n\t\t\t// Replace the ObjectHandle with a new one that adds Conditions.\n\t\t\t*objp = (*objp).If(storage.Conditions{GenerationMatch: -999})\n\t\t\treturn nil\n\t\t},\n\t}); err == nil || gcerrors.Code(err) != gcerrors.FailedPrecondition {\n\t\tt.Errorf(\"got error %v, wanted FailedPrecondition for Write\", err)\n\t}\n\n\t// Repeat with a precondition that will pass.\n\tif err := bucket.WriteAll(ctx, key, []byte(content), &blob.WriterOptions{\n\t\tBeforeWrite: func(asFunc func(any) bool) error {\n\t\t\tvar objp **storage.ObjectHandle\n\t\t\tif !asFunc(&objp) {\n\t\t\t\treturn errors.New(\"Writer.As failed to get ObjectHandle\")\n\t\t\t}\n\t\t\t// Replace the ObjectHandle with a new one that adds Conditions.\n\t\t\t*objp = (*objp).If(storage.Conditions{DoesNotExist: true})\n\t\t\treturn nil\n\t\t},\n\t}); err != nil {\n\t\tt.Errorf(\"got error %v, wanted nil\", err)\n\t}\n\tdefer bucket.Delete(ctx, key)\n\n\t// Try reading with a failing precondition.\n\t_, err = bucket.NewReader(ctx, key, &blob.ReaderOptions{\n\t\tBeforeRead: func(asFunc func(any) bool) error {\n\t\t\tvar objp **storage.ObjectHandle\n\t\t\tif !asFunc(&objp) {\n\t\t\t\treturn errors.New(\"Reader.As failed to get ObjectHandle\")\n\t\t\t}\n\t\t\t// Replace the ObjectHandle with a new one.\n\t\t\t*objp = (*objp).Generation(999999)\n\t\t\treturn nil\n\t\t},\n\t})\n\tif err == nil || gcerrors.Code(err) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v, wanted NotFound for Read\", err)\n\t}\n\n\tattrs, err := bucket.Attributes(ctx, key)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tvar oa storage.ObjectAttrs\n\tif !attrs.As(&oa) {\n\t\tt.Fatal(\"Attributes.As failed\")\n\t}\n\tgeneration := oa.Generation\n\n\t// Repeat with a precondition that will pass.\n\treader, err := bucket.NewReader(ctx, key, &blob.ReaderOptions{\n\t\tBeforeRead: func(asFunc func(any) bool) error {\n\t\t\tvar objp **storage.ObjectHandle\n\t\t\tif !asFunc(&objp) {\n\t\t\t\treturn errors.New(\"Reader.As failed to get ObjectHandle\")\n\t\t\t}\n\t\t\t// Replace the ObjectHandle with a new one.\n\t\t\t*objp = (*objp).Generation(generation)\n\t\t\treturn nil\n\t\t},\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer reader.Close()\n\tgotBytes, err := io.ReadAll(reader)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif got := string(gotBytes); got != content {\n\t\tt.Errorf(\"got %q want %q\", got, content)\n\t}\n\n\t// Try copying with a failing precondition on Dst.\n\terr = bucket.Copy(ctx, key2, key, &blob.CopyOptions{\n\t\tBeforeCopy: func(asFunc func(any) bool) error {\n\t\t\tvar coh *CopyObjectHandles\n\t\t\tif !asFunc(&coh) {\n\t\t\t\treturn errors.New(\"Copy.As failed to get CopyObjectHandles\")\n\t\t\t}\n\t\t\t// Replace the dst ObjectHandle with a new one.\n\t\t\tcoh.Dst = coh.Dst.If(storage.Conditions{GenerationMatch: -999})\n\t\t\treturn nil\n\t\t},\n\t})\n\tif err == nil || gcerrors.Code(err) != gcerrors.FailedPrecondition {\n\t\tt.Errorf(\"got error %v, wanted FailedPrecondition for Copy\", err)\n\t}\n\n\t// Try copying with a failing precondition on Src.\n\terr = bucket.Copy(ctx, key2, key, &blob.CopyOptions{\n\t\tBeforeCopy: func(asFunc func(any) bool) error {\n\t\t\tvar coh *CopyObjectHandles\n\t\t\tif !asFunc(&coh) {\n\t\t\t\treturn errors.New(\"Copy.As failed to get CopyObjectHandles\")\n\t\t\t}\n\t\t\t// Replace the src ObjectHandle with a new one.\n\t\t\tcoh.Src = coh.Src.Generation(9999999)\n\t\t\treturn nil\n\t\t},\n\t})\n\tif err == nil || gcerrors.Code(err) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v, wanted NotFound for Copy\", err)\n\t}\n\n\t// Repeat with preconditions on Dst and Src that will succeed.\n\terr = bucket.Copy(ctx, key2, key, &blob.CopyOptions{\n\t\tBeforeCopy: func(asFunc func(any) bool) error {\n\t\t\tvar coh *CopyObjectHandles\n\t\t\tif !asFunc(&coh) {\n\t\t\t\treturn errors.New(\"Reader.As failed to get CopyObjectHandles\")\n\t\t\t}\n\t\t\tcoh.Dst = coh.Dst.If(storage.Conditions{DoesNotExist: true})\n\t\t\tcoh.Src = coh.Src.Generation(generation)\n\t\t\treturn nil\n\t\t},\n\t})\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\tdefer bucket.Delete(ctx, key2)\n}\n\nfunc TestURLOpenerForParams(t *testing.T) {\n\tctx := context.Background()\n\n\t// Create a file for use as a dummy private key file.\n\tprivateKey := []byte(\"some content\")\n\tpkFile, err := os.CreateTemp(\"\", \"my-private-key\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer os.Remove(pkFile.Name())\n\tif _, err := pkFile.Write(privateKey); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := pkFile.Close(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tname       string\n\t\tcurrOpts   Options\n\t\tquery      url.Values\n\t\twantOpts   Options\n\t\twantClient bool\n\t\twantErr    bool\n\t}{\n\t\t{\n\t\t\tname: \"InvalidParam\",\n\t\t\tquery: url.Values{\n\t\t\t\t\"foo\": {\"bar\"},\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"AccessID\",\n\t\t\tquery: url.Values{\n\t\t\t\t\"access_id\": {\"bar\"},\n\t\t\t},\n\t\t\twantOpts: Options{GoogleAccessID: \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"AccessID override\",\n\t\t\tcurrOpts: Options{GoogleAccessID: \"foo\"},\n\t\t\tquery: url.Values{\n\t\t\t\t\"access_id\": {\"bar\"},\n\t\t\t},\n\t\t\twantOpts: Options{GoogleAccessID: \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname:     \"AccessID override to - makes new client\",\n\t\t\tcurrOpts: Options{GoogleAccessID: \"foo\"},\n\t\t\tquery: url.Values{\n\t\t\t\t\"access_id\": {\"-\"},\n\t\t\t},\n\t\t\twantOpts:   Options{}, // cleared\n\t\t\twantClient: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"AccessID not overridden\",\n\t\t\tcurrOpts: Options{GoogleAccessID: \"bar\"},\n\t\t\twantOpts: Options{GoogleAccessID: \"bar\"},\n\t\t},\n\t\t{\n\t\t\tname: \"Invalid value for anonymous\",\n\t\t\tquery: url.Values{\n\t\t\t\t\"anonymous\": {\"bad\"},\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:     \"Anonymous\",\n\t\t\tcurrOpts: Options{GoogleAccessID: \"foo\"},\n\t\t\tquery: url.Values{\n\t\t\t\t\"anonymous\": {\"true\"},\n\t\t\t},\n\t\t\twantOpts:   Options{}, // cleared\n\t\t\twantClient: true,\n\t\t},\n\t\t{\n\t\t\tname: \"BadPrivateKeyPath\",\n\t\t\tquery: url.Values{\n\t\t\t\t\"private_key_path\": {\"/path/does/not/exist\"},\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"PrivateKeyPath\",\n\t\t\tquery: url.Values{\n\t\t\t\t\"private_key_path\": {pkFile.Name()},\n\t\t\t},\n\t\t\twantOpts: Options{PrivateKey: privateKey},\n\t\t},\n\t\t{\n\t\t\tname:     \"PrivateKey cleared\",\n\t\t\tcurrOpts: Options{PrivateKey: privateKey},\n\t\t\tquery: url.Values{\n\t\t\t\t\"private_key_path\": {\"\"},\n\t\t\t},\n\t\t\twantOpts: Options{},\n\t\t},\n\t\t{\n\t\t\tname: \"AccessID change clears PrivateKey and MakeSignBytes\",\n\t\t\tcurrOpts: Options{\n\t\t\t\tGoogleAccessID: \"foo\",\n\t\t\t\tPrivateKey:     privateKey,\n\t\t\t\tMakeSignBytes: func(context.Context) SignBytesFunc {\n\t\t\t\t\treturn func([]byte) ([]byte, error) {\n\t\t\t\t\t\treturn nil, context.DeadlineExceeded\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tquery: url.Values{\n\t\t\t\t\"access_id\": {\"bar\"},\n\t\t\t},\n\t\t\twantOpts: Options{GoogleAccessID: \"bar\"},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\to := &URLOpener{Options: test.currOpts}\n\t\t\tgot, gotClient, err := o.forParams(ctx, test.query)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, &test.wantOpts); diff != \"\" {\n\t\t\t\tt.Errorf(\"opener.forParams(...) diff (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t\tif test.wantClient != (gotClient != nil) {\n\t\t\t\tt.Errorf(\"opener.forParams client return value was unexpected, got %v want %v\", gotClient != nil, test.wantClient)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenBucketFromURL(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\tpkFile, err := os.CreateTemp(\"\", \"my-private-key\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer os.Remove(pkFile.Name())\n\tif err := os.WriteFile(pkFile.Name(), []byte(\"key\"), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"gs://mybucket\", false},\n\t\t// OK, setting access_id.\n\t\t{\"gs://mybucket?access_id=foo\", false},\n\t\t// OK, setting private_key_path.\n\t\t{\"gs://mybucket?private_key_path=\" + pkFile.Name(), false},\n\t\t// OK, clearing any pre-existing private key.\n\t\t{\"gs://mybucket?private_key_path=\", false},\n\t\t// OK, setting universe_domain.\n\t\t{\"gs://mybucket?universe_domain=example.com\", false},\n\t\t// OK, universe_domain with empty value.\n\t\t{\"gs://mybucket?universe_domain=\", false},\n\t\t// Invalid private_key_path.\n\t\t{\"gs://mybucket?private_key_path=invalid-path\", true},\n\t\t// Invalid parameter.\n\t\t{\"gs://mybucket?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tb, err := blob.OpenBucket(ctx, test.URL)\n\t\tif b != nil {\n\t\t\tdefer b.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n\nfunc TestReadDefaultCredentials(t *testing.T) {\n\ttests := []struct {\n\t\tgivenJSON      string\n\t\tWantAccessID   string\n\t\tWantPrivateKey []byte\n\t}{\n\t\t// Variant A: service account file\n\t\t{\n\t\t\t`{\n\t\t\t\"type\": \"service_account\",\n\t\t\t\"project_id\": \"project-id\",\n\t\t\t\"private_key_id\": \"key-id\",\n\t\t\t\"private_key\": \"-----BEGIN PRIVATE KEY-----\\nprivate-key\\n-----END PRIVATE KEY-----\\n\",\n\t\t\t\"client_email\": \"service-account-email\",\n\t\t\t\"client_id\": \"client-id\",\n\t\t\t\"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n\t\t\t\"token_uri\": \"https://accounts.google.com/o/oauth2/token\",\n\t\t\t\"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n\t\t\t\"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/service-account-email\"\n\t\t  }`,\n\t\t\t\"service-account-email\",\n\t\t\t[]byte(\"-----BEGIN PRIVATE KEY-----\\nprivate-key\\n-----END PRIVATE KEY-----\\n\"),\n\t\t},\n\t\t// Variant A: credentials file absent a private key (stripped)\n\t\t{\n\t\t\t`{\n\t\t\t\"google\": {},\n\t\t\t\"client_email\": \"service-account-email\",\n\t\t\t\"client_id\": \"client-id\"\n\t\t  }`,\n\t\t\t\"service-account-email\",\n\t\t\t[]byte(\"\"),\n\t\t},\n\t\t// Variant B: obtained through the REST API\n\t\t{\n\t\t\t`{\n\t\t\t\"name\": \"projects/project-id/serviceAccounts/service-account-email/keys/key-id\",\n\t\t\t\"privateKeyType\": \"TYPE_GOOGLE_CREDENTIALS_FILE\",\n\t\t\t\"privateKeyData\": \"private-key\",\n\t\t\t\"validAfterTime\": \"date\",\n\t\t\t\"validBeforeTime\": \"date\",\n\t\t\t\"keyAlgorithm\": \"KEY_ALG_RSA_2048\"\n\t\t  }`,\n\t\t\t\"service-account-email\",\n\t\t\t[]byte(\"private-key\"),\n\t\t},\n\t\t// An empty input shall not throw an exception\n\t\t{\"\", \"\", nil},\n\t}\n\n\tfor i, test := range tests {\n\t\tinJSON := []byte(test.givenJSON)\n\t\tif len(test.givenJSON) == 0 {\n\t\t\tinJSON = nil\n\t\t}\n\n\t\tgotAccessID, gotPrivateKey := readDefaultCredentials(inJSON)\n\t\tif gotAccessID != test.WantAccessID || string(gotPrivateKey) != string(test.WantPrivateKey) {\n\t\t\tt.Errorf(\"Mismatched field values in case %d:\\n -- got:  %v, %v\\n -- want: %v, %v\", i,\n\t\t\t\tgotAccessID, gotPrivateKey,\n\t\t\t\ttest.WantAccessID, test.WantPrivateKey,\n\t\t\t)\n\t\t}\n\t}\n}\n\nfunc TestRemainingSignedURLSchemes(t *testing.T) {\n\ttests := []struct {\n\t\tname          string\n\t\tcurrOpts      Options\n\t\twantSignedURL string // Not the actual URL, which is subject to change, but a mimickry.\n\t\twantErr       bool\n\t}{\n\t\t{\n\t\t\tname:    \"no scheme available, error\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"too many schemes configured\",\n\t\t\tcurrOpts: Options{\n\t\t\t\tGoogleAccessID: \"foo\",\n\t\t\t\tPrivateKey:     []byte(\"private-key\"),\n\t\t\t\tSignBytes: func([]byte) ([]byte, error) {\n\t\t\t\t\treturn []byte(\"signed\"), nil\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"SignBytes\",\n\t\t\tcurrOpts: Options{\n\t\t\t\tGoogleAccessID: \"foo\",\n\t\t\t\tSignBytes: func([]byte) ([]byte, error) {\n\t\t\t\t\treturn []byte(\"signed\"), nil\n\t\t\t\t},\n\t\t\t},\n\t\t\twantSignedURL: \"https://host/go-cloud-blob-test-bucket/some-key?GoogleAccessId=foo&Signature=c2lnbmVk\",\n\t\t},\n\t\t{\n\t\t\tname: \"MakeSignBytes is being used\",\n\t\t\tcurrOpts: Options{\n\t\t\t\tGoogleAccessID: \"foo\",\n\t\t\t\tMakeSignBytes: func(context.Context) SignBytesFunc {\n\t\t\t\t\treturn func([]byte) ([]byte, error) {\n\t\t\t\t\t\treturn []byte(\"signed\"), nil\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\twantSignedURL: \"https://host/go-cloud-blob-test-bucket/some-key?GoogleAccessId=foo&Signature=c2lnbmVk\",\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tsignOpts := &driver.SignedURLOptions{\n\t\tExpiry: 30 * time.Second,\n\t\tMethod: http.MethodGet,\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tbucket := bucket{name: bucketName, opts: &test.currOpts}\n\n\t\t\t// SignedURL doesn't check whether a key exists.\n\t\t\tgotURL, gotErr := bucket.SignedURL(ctx, \"some-key\", signOpts)\n\t\t\tif (gotErr != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"Got unexpected error %v\", gotErr)\n\t\t\t}\n\t\t\tif test.wantSignedURL == \"\" {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tgot, _ := url.Parse(gotURL)\n\t\t\twant, _ := url.Parse(test.wantSignedURL)\n\t\t\tgotParams, wantParams := got.Query(), want.Query()\n\t\t\tfor _, param := range []string{\"GoogleAccessId\", \"Signature\"} {\n\t\t\t\tif gotParams.Get(param) != wantParams.Get(param) {\n\t\t\t\t\t// Print the full URL because the parameter might've not been set at all.\n\t\t\t\t\tt.Errorf(\"Query parameter in SignedURL differs: %v\\n -- got URL:  %v\\n -- want URL: %v\",\n\t\t\t\t\t\tparam, got, want)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "blob/gcsblob/iam.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This is an implementation for Options.MakeSignBytes\n// that serves as example for how to keep a private key in a separate\n// process, service, or HSM/TPM, yet use it as signer for blob.Bucket.\n\npackage gcsblob\n\nimport (\n\t\"context\"\n\t\"sync\"\n\n\tcredentials \"cloud.google.com/go/iam/credentials/apiv1\"\n\t\"cloud.google.com/go/iam/credentials/apiv1/credentialspb\"\n\tgax \"github.com/googleapis/gax-go/v2\"\n)\n\n// credentialsClient wraps the IAM Credentials API client for a lazy initialization\n// and expresses it in the reduced format expected by SignBytes.\n// See https://cloud.google.com/iam/docs/reference/credentials/rest\ntype credentialsClient struct {\n\tinit sync.Once\n\terr  error\n\n\t// client as reduced surface of credentials.IamCredentialsClient\n\t// enables us to use a mock in tests.\n\tclient interface {\n\t\tSignBlob(context.Context, *credentialspb.SignBlobRequest, ...gax.CallOption) (*credentialspb.SignBlobResponse, error)\n\t}\n}\n\n// CreateMakeSignBytesWith produces a MakeSignBytes variant from an expanded parameter set.\n// It essentially adapts a remote call to the IAM Credentials API\n// to the function signature expected by storage.SignedURLOptions.SignBytes.\nfunc (c *credentialsClient) CreateMakeSignBytesWith(lifetimeCtx context.Context, googleAccessID string) func(context.Context) SignBytesFunc {\n\treturn func(requestCtx context.Context) SignBytesFunc {\n\t\tc.init.Do(func() {\n\t\t\tif c.client != nil {\n\t\t\t\t// Set previously, likely to a mock implementation for tests.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tc.client, c.err = credentials.NewIamCredentialsClient(lifetimeCtx)\n\t\t})\n\n\t\treturn func(p []byte) ([]byte, error) {\n\t\t\tif c.err != nil {\n\t\t\t\treturn nil, c.err\n\t\t\t}\n\n\t\t\tresp, err := c.client.SignBlob(\n\t\t\t\trequestCtx,\n\t\t\t\t&credentialspb.SignBlobRequest{\n\t\t\t\t\tName:    googleAccessID,\n\t\t\t\t\tPayload: p,\n\t\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn resp.GetSignedBlob(), nil\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "blob/gcsblob/iam_test.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcsblob\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\n\t\"cloud.google.com/go/iam/credentials/apiv1/credentialspb\"\n\tgax \"github.com/googleapis/gax-go/v2\"\n)\n\nconst (\n\tmockKey       = \"key0000\"\n\tmockSignature = \"signature\"\n)\n\ntype mockIAMClient struct {\n\trequestErr error\n}\n\nfunc (m mockIAMClient) SignBlob(context.Context, *credentialspb.SignBlobRequest, ...gax.CallOption) (*credentialspb.SignBlobResponse, error) {\n\tif m.requestErr != nil {\n\t\treturn nil, m.requestErr\n\t}\n\treturn &credentialspb.SignBlobResponse{KeyId: mockKey, SignedBlob: []byte(mockSignature)}, nil\n}\n\nfunc TestIAMCredentialsClient(t *testing.T) {\n\ttests := []struct {\n\t\tname       string\n\t\tconnectErr error\n\t\tmockClient interface {\n\t\t\tSignBlob(context.Context, *credentialspb.SignBlobRequest, ...gax.CallOption) (*credentialspb.SignBlobResponse, error)\n\t\t}\n\n\t\t// These are for the produced SignBytesFunc\n\t\tinput      []byte\n\t\twantOutput []byte\n\t\trequestErr error\n\t}{\n\t\t{\n\t\t\t\"happy path: signing\", nil,\n\t\t\tmockIAMClient{},\n\t\t\t[]byte(\"payload\"), []byte(mockSignature), nil,\n\t\t},\n\t\t{\n\t\t\t\"won't connect\", errors.New(\"Missing role: serviceAccountTokenCreator\"),\n\t\t\tmockIAMClient{},\n\t\t\t[]byte(\"payload\"), nil, nil,\n\t\t},\n\t\t{\n\t\t\t\"request fails\", nil,\n\t\t\tmockIAMClient{requestErr: context.Canceled},\n\t\t\t[]byte(\"payload\"), nil, context.Canceled,\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tc := credentialsClient{err: test.connectErr, client: test.mockClient}\n\t\t\tmakeSignBytesFn := c.CreateMakeSignBytesWith(context.TODO(), serviceAccountID)\n\n\t\t\tsignBytesFn := makeSignBytesFn(nil) // Our mocks don't read any context.\n\t\t\thaveOutput, haveErr := signBytesFn(test.input)\n\n\t\t\tif len(test.wantOutput) > 0 && string(haveOutput) != string(test.wantOutput) {\n\t\t\t\tt.Errorf(\"Unexpected output:\\n -- have: %v\\n -- want: %v\",\n\t\t\t\t\tstring(haveOutput), string(test.wantOutput))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif test.connectErr == nil && test.requestErr == nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif test.connectErr != nil && haveErr != test.connectErr {\n\t\t\t\tt.Error(\"The connection error, a permanent error, has not been returned but should.\")\n\t\t\t}\n\t\t\tif test.requestErr != nil && haveErr != test.requestErr {\n\t\t\t\tt.Error(\"The per-request error has not been returned but should.\")\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "blob/gcsblob/testdata/TestBeforeReadNonExistentKey.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghqKSvfJgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"dafa84fc99aee5d2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/nonexistent-key\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"203\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz4tST3iwIC596G22tVvLtk1PwYub5fONsrTAqDDJ-tAg-q7SOqTMgSK7WQWJpuimtF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ub25leGlzdGVudC1rZXk8L0RldGFpbHM+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghpMUu+lAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"595db2a5be2b89f2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=mydir%2Fas-test\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoieVpSbHFnPT0iLCJtZDVIYXNoIjoiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwibmFtZSI6Im15ZGlyL2FzLXRlc3QifQo=\",\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"785\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Etag\": [\n            \"CK+e3IWfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzP7w32aP3prEecJaqJiruL1z6s7xvzL_VGBMitfGntx2Zl817D35w9IA-w-xC8p62f\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbXlkaXIvYXMtdGVzdC8xNzczOTMyOTA1OTU5MjE1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdD9nZW5lcmF0aW9uPTE3NzM5MzI5MDU5NTkyMTUmYWx0PW1lZGlhIiwibmFtZSI6Im15ZGlyL2FzLXRlc3QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI5MDU5NTkyMTUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJjcmMzMmMiOiJ5WlJscWc9PSIsImV0YWciOiJDSytlM0lXZnJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1Ljk2MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS45NjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1Ljk2MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS45NjFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"194f62e4bc44299f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"785\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Etag\": [\n            \"CK+e3IWfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwm3ybso1SJSsoDIkRKOPFnytR5Y8zi-E2bFXco8ZZ8EBr_TGR8ketpxd4VvzmeI4pD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbXlkaXIvYXMtdGVzdC8xNzczOTMyOTA1OTU5MjE1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdD9nZW5lcmF0aW9uPTE3NzM5MzI5MDU5NTkyMTUmYWx0PW1lZGlhIiwibmFtZSI6Im15ZGlyL2FzLXRlc3QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI5MDU5NTkyMTUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJjcmMzMmMiOiJ5WlJscWc9PSIsImV0YWciOiJDSytlM0lXZnJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1Ljk2MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS45NjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1Ljk2MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS45NjFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"65bba91b960f97dc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932905959215\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwgxRmm7WRwplaJSBR5wvCqzPhTioaKDx8b3HDPnpUhPijy-YPY-M8c4uo-WZgCbeTw\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"30fa519ae67bc879\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=mydir\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxO6H0kG6fabSf7Vf_XSZGs3K6OH1I73wTXKoni1GBVF2w_uQhlrem_Rmp2daj6b4m_\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsibXlkaXIvIl19\"\n      }\n    },\n    {\n      \"ID\": \"a6686db0f68dc9dd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=mydir%2Fas-test\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"822\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWze-4B_nxK7uII3_VO28difBHJZECE7ASyYIB-LjxiInMFbYLeH_3sTqy_-wsW4bolJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9teWRpci9hcy10ZXN0LzE3NzM5MzI5MDU5NTkyMTUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbXlkaXIlMkZhcy10ZXN0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbXlkaXIlMkZhcy10ZXN0P2dlbmVyYXRpb249MTc3MzkzMjkwNTk1OTIxNSZhbHQ9bWVkaWEiLCJuYW1lIjoibXlkaXIvYXMtdGVzdCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjkwNTk1OTIxNSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNLK2UzSVdmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuOTYxWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1Ljk2MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuOTYxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1Ljk2MVoifV19\"\n      }\n    },\n    {\n      \"ID\": \"96737126763082c9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key-does-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWykYxAzWCAnIz92q2pZ5k5ydMGYYVVZ_5OAffJ3aNrHBWwj6bBXoOWje36UjDvdIuzZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9rZXktZG9lcy1ub3QtZXhpc3Q8L0RldGFpbHM+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"7006f479c0518b18\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test/rewriteTo/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"908\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzS9MgFagmemaHiKFguWR84M9aLRQeTd9DUbnPxPVyoZpyilPf5-YIl9JB8nw6C5gfa\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiMTEiLCJvYmplY3RTaXplIjoiMTEiLCJkb25lIjp0cnVlLCJyZXNvdXJjZSI6eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbXlkaXIvYXMtdGVzdC1jb3B5LzE3NzM5MzI5MDY0NjkwMTciLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbXlkaXIlMkZhcy10ZXN0LWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9teWRpciUyRmFzLXRlc3QtY29weT9nZW5lcmF0aW9uPTE3NzM5MzI5MDY0NjkwMTcmYWx0PW1lZGlhIiwibmFtZSI6Im15ZGlyL2FzLXRlc3QtY29weSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjkwNjQ2OTAxNyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNKbXQrNFdmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjYuNDcyWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI2LjQ3MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjYuNDcyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI2LjQ3MloifX0=\"\n      }\n    },\n    {\n      \"ID\": \"07714f11fd522a67\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyM3pYXx2l9F2Im23LCMR5w9p4cGyhBaPSwwrqvS--0lIQ12efcuYalhB41G5Kmr1qp\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4ee5832579e3b60f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzNOSTdff9rdBBhD9S7qpSqC8Ck9-6O5ayal2DDxjDFIxCwReH7khCJkVW_SsQz4NXO\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestAs/verify_ContentLanguage_can_be_written_and_read_through_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghoOHWaZgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bab2271ba8883d82\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=mydir%2Fas-test\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudExhbmd1YWdlIjoibmwiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJjcmMzMmMiOiJ5WlJscWc9PSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJuYW1lIjoibXlkaXIvYXMtdGVzdCJ9Cg==\",\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"808\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Etag\": [\n            \"CL+mp4WfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxHmi2KezZ4zkRLL52MHy09gSnTg8z03YU1HNsp-rjFm2mnVosY1S8dNfouoJFyRynb\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbXlkaXIvYXMtdGVzdC8xNzczOTMyOTA1MDkxOTAzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdD9nZW5lcmF0aW9uPTE3NzM5MzI5MDUwOTE5MDMmYWx0PW1lZGlhIiwibmFtZSI6Im15ZGlyL2FzLXRlc3QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI5MDUwOTE5MDMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJjb250ZW50TGFuZ3VhZ2UiOiJubCIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNMK21wNFdmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuMDk1WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1LjA5NVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuMDk1WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1LjA5NVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"bec1474859d33a8f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"808\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Etag\": [\n            \"CL+mp4WfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyJfukcDXNztgLrwOkmDGeKiMBhEduPVirdqHHYRwrYL09gjwkZout29NOlNLyK-8yk\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbXlkaXIvYXMtdGVzdC8xNzczOTMyOTA1MDkxOTAzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL215ZGlyJTJGYXMtdGVzdD9nZW5lcmF0aW9uPTE3NzM5MzI5MDUwOTE5MDMmYWx0PW1lZGlhIiwibmFtZSI6Im15ZGlyL2FzLXRlc3QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI5MDUwOTE5MDMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJjb250ZW50TGFuZ3VhZ2UiOiJubCIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNMK21wNFdmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuMDk1WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1LjA5NVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuMDk1WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI1LjA5NVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"a69fb3a02811b9fd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932905091903\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz4cWYu0SUJ5YaMv20tetrhjxegN-shah0xfhkU_3jogLJ6mB_ebCJIUm9w8_rUdpwA\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"16f0252af1f6ddf6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=mydir\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxnEhFYlebGCWLST4lHl0TtzGjhhV7aj_9WTB6q9KmV7XOUR8B1RYhnr8v6_BabFBSD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsibXlkaXIvIl19\"\n      }\n    },\n    {\n      \"ID\": \"7c45e77a35ff4750\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=mydir%2Fas-test\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"845\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyLStjoW6HRFx0WliLwggFb6x2kPA8JijBd5X5W3N9MiFrFmHDhObg-v_nsTjuNxryN\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9teWRpci9hcy10ZXN0LzE3NzM5MzI5MDUwOTE5MDMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbXlkaXIlMkZhcy10ZXN0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbXlkaXIlMkZhcy10ZXN0P2dlbmVyYXRpb249MTc3MzkzMjkwNTA5MTkwMyZhbHQ9bWVkaWEiLCJuYW1lIjoibXlkaXIvYXMtdGVzdCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjkwNTA5MTkwMyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNvbnRlbnRMYW5ndWFnZSI6Im5sIiwiY3JjMzJjIjoieVpSbHFnPT0iLCJldGFnIjoiQ0wrbXA0V2ZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS4wOTVaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuMDk1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS4wOTVaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuMDk1WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"c7ee2120779536a6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key-does-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyFCm0Vqd41Al9p72Bfb6Ybw9Vmpqt7emzRcS9k7pCeYL_hO2nofZKOeiW043JbmnsF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9rZXktZG9lcy1ub3QtZXhpc3Q8L0RldGFpbHM+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"6bada84855d52852\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test/rewriteTo/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"931\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx3iirnr39EMovcXhJnQlj-uipimY3dKna9H0ILBaBcGbEksQ99B4hImQ8FKuGfU5Xu\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiMTEiLCJvYmplY3RTaXplIjoiMTEiLCJkb25lIjp0cnVlLCJyZXNvdXJjZSI6eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbXlkaXIvYXMtdGVzdC1jb3B5LzE3NzM5MzI5MDU2MzI1NjciLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbXlkaXIlMkZhcy10ZXN0LWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9teWRpciUyRmFzLXRlc3QtY29weT9nZW5lcmF0aW9uPTE3NzM5MzI5MDU2MzI1NjcmYWx0PW1lZGlhIiwibmFtZSI6Im15ZGlyL2FzLXRlc3QtY29weSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjkwNTYzMjU2NyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNvbnRlbnRMYW5ndWFnZSI6Im5sIiwiY3JjMzJjIjoieVpSbHFnPT0iLCJldGFnIjoiQ0xlbXlJV2ZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS42MzVaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuNjM1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNS42MzVaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjUuNjM1WiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"5ba434a732d66860\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwGzXjkAjliVQX5-9qWcZC9mkUFBSlqzl40S9LMXF8zBFUFtJf8X1j9P1bXM_K45tyx\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"11a8dd5177a89ee6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/mydir%2Fas-test?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:25 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzG2LvXH8xpb2MtWgLH5NTlhwxAjiopnwcPXyotEICvo1rAWQalrkkBXTPePkBcrv7j\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestAttributes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghOFJqIEAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3dcc6c2eeb3076db\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=someDir%2Fblob-for-attributes\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY2FjaGVDb250cm9sIjoibm8tY2FjaGUiLCJjb250ZW50RGlzcG9zaXRpb24iOiJpbmxpbmUiLCJjb250ZW50RW5jb2RpbmciOiJpZGVudGl0eSIsImNvbnRlbnRMYW5ndWFnZSI6ImVuIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiY3JjMzJjIjoiL216eDNBPT0iLCJtZDVIYXNoIjoiN1FkaWgxTXVoalplaEI2U3Y4VU5qQT09IiwibmFtZSI6InNvbWVEaXIvYmxvYi1mb3ItYXR0cmlidXRlcyJ9Cg==\",\n          \"SGVsbG8gV29ybGQh\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"934\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Etag\": [\n            \"CIyPz/ierJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwtnKm-cBEi_k51yfPlu8Kz06cj3UFDTDeIh7Xcp4BRFHf2mVVlZxO45XYNvFFDy9FL\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvc29tZURpci9ibG9iLWZvci1hdHRyaWJ1dGVzLzE3NzM5MzI4Nzg0ODEyOTIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vc29tZURpciUyRmJsb2ItZm9yLWF0dHJpYnV0ZXMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9zb21lRGlyJTJGYmxvYi1mb3ItYXR0cmlidXRlcz9nZW5lcmF0aW9uPTE3NzM5MzI4Nzg0ODEyOTImYWx0PW1lZGlhIiwibmFtZSI6InNvbWVEaXIvYmxvYi1mb3ItYXR0cmlidXRlcyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3ODQ4MTI5MiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjEyIiwibWQ1SGFzaCI6IjdRZGloMU11aGpaZWhCNlN2OFVOakE9PSIsImNvbnRlbnRFbmNvZGluZyI6ImlkZW50aXR5IiwiY29udGVudERpc3Bvc2l0aW9uIjoiaW5saW5lIiwiY29udGVudExhbmd1YWdlIjoiZW4iLCJjYWNoZUNvbnRyb2wiOiJuby1jYWNoZSIsImNyYzMyYyI6Ii9tengzQT09IiwiZXRhZyI6IkNJeVB6L2llckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguNDg0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4LjQ4NFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguNDg0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4LjQ4NFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"a4a1f883b3b8bc20\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/not-found?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzr-STXhqg1WLbCoqvjJGSqOLArNvXID5W87F-qzQfCVzPEisq3IRzmWFr2ByLHZHTi\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ub3QtZm91bmQiLCJlcnJvcnMiOlt7Im1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ub3QtZm91bmQiLCJkb21haW4iOiJnbG9iYWwiLCJyZWFzb24iOiJub3RGb3VuZCJ9XX19\"\n      }\n    },\n    {\n      \"ID\": \"bc86ad46e539d869\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/someDir?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"197\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxp0f8BphQ-TcqcQ6L9B2Hv19OHkF4iXQCEH6s32EQQP8dqFoc-DjXA-aWg7-uGwFN7\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9zb21lRGlyIiwiZXJyb3JzIjpbeyJtZXNzYWdlIjoiTm8gc3VjaCBvYmplY3Q6IGdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvc29tZURpciIsImRvbWFpbiI6Imdsb2JhbCIsInJlYXNvbiI6Im5vdEZvdW5kIn1dfX0=\"\n      }\n    },\n    {\n      \"ID\": \"367c9408767277a2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/someDir%2F?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"199\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyvwFNqeh8S8aN8JOqYTPqNhJ3sugY1Amx_oq29sb26ZzvyXTZIKWLORnOwFveWH0_m\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9zb21lRGlyLyIsImVycm9ycyI6W3sibWVzc2FnZSI6Ik5vIHN1Y2ggb2JqZWN0OiBnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3NvbWVEaXIvIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoibm90Rm91bmQifV19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"aec39d7718054c4f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/someDir%2Fblob-for-attributes?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"934\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Etag\": [\n            \"CIyPz/ierJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy7WVPyVO5w38aWX1bAUXfTz_lHMJ3uz38QxA-3eM93nEtcRFmrAiOny6dvdYBFPMMK\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvc29tZURpci9ibG9iLWZvci1hdHRyaWJ1dGVzLzE3NzM5MzI4Nzg0ODEyOTIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vc29tZURpciUyRmJsb2ItZm9yLWF0dHJpYnV0ZXMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9zb21lRGlyJTJGYmxvYi1mb3ItYXR0cmlidXRlcz9nZW5lcmF0aW9uPTE3NzM5MzI4Nzg0ODEyOTImYWx0PW1lZGlhIiwibmFtZSI6InNvbWVEaXIvYmxvYi1mb3ItYXR0cmlidXRlcyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3ODQ4MTI5MiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjEyIiwibWQ1SGFzaCI6IjdRZGloMU11aGpaZWhCNlN2OFVOakE9PSIsImNvbnRlbnRFbmNvZGluZyI6ImlkZW50aXR5IiwiY29udGVudERpc3Bvc2l0aW9uIjoiaW5saW5lIiwiY29udGVudExhbmd1YWdlIjoiZW4iLCJjYWNoZUNvbnRyb2wiOiJuby1jYWNoZSIsImNyYzMyYyI6Ii9tengzQT09IiwiZXRhZyI6IkNJeVB6L2llckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguNDg0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4LjQ4NFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguNDg0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4LjQ4NFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"6ec7200525a1af03\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/someDir%2Fblob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932878481292\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=/mzx3A==\",\n            \"md5=7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"12\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwe34ZDfDjRiMudNsNo9IOkgVoeOJwPVcab_KFx2k0F3Y8CfT5Um8W9B24OfH7SB0Pl\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQh\"\n      }\n    },\n    {\n      \"ID\": \"bd92cf3c18b8063e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=someDir%2Fblob-for-attributes\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiL216eDNBPT0iLCJtZDVIYXNoIjoiN1FkaWgxTXVoalplaEI2U3Y4VU5qQT09IiwibmFtZSI6InNvbWVEaXIvYmxvYi1mb3ItYXR0cmlidXRlcyJ9Cg==\",\n          \"SGVsbG8gV29ybGQh\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"841\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Etag\": [\n            \"CMuh7PierJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxml1MVYjYXvuilbaaY1WcFrKnpJzybhUl9da0bnLvhhlH2lbHatQuJUrpxKseSu1EM\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvc29tZURpci9ibG9iLWZvci1hdHRyaWJ1dGVzLzE3NzM5MzI4Nzg5NTg3OTUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vc29tZURpciUyRmJsb2ItZm9yLWF0dHJpYnV0ZXMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9zb21lRGlyJTJGYmxvYi1mb3ItYXR0cmlidXRlcz9nZW5lcmF0aW9uPTE3NzM5MzI4Nzg5NTg3OTUmYWx0PW1lZGlhIiwibmFtZSI6InNvbWVEaXIvYmxvYi1mb3ItYXR0cmlidXRlcyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3ODk1ODc5NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjEyIiwibWQ1SGFzaCI6IjdRZGloMU11aGpaZWhCNlN2OFVOakE9PSIsImNyYzMyYyI6Ii9tengzQT09IiwiZXRhZyI6IkNNdWg3UGllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguOTY4WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4Ljk2OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguOTY4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4Ljk2OFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"ae32a53737a438d3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/someDir%2Fblob-for-attributes?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"841\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:59 GMT\"\n          ],\n          \"Etag\": [\n            \"CMuh7PierJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzJPIqs1QtilzgAglhnY9-yuIs5nHiTdmErk-DW92b6mhkfFC0BKXjjacsI5ptKgphw\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvc29tZURpci9ibG9iLWZvci1hdHRyaWJ1dGVzLzE3NzM5MzI4Nzg5NTg3OTUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vc29tZURpciUyRmJsb2ItZm9yLWF0dHJpYnV0ZXMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9zb21lRGlyJTJGYmxvYi1mb3ItYXR0cmlidXRlcz9nZW5lcmF0aW9uPTE3NzM5MzI4Nzg5NTg3OTUmYWx0PW1lZGlhIiwibmFtZSI6InNvbWVEaXIvYmxvYi1mb3ItYXR0cmlidXRlcyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3ODk1ODc5NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjEyIiwibWQ1SGFzaCI6IjdRZGloMU11aGpaZWhCNlN2OFVOakE9PSIsImNyYzMyYyI6Ii9tengzQT09IiwiZXRhZyI6IkNNdWg3UGllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguOTY4WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4Ljk2OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTguOTY4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU4Ljk2OFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"90db9c013831cac9\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/someDir%2Fblob-for-attributes?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:59 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw40leX8xZKH8S8IN1S9gYpgutHPJ1EX0StqKiBMvqzmyc_udRyGD2Gvjg9NReEa1oj\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestCanceledWrite/BlobExists.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghTBPw1KAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"54f47696a0ed7b1e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-canceled-write\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoieVpSbHFnPT0iLCJtZDVIYXNoIjoiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwibmFtZSI6ImJsb2ItZm9yLWNhbmNlbGVkLXdyaXRlIn0K\",\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"821\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CNmF9/qerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw6BRImktTDQNfsfRFxQzWXG5fEEYcZudOvZ66K4yPcvsGJFsob0DQP85k1OzHtBMMa\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY2FuY2VsZWQtd3JpdGUvMTc3MzkzMjg4MzMyOTc1MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jYW5jZWxlZC13cml0ZSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWNhbmNlbGVkLXdyaXRlP2dlbmVyYXRpb249MTc3MzkzMjg4MzMyOTc1MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY2FuY2VsZWQtd3JpdGUiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODMzMjk3NTMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJjcmMzMmMiOiJ5WlJscWc9PSIsImV0YWciOiJDTm1GOS9xZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjMzMloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy4zMzJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjMzMloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy4zMzJaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"e3e19a3ce8449201\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883329753\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyU1H8xZmrM61iXVRh68VBxyW_fw-G5E0o1gZWZEVc3UbpeZ4pDM4my3lSYwN93s3jB\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"2492df6d27d9a7b5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883329753\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWygZTZbsSiQ86sH8TEgKTf_7BXr9P9NzZ17f-5bXrU6Xfd0p0HXd3WrCQZ-F2gXQ0qz\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"ecf96e462c391a5d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-canceled-write?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWygQgtnz5TRQo87h5i9qJiD0tMh5NjpL26t-FtgHVMdH4f0iR-rutmeTBtJm4_c_FA2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestCanceledWrite/EmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghSIyUnkAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e8d4220a6b01d684\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:02 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw-KRlRmTt5tmLrgDgNSDWixulIxtanDw1ZS6Fj_GQmYNPFtxrWge7VzEVI-9sra09s\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvRGV0YWlscz48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"80b009f9fa4b8029\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:02 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwBp4tJntDKUIlSxAdDOaIJM-KlsiB9huDk6svMbc8RhmaTQNS6CXpxz_-WDl1hd0mF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvRGV0YWlscz48L0Vycm9yPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestCanceledWrite/NonEmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghSMlZIWgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6c43fbbcaec7a1b6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:02 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxiGJfzpY-7ba1gq7iL58vj9zO1d-mBz0aLOel55u9h375Dxd9P2j5vs8qrbvQ6PFXB\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvRGV0YWlscz48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"052619c50b56af09\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxQFjuiu0mRx0CYf8djqmg0Y2nVFNjCkLtvutx4NgEgy4Awx_L-KRMgUXiu1bzPWm5_\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvRGV0YWlscz48L0Vycm9yPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestConcurrentWriteAndRead.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghTJJwHGQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a4121ce8729d59dc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key0\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJtUGxCaVE9PSIsIm1kNUhhc2giOiJZZzhMWjZrZmYzUVZHOFcrZEZ0eEVBPT0iLCJuYW1lIjoia2V5MCJ9Cg==\",\n          \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CNSakfuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxsGQupkqMf5D6P0bj0Ku6CVFnsKxkh75C0yaAzSqyu9m7uCZLyNYRQCFU6ajjO8VjC\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MC8xNzczOTMyODgzNzU4NDIwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkwP2dlbmVyYXRpb249MTc3MzkzMjg4Mzc1ODQyMCZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc1ODQyMCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJZZzhMWjZrZmYzUVZHOFcrZEZ0eEVBPT0iLCJjcmMzMmMiOiJtUGxCaVE9PSIsImV0YWciOiJDTlNha2Z1ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc2MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc2MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NjFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"9063cd79fa83243b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key6\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJUV2RTWHc9PSIsIm1kNUhhc2giOiJsa28ydURxb0pyZ0V5WU5udmNKNnZ3PT0iLCJuYW1lIjoia2V5NiJ9Cg==\",\n          \"BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CObwkfuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwHsO47tQlEOMQNzXsiasDLsovg9gOT9bUd4XiKqmVI89mVXzmw9Ods_7AOKhKgHkCD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5Ni8xNzczOTMyODgzNzY5NDQ2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTYiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXk2P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc2OTQ0NiZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5NiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc2OTQ0NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJsa28ydURxb0pyZ0V5WU5udmNKNnZ3PT0iLCJjcmMzMmMiOiJUV2RTWHc9PSIsImV0YWciOiJDT2J3a2Z1ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3MloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NzJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NzJaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"5dfd07d2d3c5c7ed\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key14\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJoZ2N6eVE9PSIsIm1kNUhhc2giOiJObEZEVUZNMFRwRjFTK01YRTFQeERnPT0iLCJuYW1lIjoia2V5MTQifQo=\",\n          \"Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CL+wk/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyGuE570N_mC6sVFVdLpR2TImDvxjNVgQDsqwgPtBPzs6Yjggdq7r_yUVKRQesyRfkR\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTQvMTc3MzkzMjg4Mzc5Mzk4MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxNCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTE0P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc5Mzk4MyZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3OTM5ODMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoiTmxGRFVGTTBUcEYxUytNWEUxUHhEZz09IiwiY3JjMzJjIjoiaGdjenlRPT0iLCJldGFnIjoiQ0wrd2svdWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTZaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzk2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTZaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzk2WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"fc7628b2c641ad67\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key15\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJYT1laUHc9PSIsIm1kNUhhc2giOiJxSHF5M1RPQ1BMV0FCWi9ZVEVlaUFnPT0iLCJuYW1lIjoia2V5MTUifQo=\",\n          \"Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CLOzkvuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy6Kzg8RX8klri1datRpk8ojdrSRSl6sVDxVE9FSmq7hj5NVMMgd6k7RICTFrfbBmsD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTUvMTc3MzkzMjg4Mzc3Nzk3MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxNSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTE1P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc3Nzk3MSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTUiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3Nzc5NzEiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoicUhxeTNUT0NQTFdBQlovWVRFZWlBZz09IiwiY3JjMzJjIjoiWE9ZWlB3PT0iLCJldGFnIjoiQ0xPemt2dWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODFaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzgxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODFaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzgxWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"73ddccce7624eaf4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key12\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTmlrUTFBPT0iLCJtZDVIYXNoIjoiVmtHUSszTEpzZUhBRm9wYmIrQll2Zz09IiwibmFtZSI6ImtleTEyIn0K\",\n          \"DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"751\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CPuPk/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx8f0bMFK4paptDCSzARjFBEo5Q2bY4OoBOEmNNl6JNi5fX6_eeXdslO7zKfWWeyCZ0\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTIvMTc3MzkzMjg4Mzc4OTgxOSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxMiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTEyP2dlbmVyYXRpb249MTc3MzkzMjg4Mzc4OTgxOSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3ODk4MTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI0MDk2IiwibWQ1SGFzaCI6IlZrR1ErM0xKc2VIQUZvcGJiK0JZdmc9PSIsImNyYzMyYyI6Ik5pa1ExQT09IiwiZXRhZyI6IkNQdVBrL3VlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzkzWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzkzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5M1oifQ==\"\n      }\n    },\n    {\n      \"ID\": \"713aaa50c6a8ef2e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key11\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJPVllwOUE9PSIsIm1kNUhhc2giOiJBYkRtV1I5NmYxVklGblc0SlE1L1NBPT0iLCJuYW1lIjoia2V5MTEifQo=\",\n          \"CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CK6zkvuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzxiL-dxeuWSdoU11hv-v6FCWsjP33ADFyTA5Ncl1O_VTpP4oTF4hRCXFq-nmPqnC0i\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTEvMTc3MzkzMjg4Mzc3Nzk2NiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTExP2dlbmVyYXRpb249MTc3MzkzMjg4Mzc3Nzk2NiZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3Nzc5NjYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoiQWJEbVdSOTZmMVZJRm5XNEpRNS9TQT09IiwiY3JjMzJjIjoiT1ZZcDlBPT0iLCJldGFnIjoiQ0s2emt2dWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODBaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzgwWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODBaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzgwWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"29bc712904071b0a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key13\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiN01nNklnPT0iLCJtZDVIYXNoIjoiU3NUekZaM203UjFOckljNDJVS1crUT09IiwibmFtZSI6ImtleTEzIn0K\",\n          \"DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"751\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CN3lkfuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwq6vCYO20Gza2IcZV6YZdGReW4zE-MrqkZWCOf_Y303kgXf9N5KYQiYR4nAnWK703m\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTMvMTc3MzkzMjg4Mzc2ODAyOSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxMyIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTEzP2dlbmVyYXRpb249MTc3MzkzMjg4Mzc2ODAyOSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTMiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3NjgwMjkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI0MDk2IiwibWQ1SGFzaCI6IlNzVHpGWjNtN1IxTnJJYzQyVUtXK1E9PSIsImNyYzMyYyI6IjdNZzZJZz09IiwiZXRhZyI6IkNOM2xrZnVlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzcyWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzcyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3MloifQ==\"\n      }\n    },\n    {\n      \"ID\": \"8ccadeebbfb00fff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key1\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJRaGhyZnc9PSIsIm1kNUhhc2giOiJxbzg1bG4zclJCcHVkSVNXT1VXcFlBPT0iLCJuYW1lIjoia2V5MSJ9Cg==\",\n          \"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CLfwkfuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx6RU-GQcVO8kGLQHuoaI1YO5xPeFD71-2GhEp0DlVFTNPfM3YMGgRZHMGr8__5fuYZ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MS8xNzczOTMyODgzNzY5Mzk5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxP2dlbmVyYXRpb249MTc3MzkzMjg4Mzc2OTM5OSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc2OTM5OSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJxbzg1bG4zclJCcHVkSVNXT1VXcFlBPT0iLCJjcmMzMmMiOiJRaGhyZnc9PSIsImV0YWciOiJDTGZ3a2Z1ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3MloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NzJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NzJaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"51ec89b3adf860ff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key10\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiNDdjREFnPT0iLCJtZDVIYXNoIjoiQVhLSzFKVmNaNzkxS3hjaElYWU5OZz09IiwibmFtZSI6ImtleTEwIn0K\",\n          \"CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"751\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CJe6lfuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzC3zQQ2Bb4kGJsaiCSigvOZn7MGPHcgaWsgIc-_lZGgjLJhg7LYKFWu8arCM6Oaj5Q\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTAvMTc3MzkzMjg4MzgyNzk5MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxMCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTEwP2dlbmVyYXRpb249MTc3MzkzMjg4MzgyNzk5MSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM4Mjc5OTEiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI0MDk2IiwibWQ1SGFzaCI6IkFYS0sxSlZjWjc5MUt4Y2hJWFlOTmc9PSIsImNyYzMyYyI6IjQ3Y0RBZz09IiwiZXRhZyI6IkNKZTZsZnVlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuODMxWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjgzMVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuODMxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjgzMVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"e6e9acef56ce63e2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key17\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiIwVFRlb2c9PSIsIm1kNUhhc2giOiIzMmVlWHNqN1p5aENsMG8yMHdQUS93PT0iLCJuYW1lIjoia2V5MTcifQo=\",\n          \"EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CIuplPuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzCktsC2ZcUYbFDRV2iVGzF3kIKOa3VafWbJrp7DYfgjvy0E8zKeuwTnfCBO5MUWkv-\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTcvMTc3MzkzMjg4MzgwOTQxOSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxNyIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTE3P2dlbmVyYXRpb249MTc3MzkzMjg4MzgwOTQxOSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTciLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM4MDk0MTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoiMzJlZVhzajdaeWhDbDBvMjB3UFEvdz09IiwiY3JjMzJjIjoiMFRUZW9nPT0iLCJldGFnIjoiQ0l1cGxQdWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy44MTJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuODEyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy44MTJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuODEyWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"1ff5a65c71d40b0c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key5\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJKNmhidEE9PSIsIm1kNUhhc2giOiJZZlJhS1FrRzBXdjFVZWVNc0QxZitRPT0iLCJuYW1lIjoia2V5NSJ9Cg==\",\n          \"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CIf/kvuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxF7XCAqsLdKDsvmqT90gqPW34WEpK4U9uUDF7WPA2ZGHA-iy-b-jl-XPVSA5dHk7mw\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5NS8xNzczOTMyODgzNzg3NjU1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTUiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXk1P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc4NzY1NSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5NSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc4NzY1NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJZZlJhS1FrRzBXdjFVZWVNc0QxZitRPT0iLCJjcmMzMmMiOiJKNmhidEE9PSIsImV0YWciOiJDSWYva3Z1ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5MFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5MFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTBaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"7ce6a3cc63e97a62\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key19\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJZUnI5dnc9PSIsIm1kNUhhc2giOiIydzlTNGFScUtBQkhvZUFoeWlBSk1BPT0iLCJuYW1lIjoia2V5MTkifQo=\",\n          \"ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CJu2k/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw1ivdUky9Vf6YP1IvAVn9cjlfdZ6anpkdj7kcwbe9fG2MFrlaIW4QBJPDaG0r6Q3ra\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTkvMTc3MzkzMjg4Mzc5NDcxNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxOSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTE5P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc5NDcxNSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTkiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3OTQ3MTUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoiMnc5UzRhUnFLQUJIb2VBaHlpQUpNQT09IiwiY3JjMzJjIjoiWVJyOXZ3PT0iLCJldGFnIjoiQ0p1MmsvdWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTdaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzk3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTdaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzk3WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"8c4e5b6c1020a69f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key16\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJDOVgwVkE9PSIsIm1kNUhhc2giOiI2NW45Q2pkckprTlFFYUc0ZkZXTWdRPT0iLCJuYW1lIjoia2V5MTYifQo=\",\n          \"EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CMDDlPuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzn8Q-cUnG2Kti0KbA88dhMEwNQ_MTFE9JTLGn2__4Ua6OZjpacCtMEx6BD5-IsONge\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTYvMTc3MzkzMjg4MzgxMjgwMCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxNiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTE2P2dlbmVyYXRpb249MTc3MzkzMjg4MzgxMjgwMCZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTYiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM4MTI4MDAiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoiNjVuOUNqZHJKa05RRWFHNGZGV01nUT09IiwiY3JjMzJjIjoiQzlYMFZBPT0iLCJldGFnIjoiQ01ERGxQdWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy44MTVaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuODE1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy44MTVaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuODE1WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"dc25b8de7d6b6fe8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key9\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiaVhnSzZRPT0iLCJtZDVIYXNoIjoia2ZzaXVLUlo3M0Q3Q3phdUtvZEFoZz09IiwibmFtZSI6ImtleTkifQo=\",\n          \"CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"747\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CMeBk/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz_jW4OicPy17TDrI9iGWnZGoPrVUjniQIm5wvO2GP1MQ6oBxt-ed8_PD5pwbV-95uF\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5OS8xNzczOTMyODgzNzg3OTc1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXk5P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc4Nzk3NSZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5OSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc4Nzk3NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoia2ZzaXVLUlo3M0Q3Q3phdUtvZEFoZz09IiwiY3JjMzJjIjoiaVhnSzZRPT0iLCJldGFnIjoiQ01lQmsvdWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzkyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzkyWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"fabaa6461d9068cd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key4\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiIvVWx4UWc9PSIsIm1kNUhhc2giOiJIMDZqeUYzWnNKRE9jd3lCNWdnK3p3PT0iLCJuYW1lIjoia2V5NCJ9Cg==\",\n          \"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"COC7kvuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyKenA9pcOt1eWQ0QsNtQn1fUx5C_XpZxHRi5LgfCPCAwtXjAPQC8elzL5g1m9LCjzw\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5NC8xNzczOTMyODgzNzc5MDQwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXk0P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc3OTA0MCZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5NCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc3OTA0MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJIMDZqeUYzWnNKRE9jd3lCNWdnK3p3PT0iLCJjcmMzMmMiOiIvVWx4UWc9PSIsImV0YWciOiJDT0M3a3Z1ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc4MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc4MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"4d8b8d47485b3b4d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key2\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJLTmRpbEE9PSIsIm1kNUhhc2giOiJaVUhuL1Vob0M1dGc3QVZldjZNY0FnPT0iLCJuYW1lIjoia2V5MiJ9Cg==\",\n          \"AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"COzik/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyo1TQJTlAT5WvolYd3DF8kGgT7iAOJNXlvsisaVS-roHYjjB-Mt1BiOtFSqUh1mfJx\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5Mi8xNzczOTMyODgzODAwNDI4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkyP2dlbmVyYXRpb249MTc3MzkzMjg4MzgwMDQyOCZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4MzgwMDQyOCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJaVUhuL1Vob0M1dGc3QVZldjZNY0FnPT0iLCJjcmMzMmMiOiJLTmRpbEE9PSIsImV0YWciOiJDT3ppay91ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjgwM1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy44MDNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjgwM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy44MDNaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"e3f4ba6109e6455e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key3\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiI4alpJWWc9PSIsIm1kNUhhc2giOiI3dEJQT3lLSW8wb21ZT21iTjNIdDd3PT0iLCJuYW1lIjoia2V5MyJ9Cg==\",\n          \"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CLaok/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw1dP57UMvMt48YXgt5VJ_wOD1JQgkloI95pTnUUpuxLyWf0A5VQ1UE2bhK84MbQm4l\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5My8xNzczOTMyODgzNzkyOTUwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkzP2dlbmVyYXRpb249MTc3MzkzMjg4Mzc5Mjk1MCZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc5Mjk1MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiI3dEJQT3lLSW8wb21ZT21iTjNIdDd3PT0iLCJjcmMzMmMiOiI4alpJWWc9PSIsImV0YWciOiJDTGFvay91ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5NloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTZaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5NloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTZaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"146bbb4836499276\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key18\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJ1L3ZYU1E9PSIsIm1kNUhhc2giOiJ3WnZJMU10T2dBTkdRRDBnelo0TlVnPT0iLCJuYW1lIjoia2V5MTgifQo=\",\n          \"EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CMa/kvuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz_IJIyBe_yVkfiQKnwfxTLgWQD_oBtdQkHlgahVvr3EOXbnAktLZJdXCu2q278KFNe\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5MTgvMTc3MzkzMjg4Mzc3OTUyNiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXkxOCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTE4P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc3OTUyNiZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5MTgiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODM3Nzk1MjYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjQwOTYiLCJtZDVIYXNoIjoid1p2STFNdE9nQU5HUUQwZ3paNE5VZz09IiwiY3JjMzJjIjoidS92WFNRPT0iLCJldGFnIjoiQ01hL2t2dWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODNaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzgzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43ODNaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDMuNzgzWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"bcd68f79aec322b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key7\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJsNFo0cVE9PSIsIm1kNUhhc2giOiJrYnVpVHA1SkV1Z2p3QWtnenRQb1hBPT0iLCJuYW1lIjoia2V5NyJ9Cg==\",\n          \"BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CPeOk/uerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw5mszVWYKuO0I1Mi3fjDWXcLxNlG4SRt9kG5NdQQAleVBnu8ycOkWIJc59xYPkpUKR\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5Ny8xNzczOTMyODgzNzg5Njg3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXk3P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc4OTY4NyZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5NyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc4OTY4NyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJrYnVpVHA1SkV1Z2p3QWtnenRQb1hBPT0iLCJjcmMzMmMiOiJsNFo0cVE9PSIsImV0YWciOiJDUGVPay91ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5M1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc5M1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43OTNaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"99d3ad85ee165a1c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=key8\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCJjcmMzMmMiOiJVNWtnSHc9PSIsIm1kNUhhc2giOiJxUFpQRTB1QUdCTktFNkxoRVFUQThRPT0iLCJuYW1lIjoia2V5OCJ9Cg==\",\n          \"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"746\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"CIaEkvuerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzoKojnnmOWyHBGW06KX8ouoMxjaCQAL6xqFrpwOO50wywmzKT0NoTu9pCehj0qkAem\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQva2V5OC8xNzczOTMyODgzNzcxOTEwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2tleTgiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9rZXk4P2dlbmVyYXRpb249MTc3MzkzMjg4Mzc3MTkxMCZhbHQ9bWVkaWEiLCJuYW1lIjoia2V5OCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4Mzc3MTkxMCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNDA5NiIsIm1kNUhhc2giOiJxUFpQRTB1QUdCTktFNkxoRVFUQThRPT0iLCJjcmMzMmMiOiJVNWtnSHc9PSIsImV0YWciOiJDSWFFa3Z1ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3NFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NzRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjAzLjc3NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowMy43NzRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"67adaf3240d4cd01\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key4\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883779040\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=/UlxQg==\",\n            \"md5=H06jyF3ZsJDOcwyB5gg+zw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyT2dNpwgVokyGk2eTB0B6IhzJjC4o7TJkhmVX4yDq-ohUDNXPHimi-TOdJ9vdim_Qa\"\n          ]\n        },\n        \"Body\": \"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA==\"\n      }\n    },\n    {\n      \"ID\": \"ccc1ed5f065ea883\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key19\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883794715\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=YRr9vw==\",\n            \"md5=2w9S4aRqKABHoeAhyiAJMA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyK2gGBWbv8WRa0haqndD4skdfdqLCKDYWuEuLN2-Om0Xh-sxornCC7731fxlMKP6QV\"\n          ]\n        },\n        \"Body\": \"ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw==\"\n      }\n    },\n    {\n      \"ID\": \"4f50909c204535a1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key6\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883769446\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=TWdSXw==\",\n            \"md5=lko2uDqoJrgEyYNnvcJ6vw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwUZE-suc_gOjygpKkuhOfX0cLrjFHT7qBeBdXS9qm7rvsq_cg7IJluduZNjXbff3FV\"\n          ]\n        },\n        \"Body\": \"BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg==\"\n      }\n    },\n    {\n      \"ID\": \"ae798d3f1248078f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key11\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883777966\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=OVYp9A==\",\n            \"md5=AbDmWR96f1VIFnW4JQ5/SA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxgxe_Css7uvwM6Pu8VAnDcNibil4lW3YSgpiebrC-yt56_u9JgCRSS9aYUHfeuJjQg\"\n          ]\n        },\n        \"Body\": \"CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw==\"\n      }\n    },\n    {\n      \"ID\": \"47afa7da0a3ffbc4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key5\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883787655\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=J6hbtA==\",\n            \"md5=YfRaKQkG0Wv1UeeMsD1f+Q==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx2G_uAsXtqUWlmYDsgtg8Hf_mHdkglXCHSOQxjfrxqHSUGOmhsALSIVvqubkKQPdKk\"\n          ]\n        },\n        \"Body\": \"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ==\"\n      }\n    },\n    {\n      \"ID\": \"51788c4b596987bf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key3\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883792950\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=8jZIYg==\",\n            \"md5=7tBPOyKIo0omYOmbN3Ht7w==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxeADFxZBBZpKbYQeFpPVXmgZ9LWnBI0GJidGUb3G7i_Qzai0cy47osPJvlGGVSNGHC\"\n          ]\n        },\n        \"Body\": \"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==\"\n      }\n    },\n    {\n      \"ID\": \"6a27773b873d8c9e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key15\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883777971\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=XOYZPw==\",\n            \"md5=qHqy3TOCPLWABZ/YTEeiAg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyrNWpxuj0fM6C5O3tXpj8csW0ra9q23ArQW8GAQsSSwV9ftGCZgWW7ldLYjpzEEHTU\"\n          ]\n        },\n        \"Body\": \"Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw==\"\n      }\n    },\n    {\n      \"ID\": \"0f900655dd6bdffe\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key9\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883787975\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=iXgK6Q==\",\n            \"md5=kfsiuKRZ73D7CzauKodAhg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwsVh_O4WqDVhJw-YIOr2nkMDmBruIS-oArsqI4aWY0QGZmOD8-ElHxams-KcyJ2M2w\"\n          ]\n        },\n        \"Body\": \"CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ==\"\n      }\n    },\n    {\n      \"ID\": \"4f66a165620f0461\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key7\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883789687\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=l4Z4qQ==\",\n            \"md5=kbuiTp5JEugjwAkgztPoXA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzfgKQwJolhjP_59FBLw0aCjBM9nN1XlhKdpm0kWFhyrEDywpSdEmlYeQtERiSZhWE6\"\n          ]\n        },\n        \"Body\": \"BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==\"\n      }\n    },\n    {\n      \"ID\": \"3a1a66904144a4b5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883769399\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=Qhhrfw==\",\n            \"md5=qo85ln3rRBpudISWOUWpYA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwly1fXgneaGMCR3C_mRTyIgrXUWuawymI2YU2PcTHUE9vgWu73BoQPW9561hHX_DUZ\"\n          ]\n        },\n        \"Body\": \"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==\"\n      }\n    },\n    {\n      \"ID\": \"18a4fd065af1d006\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key8\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883771910\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=U5kgHw==\",\n            \"md5=qPZPE0uAGBNKE6LhEQTA8Q==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxRwjiTDho48SWNjmoZ6JDfwLmGPpoI1FnDhF9OvMkMWzgNh4BZxnWjhk6hFoPbkHDQ\"\n          ]\n        },\n        \"Body\": \"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA==\"\n      }\n    },\n    {\n      \"ID\": \"614017dcf5835297\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key14\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883793983\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=hgczyQ==\",\n            \"md5=NlFDUFM0TpF1S+MXE1PxDg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwzMAoxgX_j_jxZKsZ4huA-9lbWoRSEuHAN9q3ExWVEK_MV2RAiNJ0WohJNRbAVTvzz\"\n          ]\n        },\n        \"Body\": \"Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg==\"\n      }\n    },\n    {\n      \"ID\": \"a0dbb857f4018ee9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key10\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883827991\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=47cDAg==\",\n            \"md5=AXKK1JVcZ791KxchIXYNNg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw436-o8shR6NfZ7j6m1pTppgxFRxO3P1GTQqGuYb9t6N_huOR3k0mo2-adsaNNg35y\"\n          ]\n        },\n        \"Body\": \"CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==\"\n      }\n    },\n    {\n      \"ID\": \"24b947eed6773756\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key0\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883758420\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mPlBiQ==\",\n            \"md5=Yg8LZ6kff3QVG8W+dFtxEA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyv3eHblyY6lbpidhp0ad1TX911b26o7vBbzCz5TkBWxz9k8l1JKD-Qh8NxcgHvR9DB\"\n          ]\n        },\n        \"Body\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\n      }\n    },\n    {\n      \"ID\": \"498ee12cd4bad229\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key16\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883812800\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=C9X0VA==\",\n            \"md5=65n9CjdrJkNQEaG4fFWMgQ==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwNB7fqWQyjtlutmyNN77OmNo-IZ0Dl2vKvt6Jq5oOajYV2817wjOjPTVlPkcvos51-\"\n          ]\n        },\n        \"Body\": \"EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA==\"\n      }\n    },\n    {\n      \"ID\": \"9aeacb80c7845331\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key17\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883809419\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=0TTeog==\",\n            \"md5=32eeXsj7ZyhCl0o20wPQ/w==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwMPoFAZVc9_rDSmML6jvhObrMM7kR08-okbNA5VKLgs_8Cpg5mE2CA4vPHcqUFj4HG\"\n          ]\n        },\n        \"Body\": \"EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ==\"\n      }\n    },\n    {\n      \"ID\": \"56281d40ac181422\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key2\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883800428\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=KNdilA==\",\n            \"md5=ZUHn/UhoC5tg7AVev6McAg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzQn20_AVeHcHG6UKtYUbh1tqML3jCGCxfKm2vO_82ZNEF7Tl9bV09vaBFtNENEjf7M\"\n          ]\n        },\n        \"Body\": \"AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg==\"\n      }\n    },\n    {\n      \"ID\": \"8858901ecf929041\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key13\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883768029\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=7Mg6Ig==\",\n            \"md5=SsTzFZ3m7R1NrIc42UKW+Q==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzHiWXaBTWOZWHYFKa6VSQSRbz1i471et3iDcn71EQrz-BjuhYAeEuk7gVBsvG-pRxa\"\n          ]\n        },\n        \"Body\": \"DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ==\"\n      }\n    },\n    {\n      \"ID\": \"f1cb23faa916a594\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key12\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883789819\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=NikQ1A==\",\n            \"md5=VkGQ+3LJseHAFopbb+BYvg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxdaulkGjd1OMFm5JZuJgIdNw1hxO2uf1RWKaDE2L7DGSMNSoH1ADqJjlixfGgQp1aw\"\n          ]\n        },\n        \"Body\": \"DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA==\"\n      }\n    },\n    {\n      \"ID\": \"3dccda366a829393\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key18\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:03 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932883779526\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=u/vXSQ==\",\n            \"md5=wZvI1MtOgANGQD0gzZ4NUg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyvEDybhiuiW6Dyl2sAZ6XLqIDEWlM12KE9ukKnrXUXlXwzBOR4zpAy6cHkweu-de6e\"\n          ]\n        },\n        \"Body\": \"EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg==\"\n      }\n    },\n    {\n      \"ID\": \"d6a2cc5e6670750b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key19?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxTZIDjaASrpGmsG1m6z5yEf32f4cB0dxQ65N1cRIZrmDDx2QpvrbCS0R1isXeGyLSz\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0542b8f4b446b5ac\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key18?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyyd6O2qItM7_6t8vyW8d6GfLpO1cFcnPZeDG7y_y3BC0bBKOAT0fNO3Kx5Lp7PPRl3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc0fd9bfce16afac\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key17?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwQpOf8DTYp4qjhLc6wPFuWjQgrA5Kz5dUa9wruBBVnqhDJhwYsKIbzVWKMD9_NPFO2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"72cfc478164e410e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key16?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw7vNSpXeXEBtIu2eK7C1HbB1AFDcOmD4HyNuF0ux018HWtw9kX9oaNn-yuK7OSO05f\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1c60ad7f54a134a6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key15?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwFDZpY7QRauNK7ZVmp7tF34FVroO9OMkTKTMWAWIMYkHpwK3DS0RAzvjUpCEWEUnFP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2ebb1b7fd19de497\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key14?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx1np-K0af9b-nLp2B8sO312kp83S1pOUhze58MY6HHba8KgGcue8CW4wAghTLHTL0P\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"60237f7dc7f9eaeb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key13?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwtDzD153UNCe43JntMcT86qVdjByD34Mlas-zz5ETpSgRIAYZBN1Hi3scGXZBytNsq\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"da1a8526944e55c0\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key12?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx_KcA10k3Ay7GXUJ8Fhm12fn7v-vyppgBwQDk6WUczuIscb06px4R4FygXnrXTK2MC\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6bbb34a92f500a56\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key11?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzrXqql6LUNRMnQj88uWoM-5azG-MyNgM79E1NXm_tE9hzplWkCAMWX4wJNlBGl2nFk\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5f370356f6a5dde7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key10?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:04 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy6eTZfLWJcCTjfPWN1ri2uWY3DweiES-FbFTuePTJnew9O-LwStaiOeM8D4h2n1Bj5\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fff57081013c8ce1\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key9?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxX-XzyZlSwkC8TOjQACHYsGT74jj9pGTPK4Qmr4XlduDZY0At0X52_W0kS8t8AreWr\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2d74d88abc903afc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key8?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw9jzdQS_Q05ned7coHOjz0POkyVUFY3q9eSlbigzLwtEwpgkjetIyxWcL0lrewLTgk\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b85dba38eee9824b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key7?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwIxDsEP5VnzYaEe5E7DRuKRAYI_7wAKtPnSWezbFq6GOMZg88l6HpYmMTeqyAUiYUw\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4f87c371c579e2ae\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key6?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwqfFuMshH6TZmVHNGKQSOoxx1MPtqKVIxViVrVQEsRr4bYAHuD3RE9zxXGqn4LGVfy\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"afc6f4eae605e1cd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key5?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzbfOalPYWb93XCjcRfzi2gRZZYMqL2tpa2iZowgc3uIjRg4c206gfpLTjHo6RZPzQw\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b1f8906ec96aa33f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key4?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4SEU1yxNky6VGJxQ0AgWxbioZRVvC2EqBupcepxb7N3_md8-CWYiBoadvNwxcLXMO\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"570445d41be10686\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key3?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxxfxpckQFCvbwH5JK08vFkfhir5roCkKeQruv_ljgQS-bZMtE-UXpm91pGEaazAIi_\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bdae596b0613d90b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key2?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz3Hc3pDRco3tz9jyGKQJNpUgS9VaIBjtzsWmnCY0jUgA1twqYLMVp_84RNEjphtFRM\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d354d182bc21a121\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key1?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzDSGNGlyfHCexLTEQZPf9dHoWqbwX1rU29PF0-CwkSVzvaX899jOf9NRvxqvt-REZo\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6ddde0d1dc0c165d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/key0?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwbzUhju2xtliEl7cZKEjK8eQd0pb3nZ69cwhZch82_JGqgSxK9j6sFBmoHXJ7yiju1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestCopy/NonExistentSourceFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghYLo0cawAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ad9a5ec97c69faab\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/does-not-exist/rewriteTo/b/go-cloud-blob-test-bucket/o/blob-for-copying-dest?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwEqY7tyaAykzYS3ERXto23NMvWBKJQXDrD130VImb9-uuBkq2clLyTu8O7v1FhYhIj\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9kb2VzLW5vdC1leGlzdCIsImVycm9ycyI6W3sibWVzc2FnZSI6Ik5vIHN1Y2ggb2JqZWN0OiBnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2RvZXMtbm90LWV4aXN0IiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoibm90Rm91bmQifV19fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestCopy/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghYNgZ+lgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a3e026f9ee99270c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-copying-src\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY2FjaGVDb250cm9sIjoibm8tY2FjaGUiLCJjb250ZW50RGlzcG9zaXRpb24iOiJpbmxpbmUiLCJjb250ZW50RW5jb2RpbmciOiJpZGVudGl0eSIsImNvbnRlbnRMYW5ndWFnZSI6ImVuIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiY3JjMzJjIjoiYVIycUx3PT0iLCJtZDVIYXNoIjoic1FxTnNXVGdkVUVGdDZtYjV5NC81UT09IiwibWV0YWRhdGEiOnsiZm9vIjoiYmFyIn0sIm5hbWUiOiJibG9iLWZvci1jb3B5aW5nLXNyYyJ9Cg==\",\n          \"SGVsbG8gV29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"927\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"CO7r0/2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw0DtlfAuFWlScPZBjfE1yY8yGwpAukSB49qDhf5CMYeSW25ZCdDMVK8xwkmpOEi2PH\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1zcmMvMTc3MzkzMjg4OTA0NDQ2MiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLXNyYyIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWNvcHlpbmctc3JjP2dlbmVyYXRpb249MTc3MzkzMjg4OTA0NDQ2MiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1zcmMiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODkwNDQ0NjIiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJzUXFOc1dUZ2RVRUZ0Nm1iNXk0LzVRPT0iLCJjb250ZW50RW5jb2RpbmciOiJpZGVudGl0eSIsImNvbnRlbnREaXNwb3NpdGlvbiI6ImlubGluZSIsImNvbnRlbnRMYW5ndWFnZSI6ImVuIiwiY2FjaGVDb250cm9sIjoibm8tY2FjaGUiLCJjcmMzMmMiOiJhUjJxTHc9PSIsImV0YWciOiJDTzdyMC8yZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjA1M1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4wNTNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjA1M1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4wNTNaIiwibWV0YWRhdGEiOnsiZm9vIjoiYmFyIn19\"\n      }\n    },\n    {\n      \"ID\": \"5c9933565ef261a4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-copying-src?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"927\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"CO7r0/2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxYgvlgtHLMrNTfe8eso3YgJO4VjOAZlHc0oEVypcFS7iq6tAzw8Qk5AXclytmvkQVH\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1zcmMvMTc3MzkzMjg4OTA0NDQ2MiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLXNyYyIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWNvcHlpbmctc3JjP2dlbmVyYXRpb249MTc3MzkzMjg4OTA0NDQ2MiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1zcmMiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODkwNDQ0NjIiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJzUXFOc1dUZ2RVRUZ0Nm1iNXk0LzVRPT0iLCJjb250ZW50RW5jb2RpbmciOiJpZGVudGl0eSIsImNvbnRlbnREaXNwb3NpdGlvbiI6ImlubGluZSIsImNvbnRlbnRMYW5ndWFnZSI6ImVuIiwiY2FjaGVDb250cm9sIjoibm8tY2FjaGUiLCJjcmMzMmMiOiJhUjJxTHc9PSIsImV0YWciOiJDTzdyMC8yZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjA1M1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4wNTNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjA1M1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4wNTNaIiwibWV0YWRhdGEiOnsiZm9vIjoiYmFyIn19\"\n      }\n    },\n    {\n      \"ID\": \"cbe9e3558f6d090a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-copying-dest-exists\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiaGlCZ2RBPT0iLCJtZDVIYXNoIjoib1BxYWZYSkExY1h1dlhDSmxEREZsdz09IiwibmFtZSI6ImJsb2ItZm9yLWNvcHlpbmctZGVzdC1leGlzdHMifQo=\",\n          \"Y2xvYmJlciBtZQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"841\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"CJ/a3v2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxpQkLwpZ1_od-oDRXdkbUJy6vL4UfcH2WpndCKDEvV1MFipOjoEWClzPDXWjkmeFQH\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1kZXN0LWV4aXN0cy8xNzczOTMyODg5MjIyNDMxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWNvcHlpbmctZGVzdC1leGlzdHMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLWRlc3QtZXhpc3RzP2dlbmVyYXRpb249MTc3MzkzMjg4OTIyMjQzMSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1kZXN0LWV4aXN0cyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4OTIyMjQzMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjEwIiwibWQ1SGFzaCI6Im9QcWFmWEpBMWNYdXZYQ0psRERGbHc9PSIsImNyYzMyYyI6ImhpQmdkQT09IiwiZXRhZyI6IkNKL2EzdjJlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuMjMwWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjIzMFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuMjMwWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjIzMFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"a2940c741c603947\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-copying-src/rewriteTo/b/go-cloud-blob-test-bucket/o/blob-for-copying-dest?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1034\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyRHMu8Nc0deHuTu9-9CyOUhUhGx5szLyrk0xYZ1MtSXatCrE79vf2IC0XsxTk9NPek\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiMTEiLCJvYmplY3RTaXplIjoiMTEiLCJkb25lIjp0cnVlLCJyZXNvdXJjZSI6eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1kZXN0LzE3NzM5MzI4ODkzMzA0MDIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItY29weWluZy1kZXN0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItY29weWluZy1kZXN0P2dlbmVyYXRpb249MTc3MzkzMjg4OTMzMDQwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1kZXN0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODg5MzMwNDAyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiMTEiLCJtZDVIYXNoIjoic1FxTnNXVGdkVUVGdDZtYjV5NC81UT09IiwiY29udGVudEVuY29kaW5nIjoiaWRlbnRpdHkiLCJjb250ZW50RGlzcG9zaXRpb24iOiJpbmxpbmUiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiIsImNhY2hlQ29udHJvbCI6Im5vLWNhY2hlIiwiY3JjMzJjIjoiYVIycUx3PT0iLCJldGFnIjoiQ09LbDVmMmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4zMzlaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuMzM5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4zMzlaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuMzM5WiIsIm1ldGFkYXRhIjp7ImZvbyI6ImJhciJ9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"056857218e757b00\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932889330402\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=aR2qLw==\",\n            \"md5=sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"X-Goog-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwfC3XsBTAipydowJMwAhpEUPOPSNweZOJFQKJLnoPiVSiqTo5nHgNxjQPTHQ8Gg1vk\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"d0cc4b261d9bd5bb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-copying-dest?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"931\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"COKl5f2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz4mR6OeMWzS5QtxXxCFOf_Q76VBey1aSU40k1106QNIldrTSG_3V7pC8TXNhT0jGpJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1kZXN0LzE3NzM5MzI4ODkzMzA0MDIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItY29weWluZy1kZXN0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItY29weWluZy1kZXN0P2dlbmVyYXRpb249MTc3MzkzMjg4OTMzMDQwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1kZXN0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODg5MzMwNDAyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiMTEiLCJtZDVIYXNoIjoic1FxTnNXVGdkVUVGdDZtYjV5NC81UT09IiwiY29udGVudEVuY29kaW5nIjoiaWRlbnRpdHkiLCJjb250ZW50RGlzcG9zaXRpb24iOiJpbmxpbmUiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiIsImNhY2hlQ29udHJvbCI6Im5vLWNhY2hlIiwiY3JjMzJjIjoiYVIycUx3PT0iLCJldGFnIjoiQ09LbDVmMmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4zMzlaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuMzM5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOS4zMzlaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuMzM5WiIsIm1ldGFkYXRhIjp7ImZvbyI6ImJhciJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"ad1a978bffbf728a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-copying-src/rewriteTo/b/go-cloud-blob-test-bucket/o/blob-for-copying-dest-exists?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1062\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzlBvOyKQvTWWKZznvMLbLpjmTttJMk5pT_BVpPgwcOkVdoa9xBoyOX2YgfSFlJ9fdy\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiMTEiLCJvYmplY3RTaXplIjoiMTEiLCJkb25lIjp0cnVlLCJyZXNvdXJjZSI6eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1kZXN0LWV4aXN0cy8xNzczOTMyODg5NTk0ODk1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWNvcHlpbmctZGVzdC1leGlzdHMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLWRlc3QtZXhpc3RzP2dlbmVyYXRpb249MTc3MzkzMjg4OTU5NDg5NSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1kZXN0LWV4aXN0cyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4OTU5NDg5NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6InNRcU5zV1RnZFVFRnQ2bWI1eTQvNVE9PSIsImNvbnRlbnRFbmNvZGluZyI6ImlkZW50aXR5IiwiY29udGVudERpc3Bvc2l0aW9uIjoiaW5saW5lIiwiY29udGVudExhbmd1YWdlIjoiZW4iLCJjYWNoZUNvbnRyb2wiOiJuby1jYWNoZSIsImNyYzMyYyI6ImFSMnFMdz09IiwiZXRhZyI6IkNJKzQ5ZjJlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuNjA0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjYwNFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuNjA0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjYwNFoiLCJtZXRhZGF0YSI6eyJmb28iOiJiYXIifX19\"\n      }\n    },\n    {\n      \"ID\": \"4154eea4e419eaf0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932889594895\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=aR2qLw==\",\n            \"md5=sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"X-Goog-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwKsLdj-rhTSTYJgtF_KjbQpASCj1wJGoh_MpF8hNVNcYYIWdDauwsAJKhOVSfAy8fm\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"3221bf749fc96ed2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-copying-dest-exists?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"959\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Etag\": [\n            \"CI+49f2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwk4NQ7aV3Z1DYf_U-tlvvYyeylgqCp9XAIggTcmMRHcks9dkoQRhXdl48gc9QwGE0c\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItY29weWluZy1kZXN0LWV4aXN0cy8xNzczOTMyODg5NTk0ODk1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWNvcHlpbmctZGVzdC1leGlzdHMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLWRlc3QtZXhpc3RzP2dlbmVyYXRpb249MTc3MzkzMjg4OTU5NDg5NSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItY29weWluZy1kZXN0LWV4aXN0cyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4OTU5NDg5NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6InNRcU5zV1RnZFVFRnQ2bWI1eTQvNVE9PSIsImNvbnRlbnRFbmNvZGluZyI6ImlkZW50aXR5IiwiY29udGVudERpc3Bvc2l0aW9uIjoiaW5saW5lIiwiY29udGVudExhbmd1YWdlIjoiZW4iLCJjYWNoZUNvbnRyb2wiOiJuby1jYWNoZSIsImNyYzMyYyI6ImFSMnFMdz09IiwiZXRhZyI6IkNJKzQ5ZjJlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuNjA0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjYwNFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDkuNjA0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA5LjYwNFoiLCJtZXRhZGF0YSI6eyJmb28iOiJiYXIifX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestDelete/NonExistentFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghZLfCE1AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b2942e7ed04903eb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/does-not-exist?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:09 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwCNNghd2XlchQObM7QzKDAcpaB1C6DlhnlLIl3euF-kxZiLTwMqTEircU4aKGllBZ5\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9kb2VzLW5vdC1leGlzdCIsImVycm9ycyI6W3sibWVzc2FnZSI6Ik5vIHN1Y2ggb2JqZWN0OiBnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2RvZXMtbm90LWV4aXN0IiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoibm90Rm91bmQifV19fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestDelete/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghZNal7twAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"221b690e596b560c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-deleting\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiY3JVZmVBPT0iLCJtZDVIYXNoIjoiUGlXV0NubmJ4cHRuVE5Uc1o2Y3NZZz09IiwibmFtZSI6ImJsb2ItZm9yLWRlbGV0aW5nIn0K\",\n          \"SGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"797\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:10 GMT\"\n          ],\n          \"Etag\": [\n            \"CNS3kP6erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzh3PJkgZ_QxriGnidUHimh3IbPlsai2EFV6kr_DaoKK0P5ry0phoI40zpCnQaVt9f6\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsZXRpbmcvMTc3MzkzMjg5MDAzNzIwNCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxldGluZyIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGV0aW5nP2dlbmVyYXRpb249MTc3MzkzMjg5MDAzNzIwNCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsZXRpbmciLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4OTAwMzcyMDQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJQaVdXQ25uYnhwdG5UTlRzWjZjc1lnPT0iLCJjcmMzMmMiOiJjclVmZUE9PSIsImV0YWciOiJDTlMza1A2ZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjEwLjAzOVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoxMC4wMzlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjEwLjAzOVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODoxMC4wMzlaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"f16ac9d12738d583\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-deleting?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:10 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzYLM3k66fVrTzln9XV3hnga9V0sN37n-Y9CHO6PvIk8DfhEBQl3In6bWdoet3gHbF4\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"66ed32fd1ce5ad04\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-deleting\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"205\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:10 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwWJdsbCIvHfuFzCiTxveX4967B88S0LMUcqRKw-oyEy29f9SrZGMDkEqOIPm0NNeHF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxldGluZzwvRGV0YWlscz48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"78fab5e939924c8b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-deleting?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"217\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:10 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyve9mkdNZadWUzhvRyhES7F5VqS2Ndc71KTgDvZxkEwx7wUE32p5vpI7MvZSN0m9oH\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxldGluZyIsImVycm9ycyI6W3sibWVzc2FnZSI6Ik5vIHN1Y2ggb2JqZWN0OiBnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGV0aW5nIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoibm90Rm91bmQifV19fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestDirsWithCharactersBeforeDelimiter.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghJH31MvQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"65b7ffc9099fb1ca\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5686\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw_MMZJxPXVWv1u5g7E2G-zREknBu9EJahWETD7ZdOQJ27hwctWO1KJIk_cy51SudMS\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kLzE2NDQzNjc0MDYzMjA5OTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkP2dlbmVyYXRpb249MTY0NDM2NzQwNjMyMDk5NiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTY0NDM2NzQwNjMyMDk5NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ09TYWlmbXg4ZlVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidGltZUZpbmFsaXplZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjEvdGVzdEZpbGUxZGlyMS8xNjQ0MzY3NDA2MDY0MTE1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZGlyMSUyRnRlc3RGaWxlMWRpcjEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRmRpcjElMkZ0ZXN0RmlsZTFkaXIxP2dlbmVyYXRpb249MTY0NDM2NzQwNjA2NDExNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS90ZXN0RmlsZTFkaXIxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA2MDY0MTE1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUFBEK2ZpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjA2NVoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4wNjVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjA2NVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4wNjVaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi90ZXN0RmlsZTFkaXIyLzE2NDQzNjc0MDYxNDU5MTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkaXIyJTJGdGVzdEZpbGUxZGlyMiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZGlyMiUyRnRlc3RGaWxlMWRpcjI/Z2VuZXJhdGlvbj0xNjQ0MzY3NDA2MTQ1OTE4JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyL3Rlc3RGaWxlMWRpcjIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYxNDU5MTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQN0Mvdml4OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMTQ3WiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjE0N1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMTQ3WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjE0N1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS90Li8xNjQ0MzY3NDA1OTcxMzMyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdC0lMkZ0LiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdC0lMkZ0Lj9nZW5lcmF0aW9uPTE2NDQzNjc0MDU5NzEzMzImYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtL3QuIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1OTcxMzMyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSVR2OC9peDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1Ljk3NFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS45NzRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1Ljk3NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS45NzRaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC90L3QvMTY0NDM2NzQwNTg1NjU2MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnQlMkZ0JTJGdCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdCUyRnQlMkZ0P2dlbmVyYXRpb249MTY0NDM2NzQwNTg1NjU2MSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC90L3QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDU4NTY1NjEiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNMSHU3UGl4OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjUuODU4WiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1Ljg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjUuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1Ljg1OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d8abb8ca7ff1fd80\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=10\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2086\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyaOERn6JbTN-oxEarMCArtNif-ia0QAXDdiyVxIDGeMBT3MrS8p_Fv-F8hJtUC_CSd\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iLCJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"84ee6c20eb281cfa\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=9\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2086\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyfM6L3OgZilx1KSN8jg0qxUK3K59-XseAhWh5vrLgR3SS63nswT_obQA0fb7fViIE3\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iLCJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"b01b4571eadccfbc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=8\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2086\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy63yljuEbCQtRDUN66viM1GoXbUSfvhUhOCL0m_-XEhGqb7Q-r-qwxZNorAJvSdcx5\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iLCJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4352dcd168745b05\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=7\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2086\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz0JND7aVfRiX49xvVivwqcbxC3YXlR1qibqK6ZaNbv5C0mCs0glPYsDu4dRk7Dyts_\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iLCJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3c616a07c14b6e2c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=6\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2086\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxOZFaZO7n1-EZksCYJsMMJLfS93NSsQcyp99s1sTiEUGLMxoYAc94PvOUJSsY_q_zt\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iLCJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3522412fd07f97c1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=5\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1232\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwX1Igm-YUFbIBWKPPLR6L2K9x6y4XyEXxkPIVYbZKcYMtz743jGUqebiRiBEIHDuzm\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpeGliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5MEx3PT0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvIiwiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vIiwiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC8iXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kLzE2NDQzNjc0MDYzMjA5OTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkP2dlbmVyYXRpb249MTY0NDM2NzQwNjMyMDk5NiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTY0NDM2NzQwNjMyMDk5NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ09TYWlmbXg4ZlVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidGltZUZpbmFsaXplZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"3fdf3fbcee625810\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=5\\u0026pageToken=CixibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90Lw%3D%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"973\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwHAd1jbxApC_Ly5Gq8zFh4qAdyUYi0KLPxIKY2svGzliEQRAT-Y6fZGaZ5i7gb1bvY\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0343d9e2450dac5b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=4\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1185\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzbvrdN2q1-5HGsiW3KTFypoVa77rDFrTvhc_KAkjkXtG68FU3tr-txYcOz5BpHDI4y\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpMWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5MExTOD0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvIiwiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifV19\"\n      }\n    },\n    {\n      \"ID\": \"bfa05eec1960e42c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=4\\u0026pageToken=Ci1ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS8%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1033\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxQGLjYg7zSxhAtAhk5HsXOGfhJ3H0jTrAQYJI4fKc1zzc4Wh2thDdren8N2400wvE3\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC8iXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"5595c2bd06756dd9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=3\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1141\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxpbwdLFzS9iRRoIHgB5lYOrPP70M76HLU88HTjID8cypW60XMy9VqX9p84SeLpqJR7\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpOWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5a2FYSXlMdz09IiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iLCJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyJdLCJpdGVtcyI6W3sia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QvMTY0NDM2NzQwNjMyMDk5NiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRmQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRmQ/Z2VuZXJhdGlvbj0xNjQ0MzY3NDA2MzIwOTk2JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA2MzIwOTk2IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT1NhaWZteDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3662ea3f97c57126\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=3\\u0026pageToken=Ci9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLw%3D%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1081\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxIKpATyg41Md2aWgWdoxUoa5ARX9Bll8OF54TTCqFQrJJb8fQhr9KuhaBPDsL1CS0t\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vIiwiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC8iXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"380d1be881683de9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1091\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxKMxClldqlbJex7rYS-zbbyoMP16vSs8apYXcfGfb_o6gYLEfflZ8A0Urp8tvPlERp\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpOWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5a2FYSXhMdz09IiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kLzE2NDQzNjc0MDYzMjA5OTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIlMkZkP2dlbmVyYXRpb249MTY0NDM2NzQwNjMyMDk5NiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTY0NDM2NzQwNjMyMDk5NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ09TYWlmbXg4ZlVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNi4zMjNaIiwidGltZUZpbmFsaXplZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"a492b49c962633db\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=Ci9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLw%3D%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"220\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwhLDlkrYdli_gnmaU_YzXovvz-86tKPlv-PSaOzugwHvF27G0SjzfygCWO44bDc3ar\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpMWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5MExTOD0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLyIsImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLyJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"e6d9c684a5a585ef\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=Ci1ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS8%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1033\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz4Kor7U1N-1lfFi66babo6VzubpnCK4N7QRcqHcJ0bho8jideWTz-l0PaORVpHJbli\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC8iXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0f64afe86273a291\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1020\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwEGCUZ2Td22jTgVtCbKn0aJ21GGcHia0oz51o97n9Z_cjqQb4xYHpxfk8K1saydhlP\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpdGliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5ayIsIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZC8xNjQ0MzY3NDA2MzIwOTk2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGZD9nZW5lcmF0aW9uPTE2NDQzNjc0MDYzMjA5OTYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE2NDQzNjc0MDYzMjA5OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU2FpZm14OGZVQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInVwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjItMDItMDlUMDA6NDM6MjYuMzIzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI2LjMyM1oifV19\"\n      }\n    },\n    {\n      \"ID\": \"e4f5b8e9158d5917\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=CitibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9k\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:54 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxcdF6ZGWdi8Evlbq5qv5O6F4UvPXHNnSR_XAI8rfXcj8F1xIbEqhpVHzWXZgPKwbsj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpOWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5a2FYSXhMdz09IiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS8iXX0=\"\n      }\n    },\n    {\n      \"ID\": \"a2505c5f0e0d8bce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Ci9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLw%3D%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzDUMkFwO_v7EJBUKZNBwA2cbo861GSJ6zjjsHn-BHpqq3UCumt-UyhqAAj3k5PLobd\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpOWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5a2FYSXlMdz09IiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi8iXX0=\"\n      }\n    },\n    {\n      \"ID\": \"7d12200e1586c6e3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Ci9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLw%3D%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwFeBYKbfc4Vz17nRq116osyTaoMFdsh0Gi6er0e4IAnN7MNxdMeYq186fitVG8X7VK\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpMWliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5MExTOD0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS8iXX0=\"\n      }\n    },\n    {\n      \"ID\": \"6d1f1a9ddbd65de3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Ci1ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS8%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwb-ggm-0c8fgQYd8TKAPMdJIBk1TXO6EJxSYkwX3MGUNEZsZ0y_OYdHuokwORG0ui9\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNpeGliRzlpTFdadmNpMWthWEp6TFhkcGRHZ3RZMmhoY25NdFltVm1iM0psTFdSbGJHbHRhWFJsY2k5MEx3PT0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LyJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0200f230d5b4af30\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=CixibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90Lw%3D%3D\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"973\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzkJlyiCktfN9LipsnMMdYEebP65HlE0B_C5HXyyEfPjJuHnct0d0Zm3_vpzOVtOpaZ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTEvMTY0NDM2NzQwNTcxOTEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlciUyRnRlc3RGaWxlMSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyJTJGdGVzdEZpbGUxP2dlbmVyYXRpb249MTY0NDM2NzQwNTcxOTEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNjQ0MzY3NDA1NzE5MTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTis4NVBpeDhmVUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ1cGRhdGVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDIyLTAyLTA5VDAwOjQzOjI1LjcyMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyMi0wMi0wOVQwMDo0MzoyNS43MjBaIn1dfQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestIfNotExist.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghoJE6RkwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a5aa7cddac104cf6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026ifGenerationMatch=0\\u0026name=blob-for-if-not-exist\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJuYW1lIjoiYmxvYi1mb3ItaWYtbm90LWV4aXN0In0K\",\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:24 GMT\"\n          ],\n          \"Etag\": [\n            \"CP7xkYWfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx97k6LHbzg_i9o9VZD_D3Uxy4WLj8vDy2-4BiXz5k2pJegcGqj9ZuVc4uIxTxN4Cs1\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItaWYtbm90LWV4aXN0LzE3NzM5MzI5MDQ3NDExMTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItaWYtbm90LWV4aXN0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItaWYtbm90LWV4aXN0P2dlbmVyYXRpb249MTc3MzkzMjkwNDc0MTExOCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItaWYtbm90LWV4aXN0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyOTA0NzQxMTE4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiMTEiLCJtZDVIYXNoIjoiRzNWVFB0V29hZjl2T3VBemJRd3pJQT09IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJldGFnIjoiQ1A3eGtZV2ZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNC43NDNaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjQuNzQzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNC43NDNaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjQuNzQzWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"a044834327ee2a22\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026ifGenerationMatch=0\\u0026name=blob-for-if-not-exist\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJuYW1lIjoiYmxvYi1mb3ItaWYtbm90LWV4aXN0In0K\",\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 412,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"276\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:24 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyao5oOu_reBnkH2h5UBrL3YOvM26VHjUdWdeFr5fw4rZyU-ZiLT6XZkjh4xToeTAtU\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MTIsIm1lc3NhZ2UiOiJBdCBsZWFzdCBvbmUgb2YgdGhlIHByZS1jb25kaXRpb25zIHlvdSBzcGVjaWZpZWQgZGlkIG5vdCBob2xkLiIsImVycm9ycyI6W3sibWVzc2FnZSI6IkF0IGxlYXN0IG9uZSBvZiB0aGUgcHJlLWNvbmRpdGlvbnMgeW91IHNwZWNpZmllZCBkaWQgbm90IGhvbGQuIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoiY29uZGl0aW9uTm90TWV0IiwibG9jYXRpb25UeXBlIjoiaGVhZGVyIiwibG9jYXRpb24iOiJJZi1NYXRjaCJ9XX19\"\n      }\n    },\n    {\n      \"ID\": \"a19491cc167e3e4e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-if-not-exist?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:24 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxYbhnupAmGzkEgPlbSalkNO-i27eOVqBiL-4a7fgiLRxRHHn1dEEA2lNdZYdgz8lzq\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxhDFoUVAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"380a1e4afa07cb8e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZiJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1052\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Etag\": [\n            \"CNPS9OmirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxXw7sqgtvQuG77wtx-2CV1CQu_j4OdF7oNwGMGe3vfDwWC3fNo1IzVOXJdc1DSi5zt\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c1x1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRfXzB4YV9fXHUwMDBiXGZfXzB4ZF9fXHUwMDBlXHUwMDBmLzE3NzM5MzM5MjEzODA2OTEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGP2dlbmVyYXRpb249MTc3MzkzMzkyMTM4MDY5MSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c1x1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRfXzB4YV9fXHUwMDBiXGZfXzB4ZF9fXHUwMDBlXHUwMDBmIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIxMzgwNjkxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTlBTOU9taXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIxLjM4OVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMS4zODlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIxLjM4OVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMS4zODlaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"78769a1d068cc77b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933921380691\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzfGaYPDEUmLDyZXxsC0OpdfDOdJ_Pq30QZ_N72bpo9oSVzkniEp6LiDOId4YP1-Afk\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b29c00b6fb2b413a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1052\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Etag\": [\n            \"CNPS9OmirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzoheB_nH7CdtCEoghSTz9fearML-TRmhePK1Q1FDyVn45ObybGFJ6GWVfZXLm0TPNF\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c1x1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRfXzB4YV9fXHUwMDBiXGZfXzB4ZF9fXHUwMDBlXHUwMDBmLzE3NzM5MzM5MjEzODA2OTEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGP2dlbmVyYXRpb249MTc3MzkzMzkyMTM4MDY5MSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c1x1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRfXzB4YV9fXHUwMDBiXGZfXzB4ZF9fXHUwMDBlXHUwMDBmIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIxMzgwNjkxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTlBTOU9taXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIxLjM4OVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMS4zODlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIxLjM4OVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMS4zODlaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"914acd3cb142f60d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933921380691\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyK3uSsy7o_ROBm1PWj2TBocGf-hYMtvkLVc76T4IQI-e8cY4w1ih7LaZL5lxC3Hxho\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"40aeb0d19bce04ad\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1173\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwuAWRuQmS8Bu2xdW6TfFrl7fiw0eC0kHkZg8q-xyyuN1MGx0pk2Eh9wLYxVEEVDRij\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZi1jb3B5LzE3NzM5MzM5MjE3MTY1OTIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGLWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTAwJTAxJTAyJTAzJTA0JTA1JTA2JTA3JTA4JTA5X18weGFfXyUwQiUwQ19fMHhkX18lMEUlMEYtY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MjE3MTY1OTImYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZi1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIxNzE2NTkyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUENTaWVxaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIxLjcxOVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMS43MTlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIxLjcxOVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMS43MTlaIn19\"\n      }\n    },\n    {\n      \"ID\": \"8821ebca853c36f7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933921716592\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz-1qcYGPGzrc-oAKnHGXnopfMAdv26LFj5ACPQax8ZqpKwZfCbnl_3uuLr0VOZlBy9\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"456ae5af37182460\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz184c8Z_Mja6DNPBxoP-Iw3LN307UPTbwB7bXQB_1Uv8ndE1HBE71gJ8cyYIFWqEvz\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"737f5fd2e15f8c4a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%00%01%02%03%04%05%06%07%08%09__0xa__%0B%0C__0xd__%0E%0F?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzyOxl3xPlc16Ims8Dk5UWJLyt4fWNmGOha3Q1GVR4Hs2edwWKv7dSHmpIxyuieGsEZ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxbBKKKagAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4eb0c87ccb78cb1d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1056\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Etag\": [\n            \"CPvm/eairJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyxbLHG3FhmsFCNViL-I19VXiWInKgzrHoBjaL5M2Tl5R0ExVpv9FJ4iVZWo1djyqkj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c1x1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZi8xNzczOTMzOTE1MjM5MjkxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTclMTglMTklMUElMUIlMUMlMUQlMUUlMUYiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTEwJTExJTEyJTEzJTE0JTE1JTE2JTE3JTE4JTE5JTFBJTFCJTFDJTFEJTFFJTFGP2dlbmVyYXRpb249MTc3MzkzMzkxNTIzOTI5MSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c1x1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxNTIzOTI5MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1B2bS9lYWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNS4yNDJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTUuMjQyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNS4yNDJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTUuMjQyWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"650ffcd631e69635\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933915239291\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwh0cYb8IfGn3zNgCRiAWPcWF5J_GamIAzRAeqxRq_upSZHRw1EOnGfobntxrQ6HkDb\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"31ba3af5309709cc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1056\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Etag\": [\n            \"CPvm/eairJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz5lZGNgqJUqIOdPe8JjNJyXJjmZbZX3DEGwR_xNBWl1rQCb6zPX1xgr3xMfeBn986J\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c1x1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZi8xNzczOTMzOTE1MjM5MjkxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTclMTglMTklMUElMUIlMUMlMUQlMUUlMUYiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTEwJTExJTEyJTEzJTE0JTE1JTE2JTE3JTE4JTE5JTFBJTFCJTFDJTFEJTFFJTFGP2dlbmVyYXRpb249MTc3MzkzMzkxNTIzOTI5MSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c1x1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxNTIzOTI5MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1B2bS9lYWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNS4yNDJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTUuMjQyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNS4yNDJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTUuMjQyWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"d4e7c9b1831f614a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933915239291\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw0RQ5nOgoh7mpS5OIJkHm6GnntNgvaBmSAM5VADL4wfRietJe4gGZwxtZvyfdZKuq_\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"85ca2e7dbb8c86c3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1177\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz4RsMG19MbXtOwDhSbKVKn22wl8cEGC7IAe99yPU_rEjeoH9p8l16xXsUc7zyUb-kG\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYtY29weS8xNzczOTMzOTE1NTcwMjUwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTclMTglMTklMUElMUIlMUMlMUQlMUUlMUYtY29weSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTclMTglMTklMUElMUIlMUMlMUQlMUUlMUYtY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MTU1NzAyNTAmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYtY29weSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxNTU3MDI1MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ01xQWt1ZWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNS41NzJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTUuNTcyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNS41NzJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTUuNTcyWiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"2770006631fe2b2d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933915570250\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWywTlDI2k8cFPME3VEWpxZzJRWWeiJSJwAiuYQJUwJ6gkmAvIHDCD9eVIELAPm5D298\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5b0d2939ce402a7b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwuPslEiVe978VwPLyJNrL9DhqYd4KNi_xOGzjmYypG8_WnbEIafyfTImq5ivXdsrYM\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"07fec27d723e0e9a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzHcGPjg5_6lYeRUpFb-lbZ-dZZxLQRHgAetqA9spYNeVN-r6Py0Kbkh2Ft49_FezKw\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxhOVwHqgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a3955f0328f3fdbe\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXMgIVwiIyQlXHUwMDI2JygpKissLS4vIn0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"858\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"CPC1oeqirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzdxxjqzQUw58UgSuyc9Dr7fwTj7saStFClqNxMCiNM048KTJ-czpzijU9V4tiKtVeK\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cyAhXCIjJCUmJygpKissLS4vLzE3NzM5MzM5MjIxMTQyODgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUyMCElMjIlMjMkJTI1JicoKSolMkIsLS4lMkYiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTIwISUyMiUyMyQlMjUmJygpKiUyQiwtLiUyRj9nZW5lcmF0aW9uPTE3NzM5MzM5MjIxMTQyODgmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXMgIVwiIyQlJicoKSorLC0uLyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkyMjExNDI4OCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BDMW9lcWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi4xMTdaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MjIuMTE3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi4xMTdaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MjIuMTE3WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"3e0b87e21175e7f4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933922114288\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyHmilA2xGkaC5FQafBCYFNXnZo0gaP8EaM0_olH0EEy7KtQi7wNN1t49Bcul7nwWoZ\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9c7a8ee72b57df66\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"858\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"CPC1oeqirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzfq7azcHUL_QQeISgEiM7AT17-YxeszI3l0PCLvEyuXNi3e-xQGjCJSdTcO9mimycb\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cyAhXCIjJCUmJygpKissLS4vLzE3NzM5MzM5MjIxMTQyODgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUyMCElMjIlMjMkJTI1JicoKSolMkIsLS4lMkYiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTIwISUyMiUyMyQlMjUmJygpKiUyQiwtLiUyRj9nZW5lcmF0aW9uPTE3NzM5MzM5MjIxMTQyODgmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXMgIVwiIyQlJicoKSorLC0uLyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkyMjExNDI4OCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BDMW9lcWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi4xMTdaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MjIuMTE3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi4xMTdaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MjIuMTE3WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"f43290b3b91e86ca\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%20%21%22%23$%25\\u0026%27%28%29%2A+,-./?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933922114288\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx4tuKqls4MQZJiu03MrH_kIFlLlG3eNa86OmVCRGJMROsZWCSUMk2pkSzQHzxyNpod\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"3727f745bc1cd667\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"979\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyrZs9B2o6KGqjs7We_AbrFGcq-wCPRstny4z1_zdZWOqrmMjVb9uDKcrj3Dt1VtbH0\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXMgIVwiIyQlJicoKSorLC0uLy1jb3B5LzE3NzM5MzM5MjI0Njk1MTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyUyMCElMjIlMjMkJTI1JicoKSolMkIsLS4lMkYtY29weSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlMjAhJTIyJTIzJCUyNSYnKCkqJTJCLC0uJTJGLWNvcHk/Z2VuZXJhdGlvbj0xNzczOTMzOTIyNDY5NTE4JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzICFcIiMkJSYnKCkqKywtLi8tY29weSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkyMjQ2OTUxOCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0k2TnQrcWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi40NzFaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MjIuNDcxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi40NzFaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MjIuNDcxWiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"855e6b3a96f1ccc4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933922469518\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw-Zyl1jgfTwxUn7wRrQiMkuP5PUtVat1u0N5K4VPRjieoW37xqP4LisiyffdvbU7dq\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"915fb3a0ffdaef1b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzax0YBE8V-EUiKNngAVkxNVGS3TzwYGnjXmhE1FiHnh83_GENDyA1BcNXOoyUwBpVo\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fb78d40611baa18b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxNg4qqQg0HZ2UTKhS15TcUMbyoTIl5pkaW8nOpvLFZdLplcMVjIUPRln8Fqb9RuAj0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-4.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxiLbOM6gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5998d7ed2d222694\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%3A%3B%3C%3D%3E%3F\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXM6O1x1MDAzYz1cdTAwM2U/In0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"824\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"COCX0eqirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy_UhGs1GJ0BXlkQdatCAWMQsJD3Un5CWO-9JjTWe2TvWbHyM68GvacpJR71_-AoYZB\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5czo7XHUwMDNjPVx1MDAzZT8vMTc3MzkzMzkyMjg5Njg2NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzOjslM0M9JTNFJTNGIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czo7JTNDPSUzRSUzRj9nZW5lcmF0aW9uPTE3NzM5MzM5MjI4OTY4NjQmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXM6O1x1MDAzYz1cdTAwM2U/IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIyODk2ODY0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT0NYMGVxaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIyLjkwMFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi45MDBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIyLjkwMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi45MDBaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"a8f32e49343e5123\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys:%3B%3C=%3E%3F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933922896864\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwHLbvdWV09YW-CmMnwl9ZU9xGNugiRHWulUjBMwOqTZdvF_JDVwNHaG0taUm_LMyBL\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"59e875f74135774a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%3A%3B%3C%3D%3E%3F?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"824\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Etag\": [\n            \"COCX0eqirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzHB__7YWHZHwxN2GqFZmpuzqbHaT5PGtQF62aVjYhS0l816NuHso9Vm5z8u0yXrPjy\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5czo7XHUwMDNjPVx1MDAzZT8vMTc3MzkzMzkyMjg5Njg2NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzOjslM0M9JTNFJTNGIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czo7JTNDPSUzRSUzRj9nZW5lcmF0aW9uPTE3NzM5MzM5MjI4OTY4NjQmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXM6O1x1MDAzYz1cdTAwM2U/IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIyODk2ODY0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT0NYMGVxaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIyLjkwMFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi45MDBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIyLjkwMFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMi45MDBaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"fc4c368ba92ac8ad\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys:;%3C=%3E%3F?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:22 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933922896864\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwx96TOPv16-fqOhzr1B-yPAxaPKDJVhgHjMfvWXkWtvlgTDuZgcPkRjIsJs6rupXdT\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6c8bcb1066aedf06\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%3A%3B%3C%3D%3E%3F/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%3A%3B%3C%3D%3E%3F-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"945\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4L5y8Gat95caNjn5YN_DKzV-tYZswIdL8lQ81BPYjjvr4GJD-AD9s5IVvxp8poYIM\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXM6O1x1MDAzYz1cdTAwM2U/LWNvcHkvMTc3MzkzMzkyMzI1MDgyMyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzOjslM0M9JTNFJTNGLWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzOjslM0M9JTNFJTNGLWNvcHk/Z2VuZXJhdGlvbj0xNzczOTMzOTIzMjUwODIzJmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzOjtcdTAwM2M9XHUwMDNlPy1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIzMjUwODIzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSWZsNXVxaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIzLjI1MloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMy4yNTJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIzLjI1MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMy4yNTJaIn19\"\n      }\n    },\n    {\n      \"ID\": \"7f535ec0679744dc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys:%3B%3C=%3E%3F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933923250823\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy_XO7_aqYnR6ONprDrp3X-AxBjzA5SzUYjt4lV4HWDLzbniHciEJIIFj0nXYpAmbq8\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"0afdc1dfa486b130\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%3A%3B%3C%3D%3E%3F-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyUx6YV-_W22TjUuzkCrmSH3fLrbijr_uu05VQGJAosL3BfrzPJuakA5Ik7kTL1zWzn\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8f8a3560caa5bd73\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%3A%3B%3C%3D%3E%3F?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:23 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxwBWYG-n--tyosoa6w3l0P4XVTEoRxMUz8rtIQc2qVW7gW0iewh7k-RJlZRlLbhDfP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxbNBYNbgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e0adb4a8d7625b4d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%40\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNAIn0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"772\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"CMuWt+eirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzb-uj_Hd_r9rXkMFQMacDNGq5D1L-qQDCaiXYZZomWMVngmxidPjDId5g4NSWJX9EP\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c0AvMTc3MzkzMzkxNjE3OTI3NSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzQCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNAP2dlbmVyYXRpb249MTc3MzkzMzkxNjE3OTI3NSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c0AiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTYxNzkyNzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNdVd0K2VpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTYuMTgxWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2LjE4MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTYuMTgxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2LjE4MVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"e8dcc5dff9e4a8b8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys@\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933916179275\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw1thUS7OT66XaMBb-WtBysFUJu1KviUHrP9vzio_iIDgrg8_LziIFAcjKHxBkFL4cA\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d2d65383d32e5428\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%40?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"772\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"CMuWt+eirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxPhDdn7kSX5hFoGe9ACK5Lo6aRFRG99YjqrX0anO3oculgCoeM_u95LqUIOlJWhQM8\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c0AvMTc3MzkzMzkxNjE3OTI3NSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzQCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNAP2dlbmVyYXRpb249MTc3MzkzMzkxNjE3OTI3NSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c0AiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTYxNzkyNzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNdVd0K2VpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTYuMTgxWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2LjE4MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTYuMTgxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2LjE4MVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"ada2dd130b330d78\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys@?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933916179275\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzpRshCO1gMQ52iraI62sfC1k404yVa3f7s17Ay2dgoxRbK5253NYwp6AS4UnIF21Lx\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"fd37cd1fcd6042fa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%40/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%40-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"893\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWykF9ITgYj46qL3ZoBezWS93scb5Nt7gOFw8QUv_VZAjtte-uDseCSBEc-e78wEhnE5\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNALWNvcHkvMTc3MzkzMzkxNjUyOTA2NSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzQC1jb3B5IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c0AtY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MTY1MjkwNjUmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNALWNvcHkiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTY1MjkwNjUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLbkR6T2VpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTYuNTMxWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2LjUzMVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTYuNTMxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2LjUzMVoifX0=\"\n      }\n    },\n    {\n      \"ID\": \"7486bfe7f117b356\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys@-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933916529065\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx03PPP8F83TKF2x7_KKa5qUovlA0K4seaLIuwITc4YVOEFw6dResRtP-src_JBB8xj\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"20e277c3aebdaf47\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%40-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzxyXUy1YoVqhi_BbOCtZ8andAHkT0zNlG_bhXLxRRIw3jTH6t_wh-2CI0wp76GFQmn\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"248be0881569a683\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%40?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzEiOyVClgxQd9drCbHf7qSkKRxM65QH7zAgdr6M64AqrgrAIGkZNrzzrHCfeTpmsWs\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-6.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxVNwcghgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"30979442f50a2747\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%5B%5C%5D%5E_\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNbXFxdXl8ifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"806\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Etag\": [\n            \"CNSQxOSirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwnUESa11pGTmLXGlA0fC6S4VLd_YJR6KSkA_w75pNcZGFvcjZCXCQg69qh_kj0yTe2\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c1tcXF1eXy8xNzczOTMzOTEwMTAwMDUyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlNUIlNUMlNUQlNUVfIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyU1QiU1QyU1RCU1RV8/Z2VuZXJhdGlvbj0xNzczOTMzOTEwMTAwMDUyJmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzW1xcXV5fIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTEwMTAwMDUyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTlNReE9TaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEwLjEwMloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMC4xMDJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEwLjEwMloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxMC4xMDJaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"35161d11cf2a2465\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%5B%5C%5D%5E_\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933910100052\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyJ5UEkFgLbZNM-gnk282I0ekdk_XTwiEbDk4QwF-H1n8FPcXLstBchFw6ilFGR4UiC\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"757878610baeb5f1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%5B%5C%5D%5E_?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"806\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Etag\": [\n            \"CNSQxOSirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyVZUjBZ6AbgkuufutRBR3BPZidnmEB3VVVRQJcu0tKQFIIZK0Uo7Ro0hJ05rELZR7a\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c1tcXF1eXy8xNzczOTMzOTEwMTAwMDUyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlNUIlNUMlNUQlNUVfIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyU1QiU1QyU1RCU1RV8/Z2VuZXJhdGlvbj0xNzczOTMzOTEwMTAwMDUyJmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzW1xcXV5fIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTEwMTAwMDUyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTlNReE9TaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEwLjEwMloiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMC4xMDJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEwLjEwMloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxMC4xMDJaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"29ee9fd3bb4644a7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%5B%5C%5D%5E_?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933910100052\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzqv-MClvF4EhfA075p5W0WHzcbkAkuMUeH-BExPsOaoKgAvA5pb8uGurE7aLo5ISze\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"0e60ce0bd9fe5ace\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%5B%5C%5D%5E_/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%5B%5C%5D%5E_-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"927\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzwl9aDWHUDxj_QzSAoz-I4B56wsfnXvmrB6AErwmKzGfmIDuntdZTWSyqbwKByxWhe\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNbXFxdXl8tY29weS8xNzczOTMzOTEwNDkxNDc1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlNUIlNUMlNUQlNUVfLWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTVCJTVDJTVEJTVFXy1jb3B5P2dlbmVyYXRpb249MTc3MzkzMzkxMDQ5MTQ3NSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c1tcXF1eXy1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTEwNDkxNDc1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTk9DM09TaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEwLjQ5NFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMC40OTRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEwLjQ5NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxMC40OTRaIn19\"\n      }\n    },\n    {\n      \"ID\": \"4681825959c1533f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%5B%5C%5D%5E_-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933910491475\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx0mQDtxSwShWEBhnu3z51tsWs2msZplkQfWw2U3TXGK7vSUCRgmMruLXICOl_Bs0ot\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"558a866523ad2eec\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%5B%5C%5D%5E_-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxVnXl-dG4Cz3mQ2RBJzxfByISxatA3HOe2Hb1rY0GdJLRojHPyGiXQMEQcx5kccobj\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aac5ed3e805e7c54\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%5B%5C%5D%5E_?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:10 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy7QLF1Y_g-fG1yFvEck2_Uy5U6QT003n14P3PFJikkbYl9QM0tjnve_5DABO_xkraH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-7.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxcKvYtswAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e6154bb385fa98ae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%60\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNgIn0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"776\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"CKig4eeirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyM4HEds-0Qse35ELCxrqnYp175jb47f24yOuVMVnpNNB-31ZWIAju3HBoSnGkOtT07\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2AvMTc3MzkzMzkxNjg2ODY0OCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTYwIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyU2MD9nZW5lcmF0aW9uPTE3NzM5MzM5MTY4Njg2NDgmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNgIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE2ODY4NjQ4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS2lnNGVlaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2Ljg3MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNi44NzFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2Ljg3MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxNi44NzFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"a4b532395f1783bb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%60\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933916868648\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwfSU8ag50TOJdciNF5s0hWDqfLP9md85s-RqQWdOxzZFVJoEnaKvzBxFLwvARUTgDm\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e073537017ad29ea\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%60?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"776\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"CKig4eeirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyuWdCcIm2HuK5Wqs4ptMsHx6exkftYSbmArRTxUMqUcwJ4M_O0F5MdU15Alf3pTbTC\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2AvMTc3MzkzMzkxNjg2ODY0OCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTYwIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyU2MD9nZW5lcmF0aW9uPTE3NzM5MzM5MTY4Njg2NDgmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNgIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE2ODY4NjQ4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS2lnNGVlaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2Ljg3MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNi44NzFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE2Ljg3MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxNi44NzFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"e2560b0369f09786\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%60?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:16 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933916868648\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzZKfBW98ReC5PpeIuEFAuAIKeRcmhTkiG91be1jN6dS2yybga7bPymDb9oWQi4B1Qp\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"17bf6fc5c0fcdb58\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%60/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%60-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"897\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzLGXd1HzxperDtzE2cX9LZWRxDToGWP3NPT-_Sz3j6uUHAmC1e5BBu6PCX7LvstaMq\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNgLWNvcHkvMTc3MzkzMzkxNzI0OTQ1MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTYwLWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTYwLWNvcHk/Z2VuZXJhdGlvbj0xNzczOTMzOTE3MjQ5NDUzJmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzYC1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE3MjQ5NDUzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSzIvK09laXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3LjI1MVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNy4yNTFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3LjI1MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxNy4yNTFaIn19\"\n      }\n    },\n    {\n      \"ID\": \"02f151b442d95051\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%60-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933917249453\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzClrIKPJ-p8xOJ8PNkhzp6afbLI9Jqsd1IG15lGmOcdvTFKbd9dqiY3jHI1SSwwsHQ\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8859451ab721826d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%60-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz4wFDwZBsK6GUU0VxHgesrvCZOouXZ8k7JG7rXeAIpFZSSa2dnGuIXZJuxYmq2VW8k\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"59507cf0c1a0555a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%60?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwE1lGffCL8xelkro5_g7UINXJ6ldPJZ_CGMaYgghF50w0N0P2cdGMVMbi1N88nQSqm\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/ascii-8.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxdG7hGoQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"eef380bc609c594f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%7B%7C%7D~%7F\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXN7fH1+fyJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"814\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"CP7VjuiirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwuWQ1KolXGLj-9XjDoUHETLmYAywYtc8rhl3z0jZvBJFRJbfH8Lqz9ceTd9MTbXNOJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c3t8fX5cdTAwN2YvMTc3MzkzMzkxNzYxMjc5OCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTdCJTdDJTdEfiU3RiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlN0IlN0MlN0R+JTdGP2dlbmVyYXRpb249MTc3MzkzMzkxNzYxMjc5OCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c3t8fX5cdTAwN2YiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTc2MTI3OTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQN1ZqdWlpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTcuNjE1WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3LjYxNVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTcuNjE1WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3LjYxNVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"ff7d564c49676e19\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%7B%7C%7D~%7F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933917612798\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWylmA8IUw1gdeezWm-rxhitriQeDlfcRA022UWgAKS4lda5aCAzB1vGhQNGmmeRyKlf\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"53ec51e469a39ca1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%7B%7C%7D~%7F?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"814\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"CP7VjuiirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyv5g-PtM7L8JBmOXdhhCY5mVm4mVZ57P0tUtxxHFS6WvmgjSt2RzP9huOdxXTDGyEA\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c3t8fX5cdTAwN2YvMTc3MzkzMzkxNzYxMjc5OCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTdCJTdDJTdEfiU3RiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlN0IlN0MlN0R+JTdGP2dlbmVyYXRpb249MTc3MzkzMzkxNzYxMjc5OCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c3t8fX5cdTAwN2YiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTc2MTI3OTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQN1ZqdWlpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTcuNjE1WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3LjYxNVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTcuNjE1WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3LjYxNVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"7f1f2ec9aa4052cc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%7B%7C%7D~%7F?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933917612798\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzX1wy0ClZ9ycKxfVh4gzdNx97e3tAQAhAU7jDmHuthxKdwQvZ3uAMqXRiNKQysp3Vc\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"7e316b8887ed49bd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%7B%7C%7D~%7F/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%7B%7C%7D~%7F-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"935\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyDfYp0Y8uRCkBCO67898RVV3Jxf3Bh1P1saEr9gl_BpfV-F2xZj2uO9yQG1djTqFHr\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXN7fH1+XHUwMDdmLWNvcHkvMTc3MzkzMzkxNzk3MjI0MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJTdCJTdDJTdEfiU3Ri1jb3B5IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cyU3QiU3QyU3RH4lN0YtY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MTc5NzIyNDMmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXN7fH1+XHUwMDdmLWNvcHkiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTc5NzIyNDMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNKUE9wT2lpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTcuOTc2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3Ljk3NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTcuOTc2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE3Ljk3NloifX0=\"\n      }\n    },\n    {\n      \"ID\": \"7ffc7e4f87d5e158\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%7B%7C%7D~%7F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:17 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933917972243\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxuXPn-JKU7pgFBEzlufdHwYzhRG0-E-dOj1OPOiofRJjp4cCH4-iEpLhgQIvT9zxEm\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"937ae1173ca426cd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%7B%7C%7D~%7F-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz6pY0y2CU0lqEPMOr1Ya38jCoDfU_fVn7yObD3sty4DQwXDewZd6GFGy2pjXdIKp9a\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"50ee831072ce9d60\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%7B%7C%7D~%7F?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxuPtZOD3BDBgqe_PSNeV_G6_HMUdnC9QfxS0PsighN1l1Sd9r3Xybmq9hMvyw3c9Tp\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/backslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxeCWh1ZwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7ceaaf46b68b4973\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keysfoo%5Cbar%5Cbaz\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNmb29cXGJhclxcYmF6In0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"824\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"CJWvueiirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwiiikik9K7YKkYfe3advQb9JgVs1etaDzYwmux9rsZNgZh2eeh56g6i-8c1R4WIFcg\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvb1xcYmFyXFxiYXovMTc3MzkzMzkxODMxMjM0MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTVDYmFyJTVDYmF6IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyU1Q2JhciU1Q2Jhej9nZW5lcmF0aW9uPTE3NzM5MzM5MTgzMTIzNDEmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNmb29cXGJhclxcYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE4MzEyMzQxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSld2dWVpaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjMxNVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC4zMTVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjMxNVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC4zMTVaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"af15022740beee3c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%5Cbar%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933918312341\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyEPAK4ndt6xp4z8ZnZafHB3Ruu2T-qw3AAWSUSoLv-Pp1IirLc0lIDisqbRnvUAGgd\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"457b0601960539c0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%5Cbar%5Cbaz?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"824\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"CJWvueiirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzBeyAfWEI_ODNFLmQUc7kMgSsJ7zvBGR8sI2OxGcdR0U2Ch35ewZLlgSWMjS9o5yX1\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvb1xcYmFyXFxiYXovMTc3MzkzMzkxODMxMjM0MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTVDYmFyJTVDYmF6IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyU1Q2JhciU1Q2Jhej9nZW5lcmF0aW9uPTE3NzM5MzM5MTgzMTIzNDEmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNmb29cXGJhclxcYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE4MzEyMzQxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSld2dWVpaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjMxNVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC4zMTVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjMxNVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC4zMTVaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"c560f4d35c8dc513\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%5Cbar%5Cbaz?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933918312341\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWztbiAzu-KrIun9QCo-uqh8PTADWeVT7wTXKLXx3R55g2fKm68qMYZRE9u81PXH6UG_\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"13b739045fdbcec8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%5Cbar%5Cbaz/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keysfoo%5Cbar%5Cbaz-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"945\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxvoJu4RGW0PLRZwrWlUCU5rZf9N8pv2sgw-29G9TCEeugBCVFbnKxTr7rmSPknQkkG\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNmb29cXGJhclxcYmF6LWNvcHkvMTc3MzkzMzkxODYwNjE1NyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTVDYmFyJTVDYmF6LWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTVDYmFyJTVDYmF6LWNvcHk/Z2VuZXJhdGlvbj0xNzczOTMzOTE4NjA2MTU3JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vXFxiYXJcXGJhei1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE4NjA2MTU3IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTTJteStpaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjYwOFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC42MDhaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjYwOFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC42MDhaIn19\"\n      }\n    },\n    {\n      \"ID\": \"878e159e3cd987b7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%5Cbar%5Cbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933918606157\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwuNzxnB-fGTMk7eSVCIK2iR3oA0yBoCXh_wPypRbJPB-iC33BkqKei1lBtzljLOEwH\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"924ac93436c4c6e2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%5Cbar%5Cbaz-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwFD592PSShGunwO7xQBDhN_BSqhjnhEbn--vqOu9TyI5El8J7JOZ6NqBHaiZJwuHG-\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d22eaf0daedd474b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%5Cbar%5Cbaz?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwJTqNLTtzjrdNzI4Li-ykgBVE6UBS7SS2Bd81nycNThQMp-9ojBzn1WkTR2i3Ma3Hc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/dotdotbackslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxeLnemqgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3ef383d24487029c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXMuLlxcZm9vXFwuLlxcYmFyXFwuLlxcLi5cXGJhei4uXFwifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"914\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Etag\": [\n            \"CI+t3uiirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4faetIFK51-3hUEUw1J2FEF-MxO0VAaNKkPdoDRxx6LrHiNBrRtkbK_3ntGplnhK4\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cy4uXFxmb29cXC4uXFxiYXJcXC4uXFwuLlxcYmF6Li5cXC8xNzczOTMzOTE4OTE4Mjg3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMuLiU1Q2ZvbyU1Qy4uJTVDYmFyJTVDLi4lNUMuLiU1Q2Jhei4uJTVDIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDLi4lNUNiYXIlNUMuLiU1Qy4uJTVDYmF6Li4lNUM/Z2VuZXJhdGlvbj0xNzczOTMzOTE4OTE4Mjg3JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE4OTE4Mjg3IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSSt0M3VpaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjkyMVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC45MjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjkyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC45MjFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"ecc7a6644107fe8f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933918918287\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw_BgccNPQ1KfrNs9f9qB6NhMb6cfVQcGMnlIWtSR4wlvaMol-VXdlWGZXR6gkhbfFT\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"1a02e1f2e68ac9f8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"914\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"CI+t3uiirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzfysioKO3fR7tG_w4aoUb-54hkQqj6Fj3g_rV-xoFAevzWpt5XJEZhqgo0nRNIpV3W\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cy4uXFxmb29cXC4uXFxiYXJcXC4uXFwuLlxcYmF6Li5cXC8xNzczOTMzOTE4OTE4Mjg3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMuLiU1Q2ZvbyU1Qy4uJTVDYmFyJTVDLi4lNUMuLiU1Q2Jhei4uJTVDIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDLi4lNUNiYXIlNUMuLiU1Qy4uJTVDYmF6Li4lNUM/Z2VuZXJhdGlvbj0xNzczOTMzOTE4OTE4Mjg3JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE4OTE4Mjg3IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSSt0M3VpaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjkyMVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC45MjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE4LjkyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOC45MjFaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"1946cd15e20a2b0b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:18 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933918918287\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz9PYGYM7tn1Lr0GpgT_CYUnBNIb8x1ly7YUzGi0jlIUFhn-20AoNoWy4HdgYSPYm-C\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"2ec0c1644bb3abd5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1035\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy92QwbNhGj6iJTCrVAgMdDSD31AmK0rE_Q4NjCkVzzktiiOSkmSDTjMSb2GKXKUpxa\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXMuLlxcZm9vXFwuLlxcYmFyXFwuLlxcLi5cXGJhei4uXFwtY29weS8xNzczOTMzOTE5Mjg4MTY1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMuLiU1Q2ZvbyU1Qy4uJTVDYmFyJTVDLi4lNUMuLiU1Q2Jhei4uJTVDLWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi4lNUNmb28lNUMuLiU1Q2JhciU1Qy4uJTVDLi4lNUNiYXouLiU1Qy1jb3B5P2dlbmVyYXRpb249MTc3MzkzMzkxOTI4ODE2NSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5cy4uXFxmb29cXC4uXFxiYXJcXC4uXFwuLlxcYmF6Li5cXC1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE5Mjg4MTY1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT1gyOU9paXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE5LjI5MFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOS4yOTBaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE5LjI5MFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOS4yOTBaIn19\"\n      }\n    },\n    {\n      \"ID\": \"9743d8dfbb19a5e9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933919288165\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzyledHe3rgc1mdAievV3nWIki3Ch9rTIu6_0nTBxHXASMwVoEPPgP2oofZh7_ll3mP\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"876b3e729d7e53da\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxUe0Pe6FHffMjO_FMBEUeSYcode3Z0NB_FYlkOUtsD4wXP0eoQNCCLmoiQkzvtPDVL\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e24fb2f78d1982ed\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxH1ph90jMxGFTCLmF---0DewcMeGv3wouNAV3rkNmDgJBsdr0-kUd9pdH7a8lEzwkj\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/dotdotslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxXFFauKwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2f9cc632ae504aed\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXMuLl9fMHgyZl9fZm9vLy4uX18weDJmX19iYXIvLi5fXzB4MmZfXy4uX18weDJmX19iYXouLl9fMHgyZl9fIn0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1020\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Etag\": [\n            \"CM3AmeWirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxKLTuLEgGjpbCcX4h829-9P6CGi2VrulDt3uHseo44tibj5zrfS7st1GUVXlr4oIpC\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cy4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18vMTc3MzkzMzkxMTQ5ODgyOSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18iLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18/Z2VuZXJhdGlvbj0xNzczOTMzOTExNDk4ODI5JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzLi5fXzB4MmZfX2Zvby8uLl9fMHgyZl9fYmFyLy4uX18weDJmX18uLl9fMHgyZl9fYmF6Li5fXzB4MmZfXyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxMTQ5ODgyOSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ00zQW1lV2lySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMS41MDJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTEuNTAyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMS41MDJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTEuNTAyWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"45cad40cfeb04e5e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933911498829\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzkwlPqXJDsiCJwX8py1VsxzjeyhZOFZTOK_vy_4g1AShy-i16PSfFr9qv5yYWfVuYt\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a3764964f4feff12\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1020\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Etag\": [\n            \"CM3AmeWirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwN6zyomhdItRQ_qlkqB2o9x9kOcr4DcqhtwNlO2jR1nk7ZHTOVZSXQ68LZ3YZ11bKG\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cy4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18vMTc3MzkzMzkxMTQ5ODgyOSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18iLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18/Z2VuZXJhdGlvbj0xNzczOTMzOTExNDk4ODI5JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzLi5fXzB4MmZfX2Zvby8uLl9fMHgyZl9fYmFyLy4uX18weDJmX18uLl9fMHgyZl9fYmF6Li5fXzB4MmZfXyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxMTQ5ODgyOSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ00zQW1lV2lySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMS41MDJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTEuNTAyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMS41MDJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTEuNTAyWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"f61f55c4f00ffa8c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933911498829\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyfOeTXxX1EaeP9-CHk4DneYZcaYxNK2a-U67Jbvyq2djuFxmJppgVGv6Lu2J1_-fi6\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bad227b834dd2696\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1141\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWydekgRiGi01dP0-UvKs2eA5aE1hXFvTJlQWFnUXJ0mfDtGJLrx_qBSOeW5dTv2Z1zW\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXMuLl9fMHgyZl9fZm9vLy4uX18weDJmX19iYXIvLi5fXzB4MmZfXy4uX18weDJmX19iYXouLl9fMHgyZl9fLWNvcHkvMTc3MzkzMzkxMTg0NzIzMyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18tY29weSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMuLl9fMHgyZl9fZm9vJTJGLi5fXzB4MmZfX2JhciUyRi4uX18weDJmX18uLl9fMHgyZl9fYmF6Li5fXzB4MmZfXy1jb3B5P2dlbmVyYXRpb249MTc3MzkzMzkxMTg0NzIzMyZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5cy4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18tY29weSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxMTg0NzIzMyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ01IaXJ1V2lySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMS44NDlaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTEuODQ5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMS44NDlaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTEuODQ5WiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"4b701f2905cf4c18\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:11 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933911847233\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyeqI2cd6urL2ezijPZ56quwmoZzAv-t3NXoG2_Q8OlWSWbdxl1APaZ83-xMU3WD1Ds\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5f2650164c0d21d6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx9I_Ll2mEkIYoMzsec5IfoKXuKtkl7QKZZiClcERCupdG07tFXT_INEAW9ExEJrfLl\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"23d6fece22d8e9c2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzLL7pFALDEZAyd0zHnDtfZLU2rM7HFn3GYsBskF4rhMT_lMFhVYps3GQPotxXMZVSW\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/fwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxYCbnzuAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"62226a2ec960541f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keysfoo%2Fbar%2Fbaz\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNmb28vYmFyL2JheiJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"820\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Etag\": [\n            \"COChyuWirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyfbfuUpIgIxJ7AC10uW3bB18JBvPb0RspYRO6W_9MTPp-V3iJ5Yg-b34GrmJAOok7p\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvby9iYXIvYmF6LzE3NzM5MzM5MTIyOTc2OTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRmJhciUyRmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNmb28lMkZiYXIlMkZiYXo/Z2VuZXJhdGlvbj0xNzczOTMzOTEyMjk3Njk2JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vL2Jhci9iYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTIyOTc2OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPQ2h5dVdpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTIuMzAwWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEyLjMwMFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTIuMzAwWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEyLjMwMFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"c5a4186b81507d28\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%2Fbar%2Fbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933912297696\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyF7nmhkzU9aHraN2CkmTD1rKSNtOK7SrxGYTuuES2xUZgcwdrg4ZPNEMHPrGSc15Ta\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"38847de6e01de39e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2Fbar%2Fbaz?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"820\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Etag\": [\n            \"COChyuWirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx0BoWbk3nCMgjp0o0WNbgGLgygaxZgWV8b1WSOVENK2E_tUOvnsXkIsK1_-kml2vGn\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvby9iYXIvYmF6LzE3NzM5MzM5MTIyOTc2OTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRmJhciUyRmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNmb28lMkZiYXIlMkZiYXo/Z2VuZXJhdGlvbj0xNzczOTMzOTEyMjk3Njk2JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vL2Jhci9iYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTIyOTc2OTYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPQ2h5dVdpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTIuMzAwWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEyLjMwMFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTIuMzAwWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEyLjMwMFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"10fc2e3d111a66b7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo/bar/baz?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933912297696\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWznic2E-hZNGkicnPQK-L8eAux01FKQnJCj8pN4enzfX_SX5_fg9oone0RVJu0b86ft\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"881182b30b1737df\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2Fbar%2Fbaz/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2Fbar%2Fbaz-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"941\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwmZev4CV0_UiqL-H6I1nLvIlydpVp99q_tLf0CQK7XciJHbXmihgthQrSkLbXriYmE\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNmb28vYmFyL2Jhei1jb3B5LzE3NzM5MzM5MTI2MzkzNTciLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRmJhciUyRmJhei1jb3B5IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRmJhciUyRmJhei1jb3B5P2dlbmVyYXRpb249MTc3MzkzMzkxMjYzOTM1NyZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c2Zvby9iYXIvYmF6LWNvcHkiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTI2MzkzNTciLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQMk8zK1dpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTIuNjQyWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEyLjY0MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTIuNjQyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEyLjY0MloifX0=\"\n      }\n    },\n    {\n      \"ID\": \"d673a27dc0920d57\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%2Fbar%2Fbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933912639357\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyS2Bb_TAPPRcWt4w5FcjEaacqOU70bbDry5jU3gzV_Xp2XagKyOIJlzC6PCQWJLjYw\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"7b74eddb6fec624c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2Fbar%2Fbaz-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyW4cjyCQQnsFzCE5IdpUrvpfJRyj9E1gRDmpPs6codj6VGYWFrd1IjmVaz361Y0XEp\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bf85cab088268e14\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2Fbar%2Fbaz?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:12 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzQqI2zlnuT64lpMtKy4_xi2VnBsv4E5oKJeD70qCGLk0HHzqD9jwgcfeDAGO4keHSg\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/non-UTF8_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxVL6elsQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/quote.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxfIPTJ6wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9dd3413ef95f4911\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keysfoo%22bar%22baz\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNmb29cImJhclwiYmF6In0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"824\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"CJndjumirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWydvIFXZPlHPrZbnTIo1csLnqQ6jRBrXtvIl0mTJ0hGrmIzbQhLqtXKbrs-tLllyZ8o\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvb1wiYmFyXCJiYXovMTc3MzkzMzkxOTcxMDg3MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTIyYmFyJTIyYmF6IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyMmJhciUyMmJhej9nZW5lcmF0aW9uPTE3NzM5MzM5MTk3MTA4NzMmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNmb29cImJhclwiYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE5NzEwODczIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSm5kanVtaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE5LjcxNFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOS43MTRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE5LjcxNFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOS43MTRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"1cc7faacbf1b2e69\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%22bar%22baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933919710873\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxnNdVBexjIEDg2vFVoK9ARKWLuZx37-9RPXyE3xuePvh9q0GEAr3nAcjDR7Fw9pmV4\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ad66973b0fb064fd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%22bar%22baz?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"824\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"CJndjumirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz-pnumAPydl5aexjE5i9PUswiNCARaoAMjwfF_Ue3hsMammtCAQCs6zEG-HbgexuTG\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvb1wiYmFyXCJiYXovMTc3MzkzMzkxOTcxMDg3MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTIyYmFyJTIyYmF6IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyMmJhciUyMmJhej9nZW5lcmF0aW9uPTE3NzM5MzM5MTk3MTA4NzMmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXNmb29cImJhclwiYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTE5NzEwODczIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSm5kanVtaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE5LjcxNFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxOS43MTRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE5LjcxNFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxOS43MTRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"3ee52949cea56704\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%22bar%22baz?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:19 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933919710873\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxmsir8C-z_IbmUm4IEfg8ZXUDQAwOyRxO-qKg8z1F8xBC9OcZtz9T96b3znQDtEARo\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"be000614bca5e51b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%22bar%22baz/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keysfoo%22bar%22baz-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"945\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxRiix1p0WRXnG21aZYHo1WYr3xhwRF1iAD_iEUnloR48qkRTQhO7xLRUuyy38m0EYr\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNmb29cImJhclwiYmF6LWNvcHkvMTc3MzkzMzkyMDA0MTM5NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTIyYmFyJTIyYmF6LWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzZm9vJTIyYmFyJTIyYmF6LWNvcHk/Z2VuZXJhdGlvbj0xNzczOTMzOTIwMDQxMzk0JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vXCJiYXJcImJhei1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIwMDQxMzk0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTEx6b3VtaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjA0M1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC4wNDNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjA0M1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC4wNDNaIn19\"\n      }\n    },\n    {\n      \"ID\": \"f63c96226d6467f4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%22bar%22baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933920041394\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxZpp77q8ZZB3R6eyfHY1QgeAgcE7BQZ9z-EfO66EVq_yzgmcy0c3XzY0Vemc0r9QkF\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"3bbeac1af97c7d78\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%22bar%22baz-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzTPUDBdp9XgdyOudX94U0HCQPZUqtsCmA4kMijS3R1qn3kLtquo7qSt4bnB6gVgwAf\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5e04d6ca39dd5a58\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%22bar%22baz?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxHmiLjddWOGpNsCSGvDL6CrH7faUyDBujaf-3PBQmo2Xq4IJoQKUcyIK_dVQgV9HEY\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/repeatedbackslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxYNlt9agAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"005275642b9982c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXMuLlxcZm9vXFxcXGJhclxcXFxcXGJheiJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"872\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"CMDA+eWirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy7w0tytzNo1NMr3UWI4lfiWU9nbxTprQ54Vcxor3gewEJOxs642kt_Ra6PotBHqKxX\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cy4uXFxmb29cXFxcYmFyXFxcXFxcYmF6LzE3NzM5MzM5MTMwNzE2ODAiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6P2dlbmVyYXRpb249MTc3MzkzMzkxMzA3MTY4MCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5cy4uXFxmb29cXFxcYmFyXFxcXFxcYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTEzMDcxNjgwIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTURBK2VXaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjA3NFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMy4wNzRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjA3NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxMy4wNzRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"fa57c439c38f1456\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933913071680\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwF8maNzZKJXGxw-QJW7BtRIq8BMeauHWAqAqa7RaPCy7w6nWiJNuesM7o1eSNQFMvz\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5b999ffb79156b68\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"872\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"CMDA+eWirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwfaTc_l-PPmn0YWCWaUBVWdgI8fNZZobUG1DTH5JW0cFLrXAmgCEVWyyZw5M89b84N\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5cy4uXFxmb29cXFxcYmFyXFxcXFxcYmF6LzE3NzM5MzM5MTMwNzE2ODAiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6P2dlbmVyYXRpb249MTc3MzkzMzkxMzA3MTY4MCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5cy4uXFxmb29cXFxcYmFyXFxcXFxcYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTEzMDcxNjgwIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTURBK2VXaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjA3NFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMy4wNzRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjA3NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxMy4wNzRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"4db60cd391b1f810\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933913071680\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxGSo_o436WqvZU-0gNK_QT5mVgg4fa3JzzXa71hA8CzWkFzLq-VCWUKmcTi08xhQ-i\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"fe145fd49bf715f9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"993\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxZtxNgVdCKvwEjzdbWGmssfIrrh0-slB5QgxywzJWtFXhiDlm_u77SBoiWKJSibe5z\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXMuLlxcZm9vXFxcXGJhclxcXFxcXGJhei1jb3B5LzE3NzM5MzM5MTMyODMxOTIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5cy4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6LWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzLi4lNUNmb28lNUMlNUNiYXIlNUMlNUMlNUNiYXotY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MTMyODMxOTImYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXMuLlxcZm9vXFxcXGJhclxcXFxcXGJhei1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTEzMjgzMTkyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUGkwaHVhaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjI4NVoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxMy4yODVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjI4NVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToxMy4yODVaIn19\"\n      }\n    },\n    {\n      \"ID\": \"d45f535c25b72dc6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933913283192\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwHhVnqBFNkGdPhQHwfdf1kpo0i-X7_itcR6l8J3G5BYN3cYLW_WlFKsspRvJakaAMQ\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"52d4043a658db29b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzew6FesI_qEumdCi1gIN29F8H0KpBz9vRH5MWjhzY4vBKYNiTJgwvKXDEgMx6LaB8z\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5d0a075b01fe5d7e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwv335_LKpCzlm8ahqxmLKHHXhxOY55pq6WkAUBrM9sT0fwgKIasIvJsc3i9A_SyYQR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/repeatedfwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgyVI6JD0AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f46d6376b982845d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNmb28vL2Jhci8vL2JheiJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"844\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Etag\": [\n            \"CKKmgIOjrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwN_pYbzCVSRqkYdzXI3HjnbYZZNcbeeU9vwjZ9QA2SRG4GXCVRxueY1njzcZmgcj8z\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvby8vYmFyLy8vYmF6LzE3NzM5MzM5NzQwMDA0MTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRiUyRmJhciUyRiUyRiUyRmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNmb28lMkYlMkZiYXIlMkYlMkYlMkZiYXo/Z2VuZXJhdGlvbj0xNzczOTMzOTc0MDAwNDE4JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vLy9iYXIvLy9iYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5NzQwMDA0MTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLS21nSU9qckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjY6MTQuMDAzWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI2OjE0LjAwM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjY6MTQuMDAzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI2OjE0LjAwM1oifQ==\"\n      }\n    },\n    {\n      \"ID\": \"e1f78859e24a4c2e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933974000418\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxtHpl_Lt917dU56Gh2nxVvQKR0uLL-h7UA67b9kFsXImMKo5rUzaYnu6mgRuZ8lQBY\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"114c1c212dd18298\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"844\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Etag\": [\n            \"CKKmgIOjrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwAXF2NN1U9Cy9YFixCTEgywBrSOHPSFZzQkK5Xf42OY7lceVRBTX9UxnNokzQFrjuj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2Zvby8vYmFyLy8vYmF6LzE3NzM5MzM5NzQwMDA0MTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRiUyRmJhciUyRiUyRiUyRmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNmb28lMkYlMkZiYXIlMkYlMkYlMkZiYXo/Z2VuZXJhdGlvbj0xNzczOTMzOTc0MDAwNDE4JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vLy9iYXIvLy9iYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5NzQwMDA0MTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLS21nSU9qckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjY6MTQuMDAzWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI2OjE0LjAwM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjY6MTQuMDAzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI2OjE0LjAwM1oifQ==\"\n      }\n    },\n    {\n      \"ID\": \"8505748f6c8fb1e7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo//bar///baz?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933974000418\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzm_0k6jkD93kM-LYK2cuyqqutHdM0cbp6BkUuCNU4tv5H7Eo9lgjcLvkjGKU16C06e\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"7a7f4aa112501a70\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"965\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwHrk5J3E-oHLO8YC8cvlLanWuxANvgSd-ap7tmR2Ra6DPuPfafyqIB8k6NuvTX3HFQ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNmb28vL2Jhci8vL2Jhei1jb3B5LzE3NzM5MzM5NzQzNzk5ODkiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRiUyRmJhciUyRiUyRiUyRmJhei1jb3B5IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyRiUyRmJhciUyRiUyRiUyRmJhei1jb3B5P2dlbmVyYXRpb249MTc3MzkzMzk3NDM3OTk4OSZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c2Zvby8vYmFyLy8vYmF6LWNvcHkiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5NzQzNzk5ODkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNOVzdsNE9qckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjY6MTQuMzgyWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI2OjE0LjM4MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjY6MTQuMzgyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI2OjE0LjM4MloifX0=\"\n      }\n    },\n    {\n      \"ID\": \"74d7d3bea94eb51f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933974379989\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxXUCGSSQJra7peGkwKaUnyE6qAkv4v8V5pa-Z-f3I6vu4VwKeSGiwBgNqQWVzde8Io\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"2731c2bd6cf23c7f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxbI_jZTdzMZ3x_MhlLIk3Xv6j-J2xblW5njnAfpfRL4WkFAoN7adTPI5_K5syQYWcc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cf515bcc246a648b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%2F%2Fbar%2F%2F%2Fbaz?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:26:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzDfyQAXyzGZjfabeuBDhXb-KemJsrMc5JiiddTnLVvljY-Bg98d_d7qYytT1AuW8bD\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/spaces.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxZG6hySAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5e7cc8ea5e03afaf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keysfoo+bar+baz\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXNmb28gYmFyIGJheiJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"820\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"CKDQo+airJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWweYG9TJUGDZPg1L9VHDrZG6e2VSIwCHBS4Z9ZHjKAYRqHZi-PSlTuvGBqWaEpcZYzJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2ZvbyBiYXIgYmF6LzE3NzM5MzM5MTM3NjE4MjQiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyMGJhciUyMGJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNmb28lMjBiYXIlMjBiYXo/Z2VuZXJhdGlvbj0xNzczOTMzOTEzNzYxODI0JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vIGJhciBiYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTM3NjE4MjQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLRFFvK2FpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTMuNzY0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjc2NFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTMuNzY0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjc2NFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"8b7bff2a3fa8bf63\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933913761824\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwsQ0oI8u1fjouZJdo_IMX87yVPDRIPvsC4TbtkOy53PH5Pd6JNfVWXnola3ParyCut\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5220559a77e86369\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%20bar%20baz?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"820\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"CKDQo+airJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4ygHFk-ANn9P50lz1CIaywXCXDvhuzcnlM0tA1LuCPFZEhVYG13H4aF88DQa4t-D1\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c2ZvbyBiYXIgYmF6LzE3NzM5MzM5MTM3NjE4MjQiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyMGJhciUyMGJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXNmb28lMjBiYXIlMjBiYXo/Z2VuZXJhdGlvbj0xNzczOTMzOTEzNzYxODI0JmFsdD1tZWRpYSIsIm5hbWUiOiJ3ZWlyZC1rZXlzZm9vIGJhciBiYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTM3NjE4MjQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLRFFvK2FpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTMuNzY0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjc2NFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTMuNzY0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjEzLjc2NFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"f73b8cb8294cbbd7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%20bar%20baz?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:13 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933913761824\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwb4N-P8Il32AA0HgKh8A7-VcULS_KNfwUvJhwZwOCtNcSQoqJrYHzfbc8E7fDMn1r_\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"24bec0118a3eb3a8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%20bar%20baz/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keysfoo%20bar%20baz-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"941\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx0F_cRVkOJ3Wj96lMClfiYJlAUcthCCm5NDj3hF-Afs4qHjMwd61WtRvhsQnilThxg\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXNmb28gYmFyIGJhei1jb3B5LzE3NzM5MzM5MTQwNTM1ODAiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyMGJhciUyMGJhei1jb3B5IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5c2ZvbyUyMGJhciUyMGJhei1jb3B5P2dlbmVyYXRpb249MTc3MzkzMzkxNDA1MzU4MCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c2ZvbyBiYXIgYmF6LWNvcHkiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzM5MTQwNTM1ODAiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNeTN0ZWFpckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuMDU2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE0LjA1NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuMDU2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjE0LjA1NloifX0=\"\n      }\n    },\n    {\n      \"ID\": \"a94340800c20bea0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keysfoo%20bar%20baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933914053580\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzMEg9K0sxcb1e_HXYUjJweswQKY4qkG1cwBGY4xPE0XoOIZiiJtl1RhlTpKa907qTQ\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8077133a15219701\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%20bar%20baz-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy0gHmUw3MxgrbQfOdGr7IjoffEgOqnFAcN8GKYQGGls0Y_aH6oGF0f18iZIhnVcOm0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c6ce503a97808aa3\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keysfoo%20bar%20baz?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyl78jW0C5FVMzGODmXeiplhpnqG_fhom-oI1Xjp22SQXDoZpfjt-P9djyFjZ3bWrhp\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/startwithdigit.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxgFAQh9wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bb20b21ecb2cae91\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys12345\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXMxMjM0NSJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"788\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Etag\": [\n            \"CLGKxemirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwMjAJqgA3e1gLX57FyG50Ah-fkMolN6ZSfMEiJc5ULoPoBH6fGw9mT65Pj-sHDlttJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5czEyMzQ1LzE3NzM5MzM5MjA2MDEzOTMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czEyMzQ1IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czEyMzQ1P2dlbmVyYXRpb249MTc3MzkzMzkyMDYwMTM5MyZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5czEyMzQ1IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIwNjAxMzkzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTEdLeGVtaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjYwNFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC42MDRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjYwNFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC42MDRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"ed6abb6e5e13db19\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys12345\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933920601393\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx8mlbdmzyOer_gxXANxwKv9CA4EExzyuoQ-D9VNUkTNkb5Zjp2_-YlodxcIjnqRvNZ\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6219f784a5a8d6cf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys12345?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"788\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Etag\": [\n            \"CLGKxemirJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy2AaXRwOzMLMowzIlwj8sEkhkV2FnDhWjTixbZpl5jmx2a75qt-Z8c_y_SUTw6MO3X\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5czEyMzQ1LzE3NzM5MzM5MjA2MDEzOTMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czEyMzQ1IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czEyMzQ1P2dlbmVyYXRpb249MTc3MzkzMzkyMDYwMTM5MyZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5czEyMzQ1IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIwNjAxMzkzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTEdLeGVtaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjYwNFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC42MDRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjYwNFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC42MDRaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"f6e5f1eb3157f121\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys12345?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933920601393\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyzsNW1eiRjaO4hcpc4WzOTeXBiWoz7THh505h8E215IHaRqyMbY3dBXfs67elFAzth\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b385dcc09e7d3fe7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys12345/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys12345-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"909\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwJB7wLGFgL0kpclKcvdI7zYY8dqcE1xbC-seqUtqvbwjSuhRJV4GoYkuRD9y1uRxgW\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXMxMjM0NS1jb3B5LzE3NzM5MzM5MjA5NDE4MzQiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vd2VpcmQta2V5czEyMzQ1LWNvcHkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzMTIzNDUtY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MjA5NDE4MzQmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXMxMjM0NS1jb3B5IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMzOTIwOTQxODM0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSXJ1MmVtaXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjk0NFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC45NDRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjI1OjIwLjk0NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNToyNToyMC45NDRaIn19\"\n      }\n    },\n    {\n      \"ID\": \"0aa2793ac6528748\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys12345-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:20 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933920941834\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzl922AFol7KslIz0kKVpX2XrYmB4GZsM3OSKeZnpJgwAaMFBqkrkd1Mvh02nJNo7dV\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8b8a1b3177426a49\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys12345-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyWLcTtOuU-OxEhhftFEWZhNay8qNY90PXSwyd7onnxcqYHnZ8htYkizac2jySEPMp0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"00549812e8151c89\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys12345?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:21 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwyctZYmh3jCa6w6n8kuwXFY5oD0-p_Sxz_szhNx8aZa_h1jLOAwT6if8HsY8UpxEUR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestKeys/unicode.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxaEiN1HgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c94c7678758aac00\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6IndlaXJkLWtleXPimLrimLrimLoifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"840\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Etag\": [\n            \"CPynzuairJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz017MTZ7e3RjSUqDVt6hHZrIURRRCASIuckPWU9-sliQhBz_ifId3fFDXiOVORrs-L\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c+KYuuKYuuKYui8xNzczOTMzOTE0NDYxMTgwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlRTIlOTglQkElRTIlOTglQkElRTIlOTglQkEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJUUyJTk4JUJBJUUyJTk4JUJBJUUyJTk4JUJBP2dlbmVyYXRpb249MTc3MzkzMzkxNDQ2MTE4MCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c+KYuuKYuuKYuiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxNDQ2MTE4MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1B5bnp1YWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNC40NjNaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuNDYzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNC40NjNaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuNDYzWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"fe8cf92adf2822b8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933914461180\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx4dSsAQRiIJ4tUvjhN1WChs3M8naO-9MGc1Mgh74uNqzMFnfu8zfch0sScNIAAQHNf\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d78a413b1640a9ef\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"840\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Etag\": [\n            \"CPynzuairJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy5fZM9aQoMwF4LbQJxedW5_k7TCSbJtTlq4AjR7Idg0qA8iQWtXVcdcdKyB8KpwiA4\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvd2VpcmQta2V5c+KYuuKYuuKYui8xNzczOTMzOTE0NDYxMTgwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlRTIlOTglQkElRTIlOTglQkElRTIlOTglQkEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby93ZWlyZC1rZXlzJUUyJTk4JUJBJUUyJTk4JUJBJUUyJTk4JUJBP2dlbmVyYXRpb249MTc3MzkzMzkxNDQ2MTE4MCZhbHQ9bWVkaWEiLCJuYW1lIjoid2VpcmQta2V5c+KYuuKYuuKYuiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxNDQ2MTE4MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1B5bnp1YWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNC40NjNaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuNDYzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNC40NjNaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuNDYzWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"a3a01eda6787901d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933914461180\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwupbwB-ULQjNGBHg1r0v2h-ZziLYfgYwaIWKcE3QHXyyPFDI7D22EA8wISSYhnf3hF\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"fd273df388cd6db9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA/rewriteTo/b/go-cloud-blob-test-bucket/o/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"961\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw7b_je1ss1RlW03Wo788EQRo9hvgSEXwHx5dqOIKDLJWk84LP2Ud9Msg_yS_SUcKKU\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiNSIsIm9iamVjdFNpemUiOiI1IiwiZG9uZSI6dHJ1ZSwicmVzb3VyY2UiOnsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L3dlaXJkLWtleXPimLrimLrimLotY29weS8xNzczOTMzOTE0ODEwMTczIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlRTIlOTglQkElRTIlOTglQkElRTIlOTglQkEtY29weSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3dlaXJkLWtleXMlRTIlOTglQkElRTIlOTglQkElRTIlOTglQkEtY29weT9nZW5lcmF0aW9uPTE3NzM5MzM5MTQ4MTAxNzMmYWx0PW1lZGlhIiwibmFtZSI6IndlaXJkLWtleXPimLrimLrimLotY29weSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzkxNDgxMDE3MyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0wzTzQrYWlySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNC44MTJaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuODEyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNToyNToxNC44MTJaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MjU6MTQuODEyWiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"bed97d654a94ad84\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933914810173\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=mnG7TA==\",\n            \"md5=XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzeRoEquuTG3_q7fq83WnmzuFnGnbmCnvjJmtaoVPQj2QBATTGfqpDOylVtrtGtE488\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d45f1b366efbb6de\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy0Ok9--OozczDSbYYWJTDSfsm4DShjVkNhBkw_uwHcUl5V8ai7kvM2IeG6r8WAJYVk\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2d917587b1b44e24\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:15 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxqJN6CvuNU7z8yyt1tpxhiy4Yswwbqr23vQN9-50Y3MBDhZgCp1ZFNAJ6eRwo0XuWL\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/PaginationConsistencyAfterDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghFHJ+LWgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1170d69d5803e492\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxjvF8jk2UCycRMQX1tsD4jwQNyGqbOmdy9d8SvohoQb_8le27Frj3VuYcrw1VxjXJi\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"2dc21eb643a12b58\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1657\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy8NyFgbPaKAAVylsW6NZ0wajwfzZd7njqFBsOomK_lzbAs3FCo9JnAOZ0DCfgT7SR7\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNnOWliRzlpTFdadmNpMXNhWE4wTFRFPSIsIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0wLzE1NDk2NjA5MjE2OTkzNjMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wP2dlbmVyYXRpb249MTU0OTY2MDkyMTY5OTM2MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0wIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTIxNjk5MzYzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS080aXVhSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0xLzE3NjQ2MTgwNDU5NjAxMzUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xP2dlbmVyYXRpb249MTc2NDYxODA0NTk2MDEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0xIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ1OTYwMTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTWZmckw2U25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"1f8fce9645ea7937\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-list-1?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwXBLTQa3U0-qqj4HOlzz8ipLgUlEdc_u0q5B-QbNnseqjVh0j6kiR6AIvV9CAJa9bi\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1c321aefbcb64c9d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=Cg9ibG9iLWZvci1saXN0LTE%3D\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"825\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzafrXoabMXvEn53LBHsEe92QvCCgNVW3OO9lw0wXYhaDy32o2YOjzkFxHVE5Ja55rm\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"a12a6305a4a8d518\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-list-1\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLWxpc3QtMSJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"788\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Etag\": [\n            \"COWny/SerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw2Gt-2fjr0GzCIyjU6SXNB5G2gw09_Vjc7f_orR_Od_TrMvFocCuMWDZDB4tiVad0l\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0xLzE3NzM5MzI4NzAwMzAzMDkiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xP2dlbmVyYXRpb249MTc3MzkzMjg3MDAzMDMwOSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0xIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODcwMDMwMzA5IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT1dueS9TZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjUwLjAzM1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowNzo1MC4wMzNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjUwLjAzM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowNzo1MC4wMzNaIn0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/PaginationConsistencyAfterInsert.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghEOcoBcAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"27afb171559dd67c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxLCoP92KpjoEE_o5UqoPFp4aHN_BEnRm5mS-LFsuQiC4nOLkapVZnJ_hZqiiytA1iQ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"d0f6e288fe7b6feb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1657\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzGMqu0XqAno3EV6Lh01-gDbV878kNQxaifd804X8hEF2nOTk1oLXl35yywv_ert3sr\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNnOWliRzlpTFdadmNpMXNhWE4wTFRFPSIsIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0wLzE1NDk2NjA5MjE2OTkzNjMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wP2dlbmVyYXRpb249MTU0OTY2MDkyMTY5OTM2MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0wIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTIxNjk5MzYzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS080aXVhSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0xLzE3NjQ2MTgwNDU5NjAxMzUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xP2dlbmVyYXRpb249MTc2NDYxODA0NTk2MDEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0xIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ1OTYwMTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTWZmckw2U25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"57da119da21be3a7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-list-0a\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLWxpc3QtMGEifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Etag\": [\n            \"CICKn/SerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy11EKcar6I_NAB_i5Sa9Tdp-ir0LSkNWb7oOelklfukZXkLfkDSwsvrx3Vh9LwM0Qf\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0wYS8xNzczOTMyODY5MzA1NjAwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWxpc3QtMGEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTBhP2dlbmVyYXRpb249MTc3MzkzMjg2OTMwNTYwMCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0wYSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg2OTMwNTYwMCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0lDS24vU2VySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowNzo0OS4zMTBaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NDkuMzEwWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowNzo0OS4zMTBaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDc6NDkuMzEwWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"e3973d312e29752e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=Cg9ibG9iLWZvci1saXN0LTE%3D\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"825\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwt-H0z3gddKp1wJthazRQBCCtgwJLUdIawA0FyH-zqSc7PYSaCL5UN68kU4IKWBIK5\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"0867fad9548a8f95\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-list-0a?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:49 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz9a1HSpyPtCfpOmoVxgKCQMjqWCFdJDfX2ApyuNJD5f65T8TPPcB4ixkykZa17WSUD\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/by_1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghDOw3KHwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a02424b9ba18ab4f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxWdNKiZpKUhrS_OJfLVSO_K45tvJxPUHNYyBX21x27uStzz1rY6xQaZxK2AOCsSm-E\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"54a6fc0ca0f66f31\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"868\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwJMczB41jIXPnj_KBbYXrn_I6UxARnmSCAlsYBWzCGLPjbbx3uEaUNmj4YEo0TnYQY\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNnOWliRzlpTFdadmNpMXNhWE4wTFRBPSIsIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0wLzE1NDk2NjA5MjE2OTkzNjMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wP2dlbmVyYXRpb249MTU0OTY2MDkyMTY5OTM2MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0wIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTIxNjk5MzYzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS080aXVhSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"8e5e23bf0ca96149\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Cg9ibG9iLWZvci1saXN0LTA%3D\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"868\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy9i1X04shO650SyKP7GcqlJCpeTwpj4vAJclfNUeXqLkKdwJyv36lXpPOfdctVgtur\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNnOWliRzlpTFdadmNpMXNhWE4wTFRFPSIsIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0xLzE3NjQ2MTgwNDU5NjAxMzUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xP2dlbmVyYXRpb249MTc2NDYxODA0NTk2MDEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0xIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ1OTYwMTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTWZmckw2U25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"cf97521399745c23\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Cg9ibG9iLWZvci1saXN0LTE%3D\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"825\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzgt48DgosJZaAabeysJxiOeNber-iVi25qGdR08QJeB6S-GfbEYvIC5KGEnz1zSnBJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/by_2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghEGtFxMAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"10b50de11f8a95db\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxmv18q2wy8GNJU16KQh2TFh7zFNvFSXEDXcvx8uxw-cChu-knQH1IpH2y5Qpcm7ljD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"d000011309b8b9b9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1657\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxJTL4gtBvTwp86Gni3rICs9YbvWYdr2PcPueuNWb8X_8RwnkLxdebxCozmrizIC_Pg\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNnOWliRzlpTFdadmNpMXNhWE4wTFRFPSIsIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0wLzE1NDk2NjA5MjE2OTkzNjMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0wP2dlbmVyYXRpb249MTU0OTY2MDkyMTY5OTM2MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0wIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTIxNjk5MzYzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS080aXVhSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjowMS42OThaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbGlzdC0xLzE3NjQ2MTgwNDU5NjAxMzUiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbGlzdC0xP2dlbmVyYXRpb249MTc2NDYxODA0NTk2MDEzNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbGlzdC0xIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ1OTYwMTM1IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTWZmckw2U25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0NS45NjJaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0f24ce21d1ffb31d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=2\\u0026pageToken=Cg9ibG9iLWZvci1saXN0LTE%3D\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"825\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyd23C7ajS5DyCm_WYNWT_mHHPeCgeymEyNhTv9ELdT7Ms7dxmlaNawibZLkqXAmMdt\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/by_3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghEK3GZygAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"797d0e30fadf52c4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxGv_p3qMAAXvmQfxzK36uOdZRAC7wCGWijhk_GtS24_YYrS4Cri28v-EdlY3mOIie_\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"c17dff0f51d64679\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=3\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:48 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw2fk3LawqF8nAsBYvSC2804uJ9Sx7tRRVtAkkG7OhFXLSArvaofTKI6QtGhjsfF3Sf\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/exactly_1_object_due_to_prefix.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghDG6UvLQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"56cb3c548fdca778\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzL1cCuDpGFSD6uAi_d39R6sNRYim7KB1prnzodGIhtDz4ggH66MDnns4xofeB4tEyk\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"c2cb3c880866b362\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list-1\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"825\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw5B7vY9gV-YoxCfDIuAQn2e999n9eoF1CeSHLly0qVxY0qKFGKij8FJAs73cefLCHY\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifV19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/no_objects.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghDCxD6YgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7944bd3188c4746e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwgbN0-AY8Xkd-UnW9sBGhFIM7jbzNbUfyehO64nJB13YGcRS6KXKi8tqsgHte8ep7f\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"4c729dfd46ed2ebd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=no-objects-with-this-prefix\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"26\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwV2aAj_-VIi2obyZjl9zJBXlHccZsq0vRP1sgUloPrmI_GM5zdi6A62q1A1TMkprJZ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIn0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestList/no_pagination.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghDKkRCeAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3a0cb426c65c4861\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyAvUqrKdGPs7fzvOtNACqx18WJcqS36rxHlXCX4Zn2xmv8VLGTZBkNUoO98xuNa9Ox\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    },\n    {\n      \"ID\": \"68fb37afc886117c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-list\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"2403\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx9xB91RY0xHsv8KMLBRTW2CznF4cYVmeVmeaUhGigOYKijgPpqP0Q0NXthb0X1PZX4\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTAvMTU0OTY2MDkyMTY5OTM2MyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTA/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIxNjk5MzYzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjE2OTkzNjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLTzRpdWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDEuNjk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAxLjY5OFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTEvMTc2NDYxODA0NTk2MDEzNSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTE/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ1OTYwMTM1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDU5NjAxMzUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNZmZyTDZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDUuOTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ1Ljk2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1saXN0LTIvMTU0OTY2MDkyMjg1ODY1OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1saXN0LTI/Z2VuZXJhdGlvbj0xNTQ5NjYwOTIyODU4NjU5JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1saXN0LTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5MjI4NTg2NTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLT1owZWFJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MDIuODU4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjAyLjg1OFoifV19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestListDelimiters/abc.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghIG+IdYAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9023c960c9da2eac\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5294\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzJuEqy1DspOe0i56-9uHCLZeKN5L_8CjoLcSNjAvoUdJZzjOKjErU2nSHDkvNv9GXX\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dC8xNTQ5NjYwOTUyMDY3MzU0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYS50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTUyMDY3MzU0JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1MjA2NzM1NCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0pyNngvU0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi4wNjZaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuMDY2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi4wNjZaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuMDY2WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0LzE1NDk2NjA5NTI1OTc0MTEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NTI1OTc0MTEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTUyNTk3NDExIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS09uNlBTSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMyLjU5N1oiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi41OTdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMyLjU5N1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi41OTdaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQvMTU0OTY2MDk1MzA2NDI2NSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNjLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1MzA2NDI2NSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NTMwNjQyNjUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNbm1oUFdJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuMDYzWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMzLjA2M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuMDYzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMzLjA2M1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dC8xNTQ5NjYwOTUzNTg0MzcyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjZC50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTUzNTg0MzcyJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1MzU4NDM3MiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BURnBQV0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy41ODJaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuNTgyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy41ODJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuNTgyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0LzE3NjQ2MTgwNDk2MDI3ODMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dD9nZW5lcmF0aW9uPTE3NjQ2MTgwNDk2MDI3ODMmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ5NjAyNzgzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTitKaThDU25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ5LjYwNVoiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OS42MDVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ5LjYwNVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OS42MDVaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dC8xNTQ5NjYwOTU0NTk5OTAyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1NDU5OTkwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1NDU5OTkwMiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ043RDR2V0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"f8c914af9fa75cfa\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5294\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzrON9O-P3rE8BRJfWOFr5fJdh1y7Hs4VbVwAd7Vq7yz-LbUvN3p5c6c3hMEEatY4fS\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dC8xNTQ5NjYwOTUyMDY3MzU0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYS50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTUyMDY3MzU0JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1MjA2NzM1NCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0pyNngvU0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi4wNjZaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuMDY2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi4wNjZaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuMDY2WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0LzE1NDk2NjA5NTI1OTc0MTEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NTI1OTc0MTEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTUyNTk3NDExIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS09uNlBTSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMyLjU5N1oiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi41OTdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMyLjU5N1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi41OTdaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQvMTU0OTY2MDk1MzA2NDI2NSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNjLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1MzA2NDI2NSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NTMwNjQyNjUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNbm1oUFdJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuMDYzWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMzLjA2M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuMDYzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMzLjA2M1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dC8xNTQ5NjYwOTUzNTg0MzcyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjZC50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTUzNTg0MzcyJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1MzU4NDM3MiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BURnBQV0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy41ODJaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuNTgyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy41ODJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuNTgyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0LzE3NjQ2MTgwNDk2MDI3ODMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dD9nZW5lcmF0aW9uPTE3NjQ2MTgwNDk2MDI3ODMmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ5NjAyNzgzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTitKaThDU25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ5LjYwNVoiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OS42MDVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ5LjYwNVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OS42MDVaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dC8xNTQ5NjYwOTU0NTk5OTAyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1NDU5OTkwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1NDU5OTkwMiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ043RDR2V0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"85dc6d277342ed66\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"956\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWygcmgttlU7wbzS22u6C2hXe-N2R3aa5KzUz-H5soczFlcDMP7-pC2hcjCChKouGHOj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjIiwiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dC8xNTQ5NjYwOTU0NTk5OTAyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1NDU5OTkwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1NDU5OTkwMiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ043RDR2V0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d305946cf94e82af\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abcdir1abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1829\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxDHeXOl5IkSIegh4YAojg3JYhn5q713j31iIIhYYpIAp7k32gB7jeUtmhjE2WYVfxC\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYS50eHQvMTU0OTY2MDk1MjA2NzM1NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1MjA2NzM1NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYS50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NTIwNjczNTQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNKcjZ4L1NJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuMDY2WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMyLjA2NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuMDY2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMyLjA2NloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dC8xNTQ5NjYwOTUyNTk3NDExIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYi50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTUyNTk3NDExJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNiLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1MjU5NzQxMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0tPbjZQU0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi41OTdaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuNTk3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMi41OTdaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzIuNTk3WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"074615e8d84c1634\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abcdir1abcsubdirabc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1846\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxByjYvBSYCRgatWf4k7xWVnh4auMsajYX7TmYRDYLxJ-FhDuyUfKL-w1b6QDgTqJd4\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNjLnR4dC8xNTQ5NjYwOTUzMDY0MjY1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjYy50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTUzMDY0MjY1JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNjLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1MzA2NDI2NSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ01ubWhQV0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy4wNjNaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuMDYzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy4wNjNaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzMuMDYzWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0LzE1NDk2NjA5NTM1ODQzNzIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjZC50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NTM1ODQzNzImYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTUzNTg0MzcyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUFRGcFBXSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMzLjU4MloiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy41ODJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjMzLjU4MloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjozMy41ODJaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"f0c99f974f90f5a2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abcdir2abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"905\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw8bgTeyt5q3WM4TXNU8d_alDm0faSqlfCfloUYNXEeX8wgrcmzb111zXpj-XgQOWBo\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dC8xNzY0NjE4MDQ5NjAyNzgzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQ/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ5NjAyNzgzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc2NDYxODA0OTYwMjc4MyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ04rSmk4Q1NuWkVERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OS42MDVaIiwidXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDkuNjA1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OS42MDVaIiwidGltZUZpbmFsaXplZCI6IjIwMjUtMTItMDFUMTk6NDA6NDkuNjA1WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"a75b89598476f515\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"135\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxtysdMzyDFsWkFd-WoSkyaH7hjyTM7lzciBSZ3_oFzJWOUA4PMxJWo6oCiNGl252Ny\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNoNWliRzlpTFdadmNpMWtaV3hwYldsMFpYSnpMV0ZpWTJScGNqRmhZbU09IiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjIl19\"\n      }\n    },\n    {\n      \"ID\": \"54ad5f19a961f285\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Ch5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmM%3D\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"135\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyHyXCgK014oFqbez6mkhmLdxu8IWqdch-QLY-HeMJybiWSxq19kVvLK050ILUoahW_\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNoNWliRzlpTFdadmNpMWtaV3hwYldsMFpYSnpMV0ZpWTJScGNqSmhZbU09IiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjIl19\"\n      }\n    },\n    {\n      \"ID\": \"97f1eb812372e41d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=Ch5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmM%3D\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"877\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxNUeeRdUGdFLeHWRHoDjd7GzidYlIjjPIijKLFOazTw5nrSQKkk_G3Riv64aYusxwZ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0LzE1NDk2NjA5NTQ1OTk5MDIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTU0NTk5OTAyJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTU0NTk5OTAyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTjdENHZXSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjM0LjU5OVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjM0LjU5OVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ff2578d69c96cc7d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-delimiters-abcdir2abce.txt?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwZyHVnhVlLL_oJF15Ibbl8mjMr41JJS1FXZmSGkjC9h1zzS5ZSjTTclE5Kz2SbNP5i\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"07b2a03c04054152\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=abc\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-abc\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"923\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxegY2Dq_zCq_XSRhOS8PKefu15seC-MiJRP74XTWf7jQ0Gv2lz9x4bjFtZOzU5awvn\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dC8xNTQ5NjYwOTU0NTk5OTAyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0P2dlbmVyYXRpb249MTU0OTY2MDk1NDU5OTkwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk1NDU5OTkwMiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ043RDR2V0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjozNC41OTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MzQuNTk5WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d1cad94135ce19f7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-delimiters-abcdir2abce.txt\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0In0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"868\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:53 GMT\"\n          ],\n          \"Etag\": [\n            \"CIu/n/aerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzkDLp9uGCiHECn1-Nqz7G5JWbZt-9QaijwAxQNqCNK6T5a0a7QloqOz5Xpjt1KQnNA\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQvMTc3MzkzMjg3MzUwNjY5OSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0P2dlbmVyYXRpb249MTc3MzkzMjg3MzUwNjY5OSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4NzM1MDY2OTkiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNJdS9uL2FlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTMuNTExWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjUzLjUxMVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTMuNTExWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjUzLjUxMVoifQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestListDelimiters/backslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghHGCu0OAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"aa61df369b487d0a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5268\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx1hVziAGbquymfY53FxJlntgAEbCrAXDI5KjRBvDz5RSD1DytMbj4QNXi9AsdwwncA\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMVxcYS50eHQvMTU1MjU4MTUwNTAxMjM1MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNhLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMSU1Q2EudHh0P2dlbmVyYXRpb249MTU1MjU4MTUwNTAxMjM1MSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXGEudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTUyNTgxNTA1MDEyMzUxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUCtrM2VpSWd1RUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjAxMloiLCJ1cGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4wMTJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjAxMloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4wMTJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXGIudHh0LzE1NTI1ODE1MDUxNDk0MzEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDYi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNiLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDUxNDk0MzEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxiLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU1MjU4MTUwNTE0OTQzMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BmVDVlaUlndUVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4xNDlaIiwidXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMTQ5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4xNDlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMTQ5WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxzdWJkaXJcXGMudHh0LzE1NTI1ODE1MDUyNTc3ODYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDc3ViZGlyJTVDYy50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNzdWJkaXIlNUNjLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDUyNTc3ODYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxzdWJkaXJcXGMudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTUyNTgxNTA1MjU3Nzg2IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTHFpN09pSWd1RUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjI1N1oiLCJ1cGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4yNTdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjI1N1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4yNTdaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXHN1YmRpclxcZC50eHQvMTU1MjU4MTUwNTM4MTY0MiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNzdWJkaXIlNUNkLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMSU1Q3N1YmRpciU1Q2QudHh0P2dlbmVyYXRpb249MTU1MjU4MTUwNTM4MTY0MiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXHN1YmRpclxcZC50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NTI1ODE1MDUzODE2NDIiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNJcnE4K2lJZ3VFQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMzgxWiIsInVwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjM4MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMzgxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjM4MVoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMlxcZS50eHQvMTc2NDYxODA0ODY0MjE1NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjIlNUNlLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMiU1Q2UudHh0P2dlbmVyYXRpb249MTc2NDYxODA0ODY0MjE1NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjJcXGUudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ4NjQyMTU0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT3E0MEwrU25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ4LjY0NFoiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OC42NDRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ4LjY0NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OC42NDRaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGYudHh0LzE1NTI1ODE1MDU2NzY5MjEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNmLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZi50eHQ/Z2VuZXJhdGlvbj0xNTUyNTgxNTA1Njc2OTIxJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLVxcZi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NTI1ODE1MDU2NzY5MjEiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQbnNoZW1JZ3VFQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiIsInVwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjY3NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjY3NloifV19\"\n      }\n    },\n    {\n      \"ID\": \"382e53c0b7e55dc1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5268\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz5sLi2IEOxf4xbTPYuaSSGbY2K7KMotLt6pQunxLq1Q1ia7GA2YCcylT59WEux9jUY\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMVxcYS50eHQvMTU1MjU4MTUwNTAxMjM1MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNhLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMSU1Q2EudHh0P2dlbmVyYXRpb249MTU1MjU4MTUwNTAxMjM1MSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXGEudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTUyNTgxNTA1MDEyMzUxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUCtrM2VpSWd1RUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjAxMloiLCJ1cGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4wMTJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjAxMloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4wMTJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXGIudHh0LzE1NTI1ODE1MDUxNDk0MzEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDYi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNiLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDUxNDk0MzEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxiLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU1MjU4MTUwNTE0OTQzMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BmVDVlaUlndUVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4xNDlaIiwidXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMTQ5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4xNDlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMTQ5WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxzdWJkaXJcXGMudHh0LzE1NTI1ODE1MDUyNTc3ODYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDc3ViZGlyJTVDYy50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNzdWJkaXIlNUNjLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDUyNTc3ODYmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxzdWJkaXJcXGMudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTUyNTgxNTA1MjU3Nzg2IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTHFpN09pSWd1RUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjI1N1oiLCJ1cGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4yNTdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjI1N1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4yNTdaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXHN1YmRpclxcZC50eHQvMTU1MjU4MTUwNTM4MTY0MiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNzdWJkaXIlNUNkLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMSU1Q3N1YmRpciU1Q2QudHh0P2dlbmVyYXRpb249MTU1MjU4MTUwNTM4MTY0MiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXHN1YmRpclxcZC50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NTI1ODE1MDUzODE2NDIiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNJcnE4K2lJZ3VFQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMzgxWiIsInVwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjM4MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMzgxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjM4MVoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMlxcZS50eHQvMTc2NDYxODA0ODY0MjE1NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjIlNUNlLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMiU1Q2UudHh0P2dlbmVyYXRpb249MTc2NDYxODA0ODY0MjE1NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjJcXGUudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ4NjQyMTU0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT3E0MEwrU25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ4LjY0NFoiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OC42NDRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ4LjY0NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OC42NDRaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGYudHh0LzE1NTI1ODE1MDU2NzY5MjEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNmLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZi50eHQ/Z2VuZXJhdGlvbj0xNTUyNTgxNTA1Njc2OTIxJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLVxcZi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NTI1ODE1MDU2NzY5MjEiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQbnNoZW1JZ3VFQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiIsInVwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjY3NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjY3NloifV19\"\n      }\n    },\n    {\n      \"ID\": \"7f92035633da1c06\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"950\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWylzFQQYf4Kr8WlYef1r-QPaEbmWL6ocICuSsIpHH-yFwm6-oJx_C4TRiKnfbJUTX7C\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXCIsImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIyXFwiXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZi50eHQvMTU1MjU4MTUwNTY3NjkyMSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2YudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNmLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDU2NzY5MjEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxmLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU1MjU4MTUwNTY3NjkyMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1Buc2hlbUlndUVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS42NzZaIiwidXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS42NzZaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"47346918e0c1ea81\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5Cdir1%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1818\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzsHe90bjjXDxDHJB-oizWpgr23Fvf0zR9L-hPxaMUABpHtEVmYrZuPFLS3n3Z9XA08\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXHN1YmRpclxcIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXGEudHh0LzE1NTI1ODE1MDUwMTIzNTEiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDYS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNhLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDUwMTIzNTEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxhLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU1MjU4MTUwNTAxMjM1MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1ArazNlaUlndUVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4wMTJaIiwidXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMDEyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4wMTJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMDEyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxiLnR4dC8xNTUyNTgxNTA1MTQ5NDMxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMSU1Q2IudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDYi50eHQ/Z2VuZXJhdGlvbj0xNTUyNTgxNTA1MTQ5NDMxJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMVxcYi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NTI1ODE1MDUxNDk0MzEiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQZlQ1ZWlJZ3VFQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMTQ5WiIsInVwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjE0OVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMTQ5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjE0OVoifV19\"\n      }\n    },\n    {\n      \"ID\": \"5a9969d4bedbd315\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5Cdir1%5Csubdir%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1834\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx7IW2rw7nwMZGb52LXOCBvd56rOXojjVnS4tHmyafXkw0x1CDNIDgLZU0gbLHzycOW\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMVxcc3ViZGlyXFxjLnR4dC8xNTUyNTgxNTA1MjU3Nzg2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMSU1Q3N1YmRpciU1Q2MudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDc3ViZGlyJTVDYy50eHQ/Z2VuZXJhdGlvbj0xNTUyNTgxNTA1MjU3Nzg2JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMVxcc3ViZGlyXFxjLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU1MjU4MTUwNTI1Nzc4NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0xxaTdPaUlndUVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4yNTdaIiwidXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMjU3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4yNTdaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuMjU3WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxzdWJkaXJcXGQudHh0LzE1NTI1ODE1MDUzODE2NDIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIxJTVDc3ViZGlyJTVDZC50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjElNUNzdWJkaXIlNUNkLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDUzODE2NDImYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIxXFxzdWJkaXJcXGQudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTUyNTgxNTA1MzgxNjQyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSXJxOCtpSWd1RUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjM4MVoiLCJ1cGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4zODFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjM4MVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS4zODFaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"6af887a4539413aa\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5Cdir2%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"901\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy2SMgwuc48a40Rg-hdJTMGqO7gS39HZIeIK6P4F86r86ePioU1xkOH9D9iPHek-7IQ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMlxcZS50eHQvMTc2NDYxODA0ODY0MjE1NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjIlNUNlLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZGlyMiU1Q2UudHh0P2dlbmVyYXRpb249MTc2NDYxODA0ODY0MjE1NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjJcXGUudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ4NjQyMTU0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT3E0MEwrU25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ4LjY0NFoiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OC42NDRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ4LjY0NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0OC42NDRaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7d5b0a7569c03b54\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"129\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzF_prWLgK-j_w8NCN0GuUjYvouOVSmsY6zMTiABHaD_KZQjE8GafCIw8pjBRCiQNAE\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNocGliRzlpTFdadmNpMWtaV3hwYldsMFpYSnpMVnhrYVhJeFhBPT0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMVxcIl19\"\n      }\n    },\n    {\n      \"ID\": \"bae7f8f609bf9ef2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=ChpibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXA%3D%3D\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"129\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyAGbTjcrFye2NG-kf51RTwBLdDyiKDU7_QAwT1e5APHGUQlXUOCEWN1b5KxgZ49xRy\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNocGliRzlpTFdadmNpMWtaV3hwYldsMFpYSnpMVnhrYVhJeVhBPT0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kZWxpbWl0ZXJzLVxcZGlyMlxcIl19\"\n      }\n    },\n    {\n      \"ID\": \"8f3828b25ec1c297\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=ChpibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIyXA%3D%3D\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"875\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwI7EmHXKhi_zEcVyi3M-gl0bScDQCcVKj23zRb-VFgF9hXgz21jiayT9gPpchGG9iS\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLVxcZi50eHQvMTU1MjU4MTUwNTY3NjkyMSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2YudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNmLnR4dD9nZW5lcmF0aW9uPTE1NTI1ODE1MDU2NzY5MjEmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxmLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU1MjU4MTUwNTY3NjkyMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1Buc2hlbUlndUVDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS42NzZaIiwidXBkYXRlZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS42NzZaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDMtMTRUMTY6Mzg6MjUuNjc2WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"bf51635f3dca7de2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-delimiters-%5Cdir2%5Ce.txt?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxv0sxvbU9tm2OAxoerO6J3Lbw61Ie6KDOVd-QhEITNsAsGCQV-eXzU25RwzILZUi1-\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"17cae151d454d89f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%5C\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%5C\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"919\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyUhi2oneAtMiveGyypWbzs_8bkesK-prpS0R8cEK6NRpfgBRvP4Vlof4fgTFRWEuVm\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjFcXCJdLCJpdGVtcyI6W3sia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtXFxmLnR4dC8xNTUyNTgxNTA1Njc2OTIxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTVDZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2YudHh0P2dlbmVyYXRpb249MTU1MjU4MTUwNTY3NjkyMSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy1cXGYudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTUyNTgxNTA1Njc2OTIxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDUG5zaGVtSWd1RUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjY3NloiLCJ1cGRhdGVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS42NzZaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAzLTE0VDE2OjM4OjI1LjY3NloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMy0xNFQxNjozODoyNS42NzZaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4f79853b04a1d55f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-delimiters-%5Cdir2%5Ce.txt\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIyXFxlLnR4dCJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"864\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:52 GMT\"\n          ],\n          \"Etag\": [\n            \"CIDm3vWerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxsB3vz-Ffmz04X68EhDfUlPwHMSbl6k16oAkehIrgdh9W__Bz18K2JRlF3QEqUcfl2\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy1cXGRpcjJcXGUudHh0LzE3NzM5MzI4NzI0NDY3MjAiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lNUNkaXIyJTVDZS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSU1Q2RpcjIlNUNlLnR4dD9nZW5lcmF0aW9uPTE3NzM5MzI4NzI0NDY3MjAmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtXFxkaXIyXFxlLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3MjQ0NjcyMCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0lEbTN2V2VySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowNzo1Mi40NTBaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTIuNDUwWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowNzo1Mi40NTBaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTIuNDUwWiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestListDelimiters/fwdslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghGEsfdXwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d28959b72b613ac5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5242\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzh7mPpx7HCrjszFn3AK9RtiyKKSs74HJgGOP2NFToaHMwtVO-WNUulHTpb3xVmkBxw\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0LzE1NDk2NjA5NDA1NTQ4MTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGYS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZhLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDA1NTQ4MTgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYS50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NDA1NTQ4MTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNS2tpZStJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjAuNTU0WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIwLjU1NFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjAuNTU0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIwLjU1NFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2IudHh0LzE1NDk2NjA5NDEwOTk5NjIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGYi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZiLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDEwOTk5NjImYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NDEwOTk5NjIiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNMckhxdStJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuMDk5WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIxLjA5OVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuMDk5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIxLjA5OVoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dC8xNTQ5NjYwOTQxNTYwNDE3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMSUyRnN1YmRpciUyRmMudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGc3ViZGlyJTJGYy50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTQxNTYwNDE3JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk0MTU2MDQxNyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ09IVXh1K0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS41NTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuNTU5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS41NTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuNTU5WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0LzE1NDk2NjA5NDIyMjE2NTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGc3ViZGlyJTJGZC50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZzdWJkaXIlMkZkLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDIyMjE2NTgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQyMjIxNjU4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTnFDNysrSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIyLjIyMVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMi4yMjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIyLjIyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMi4yMjFaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi9lLnR4dC8xNzY0NjE4MDQ3MzE5OTUwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMiUyRmUudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIyJTJGZS50eHQ/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ3MzE5OTUwJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ3MzE5OTUwIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSTdmLzc2U25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ3LjMyMloiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0Ny4zMjJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ3LjMyMloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0Ny4zMjJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQvMTU0OTY2MDk0MzQwNTIwOCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmYudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZmLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDM0MDUyMDgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQzNDA1MjA4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSmlodC9DSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMy40MDNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMy40MDNaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3ae55538123dcb27\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"5242\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwnJeb7rzfeYqTqap99PZTLZpWVorRvrD-Kfi8sJZHOSbnnxgp0jPWr-8IlpvzMfDSa\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0LzE1NDk2NjA5NDA1NTQ4MTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGYS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZhLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDA1NTQ4MTgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYS50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NDA1NTQ4MTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNS2tpZStJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjAuNTU0WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIwLjU1NFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjAuNTU0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIwLjU1NFoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2IudHh0LzE1NDk2NjA5NDEwOTk5NjIiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGYi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZiLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDEwOTk5NjImYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NDEwOTk5NjIiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNMckhxdStJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuMDk5WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIxLjA5OVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuMDk5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIxLjA5OVoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dC8xNTQ5NjYwOTQxNTYwNDE3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMSUyRnN1YmRpciUyRmMudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGc3ViZGlyJTJGYy50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTQxNTYwNDE3JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk0MTU2MDQxNyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ09IVXh1K0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS41NTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuNTU5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS41NTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuNTU5WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0LzE1NDk2NjA5NDIyMjE2NTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGc3ViZGlyJTJGZC50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZzdWJkaXIlMkZkLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDIyMjE2NTgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQyMjIxNjU4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTnFDNysrSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIyLjIyMVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMi4yMjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIyLjIyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMi4yMjFaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi9lLnR4dC8xNzY0NjE4MDQ3MzE5OTUwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMiUyRmUudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIyJTJGZS50eHQ/Z2VuZXJhdGlvbj0xNzY0NjE4MDQ3MzE5OTUwJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzY0NjE4MDQ3MzE5OTUwIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSTdmLzc2U25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ3LjMyMloiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0Ny4zMjJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ3LjMyMloiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MDo0Ny4zMjJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQvMTU0OTY2MDk0MzQwNTIwOCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmYudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZmLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDM0MDUyMDgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQzNDA1MjA4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSmlodC9DSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMy40MDNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMy40MDNaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"e4bda4a9c8a71cba\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"944\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzX6Th4T6u8CcS7DL7CLCPTXKb3pdtVAC-Y33rJ2En_lnZNGDkhxjUs-FlTfPtvOLGD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS8iLCJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLyJdLCJpdGVtcyI6W3sia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0LzE1NDk2NjA5NDM0MDUyMDgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZmLnR4dCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZi50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTQzNDA1MjA4JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk0MzQwNTIwOCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0ppaHQvQ0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMy40MDNaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjMuNDAzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMy40MDNaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MjMuNDAzWiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d43a3c509f80e93f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2Fdir1%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1807\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzk_0Co62G369iehBBZrq8irHdHhVjVugZosm_IXulE0tL4LQ9sF0SkpmLgKA2gXzgL\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvIl0sIml0ZW1zIjpbeyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9hLnR4dC8xNTQ5NjYwOTQwNTU0ODE4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMSUyRmEudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGYS50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTQwNTU0ODE4JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQwNTU0ODE4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTUtraWUrSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIwLjU1NFoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMC41NTRaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIwLjU1NFoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMC41NTRaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9iLnR4dC8xNTQ5NjYwOTQxMDk5OTYyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMSUyRmIudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGYi50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTQxMDk5OTYyJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2IudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQxMDk5OTYyIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTHJIcXUrSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIxLjA5OVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS4wOTlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIxLjA5OVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS4wOTlaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"a0e2a27f0b9e7423\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2Fdir1%2Fsubdir%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1822\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxaYSpjIFi9Wh0OQOtK-4FtI9guvHkRIVfJvV_ox_F2SXKtdOR3Ky_nZ1MnIWLmipTD\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dC8xNTQ5NjYwOTQxNTYwNDE3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMSUyRnN1YmRpciUyRmMudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGc3ViZGlyJTJGYy50eHQ/Z2VuZXJhdGlvbj0xNTQ5NjYwOTQxNTYwNDE3JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY2MDk0MTU2MDQxNyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ09IVXh1K0lyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS41NTlaIiwidXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuNTU5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMS41NTlaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDhUMjE6MjI6MjEuNTU5WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0LzE1NDk2NjA5NDIyMjE2NTgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIxJTJGc3ViZGlyJTJGZC50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjElMkZzdWJkaXIlMkZkLnR4dD9nZW5lcmF0aW9uPTE1NDk2NjA5NDIyMjE2NTgmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjYwOTQyMjIxNjU4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTnFDNysrSXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIyLjIyMVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMi4yMjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIyLjIyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOFQyMToyMjoyMi4yMjFaIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7c29491eb442fff9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2Fdir2%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"897\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxkWNcROY-a8MuvCM6apzNPY5j8c1R-vi-pz_6N1F_omO9nz2azQ2Ywj1j_Cw4-VQYb\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0LzE3NjQ2MTgwNDczMTk5NTAiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIyJTJGZS50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmRpcjIlMkZlLnR4dD9nZW5lcmF0aW9uPTE3NjQ2MTgwNDczMTk5NTAmYWx0PW1lZGlhIiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNDczMTk5NTAiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNJN2YvNzZTblpFREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDcuMzIyWiIsInVwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ3LjMyMloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjUtMTItMDFUMTk6NDA6NDcuMzIyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI1LTEyLTAxVDE5OjQwOjQ3LjMyMloifV19\"\n      }\n    },\n    {\n      \"ID\": \"3891916837132c41\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"127\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxlQZegb3Qqs_gBzG5i5REL4IFdnEHFt_zjLx43ohugZUWAAjWIrY5QQ1Q4vzM6cFKE\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNocGliRzlpTFdadmNpMWtaV3hwYldsMFpYSnpMUzlrYVhJeEx3PT0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLyJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"c976e6b13c50ef26\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=ChpibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLw%3D%3D\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"127\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxRYTOKsVFW-Xx6-irLgkivSh2NSSAYItOAhrIYXVh9CqzI8ze_OyEf60oraaOnb0ie\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNocGliRzlpTFdadmNpMWtaV3hwYldsMFpYSnpMUzlrYVhJeUx3PT0iLCJwcmVmaXhlcyI6WyJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLyJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"8162876ed299cfe9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=ChpibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLw%3D%3D\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"873\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwzewOizx2Znzmd1H3BlsnPmeP274B0DrlDNdYmUZ24vNkOd_6lMyF5hXUDuleKo1j1\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dC8xNTQ5NjYwOTQzNDA1MjA4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmYudHh0P2dlbmVyYXRpb249MTU0OTY2MDk0MzQwNTIwOCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NDM0MDUyMDgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNKaWh0L0NJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjMuNDAzWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjMuNDAzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oifV19\"\n      }\n    },\n    {\n      \"ID\": \"3baca33734bf1972\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-delimiters-%2Fdir2%2Fe.txt?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxvf4GNxsa2XwWmxU2v6vrxuF2rxZETV-kRx6FAfhcOLI2oJRaD33oSkrl4vlb1hvL-\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c4f0b302771d73e9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=%2F\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-delimiters-%2F\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"915\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyxWPqRTS8e0xXG3b-374TDRdKmmSJ9ywqdJfoPEYc1NR8zddmK5k4rFJvnSurCJ9mj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwicHJlZml4ZXMiOlsiYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS8iXSwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dC8xNTQ5NjYwOTQzNDA1MjA4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZi50eHQiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1kZWxpbWl0ZXJzLSUyRmYudHh0P2dlbmVyYXRpb249MTU0OTY2MDk0MzQwNTIwOCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NjA5NDM0MDUyMDgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNKaWh0L0NJcmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjMuNDAzWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDhUMjE6MjI6MjMuNDAzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA4VDIxOjIyOjIzLjQwM1oifV19\"\n      }\n    },\n    {\n      \"ID\": \"8210cc87a1582494\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-delimiters-%2Fdir2%2Fe.txt\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"860\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:51 GMT\"\n          ],\n          \"Etag\": [\n            \"COyEnvWerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy66AgurmcH0NfOyaE2hqQyRTh9uYZQL7nGyfCajRp6zSw1Tsfs0KrdglVcR7_CuOtP\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi9lLnR4dC8xNzczOTMyODcxMzg1NzA4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLWRlbGltaXRlcnMtJTJGZGlyMiUyRmUudHh0IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItZGVsaW1pdGVycy0lMkZkaXIyJTJGZS50eHQ/Z2VuZXJhdGlvbj0xNzczOTMyODcxMzg1NzA4JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODcxMzg1NzA4IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDT3lFbnZXZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjUxLjM4N1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowNzo1MS4zODdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjUxLjM4N1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowNzo1MS4zODdaIn0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestListWeirdKeys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghGAy8FYAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ba8aa1e5365d76df\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=list-weirdkeys-\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"15938\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyn0wjhSI8NU6IXgG1_KsWvuK2BnPjTkL8Szj91Tna_JcVqt201dNoUx_J8Bwdfzrzv\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy1cdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZi8xNTQ5NjcxMDA2NzcxOTI1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtJTAwJTAxJTAyJTAzJTA0JTA1JTA2JTA3JTA4JTA5X18weGFfXyUwQiUwQ19fMHhkX18lMEUlMEY/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA2NzcxOTI1JmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy1cdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNjc3MTkyNSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ05XMWdxK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi43NzFaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNzcxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi43NzFaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNzcxWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLVx1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZi8xNTQ5NjcxMDA3OTQ1NTExIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUxMCUxMSUxMiUxMyUxNCUxNSUxNiUxNyUxOCUxOSUxQSUxQiUxQyUxRCUxRSUxRiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUxMCUxMSUxMiUxMyUxNCUxNSUxNiUxNyUxOCUxOSUxQSUxQiUxQyUxRCUxRSUxRj9nZW5lcmF0aW9uPTE1NDk2NzEwMDc5NDU1MTEmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLVx1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzk0NTUxMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0tlR3lxK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy45NDVaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuOTQ1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy45NDVaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuOTQ1WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLSAhXCIjJCUmJygpKissLS4vLzE1NDk2NzEwMDczOTIxMTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtJTIwISUyMiUyMyQlMjUmJygpKiUyQiwtLiUyRiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUyMCElMjIlMjMkJTI1JicoKSolMkIsLS4lMkY/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA3MzkyMTE2JmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy0gIVwiIyQlJicoKSorLC0uLyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzM5MjExNiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BTaXFLK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zOTFaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzkxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zOTFaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzkxWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLS4uXFxmb29cXC4uXFxiYXJcXC4uXFwuLlxcYmF6Li5cXC8xNTQ5NjcxMDA3NzQwMjI0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLS4uJTVDZm9vJTVDLi4lNUNiYXIlNUMuLiU1Qy4uJTVDYmF6Li4lNUMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0uLiU1Q2ZvbyU1Qy4uJTVDYmFyJTVDLi4lNUMuLiU1Q2Jhei4uJTVDP2dlbmVyYXRpb249MTU0OTY3MTAwNzc0MDIyNCZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA3NzQwMjI0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTURDdmErdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjczOVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy43MzlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjczOVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy43MzlaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtLi5cXGZvb1xcXFxiYXJcXFxcXFxiYXovMTU0OTY3MTAwNjQyNzYyMyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0uLiU1Q2ZvbyU1QyU1Q2JhciU1QyU1QyU1Q2JheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLS4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6P2dlbmVyYXRpb249MTU0OTY3MTAwNjQyNzYyMyZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtLi5cXGZvb1xcXFxiYXJcXFxcXFxiYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDY0Mjc2MjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPZXo3YTZ1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNDI3WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjQyN1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNDI3WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjQyN1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy0uLl9fMHgyZl9fZm9vLy4uX18weDJmX19iYXIvLi5fXzB4MmZfXy4uX18weDJmX19iYXouLl9fMHgyZl9fLzE1NDk2NzEwMDcwOTQzNjgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18iLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0uLl9fMHgyZl9fZm9vJTJGLi5fXzB4MmZfX2JhciUyRi4uX18weDJmX18uLl9fMHgyZl9fYmF6Li5fXzB4MmZfXz9nZW5lcmF0aW9uPTE1NDk2NzEwMDcwOTQzNjgmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLS4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18iLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDcwOTQzNjgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPQ01scSt1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMDkzWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjA5M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMDkzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjA5M1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy0xMjM0NS8xNTQ5NjcxMDA3MzEyNjgxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLTEyMzQ1IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtMTIzNDU/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA3MzEyNjgxJmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy0xMjM0NSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzMxMjY4MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0ttMm82K3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zMTJaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzEyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zMTJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzEyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLTo7XHUwMDNjPVx1MDAzZT8vMTU0OTY3MTAwODA2NjMxNyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy06OyUzQz0lM0UlM0YiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy06OyUzQz0lM0UlM0Y/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA4MDY2MzE3JmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy06O1x1MDAzYz1cdTAwM2U/IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA4MDY2MzE3IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSTIyMGErdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjA2NVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowOC4wNjVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjA2NVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowOC4wNjVaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtQC8xNTQ5NjcxMDA3NTAyMTQxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLUAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1AP2dlbmVyYXRpb249MTU0OTY3MTAwNzUwMjE0MSZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtQCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzUwMjE0MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0wzK3JxK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy41MDFaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuNTAxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy41MDFaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuNTAxWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLVtcXF1eXy8xNTQ5NjcxMDA2MTEzMzA0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU1QiU1QyU1RCU1RV8iLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0lNUIlNUMlNUQlNUVfP2dlbmVyYXRpb249MTU0OTY3MTAwNjExMzMwNCZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtW1xcXV5fIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA2MTEzMzA0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSmljMnE2dXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjExMloiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4xMTJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjExMloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4xMTJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtYC8xNTQ5NjcxMDA4MTYzMTY1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU2MCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU2MD9nZW5lcmF0aW9uPTE1NDk2NzEwMDgxNjMxNjUmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDgxNjMxNjUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNOMnExNit1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDguMTYyWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjE2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDguMTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjE2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy1mb28gYmFyIGJhei8xNTQ5NjcxMDA3MjAzNjAwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMGJhciUyMGJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMGJhciUyMGJhej9nZW5lcmF0aW9uPTE1NDk2NzEwMDcyMDM2MDAmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWZvbyBiYXIgYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA3MjAzNjAwIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSkRpbksrdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjIwM1oiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4yMDNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjIwM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4yMDNaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtZm9vXCJiYXJcImJhei8xNTQ5NjcxMDA2NTUyMjg4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMmJhciUyMmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMmJhciUyMmJhej9nZW5lcmF0aW9uPTE1NDk2NzEwMDY1NTIyODgmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWZvb1wiYmFyXCJiYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDY1NTIyODgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPQ0I5YTZ1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNTUxWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjU1MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNTUxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjU1MVoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy1mb28vL2Jhci8vL2Jhei8xNTQ5NjcxMDA3NjMzMTg2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyRiUyRmJhciUyRiUyRiUyRmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyRiUyRmJhciUyRiUyRiUyRmJhej9nZW5lcmF0aW9uPTE1NDk2NzEwMDc2MzMxODYmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWZvby8vYmFyLy8vYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA3NjMzMTg2IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS0wrdHErdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjYzMloiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy42MzJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjYzMloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy42MzJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtZm9vL2Jhci9iYXovMTU0OTY3MTAwNTk5MjY3MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lMkZiYXIlMkZiYXoiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lMkZiYXIlMkZiYXo/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA1OTkyNjcxJmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy1mb28vYmFyL2JheiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNTk5MjY3MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ04vdDBxNnVyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNS45OTJaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDUuOTkyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNS45OTJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDUuOTkyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLWZvb1xcYmFyXFxiYXovMTU0OTY3MTAwNjMyMjM2MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lNUNiYXIlNUNiYXoiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lNUNiYXIlNUNiYXo/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA2MzIyMzYxJmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy1mb29cXGJhclxcYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA2MzIyMzYxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTG45NXE2dXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjMyMVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4zMjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjMyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4zMjFaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMte3x9flx1MDA3Zi8xNTQ5NjcxMDA2ODc3MTE3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU3QiU3QyU3RH4lN0YiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0lN0IlN0MlN0R+JTdGP2dlbmVyYXRpb249MTU0OTY3MTAwNjg3NzExNyZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMte3x9flx1MDA3ZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNjg3NzExNyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0wzcmlLK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi44NzZaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuODc2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi44NzZaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuODc2WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLeKYuuKYuuKYui8xNTQ5NjcxMDA2NjY3NzE2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSVFMiU5OCVCQSVFMiU5OCVCQSVFMiU5OCVCQSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSVFMiU5OCVCQSVFMiU5OCVCQSVFMiU5OCVCQT9nZW5lcmF0aW9uPTE1NDk2NzEwMDY2Njc3MTYmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLeKYuuKYuuKYuiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNjY2NzcxNiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ01TSC9LNnVyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi42NjdaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNjY3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi42NjdaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNjY3WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"821fdecc0884b01b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=list-weirdkeys-\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"15938\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:50 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxw_sD_CZbyPpxUzRXsOOzH0c3Hl5EJH8c-PKr7jcIcrVoz_I2-xRTdmSW317OpU0a5\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy1cdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZi8xNTQ5NjcxMDA2NzcxOTI1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOV9fMHhhX18lMEIlMENfXzB4ZF9fJTBFJTBGIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtJTAwJTAxJTAyJTAzJTA0JTA1JTA2JTA3JTA4JTA5X18weGFfXyUwQiUwQ19fMHhkX18lMEUlMEY/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA2NzcxOTI1JmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy1cdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0X18weGFfX1x1MDAwYlxmX18weGRfX1x1MDAwZVx1MDAwZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNjc3MTkyNSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ05XMWdxK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi43NzFaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNzcxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi43NzFaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNzcxWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLVx1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZi8xNTQ5NjcxMDA3OTQ1NTExIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUxMCUxMSUxMiUxMyUxNCUxNSUxNiUxNyUxOCUxOSUxQSUxQiUxQyUxRCUxRSUxRiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUxMCUxMSUxMiUxMyUxNCUxNSUxNiUxNyUxOCUxOSUxQSUxQiUxQyUxRCUxRSUxRj9nZW5lcmF0aW9uPTE1NDk2NzEwMDc5NDU1MTEmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLVx1MDAxMFx1MDAxMVx1MDAxMlx1MDAxM1x1MDAxNFx1MDAxNVx1MDAxNlx1MDAxN1x1MDAxOFx1MDAxOVx1MDAxYVx1MDAxYlx1MDAxY1x1MDAxZFx1MDAxZVx1MDAxZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzk0NTUxMSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0tlR3lxK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy45NDVaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuOTQ1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy45NDVaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuOTQ1WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLSAhXCIjJCUmJygpKissLS4vLzE1NDk2NzEwMDczOTIxMTYiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtJTIwISUyMiUyMyQlMjUmJygpKiUyQiwtLiUyRiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSUyMCElMjIlMjMkJTI1JicoKSolMkIsLS4lMkY/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA3MzkyMTE2JmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy0gIVwiIyQlJicoKSorLC0uLyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzM5MjExNiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ1BTaXFLK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zOTFaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzkxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zOTFaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzkxWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLS4uXFxmb29cXC4uXFxiYXJcXC4uXFwuLlxcYmF6Li5cXC8xNTQ5NjcxMDA3NzQwMjI0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLS4uJTVDZm9vJTVDLi4lNUNiYXIlNUMuLiU1Qy4uJTVDYmF6Li4lNUMiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0uLiU1Q2ZvbyU1Qy4uJTVDYmFyJTVDLi4lNUMuLiU1Q2Jhei4uJTVDP2dlbmVyYXRpb249MTU0OTY3MTAwNzc0MDIyNCZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA3NzQwMjI0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTURDdmErdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjczOVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy43MzlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjczOVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy43MzlaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtLi5cXGZvb1xcXFxiYXJcXFxcXFxiYXovMTU0OTY3MTAwNjQyNzYyMyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0uLiU1Q2ZvbyU1QyU1Q2JhciU1QyU1QyU1Q2JheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLS4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6P2dlbmVyYXRpb249MTU0OTY3MTAwNjQyNzYyMyZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtLi5cXGZvb1xcXFxiYXJcXFxcXFxiYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDY0Mjc2MjMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPZXo3YTZ1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNDI3WiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjQyN1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNDI3WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjQyN1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy0uLl9fMHgyZl9fZm9vLy4uX18weDJmX19iYXIvLi5fXzB4MmZfXy4uX18weDJmX19iYXouLl9fMHgyZl9fLzE1NDk2NzEwMDcwOTQzNjgiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtLi5fXzB4MmZfX2ZvbyUyRi4uX18weDJmX19iYXIlMkYuLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18iLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0uLl9fMHgyZl9fZm9vJTJGLi5fXzB4MmZfX2JhciUyRi4uX18weDJmX18uLl9fMHgyZl9fYmF6Li5fXzB4MmZfXz9nZW5lcmF0aW9uPTE1NDk2NzEwMDcwOTQzNjgmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLS4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX18iLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDcwOTQzNjgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPQ01scSt1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMDkzWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjA5M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMDkzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjA5M1oifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy0xMjM0NS8xNTQ5NjcxMDA3MzEyNjgxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLTEyMzQ1IiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vbGlzdC13ZWlyZGtleXMtMTIzNDU/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA3MzEyNjgxJmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy0xMjM0NSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzMxMjY4MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0ttMm82K3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zMTJaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzEyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4zMTJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuMzEyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLTo7XHUwMDNjPVx1MDAzZT8vMTU0OTY3MTAwODA2NjMxNyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy06OyUzQz0lM0UlM0YiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy06OyUzQz0lM0UlM0Y/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA4MDY2MzE3JmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy06O1x1MDAzYz1cdTAwM2U/IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA4MDY2MzE3IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSTIyMGErdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjA2NVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowOC4wNjVaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjA2NVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowOC4wNjVaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtQC8xNTQ5NjcxMDA3NTAyMTQxIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLUAiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1AP2dlbmVyYXRpb249MTU0OTY3MTAwNzUwMjE0MSZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtQCIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNzUwMjE0MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0wzK3JxK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy41MDFaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuNTAxWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy41MDFaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDcuNTAxWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLVtcXF1eXy8xNTQ5NjcxMDA2MTEzMzA0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU1QiU1QyU1RCU1RV8iLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0lNUIlNUMlNUQlNUVfP2dlbmVyYXRpb249MTU0OTY3MTAwNjExMzMwNCZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMtW1xcXV5fIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA2MTEzMzA0IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSmljMnE2dXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjExMloiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4xMTJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjExMloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4xMTJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtYC8xNTQ5NjcxMDA4MTYzMTY1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU2MCIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU2MD9nZW5lcmF0aW9uPTE1NDk2NzEwMDgxNjMxNjUmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWAiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDgxNjMxNjUiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNOMnExNit1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDguMTYyWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjE2MloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDguMTYyWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA4LjE2MloifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy1mb28gYmFyIGJhei8xNTQ5NjcxMDA3MjAzNjAwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMGJhciUyMGJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMGJhciUyMGJhej9nZW5lcmF0aW9uPTE1NDk2NzEwMDcyMDM2MDAmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWZvbyBiYXIgYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA3MjAzNjAwIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDSkRpbksrdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjIwM1oiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4yMDNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjIwM1oiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy4yMDNaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtZm9vXCJiYXJcImJhei8xNTQ5NjcxMDA2NTUyMjg4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMmJhciUyMmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyMmJhciUyMmJhej9nZW5lcmF0aW9uPTE1NDk2NzEwMDY1NTIyODgmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWZvb1wiYmFyXCJiYXoiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE1NDk2NzEwMDY1NTIyODgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPQ0I5YTZ1cmVBQ0VBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNTUxWiIsInVwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjU1MVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNTUxWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjU1MVoifSx7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9saXN0LXdlaXJka2V5cy1mb28vL2Jhci8vL2Jhei8xNTQ5NjcxMDA3NjMzMTg2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyRiUyRmJhciUyRiUyRiUyRmJheiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLWZvbyUyRiUyRmJhciUyRiUyRiUyRmJhej9nZW5lcmF0aW9uPTE1NDk2NzEwMDc2MzMxODYmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLWZvby8vYmFyLy8vYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA3NjMzMTg2IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDS0wrdHErdXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjYzMloiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy42MzJaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA3LjYzMloiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNy42MzJaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMtZm9vL2Jhci9iYXovMTU0OTY3MTAwNTk5MjY3MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lMkZiYXIlMkZiYXoiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lMkZiYXIlMkZiYXo/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA1OTkyNjcxJmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy1mb28vYmFyL2JheiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNTk5MjY3MSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ04vdDBxNnVyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNS45OTJaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDUuOTkyWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNS45OTJaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDUuOTkyWiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLWZvb1xcYmFyXFxiYXovMTU0OTY3MTAwNjMyMjM2MSIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lNUNiYXIlNUNiYXoiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy1mb28lNUNiYXIlNUNiYXo/Z2VuZXJhdGlvbj0xNTQ5NjcxMDA2MzIyMzYxJmFsdD1tZWRpYSIsIm5hbWUiOiJsaXN0LXdlaXJka2V5cy1mb29cXGJhclxcYmF6IiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNTQ5NjcxMDA2MzIyMzYxIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTG45NXE2dXJlQUNFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjMyMVoiLCJ1cGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4zMjFaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDE5LTAyLTA5VDAwOjEwOjA2LjMyMVoiLCJ0aW1lRmluYWxpemVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi4zMjFaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvbGlzdC13ZWlyZGtleXMte3x9flx1MDA3Zi8xNTQ5NjcxMDA2ODc3MTE3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSU3QiU3QyU3RH4lN0YiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9saXN0LXdlaXJka2V5cy0lN0IlN0MlN0R+JTdGP2dlbmVyYXRpb249MTU0OTY3MTAwNjg3NzExNyZhbHQ9bWVkaWEiLCJuYW1lIjoibGlzdC13ZWlyZGtleXMte3x9flx1MDA3ZiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNjg3NzExNyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0wzcmlLK3VyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi44NzZaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuODc2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi44NzZaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuODc2WiJ9LHsia2luZCI6InN0b3JhZ2Ujb2JqZWN0IiwiaWQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2xpc3Qtd2VpcmRrZXlzLeKYuuKYuuKYui8xNTQ5NjcxMDA2NjY3NzE2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSVFMiU5OCVCQSVFMiU5OCVCQSVFMiU5OCVCQSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2xpc3Qtd2VpcmRrZXlzLSVFMiU5OCVCQSVFMiU5OCVCQSVFMiU5OCVCQT9nZW5lcmF0aW9uPTE1NDk2NzEwMDY2Njc3MTYmYWx0PW1lZGlhIiwibmFtZSI6Imxpc3Qtd2VpcmRrZXlzLeKYuuKYuuKYuiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTU0OTY3MTAwNjY2NzcxNiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ01TSC9LNnVyZUFDRUFFPSIsInRpbWVDcmVhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi42NjdaIiwidXBkYXRlZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNjY3WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAxOS0wMi0wOVQwMDoxMDowNi42NjdaIiwidGltZUZpbmFsaXplZCI6IjIwMTktMDItMDlUMDA6MTA6MDYuNjY3WiJ9XX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMD5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghYBz0Y8QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9262cdd1d6d6f2e7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-md5-aaa\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLW1kNS1hYWEifQo=\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Etag\": [\n            \"CLWipP2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWySbHlinEdJiKr85uv2zqXOBY945NUzxcmKVPizME_tHb6K8xv3iH7mfSLUeHp5P7G4\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWQ1LWFhYS8xNzczOTMyODg4MjY1MDEzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1kNS1hYWEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZDUtYWFhP2dlbmVyYXRpb249MTc3MzkzMjg4ODI2NTAxMyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWQ1LWFhYSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4ODI2NTAxMyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0xXaXBQMmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4yNjhaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMjY4WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4yNjhaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMjY4WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"fcac1bbe1a013889\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-md5-bbb\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoieGxkMnNnPT0iLCJtZDVIYXNoIjoiYWZxclltZzFBcFZWRGVmVmg3d3lQUT09IiwibmFtZSI6ImJsb2ItZm9yLW1kNS1iYmIifQo=\",\n          \"Z29vZGJ5ZQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Etag\": [\n            \"CO+gqv2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyQVPfoQdpOp5MeNtT3ir4S-wwda19cpEujy0B39oe5t-C-25-1wQngwgF63cz5Qgwc\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWQ1LWJiYi8xNzczOTMyODg4MzYzMTE5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1kNS1iYmIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZDUtYmJiP2dlbmVyYXRpb249MTc3MzkzMjg4ODM2MzExOSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWQ1LWJiYiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4ODM2MzExOSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjciLCJtZDVIYXNoIjoiYWZxclltZzFBcFZWRGVmVmg3d3lQUT09IiwiY3JjMzJjIjoieGxkMnNnPT0iLCJldGFnIjoiQ08rZ3F2MmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4zNjZaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMzY2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4zNjZaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMzY2WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"8de327ecd34d57e2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-md5-aaa?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Etag\": [\n            \"CLWipP2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyRV1UrNHHZxeP92ySKvrflD0IehR6Q3n3R-vNsYuuJ4HSBdbzqFr5XOTPTrejCaQYf\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWQ1LWFhYS8xNzczOTMyODg4MjY1MDEzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1kNS1hYWEiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZDUtYWFhP2dlbmVyYXRpb249MTc3MzkzMjg4ODI2NTAxMyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWQ1LWFhYSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4ODI2NTAxMyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjUiLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJldGFnIjoiQ0xXaXBQMmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4yNjhaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMjY4WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4yNjhaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMjY4WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"b4ff39b425f38e7c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-md5-bbb?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Etag\": [\n            \"CO+gqv2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwYAO9NlQkmUreToBFnDnG5uRxhWXUht-uJvflC5NLuMhB6kOVGX2p-BoZfwgD_Z6YM\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWQ1LWJiYi8xNzczOTMyODg4MzYzMTE5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1kNS1iYmIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZDUtYmJiP2dlbmVyYXRpb249MTc3MzkzMjg4ODM2MzExOSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWQ1LWJiYiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4ODM2MzExOSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjciLCJtZDVIYXNoIjoiYWZxclltZzFBcFZWRGVmVmg3d3lQUT09IiwiY3JjMzJjIjoieGxkMnNnPT0iLCJldGFnIjoiQ08rZ3F2MmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4zNjZaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMzY2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4zNjZaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMzY2WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"ec35c57bcbb2020b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1000\\u0026pageToken=\\u0026prefix=blob-for-md5-\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1622\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwmXWlAuYHAiLvdSmxFnwreeddNjw354BCJdwiEnfuuzNKU8GwwW0miGlW0PvWC_UHG\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1tZDUtYWFhLzE3NzM5MzI4ODgyNjUwMTMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItbWQ1LWFhYSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1kNS1hYWE/Z2VuZXJhdGlvbj0xNzczOTMyODg4MjY1MDEzJmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1tZDUtYWFhIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODg4MjY1MDEzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNSIsIm1kNUhhc2giOiJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLCJjcmMzMmMiOiJtbkc3VEE9PSIsImV0YWciOiJDTFdpcFAyZXJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA4LjI2OFoiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4yNjhaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA4LjI2OFoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4yNjhaIn0seyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWQ1LWJiYi8xNzczOTMyODg4MzYzMTE5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1kNS1iYmIiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZDUtYmJiP2dlbmVyYXRpb249MTc3MzkzMjg4ODM2MzExOSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWQ1LWJiYiIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg4ODM2MzExOSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjciLCJtZDVIYXNoIjoiYWZxclltZzFBcFZWRGVmVmg3d3lQUT09IiwiY3JjMzJjIjoieGxkMnNnPT0iLCJldGFnIjoiQ08rZ3F2MmVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4zNjZaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMzY2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowOC4zNjZaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDguMzY2WiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"3ab85c6bba29860c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-md5-bbb?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxVAOK_i0n6QV5fs_b0JZvh-AEPtI_1K1PeO9t1DK_f4CT2Uj7LRSt5rLB8uvt1KhJ6\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1bdfd198e7745840\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-md5-aaa?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwGlhQjlQylvSKvsfVg6SCIcFuCxgl7l6fsz9_AJnieEXNq4re84t65bAxJi_1yLZTu\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/duplicate_case-insensitive_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghWJcpb1gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/empty.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghWEdlkVwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9ebd1415088baa01\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-metadata\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibmFtZSI6ImJsb2ItZm9yLW1ldGFkYXRhIn0K\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"796\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Etag\": [\n            \"COSwtPyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwHU9P3P1wPu4lXP4_6cYIWrp-xkf4uFIujHjc5iCizG1bDtSybxWzRmMNqQRnrrNBx\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NjQzMTg0NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NjQzMTg0NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODY0MzE4NDQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU3d0UHllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuNDM0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2LjQzNFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuNDM0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2LjQzNFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"7f9b5230a25f654a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"796\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Etag\": [\n            \"COSwtPyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWztSdmipon8n0jJCFeH5s6IN9zk07WDs0AkUjft1-0PMUHTdAEMWJ98Pz8BGTB5fgDQ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NjQzMTg0NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NjQzMTg0NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODY0MzE4NDQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNPU3d0UHllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuNDM0WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2LjQzNFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuNDM0WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2LjQzNFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"28f1608a8b6a99ba\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzo3VAqP68ScNtXllwJZvgdMWADAW95IEBc6R0kNLlul7i8027vLS_AaSBzr8OJuC75\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghWJbsargAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/non-utf8_metadata_key.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghYBx7x6gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/non-utf8_metadata_value.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghYBy/rxwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/valid_metadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghWJdbAzgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e05eb6961b1b1afe\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-metadata\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibWV0YWRhdGEiOnsia2V5X2EiOiJ2YWx1ZS1hIiwia2V5X2IiOiJ2YWx1ZS1iIiwia2V5X2MiOiJ2QWxVZS1jIn0sIm5hbWUiOiJibG9iLWZvci1tZXRhZGF0YSJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"863\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Etag\": [\n            \"CMqsz/yerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwimxM53HdKMAFEprUthiOLkTU-UfDd0Fl-b54VEzXOBWuR1dmgkm6HJAoWdHhhiIXW\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4Njg3MzY3NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4Njg3MzY3NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODY4NzM2NzQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNcXN6L3llckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuODc2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2Ljg3NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuODc2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2Ljg3NloiLCJtZXRhZGF0YSI6eyJrZXlfYSI6InZhbHVlLWEiLCJrZXlfYiI6InZhbHVlLWIiLCJrZXlfYyI6InZBbFVlLWMifX0=\"\n      }\n    },\n    {\n      \"ID\": \"01f7c922e422045c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"863\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Etag\": [\n            \"CMqsz/yerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwiTvqVegudek8KYOSGa5YEFkIIOXrYIXnLaUSmfHZNNnW7H24kSBXnMjy0LzLJFjoP\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4Njg3MzY3NCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4Njg3MzY3NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODY4NzM2NzQiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNNcXN6L3llckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuODc2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2Ljg3NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuODc2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA2Ljg3NloiLCJtZXRhZGF0YSI6eyJrZXlfYSI6InZhbHVlLWEiLCJrZXlfYiI6InZhbHVlLWIiLCJrZXlfYyI6InZBbFVlLWMifX0=\"\n      }\n    },\n    {\n      \"ID\": \"b99f93b8d49bffdf\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwd5qE9k49xB_lc2PG0qZqlRfiMBtmMgPUwbdrZUReRsQTvnxjUfrtA4Xh3Qvzdd3IH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/valid_metadata_with_content_type.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghXGlDr8QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fd8647764f243501\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-metadata\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluIiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibWV0YWRhdGEiOnsiZm9vIjoiYmFyIn0sIm5hbWUiOiJibG9iLWZvci1tZXRhZGF0YSJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"806\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Etag\": [\n            \"CK7h+fyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxGqX0-fU9eT4jTiEVNBjxShVZ6afRxA6IYDSRH_GtmjrqSjGMkxTM46BajZ_I8U1E-\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NzU2ODU1OCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NzU2ODU1OCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODc1Njg1NTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLN2grZnllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuNTcwWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjU3MFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuNTcwWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjU3MFoiLCJtZXRhZGF0YSI6eyJmb28iOiJiYXIifX0=\"\n      }\n    },\n    {\n      \"ID\": \"b212f38f74f07600\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"806\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Etag\": [\n            \"CK7h+fyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxBRFdTLKcZ_UPKc_5q-RiIDP6BstASamk4I-EE1oP-OG7JIrq-UH2VsGw_MEmEzTYY\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NzU2ODU1OCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NzU2ODU1OCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODc1Njg1NTgiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNLN2grZnllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuNTcwWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjU3MFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuNTcwWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjU3MFoiLCJtZXRhZGF0YSI6eyJmb28iOiJiYXIifX0=\"\n      }\n    },\n    {\n      \"ID\": \"c749019fc2970c9c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyIAEOSmUANoFvdvrOhQSC6AKx2uHA_4JUigsxCvDO0UmtY6OhR0p_ilx-OzzVvpa0M\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/valid_metadata_with_empty_body.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghXBSEr5AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"900db741adbba762\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-metadata\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibWV0YWRhdGEiOnsiZm9vIjoiYmFyIn0sIm5hbWUiOiJibG9iLWZvci1tZXRhZGF0YSJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"821\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Etag\": [\n            \"CNeZ5fyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyHieRR1GjzPl99ZeeY82-BYazaBh_Cyat2Sp2n6kOjB5Fkn8l6xjkBOzxESakX0jcP\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NzIzMTcwMyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NzIzMTcwMyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODcyMzE3MDMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNOZVo1ZnllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuMjM2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjIzNloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuMjM2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjIzNloiLCJtZXRhZGF0YSI6eyJmb28iOiJiYXIifX0=\"\n      }\n    },\n    {\n      \"ID\": \"7cf8af48e341ca65\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"821\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Etag\": [\n            \"CNeZ5fyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz29kcTJyFfgPopO-sR_SJ1kBN4-B861PxskZKuUvSjMAmwri5tynL-QBavwD_hb4T1\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NzIzMTcwMyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NzIzMTcwMyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODcyMzE3MDMiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNOZVo1ZnllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuMjM2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjIzNloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuMjM2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjIzNloiLCJtZXRhZGF0YSI6eyJmb28iOiJiYXIifX0=\"\n      }\n    },\n    {\n      \"ID\": \"76a039cee1c31e5f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzEXmL6bAME338eQN-Iu7NCfGTw99SIPGRt2DSWcD3dN9Dh_39G0wlMP7smRB5j82PP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestMetadata/weird_metadata_keys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghXLs0K1gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"36167a094f4c0103\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-metadata\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibW5HN1RBPT0iLCJtZDVIYXNoIjoiWFVGQUtyeExLbmE1Y1oyUkVCZkZrZz09IiwibWV0YWRhdGEiOnsiXHUwMDAwXHUwMDAxXHUwMDAyXHUwMDAzXHUwMDA0XHUwMDA1XHUwMDA2XHUwMDA3XGJcdFxuXHUwMDBiXGZcclx1MDAwZVx1MDAwZiI6Ilx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRcblx1MDAwYlxmXHJcdTAwMGVcdTAwMGYiLCJcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYiOiJcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYiLCIgIVwiIyQlXHUwMDI2JygpKissLS4vIjoiICFcIiMkJVx1MDAyNicoKSorLC0uLyIsIi4uL2Zvby8uLi9iYXIvLi4vLi4vYmF6Li4vIjoiLi4vZm9vLy4uL2Jhci8uLi8uLi9iYXouLi8iLCIuLlxcZm9vXFwuLlxcYmFyXFwuLlxcLi5cXGJhei4uXFwiOiIuLlxcZm9vXFwuLlxcYmFyXFwuLlxcLi5cXGJhei4uXFwiLCIuLlxcZm9vXFxcXGJhclxcXFxcXGJheiI6Ii4uXFxmb29cXFxcYmFyXFxcXFxcYmF6IiwiMTIzNDUiOiIxMjM0NSIsIjo7XHUwMDNjPVx1MDAzZT8iOiI6O1x1MDAzYz1cdTAwM2U/IiwiQCI6IkAiLCJbXFxdXl8iOiJbXFxdXl8iLCJgIjoiYCIsImZvbyBiYXIgYmF6IjoiZm9vIGJhciBiYXoiLCJmb29cImJhclwiYmF6IjoiZm9vXCJiYXJcImJheiIsImZvby8vYmFyLy8vYmF6IjoiZm9vLy9iYXIvLy9iYXoiLCJmb28vYmFyL2JheiI6ImZvby9iYXIvYmF6IiwiZm9vXFxiYXJcXGJheiI6ImZvb1xcYmFyXFxiYXoiLCJ7fH1+fyI6Int8fX5/Iiwi4pi64pi64pi6Ijoi4pi64pi64pi6In0sIm5hbWUiOiJibG9iLWZvci1tZXRhZGF0YSJ9Cg==\",\n          \"aGVsbG8=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"1679\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Etag\": [\n            \"CP/Dj/2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxKr81cW_g4-K_7lBOz5VyYKBL5KG_cWFc5Gbqt1JOvZp_nI-LtS8X7erEGgKc0bFbZ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NzkyNTI0NyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NzkyNTI0NyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODc5MjUyNDciLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQL0RqLzJlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuOTI3WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjkyN1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuOTI3WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjkyN1oiLCJtZXRhZGF0YSI6eyIuLi9mb28vLi4vYmFyLy4uLy4uL2Jhei4uLyI6Ii4uL2Zvby8uLi9iYXIvLi4vLi4vYmF6Li4vIiwiICFcIiMkJSYnKCkqKywtLi8iOiIgIVwiIyQlJicoKSorLC0uLyIsInt8fX5cdTAwN2YiOiJ7fH1+XHUwMDdmIiwi4pi64pi64pi6Ijoi4pi64pi64pi6IiwiLi5cXGZvb1xcXFxiYXJcXFxcXFxiYXoiOiIuLlxcZm9vXFxcXGJhclxcXFxcXGJheiIsIjEyMzQ1IjoiMTIzNDUiLCJAIjoiQCIsImZvbyBiYXIgYmF6IjoiZm9vIGJhciBiYXoiLCJbXFxdXl8iOiJbXFxdXl8iLCI6O1x1MDAzYz1cdTAwM2U/IjoiOjtcdTAwM2M9XHUwMDNlPyIsIlx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRcblx1MDAwYlxmXHJcdTAwMGVcdTAwMGYiOiJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmIiwiXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmIjoiXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmIiwiLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIjoiLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIiwiZm9vXFxiYXJcXGJheiI6ImZvb1xcYmFyXFxiYXoiLCJgIjoiYCIsImZvby9iYXIvYmF6IjoiZm9vL2Jhci9iYXoiLCJmb29cImJhclwiYmF6IjoiZm9vXCJiYXJcImJheiIsImZvby8vYmFyLy8vYmF6IjoiZm9vLy9iYXIvLy9iYXoifX0=\"\n      }\n    },\n    {\n      \"ID\": \"10c268f29aa1f605\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1679\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:07 GMT\"\n          ],\n          \"Etag\": [\n            \"CP/Dj/2erJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy8DmASVC1Frf2eOyNk-tFUOCGkikYdcU26qDNy_sMCbvg4NLcQqkiWlnaiW8PicuLx\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItbWV0YWRhdGEvMTc3MzkzMjg4NzkyNTI0NyIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1tZXRhZGF0YSIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLW1ldGFkYXRhP2dlbmVyYXRpb249MTc3MzkzMjg4NzkyNTI0NyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItbWV0YWRhdGEiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI4ODc5MjUyNDciLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiI1IiwibWQ1SGFzaCI6IlhVRkFLcnhMS25hNWNaMlJFQmZGa2c9PSIsImNyYzMyYyI6Im1uRzdUQT09IiwiZXRhZyI6IkNQL0RqLzJlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuOTI3WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjkyN1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDcuOTI3WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjA3LjkyN1oiLCJtZXRhZGF0YSI6eyIuLi9mb28vLi4vYmFyLy4uLy4uL2Jhei4uLyI6Ii4uL2Zvby8uLi9iYXIvLi4vLi4vYmF6Li4vIiwiICFcIiMkJSYnKCkqKywtLi8iOiIgIVwiIyQlJicoKSorLC0uLyIsInt8fX5cdTAwN2YiOiJ7fH1+XHUwMDdmIiwi4pi64pi64pi6Ijoi4pi64pi64pi6IiwiLi5cXGZvb1xcXFxiYXJcXFxcXFxiYXoiOiIuLlxcZm9vXFxcXGJhclxcXFxcXGJheiIsIjEyMzQ1IjoiMTIzNDUiLCJAIjoiQCIsImZvbyBiYXIgYmF6IjoiZm9vIGJhciBiYXoiLCJbXFxdXl8iOiJbXFxdXl8iLCI6O1x1MDAzYz1cdTAwM2U/IjoiOjtcdTAwM2M9XHUwMDNlPyIsIlx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRcblx1MDAwYlxmXHJcdTAwMGVcdTAwMGYiOiJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmIiwiXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmIjoiXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmIiwiLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIjoiLi5cXGZvb1xcLi5cXGJhclxcLi5cXC4uXFxiYXouLlxcIiwiZm9vXFxiYXJcXGJheiI6ImZvb1xcYmFyXFxiYXoiLCJgIjoiYCIsImZvby9iYXIvYmF6IjoiZm9vL2Jhci9iYXoiLCJmb29cImJhclwiYmF6IjoiZm9vXCJiYXJcImJheiIsImZvby8vYmFyLy8vYmF6IjoiZm9vLy9iYXIvLy9iYXoifX0=\"\n      }\n    },\n    {\n      \"ID\": \"27fba5e39c47cd4b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-metadata?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:08 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWweQL9h1tPvAagldtq4KNlTqN2D3HmpuEZjaayyTBCwxNU2gn3sLmYtZo_I4LgSl-GM\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestNonexistentBucket.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghCHqCu0wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5c9154fa47c0c00e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/bucket-does-not-exist/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"446\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxEAFEYqQ2LNgbmzgzk_vlunc7g4e2tewAKg9-GvZR60B9E7yn2i6A6Hs_7xzDwHa21\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDMsIm1lc3NhZ2UiOiJydmFuZ2VudEBnb29nbGUuY29tIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmxpc3QgYWNjZXNzIHRvIHRoZSBHb29nbGUgQ2xvdWQgU3RvcmFnZSBidWNrZXQuIFBlcm1pc3Npb24gJ3N0b3JhZ2Uub2JqZWN0cy5saXN0JyBkZW5pZWQgb24gcmVzb3VyY2UgKG9yIGl0IG1heSBub3QgZXhpc3QpLiIsImVycm9ycyI6W3sibWVzc2FnZSI6InJ2YW5nZW50QGdvb2dsZS5jb20gZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMubGlzdCBhY2Nlc3MgdG8gdGhlIEdvb2dsZSBDbG91ZCBTdG9yYWdlIGJ1Y2tldC4gUGVybWlzc2lvbiAnc3RvcmFnZS5vYmplY3RzLmxpc3QnIGRlbmllZCBvbiByZXNvdXJjZSAob3IgaXQgbWF5IG5vdCBleGlzdCkuIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoiZm9yYmlkZGVuIn1dfX0=\"\n      }\n    },\n    {\n      \"ID\": \"937f8d1018cac416\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026delimiter=\\u0026endOffset=\\u0026includeFoldersAsPrefixes=false\\u0026includeTrailingDelimiter=false\\u0026matchGlob=\\u0026maxResults=1\\u0026pageToken=\\u0026prefix=\\u0026prettyPrint=false\\u0026projection=full\\u0026startOffset=\\u0026versions=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"1019\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:47 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxoTo-n93Jj6_ZeEuLaNRtBq6L5NqmeAxH1vVuPATT3qRZGj5R52rpC-8JOE6baztrh\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3RzIiwibmV4dFBhZ2VUb2tlbiI6IkNoVmliRzlpTFdadmNpMWpiM0I1YVc1bkxXUmxjM1E9IiwiaXRlbXMiOlt7ImtpbmQiOiJzdG9yYWdlI29iamVjdCIsImlkIjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1jb3B5aW5nLWRlc3QvMTc2NDYxODA2ODkxMjIzNiIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLWRlc3QiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1jb3B5aW5nLWRlc3Q/Z2VuZXJhdGlvbj0xNzY0NjE4MDY4OTEyMjM2JmFsdD1tZWRpYSIsIm5hbWUiOiJibG9iLWZvci1jb3B5aW5nLWRlc3QiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NjQ2MTgwNjg5MTIyMzYiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJzUXFOc1dUZ2RVRUZ0Nm1iNXk0LzVRPT0iLCJjb250ZW50RW5jb2RpbmciOiJpZGVudGl0eSIsImNvbnRlbnREaXNwb3NpdGlvbiI6ImlubGluZSIsImNvbnRlbnRMYW5ndWFnZSI6ImVuIiwiY2FjaGVDb250cm9sIjoibm8tY2FjaGUiLCJjcmMzMmMiOiJhUjJxTHc9PSIsImV0YWciOiJDT3pRcGNtU25aRURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQxOjA4LjkxOVoiLCJ1cGRhdGVkIjoiMjAyNS0xMi0wMVQxOTo0MTowOC45MTlaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI1LTEyLTAxVDE5OjQxOjA4LjkxOVoiLCJ0aW1lRmluYWxpemVkIjoiMjAyNS0xMi0wMVQxOTo0MTowOC45MTlaIiwibWV0YWRhdGEiOnsiZm9vIjoiYmFyIn19XX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/length_0_read.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghLKCIm8wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2606b2d7efccfe75\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTW9WbTZRPT0iLCJtZDVIYXNoIjoiUGZsc1dyNlg4cFo5T0FFSWNBTUtYdz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Etag\": [\n            \"CISprPeerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwk2HpRMTHsiU-6JhZw4lOXpTvZxAHzp7C2X-scVxemRoPJoJ5G0dVZfq0z3176sRRM\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyODc1ODE0MDIwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjg3NTgxNDAyMCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3NTgxNDAyMCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjI3IiwibWQ1SGFzaCI6IlBmbHNXcjZYOHBaOU9BRUljQU1LWHc9PSIsImNyYzMyYyI6Ik1vVm02UT09IiwiZXRhZyI6IkNJU3ByUGVlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTUuODE2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU1LjgxNloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTUuODE2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU1LjgxNloifQ==\"\n      }\n    },\n    {\n      \"ID\": \"c6201f652faac5d7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932875814020\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwi06akhH3XzYX49bZ-GsuaMqaiM4c_h95vjnweirgQ_ljz1-tTRyjXfgLTqFcj84pk\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"be298a6e5862aff3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932875814020\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4xM1J8hG6j_G3P2qpmes64paqrbVXTedKAaDkvcA8G-7JNNkeIlb_FGWmkFyoW8Ly\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fe3b548e010b079e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxJrY06bJOGMQ2T1oTN-ATG1hEi7IMHmfjhqZlilZj1xP34HLPSDJV75zko2mezFKdE\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/negative_offset_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghLKBMCswAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/read_a_part_in_middle.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghML9IPRQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"39558c493552dd0c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTW9WbTZRPT0iLCJtZDVIYXNoIjoiUGZsc1dyNlg4cFo5T0FFSWNBTUtYdz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"CMOJ8feerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxj9_GunpMi5IaNmMSUssQ4-8FMUZr2D2qraP7f0-TAbwgNhUaiPOkpIbHtWfXVDuBj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyODc2OTQwNDgzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjg3Njk0MDQ4MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3Njk0MDQ4MyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjI3IiwibWQ1SGFzaCI6IlBmbHNXcjZYOHBaOU9BRUljQU1LWHc9PSIsImNyYzMyYyI6Ik1vVm02UT09IiwiZXRhZyI6IkNNT0o4ZmVlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTYuOTQzWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU2Ljk0M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTYuOTQzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU2Ljk0M1oifQ==\"\n      }\n    },\n    {\n      \"ID\": \"e57712205af716de\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=10-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876940483\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyvDsAMLt3e-za5KLNkNNWav8OYGtI8CCS6gKP-O-e5w68GbWmbs2Skuv0o6kFC6V0R\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"ffb7d8def959a036\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=10-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876940483\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxhcAnVW7PaVFd7iUiQQcVVsev0Tu_tYoLe4D6U8Zy0yuzikzZItxpbETReSRvaX-P3\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"9b8dcfd419cfa9c3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=14-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876940483\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyF2hKlZVO2Re1Vhcfk23V6N5IXcCww7ZcMayPnTxFJgWuBJMZoKeaN9AwcBEj1ETf-\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"dd39aff7511a408f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=14-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876940483\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx_6ZUfpX8Y2iIpBjLvCEIJ8Uk-fhtIEo84DmKr2BE-pFI0ebGUYAVuz-IE3gWx6e3R\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"b167acc21761ab4d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=12-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"Content-Range\": [\n            \"bytes 12-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876940483\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzvHkcDF6-3m2Gqvk01gJhfUrvbIICabQaCuodVHqRZysVtPqlnaTIyfaRyDVpnv6gd\"\n          ]\n        },\n        \"Body\": \"bW5v\"\n      }\n    },\n    {\n      \"ID\": \"872045415c07f0de\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwx9YxOlUWBSe7o3HQA_io6KGtpB2N_YPwu2Yq5fAW6ascjZCBou4rxmxvyZ3ViS-PI\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/read_from_positive_offset_to_end.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghMBkIhXgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4ccf276c0d5829b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTW9WbTZRPT0iLCJtZDVIYXNoIjoiUGZsc1dyNlg4cFo5T0FFSWNBTUtYdz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"CKiqyPeerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwTK757EnhhJA4wrRRBPA-e-RfpoMYDbm1x50krhpo1StfRVtX9XRqiIy-w_9TBmszQ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyODc2MjcyOTM2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjg3NjI3MjkzNiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3NjI3MjkzNiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjI3IiwibWQ1SGFzaCI6IlBmbHNXcjZYOHBaOU9BRUljQU1LWHc9PSIsImNyYzMyYyI6Ik1vVm02UT09IiwiZXRhZyI6IkNLaXF5UGVlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTYuMjc1WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU2LjI3NVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTYuMjc1WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU2LjI3NVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"44b6c8e2f16d8db1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=10-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876272936\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwnkaduEClf5uPJvA9_kpalU3ac1TBa2nrUK9OHC-2ui9Ajcl1zWwrMtm5kw8bmlAD0\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"c63df22470e7e95f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=10-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876272936\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxmuZ4RqxFcPWIk-6ScmldpdoTi2I7krG9WGekZfQ7WnUFFp42hRsGkOkpfSCtvOZED\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"54e0dbf7016db2b3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=22-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876272936\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyb0OliUhdiR0X5cTQvmljh57FRdm33FN12DVDsT45uQ1wh-ikcGGkilEsdma47otbf\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"3f0fbd675c9e860c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=22-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876272936\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwcgRvY_NT7PZU5-BHnTYE5C7dWwBFRMk1urV_NV_3rvifvwKILGphA3xBBRZlyQs8W\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"f93785e168e59efb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=16-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Range\": [\n            \"bytes 16-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932876272936\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwckxfM8UI1SB_xPS47uoEfoiiF-jwVBqUlJZ7O-1wKGFcVbTpyS6GFQYLmzZVfgOU8\"\n          ]\n        },\n        \"Body\": \"cXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"944f7264fb48f351\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:56 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzCbZaRkUMNmOA4Ew2YzAmDn5ktPqkVx6dK_GmwMW3EXwdo3VkbZP_T4GnSQ9bCZHo9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/read_in_full.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghNHoK5+QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"325d9ca4d4a7ccba\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTW9WbTZRPT0iLCJtZDVIYXNoIjoiUGZsc1dyNlg4cFo5T0FFSWNBTUtYdz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"CJ2MnvierJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwU1VyXLMVkbx-3tstvJfdNRfUnR1LwLZ18HSoFVoUJD8jcH1AKb1TyisPPOAz3gh-q\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyODc3Njc4MTA5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjg3NzY3ODEwOSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3NzY3ODEwOSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjI3IiwibWQ1SGFzaCI6IlBmbHNXcjZYOHBaOU9BRUljQU1LWHc9PSIsImNyYzMyYyI6Ik1vVm02UT09IiwiZXRhZyI6IkNKMk1udmllckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTcuNjgwWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU3LjY4MFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTcuNjgwWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU3LjY4MFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"c962566e216ea452\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932877678109\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxVv25F6howt4w3acoTw1zdGtoEtfgyAcSUqYJsBeYIcSa7xl-sox6BJpMEWefKV6MH\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"0a0d66b782754f2c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932877678109\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw07jE6axGr9cDuymp7iCGxM7JLhZbH6a6qUqv0jjC29edviLcg9XN_RXMrVcUgUd2j\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"d7203a1e678f37a5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932877678109\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxhBkDv1Y5_JKrqZEqv5nHglZ31Z3SArbO9llyzZr2brRfVOm4lTccXGG6BAE0CtwOx\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"38de339facd07623\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932877678109\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyE-BEMRxglhQnZwTQixbVcFkV_b7lPnq9HbyjSmMaVTZa8YIHMs8IZ-Df3dQllhI0M\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"09ec9fddd830beb1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=9-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:07:57 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932877678109\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzPI5g8670Ed4DnkSz4ouGn4innpQWX6npTWSEM08QZYLJztr96CI72dTmTTR-2x6pV\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"a1cd38ad87404319\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 429,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"555\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:58 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxjNnfgWPQK4gYkRN2lA2ONqy66lL3jWRO8pzNvlZs0CuwBqSpcqiZ-0fusLptWWtsU\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MjksIm1lc3NhZ2UiOiJUaGUgb2JqZWN0IGdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZyBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3Igb2JqZWN0IG11dGF0aW9uIG9wZXJhdGlvbnMgKGNyZWF0ZSwgdXBkYXRlLCBhbmQgZGVsZXRlKS4gUGxlYXNlIHJlZHVjZSB5b3VyIHJlcXVlc3QgcmF0ZS4gU2VlIGh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9zdG9yYWdlL2RvY3MvZ2NzNDI5LiIsImVycm9ycyI6W3sibWVzc2FnZSI6IlRoZSBvYmplY3QgZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1yZWFkaW5nIGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBvYmplY3QgbXV0YXRpb24gb3BlcmF0aW9ucyAoY3JlYXRlLCB1cGRhdGUsIGFuZCBkZWxldGUpLiBQbGVhc2UgcmVkdWNlIHlvdXIgcmVxdWVzdCByYXRlLiBTZWUgaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9nY3M0MjkuIiwiZG9tYWluIjoidXNhZ2VMaW1pdHMiLCJyZWFzb24iOiJyYXRlTGltaXRFeGNlZWRlZCJ9XX19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/read_in_full_with_negative_length_not_-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgiZJ8TNWAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"08f92e86f47a74f4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTW9WbTZRPT0iLCJtZDVIYXNoIjoiUGZsc1dyNlg4cFo5T0FFSWNBTUtYdz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Etag\": [\n            \"CPGU25yfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyHfYf2EccaH7lKhoRMAxPku-5ky8U654lAnoALpUvI_YS7XNq_18X7gQbQ2Y034IPd\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTU0MTc2MTEzIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk1NDE3NjExMyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk1NDE3NjExMyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjI3IiwibWQ1SGFzaCI6IlBmbHNXcjZYOHBaOU9BRUljQU1LWHc9PSIsImNyYzMyYyI6Ik1vVm02UT09IiwiZXRhZyI6IkNQR1UyNXlmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6MTQuMTg1WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjE0LjE4NVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6MTQuMTg1WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjE0LjE4NVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"34ec58f354cb10a6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932954176113\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxU236Dhagq6VFGtcqkYS5ZDWgv2p_Oj9NDkDXQEFj2QgApoNdBcqcZ8keWl4rkykAE\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"0f78c9353d86ee46\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932954176113\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzumE9HR6WJ4OH1fn-Aa8PbEFKH65U7UFewEfUAUZlcbrxTsiIBfr9wc9RVWPhYWRcJ\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"eda1724c568f8c05\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932954176113\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy93y7oL5p0H5H1FTVyrhmksvvZeyKq4fjsu-D2ZpScjo_Uj4yxs1E012Yoyc6O2P_l\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"2c128ea90ba6b303\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932954176113\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxwFCVUMxAhFVRN3HY12IJIlHbYyIgW7uLPoeSGcDIfvcMkxYwW-UfRiZEXgaUqJrgg\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"fd96f0fe643414fb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Range\": [\n            \"bytes=9-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932954176113\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=MoVm6Q==\",\n            \"md5=PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxB5W8cyRCKr2KbTPX-tDvLLHGEhAdvvlkjC8IfG9U3OsKNgybagedqvQnFmYHYJ7OH\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"d488e3656d7ef9f5\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:14 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4mDLJ10W64QsWiLPRHXdyktHcbH-19L5kLgmYTvkWAWSA0jLC25cG-xzUjZc0a3Nn\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestRead/read_of_nonexistent_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghLEiQshAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"dd83ffb74268feea\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiTW9WbTZRPT0iLCJtZDVIYXNoIjoiUGZsc1dyNlg4cFo5T0FFSWNBTUtYdz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Etag\": [\n            \"CLajlveerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxdnPJMROugLcHhLynC60nKLbxpe5RUA9qTNha51uUNOSePNeqG5bqs0_3r_fyRwV0o\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyODc1NDUyODU0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjg3NTQ1Mjg1NCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjg3NTQ1Mjg1NCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjI3IiwibWQ1SGFzaCI6IlBmbHNXcjZYOHBaOU9BRUljQU1LWHc9PSIsImNyYzMyYyI6Ik1vVm02UT09IiwiZXRhZyI6IkNMYWpsdmVlckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTUuNDU2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU1LjQ1NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDc6NTUuNDU2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA3OjU1LjQ1NloifQ==\"\n      }\n    },\n    {\n      \"ID\": \"7790e3042c50cefd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/key-does-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyZLT9t0ks4Aq-353gAk5kHvQYEwG-iibR67LTF6OvGtc_FJ1c1RJhf5-Nss9csg9Ut\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9rZXktZG9lcy1ub3QtZXhpc3Q8L0RldGFpbHM+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"dc9ac7e4facea50b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:07:55 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxh1hS4u_8euIZOnnwGz0gZyb-X35zNFEemoETsArYksWbMaiUTkYy8I8yoy9PZfJQt\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestSignedURL.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgxuOM9ZiwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7f1f8510bce38399\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzN7IBRMOXTc9LcbS5OkMYZoj8bVUzuJz_O6tKL8hFODOzBeIQXm1WG1ggnHNUUYg4j\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5QVVQKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"635242fad75364c9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxEYBGcY_1PRUqvSomg9_cImasI3zcxzdkgKGUubWwzSm52Gbzm0grfNz9oVEBCGXyd\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5QVVQKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"a1bc5dbabf94a28e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933935453140\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyw9CwxoSIiEEyHIhFSXQkilPGcTSyKFP6F1GJVv98DP-6AzFin0YVWWBSk9tKBGfOc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"809654c243a1e54e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"379\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw0YP1XsdwZkblmdoBwTjjQlWCn1XdujbANKNgeKvsDNZ0QKXrID7brcWqQES2LxHFW\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5QVVQKCmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"997cf6b7c69d7b1b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx5mbECb4uEgUlAf-uSd2I1QXiz4XL8qWgo5-MfWwNOJWJQjPgepSh9bGlrvsHFz3Qj\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5QVVQKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"04e7424a0358b931\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933935705865\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz-mJm1YI400qn1jNTJ3reFX2TSB_djfqRmRiplXaXpiQWN3MB7-LokWhH_fNfBslmQ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9b0e9d422b027dc5\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"379\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyjCgyIvFkuqsCm-zh6PIp6w7x4PvtkFk7dfDLc2QsRQ1Li1nh2E9yCB-61bgFx3_K9\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5QVVQKCmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"ea3caa9c8c57eeec\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933935903733\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxKu9DOTqHPur2IthJdb20zFXQ6DCecKy2Y0_gUmicDwSCkx6RN52qPdRn74yekyRgj\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fc0dbd4556d25d21\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzwXTOSp3CbHTVGNKv3AFKz54bLADf_0secDH-S2p_iHWY68XVBEtEV_qhDNv7-x1Fx\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5HRVQKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"8db7e665eb37b1e5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyhINBT7sOPFfT1jk5YUy-aZ2paJYphAnAcO0hj1NcsyJDGfjDlgvi5imvJ3hhft2jQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5HRVQKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"902d23eff0e3b984\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"298\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWye-ufwepte9-GztpNQRzxx7e9SKBk8TzNpQrXrthsMNkXpLnK0qRZqUI4LXl143h3c\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+QWNjZXNzRGVuaWVkPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuZ2V0IGFjY2VzcyB0byB0aGUgR29vZ2xlIENsb3VkIFN0b3JhZ2Ugb2JqZWN0LiBQZXJtaXNzaW9uICdzdG9yYWdlLm9iamVjdHMuZ2V0JyBkZW5pZWQgb24gcmVzb3VyY2UgKG9yIGl0IG1heSBub3QgZXhpc3QpLjwvRGV0YWlscz48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"90eacaff37c8ae87\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:25:35 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933935903733\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWylvwoLspTKQ92N9Sta42bpRExJGLKthhYS1TMV_XYklYftZq4YSkRmPoJwgPOqTtPa\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"cd382ed3517abd98\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"358\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxAQv65Z-A4qADxz_Jy8QxQODBZAebyE2FxRTLlimCl40s5pA4znS_tgoJA70mC7vAt\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5ERUxFVEUKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"5236d3a72d073277\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"358\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxCQ-Iv4YB_tPUFmSpJeqLfvNqCVmbTo6vignaRMf-Vkf5qvjGHJK7q5BiEHFgPDgkJ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+U2lnbmF0dXJlRG9lc05vdE1hdGNoPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0IHNpZ25hdHVyZSB3ZSBjYWxjdWxhdGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1cmUgeW91IHByb3ZpZGVkLiBDaGVjayB5b3VyIEdvb2dsZSBzZWNyZXQga2V5IGFuZCBzaWduaW5nIG1ldGhvZC48L0RldGFpbHM+PFN0cmluZ1RvU2lnbj5ERUxFVEUKCgoxNzczOTM3NTM1Ci9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L2Jsb2ItZm9yLXNpZ25pbmc8L1N0cmluZ1RvU2lnbj48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"4e83fb474ef739a7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWypwbTqDWdVlPEHxfMyQO-9zjiTzdsONJRt5XKBVoCd_4PawVMSadAD0cmz-TMUY_0W\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c17bc098c7ed942a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-signing?Expires=CLEARED\\u0026GoogleAccessId=storage-updater%40go-cloud-test-216917.iam.gserviceaccount.com\\u0026Signature=CLEARED\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:25:36 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWysEsLItPD2rtVmH7AMJsFogqMUudM5BCIu0ILlWE9CYtk0SvjVfPs4aFhbMOCPgnFD\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1zaWduaW5nPC9EZXRhaWxzPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestUploadDownload.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghVMEB7WAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7b5262d6cf770e45\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-upload-download\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJuYW1lIjoiYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkIn0K\",\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"804\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Etag\": [\n            \"CKu1lvyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxFnnJKxQZ_NVCT13wduZS-olWsArojbepB9Q5mZpXV_ToY8PuUsKNbcXPH5w-DIGdJ\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkLzE3NzM5MzI4ODU5NDA5MDciLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkP2dlbmVyYXRpb249MTc3MzkzMjg4NTk0MDkwNyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODg1OTQwOTA3IiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiMTEiLCJtZDVIYXNoIjoiRzNWVFB0V29hZjl2T3VBemJRd3pJQT09IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJldGFnIjoiQ0t1MWx2eWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowNS45NDNaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDUuOTQzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowNS45NDNaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDUuOTQzWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"3ae182b87cf2e39f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:05 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932885940907\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=35c6rg==\",\n            \"md5=G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy4oNFKDibnwf0WsnMHGKDEqpCjhBYcTSuFCb83RsCzm5ZpkQDIzTFxRVBIsTOnGSO7\"\n          ]\n        },\n        \"Body\": \"dXAgYW5kIGRvd24=\"\n      }\n    },\n    {\n      \"ID\": \"679af4f1c7f5a90c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-upload-download\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJtZDVIYXNoIjoiRzNWVFB0V29hZjl2T3VBemJRd3pJQT09IiwibmFtZSI6ImJsb2ItZm9yLXVwbG9hZC1kb3dubG9hZCJ9Cg==\",\n          \"dXAgYW5kIGRvd24=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"804\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Etag\": [\n            \"CKvSofyerJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxiNK2enFMWAdLx7RqvdHzhNrJ84siThDPdTGR-jJ_gbn1fZkpf3tPSo4NDbt4G2kkw\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkLzE3NzM5MzI4ODYxMjQ4NDMiLCJzZWxmTGluayI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkIiwibWVkaWFMaW5rIjoiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0L28vYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkP2dlbmVyYXRpb249MTc3MzkzMjg4NjEyNDg0MyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItdXBsb2FkLWRvd25sb2FkIiwiYnVja2V0IjoiZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldCIsImdlbmVyYXRpb24iOiIxNzczOTMyODg2MTI0ODQzIiwibWV0YWdlbmVyYXRpb24iOiIxIiwiY29udGVudFR5cGUiOiJ0ZXh0Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiMTEiLCJtZDVIYXNoIjoiRzNWVFB0V29hZjl2T3VBemJRd3pJQT09IiwiY3JjMzJjIjoiMzVjNnJnPT0iLCJldGFnIjoiQ0t2U29meWVySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowNi4xMzNaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuMTMzWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODowNi4xMzNaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDg6MDYuMTMzWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"300c6ec7e338aeff\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-upload-download?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWySGJawYvbY_qWAhQ0mPN05Arq3r0RX6YwvVNQz_fqh_lqOZU1hlwxYqYAK-dRZj5-U\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"953bc54a8d0e21c5\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-upload-download?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"231\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:06 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwj7aTm_DT3tUnZbiG2bNLGDDrkSko7iLVjx_G-W0uwbiPHwQsbhZ9pLzwaeYNkJZO7\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci11cGxvYWQtZG93bmxvYWQiLCJlcnJvcnMiOlt7Im1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci11cGxvYWQtZG93bmxvYWQiLCJkb21haW4iOiJnbG9iYWwiLCJyZWFzb24iOiJub3RGb3VuZCJ9XX19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/ContentType_is_discovered_if_not_provided.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgizCuh+cAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6ad105cc4a78ef00\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLCJjcmMzMmMiOiJ0ZHdyZ1E9PSIsIm5hbWUiOiJibG9iLWZvci1yZWFkaW5nIn0K\",\n          \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"794\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Etag\": [\n            \"CMKP2qifrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyv8v5ZJiWGOpF3HI-ptcx-iNP6yWI3bjjbVp4TGO8X3Fpa3q945TI-VtRGb-s2lcLj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTc5MzI0ODY2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk3OTMyNDg2NiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk3OTMyNDg2NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNjM1NCIsIm1kNUhhc2giOiJEMnA4bi9QVDEzQzQ5L29ad3E0WjBBPT0iLCJjcmMzMmMiOiJ0ZHdyZ1E9PSIsImV0YWciOiJDTUtQMnFpZnJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjM5LjMyN1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOS4zMjdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjM5LjMyN1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowOTozOS4zMjdaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"def36df6f2554b4e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932979324866\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=tdwrgQ==\",\n            \"md5=D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzsUZ7Fn4QQZkmtS48juEC0Par7PBMPRGLPv3fys3mPJZpHMk5_YXVfaLHwoHjh_0ZM\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"5c524c8940fe6641\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"794\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Etag\": [\n            \"CMKP2qifrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWy5RI2_phD8klF9Tal9L2_LgZngff4gxy_NU7la551iU4JWy7XstQmAyOOHDWP8OVbO\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTc5MzI0ODY2Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk3OTMyNDg2NiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk3OTMyNDg2NiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iiwic3RvcmFnZUNsYXNzIjoiUkVHSU9OQUwiLCJzaXplIjoiNjM1NCIsIm1kNUhhc2giOiJEMnA4bi9QVDEzQzQ5L29ad3E0WjBBPT0iLCJjcmMzMmMiOiJ0ZHdyZ1E9PSIsImV0YWciOiJDTUtQMnFpZnJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjM5LjMyN1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOS4zMjdaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjM5LjMyN1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowOTozOS4zMjdaIn0=\"\n      }\n    },\n    {\n      \"ID\": \"fc4090634ba00790\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwtyO_U0cNYwbmoO69Odw8VI1hKkrXJHa2oJpVZHKsWGFko3E708Z77uDiBj1E-IeoI\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/ContentType_is_left_empty_if_not_provided_and_DisableContentTypeDetection_is_true.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgizJKDzewAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a541d7ab8109a284\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY3JjMzJjIjoidGR3cmdRPT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"753\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Etag\": [\n            \"CKOf9KifrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzGZzk3CNIx8sEvPSv5aMt-08pm_KgDZWe8LZLc9JjPrsFEsZRyiteE_1wtqmPZahfG\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTc5NzUyODY3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk3OTc1Mjg2NyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk3OTc1Mjg2NyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjYzNTQiLCJtZDVIYXNoIjoiRDJwOG4vUFQxM0M0OS9vWndxNFowQT09IiwiY3JjMzJjIjoidGR3cmdRPT0iLCJldGFnIjoiQ0tPZjlLaWZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOS43NTVaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6MzkuNzU1WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOS43NTVaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDk6MzkuNzU1WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"a34e186fff685697\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932979752867\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=tdwrgQ==\",\n            \"md5=D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxOt9_7H4haZQLzZ2dWvCeu-gdXofCPJhT_2Bw2ai03D1hZXKUfGgm7-oJF-SXVBMBV\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"d416360c0a1f3a6c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzJ7JKzik3kiKAsYhCmfNLhN8GaXPXjHmqF1QPpTDgZm874wq1SWvS5DIpIiH9NwqRZ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/Content_md5_did_not_match,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgjaDYYI8QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"19710977355166a4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoidy9yL1hBPT0iLCJtZDVIYXNoIjoiZEg5Qi9TY1A3QnVDdmdNTXdjMUlBUT09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"ZXhpc3RpbmcgY29udGVudA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:18 GMT\"\n          ],\n          \"Etag\": [\n            \"COb0qbufrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzDzxTrM-fpLdi9wQ6M3RumuGPBBdy_0tlUzSUREJS99FND2RIDI3-oJ7chyVxFt5hwWlZI5tk\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMzMDE4MzgwOTAyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMzAxODM4MDkwMiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzAxODM4MDkwMiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjE2IiwibWQ1SGFzaCI6ImRIOUIvU2NQN0J1Q3ZnTU13YzFJQVE9PSIsImNyYzMyYyI6Incvci9YQT09IiwiZXRhZyI6IkNPYjBxYnVmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MTA6MTguMzgzWiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjEwOjE4LjM4M1oiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MTA6MTguMzgzWiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjEwOjE4LjM4M1oifQ==\"\n      }\n    },\n    {\n      \"ID\": \"e15fc375bbc607d7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:10:18 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933018380902\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=w/r/XA==\",\n            \"md5=dH9B/ScP7BuCvgMMwc1IAQ==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"16\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwSzA0Fdd2tCY4hwHjzyZSpjPtlj0C6fBy7UTqjXZN0P6OVUa_U4puD7jDhxQI21YdtoCGd5jc\"\n          ]\n        },\n        \"Body\": \"ZXhpc3RpbmcgY29udGVudA==\"\n      }\n    },\n    {\n      \"ID\": \"bd6e62728fbb9327\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzHPKED3KXzAV08Lg8zYQGsq-32sGcag8pMKkw70WzRa3q74db-4QNcn3TCcB0oMJX9olaWCr8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/Content_md5_did_not_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgjZIK5pKgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1e805c9cc65e2eef\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:18 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwlJpTxjMYS6TAed1YSmC8Ssk16T8eNfMb6jFF7ha_78DA_gyJEqQkhXupktiZzfv8q8KLC_qs\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1yZWFkaW5nPC9EZXRhaWxzPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/Content_md5_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgi0GJ5A8gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3486145698d2d8a6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoieVpSbHFnPT0iLCJtZDVIYXNoIjoiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwibmFtZSI6ImJsb2ItZm9yLXJlYWRpbmcifQo=\",\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Etag\": [\n            \"CO7XpKmfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyeWVRAr2Ytx48GNHI7M7TzAsyePkj8_p2b-ZnAKKXQ8zOOJ_-9WXgZCQ65JjR4UnSk\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgwNTQ2NTQyIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MDU0NjU0MiZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MDU0NjU0MiIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNPN1hwS21mckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDAuNTQ5WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQwLjU0OVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDAuNTQ5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQwLjU0OVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"b97677941fbbb9cd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932980546542\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwQMAKukbPxEn3m5GsRjjk10a0b92AAgOKIaIZe8-uCefhszw3Eph_TD_De3DLlfW8E\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"a67464dd7808a87b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz1oDw02QTBJLmy_34TajL7PSJh8ceovBqdYot5pdNEKbRde-PmgwQrbicPsXAoGF0F\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/a_large_jpg_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgi1GeLAGwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b01fe49a1a2082e7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJpbWFnZS9qcGVnIiwiY3JjMzJjIjoiK0RYTkxRPT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"781\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Etag\": [\n            \"CNLM46mfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx5pfV-tG_fs_Bl-opMAf54EowvSvXJhtRVM8ZlnvGE4vSgSMroDGvpQmfOIT-HV2YX\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgxNTc3Mjk4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MTU3NzI5OCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MTU3NzI5OCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiaW1hZ2UvanBlZyIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjM4NDMwIiwibWQ1SGFzaCI6Ill0US9vZzV3djZIOXNpVVEwY0JnMGc9PSIsImNyYzMyYyI6IitEWE5MUT09IiwiZXRhZyI6IkNOTE00Nm1mckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuNTg2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjU4NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuNTg2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjU4NloifQ==\"\n      }\n    },\n    {\n      \"ID\": \"5b16fe8a5550d994\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932981577298\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=+DXNLQ==\",\n            \"md5=YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"38430\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyelGgxkBdmoBoOYQw-O-BLQdL2zgbDtiCo4PxByl9eBU3tJ9c4r84oqZNZy3U-EIYM\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"30a56fd3478f12a2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"781\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Etag\": [\n            \"CNLM46mfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwUcmTG-JXZKXnw_klOKlCjrk4JFXk1zeQT5FRMIOe-vVnraxh6be_g9krcwHpL4rM2\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgxNTc3Mjk4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MTU3NzI5OCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MTU3NzI5OCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiaW1hZ2UvanBlZyIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjM4NDMwIiwibWQ1SGFzaCI6Ill0US9vZzV3djZIOXNpVVEwY0JnMGc9PSIsImNyYzMyYyI6IitEWE5MUT09IiwiZXRhZyI6IkNOTE00Nm1mckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuNTg2WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjU4NloiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuNTg2WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjU4NloifQ==\"\n      }\n    },\n    {\n      \"ID\": \"01f64fc2bdfde26a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyfWIEPSmBTL93926TnrASpVGD501elEkC4WB4MRIc4o2TBQFa9u4tqF7NW4B9YgNlg\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/a_large_jpg_file_written_in_two_chunks_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgjkOY5JngAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3936c4e292454a5e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJpbWFnZS9qcGVnIiwiY3JjMzJjIjoiK0RYTkxRPT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"781\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:29 GMT\"\n          ],\n          \"Etag\": [\n            \"CL76vcCfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzECxZQkq1dWkpyMXvu3kAFcGk8mb1990-3S6m81rbS9JidVDRdqiBCBkPDs-mjsQWulvOzL8Q\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMzMDI5MTk1MDcwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMzAyOTE5NTA3MCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzAyOTE5NTA3MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiaW1hZ2UvanBlZyIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjM4NDMwIiwibWQ1SGFzaCI6Ill0US9vZzV3djZIOXNpVVEwY0JnMGc9PSIsImNyYzMyYyI6IitEWE5MUT09IiwiZXRhZyI6IkNMNzZ2Y0NmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MTA6MjkuMTk4WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjEwOjI5LjE5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MTA6MjkuMTk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjEwOjI5LjE5OFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"d92d1df69603d77e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:10:29 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773933029195070\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=+DXNLQ==\",\n            \"md5=YtQ/og5wv6H9siUQ0cBg0g==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"38430\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyaOwA9XkDFGpU6UtC8Wotg2wb_StpI7ky2cN2jcnsI3GGF_ifRFELbJF1409VOzaE7\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"c9fd23fd81901678\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"781\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:29 GMT\"\n          ],\n          \"Etag\": [\n            \"CL76vcCfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz76yMrUJAzukeaO6QYxzfi9zm6lM9NzkjOl-IJN1DmwY0Qyl0yFxd00rPQiMAj-Qxy\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMzMDI5MTk1MDcwIiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMzAyOTE5NTA3MCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMzAyOTE5NTA3MCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiaW1hZ2UvanBlZyIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjM4NDMwIiwibWQ1SGFzaCI6Ill0US9vZzV3djZIOXNpVVEwY0JnMGc9PSIsImNyYzMyYyI6IitEWE5MUT09IiwiZXRhZyI6IkNMNzZ2Y0NmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MTA6MjkuMTk4WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjEwOjI5LjE5OFoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MTA6MjkuMTk4WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjEwOjI5LjE5OFoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"4566531cfcf79d94\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:10:29 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzzNfoK7igQN2JlWMzvMBfoGhehdiQ8n6FlUG76lTRij6GCz8IAF9RErT4qEr2Ydgdt\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/a_small_text_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgi1AJ9BNQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2413a57942ec0e7a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoibkhNR1V3PT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"VGhpcyBpcyBhIHRleHQgZmlsZS4=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Etag\": [\n            \"CKvzyamfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw4MJtW-kyZ2VyyREXdraCvfQCHF77XUe9IS7Xduu_2fblDLSjnplqX5EOXeo12ecIj\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgxMTU2MjY3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MTE1NjI2NyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MTE1NjI2NyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjIwIiwibWQ1SGFzaCI6IlB6TUpNU3pESmtvVGliTFNZOTdPalE9PSIsImNyYzMyYyI6Im5ITUdVdz09IiwiZXRhZyI6IkNLdnp5YW1mckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuMTU5WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjE1OVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuMTU5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjE1OVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"4eb160793d6b3729\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932981156267\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=nHMGUw==\",\n            \"md5=PzMJMSzDJkoTibLSY97OjQ==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"20\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWymWWyLAQN5YACnMebl6Cxp5sAxFDSLC1CRV-3_FmyGaWNSNHuWT5gbuC-j5skaxS16\"\n          ]\n        },\n        \"Body\": \"VGhpcyBpcyBhIHRleHQgZmlsZS4=\"\n      }\n    },\n    {\n      \"ID\": \"14b0757dfdc2630f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Etag\": [\n            \"CKvzyamfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyM4h2Ew6X6x6pSvV_48fXZF3ULYs8kiQv3WiP_VE_Dhn43w6SjzA-QV9UaoTOIe-69\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgxMTU2MjY3Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MTE1NjI2NyZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MTE1NjI2NyIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjIwIiwibWQ1SGFzaCI6IlB6TUpNU3pESmtvVGliTFNZOTdPalE9PSIsImNyYzMyYyI6Im5ITUdVdz09IiwiZXRhZyI6IkNLdnp5YW1mckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuMTU5WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjE1OVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDEuMTU5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA5OjQxLjE1OVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"f05de6d579201da2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 429,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"555\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:41 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxx2T4ZQjyHYKHqAYByq4V7ejRFfVuYnpL9MfryKshLmx5Tgk6ez0VIlkLJqmXDWtsC\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MjksIm1lc3NhZ2UiOiJUaGUgb2JqZWN0IGdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZyBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3Igb2JqZWN0IG11dGF0aW9uIG9wZXJhdGlvbnMgKGNyZWF0ZSwgdXBkYXRlLCBhbmQgZGVsZXRlKS4gUGxlYXNlIHJlZHVjZSB5b3VyIHJlcXVlc3QgcmF0ZS4gU2VlIGh0dHBzOi8vY2xvdWQuZ29vZ2xlLmNvbS9zdG9yYWdlL2RvY3MvZ2NzNDI5LiIsImVycm9ycyI6W3sibWVzc2FnZSI6IlRoZSBvYmplY3QgZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1yZWFkaW5nIGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBvYmplY3QgbXV0YXRpb24gb3BlcmF0aW9ucyAoY3JlYXRlLCB1cGRhdGUsIGFuZCBkZWxldGUpLiBQbGVhc2UgcmVkdWNlIHlvdXIgcmVxdWVzdCByYXRlLiBTZWUgaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9nY3M0MjkuIiwiZG9tYWluIjoidXNhZ2VMaW1pdHMiLCJyZWFzb24iOiJyYXRlTGltaXRFeGNlZWRlZCJ9XX19\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/invalid_ContentType_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgizAiNHZgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4bd3a3594fb8afc4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzcsvv-OugNvk3MOWzEkCsFlNSUOD5SSs3r72DRt67Fmr-TzbSq14MAw1ooNtjqzzr-\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9ibG9iLWZvci1yZWFkaW5nPC9EZXRhaWxzPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/no_write_then_close_results_in_empty_blob,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgiyKoGwOQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f6fcb4403d779a8a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiQUFBQUFBPT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Etag\": [\n            \"CM3gvKifrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzo9u5y__x_rK2bbkSvibIuKqR30l93xOzkvf_SM018XdUffiieX1nhtUUfFraD4wVW\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTc4ODQzNzI1Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk3ODg0MzcyNSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk3ODg0MzcyNSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjAiLCJtZDVIYXNoIjoiMUIyTTJZOEFzZ1RwZ0FtWTdQaENmZz09IiwiY3JjMzJjIjoiQUFBQUFBPT0iLCJldGFnIjoiQ00zZ3ZLaWZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOC44NDZaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6MzguODQ2WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOC44NDZaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDk6MzguODQ2WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"3d6d68cb7288806f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932978843725\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=AAAAAA==\",\n            \"md5=1B2M2Y8AsgTpgAmY7PhCfg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"0\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxufJKSPdVTzpsWqToHShwz7UwlHob-IOufsfUC7L22mIGfbWCENs2URWtGqPpGS1fN\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3b70512cee8bea84\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:39 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxrdmnE90xwMZB2rPxDmQ977hHrcYrn_BkwfVjiI-qtp9OKm82rMxqa9I468Pe9kCFj\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/no_write_then_close_results_in_empty_blob.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgiyFmX6HgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"018582735f6ccaaf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiQUFBQUFBPT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"792\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Etag\": [\n            \"CMi7qaifrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxQaD1cf5KX8C8n7-yDvYB5fiujewnhAn9fems7ZZ6dAHSfnLRanHIsy45aVfu7E_GK\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTc4NTI3Njg4Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk3ODUyNzY4OCZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk3ODUyNzY4OCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjAiLCJtZDVIYXNoIjoiMUIyTTJZOEFzZ1RwZ0FtWTdQaENmZz09IiwiY3JjMzJjIjoiQUFBQUFBPT0iLCJldGFnIjoiQ01pN3FhaWZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOC41MzBaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6MzguNTMwWiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTozOC41MzBaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDk6MzguNTMwWiJ9\"\n      }\n    },\n    {\n      \"ID\": \"6356d33d1bb41a61\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932978527688\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=AAAAAA==\",\n            \"md5=1B2M2Y8AsgTpgAmY7PhCfg==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"0\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWzf2VSrwviEx_BmlHe-eS09sBmukLMUJgIq8Dvy7RTsHYMGBIkTzSmZ77KJigdzkwDa\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e158555de01bba5d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx4DfepOlP1JWhxyKReBCPjsIHMDssPzdSgFGBpZOUhBiUvpZhvkDVpWM-WA6hrduz_\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/write_to_empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgiyCvSrTAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0c95e5df352c730c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoiQUFBQUFBPT0ifQo=\",\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"127\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:38 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxdIt4lYN2hoHpAi9lbUQBr6XsHZlNhTD63HeuZx2HKjqkUbO8SL8G4OhMurVE2_57o\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDAsIm1lc3NhZ2UiOiJObyBvYmplY3QgbmFtZSIsImVycm9ycyI6W3sibWVzc2FnZSI6Ik5vIG9iamVjdCBuYW1lIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoicmVxdWlyZWQifV19fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestConformance/TestWrite/write_with_explicit_ContentType_overrides_discovery.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgizOLBA/QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4264ee6477f5c493\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026name=blob-for-reading\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIiwiY3JjMzJjIjoidGR3cmdRPT0iLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyJ9Cg==\",\n          \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"786\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Etag\": [\n            \"CMWiiamfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyWmMFUv5EjqnKkX1RhxNsNzMYKw0CRlzzG_caUbWlGAyO7aqg20EKtYBrW9LftIOZU\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgwMDk3MzQ5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MDA5NzM0OSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MDA5NzM0OSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjYzNTQiLCJtZDVIYXNoIjoiRDJwOG4vUFQxM0M0OS9vWndxNFowQT09IiwiY3JjMzJjIjoidGR3cmdRPT0iLCJldGFnIjoiQ01XaWlhbWZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTo0MC4wOTlaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDAuMDk5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTo0MC4wOTlaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDAuMDk5WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"1a26b91f5d880175\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932980097349\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=tdwrgQ==\",\n            \"md5=D2p8n/PT13C49/oZwq4Z0A==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWx0Xh1YJAhsKX7XdaoDetbQtCOQz94UtKqza-nxYfDLE9RSyDJKQ3NRt1mHUttlPj7B\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"52132f37d87c333e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"786\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Etag\": [\n            \"CMWiiamfrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWylfv_ux01if_niJKCloNbZFUp49nMDjdSZzbLFudMqRUolILmpzt8x--hhXh6UVt1M\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvYmxvYi1mb3ItcmVhZGluZy8xNzczOTMyOTgwMDk3MzQ5Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL2Jsb2ItZm9yLXJlYWRpbmciLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9ibG9iLWZvci1yZWFkaW5nP2dlbmVyYXRpb249MTc3MzkzMjk4MDA5NzM0OSZhbHQ9bWVkaWEiLCJuYW1lIjoiYmxvYi1mb3ItcmVhZGluZyIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjk4MDA5NzM0OSIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjYzNTQiLCJtZDVIYXNoIjoiRDJwOG4vUFQxM0M0OS9vWndxNFowQT09IiwiY3JjMzJjIjoidGR3cmdRPT0iLCJldGFnIjoiQ01XaWlhbWZySk1ERUFFPSIsInRpbWVDcmVhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTo0MC4wOTlaIiwidXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDAuMDk5WiIsInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowOTo0MC4wOTlaIiwidGltZUZpbmFsaXplZCI6IjIwMjYtMDMtMTlUMTU6MDk6NDAuMDk5WiJ9\"\n      }\n    },\n    {\n      \"ID\": \"4aa22efa1e9aff00\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/blob-for-reading?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:09:40 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxODJkohEgExBJ1mBOIgXpx7eieNMKGrMgjGOSutTxuNkLnatnYpH4gSPxjN7RxhPTD\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestOpenBucket/empty_bucket_name_results_in_error.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghqKRAU7gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestOpenBucket/success.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghqKR11MAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/gcsblob/testdata/TestPreconditions.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTghqMdAI5gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Expires$\",\n      \"^Signature$\",\n      \"^X-Goog-Gcs-Idempotency-Token$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^Expires$\",\n      \"^Signature$\"\n    ],\n    \"RemoveParams\": null\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2fbe7bdf5b384759\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026ifGenerationMatch=-999\\u0026name=precondition-key\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoieVpSbHFnPT0iLCJtZDVIYXNoIjoiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwibmFtZSI6InByZWNvbmRpdGlvbi1rZXkifQo=\",\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 412,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"276\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:26 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyrAnk4beVM0sntt1nwpz0EeEgmJMirS6w8IyC15Ly8P8T8su9W9Kx0tey7iD-FIXiS\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MTIsIm1lc3NhZ2UiOiJBdCBsZWFzdCBvbmUgb2YgdGhlIHByZS1jb25kaXRpb25zIHlvdSBzcGVjaWZpZWQgZGlkIG5vdCBob2xkLiIsImVycm9ycyI6W3sibWVzc2FnZSI6IkF0IGxlYXN0IG9uZSBvZiB0aGUgcHJlLWNvbmRpdGlvbnMgeW91IHNwZWNpZmllZCBkaWQgbm90IGhvbGQuIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoiY29uZGl0aW9uTm90TWV0IiwibG9jYXRpb25UeXBlIjoiaGVhZGVyIiwibG9jYXRpb24iOiJJZi1NYXRjaCJ9XX19\"\n      }\n    },\n    {\n      \"ID\": \"3e44aa5404e47cfa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/upload/storage/v1/b/go-cloud-blob-test-bucket/o?alt=json\\u0026ifGenerationMatch=0\\u0026name=precondition-key\\u0026prettyPrint=false\\u0026projection=full\\u0026uploadType=multipart\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"multipart/related\",\n        \"BodyParts\": [\n          \"eyJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiY29udGVudFR5cGUiOiJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwiY3JjMzJjIjoieVpSbHFnPT0iLCJtZDVIYXNoIjoiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwibmFtZSI6InByZWNvbmRpdGlvbi1rZXkifQo=\",\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Etag\": [\n            \"CJahooafrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxvUpjSU0dplAHcYBY33CWbRhCnYUAs_TGd1zpBYCdt-s3Kq3lnoYcn02ySTHHt8WEb\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvcHJlY29uZGl0aW9uLWtleS8xNzczOTMyOTA3MTA2NDU0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3ByZWNvbmRpdGlvbi1rZXkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9wcmVjb25kaXRpb24ta2V5P2dlbmVyYXRpb249MTc3MzkzMjkwNzEwNjQ1NCZhbHQ9bWVkaWEiLCJuYW1lIjoicHJlY29uZGl0aW9uLWtleSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjkwNzEwNjQ1NCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNKYWhvb2FmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjcuMTA5WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI3LjEwOVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjcuMTA5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI3LjEwOVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"8d5e3ddeb63011bd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/precondition-key?generation=999999\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"Content-Type\": [\n            \"application/xml; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWw1xkiGE8DE7MmvsW_t90OyyGIJKXslr0lhRyZCeryUXe_NaeHuOZObjbVTM0aUhEnr\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9wcmVjb25kaXRpb24ta2V5PC9EZXRhaWxzPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"af2e3a12a7c1dc13\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/precondition-key?alt=json\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"private, max-age=0, must-revalidate, no-transform\"\n          ],\n          \"Content-Length\": [\n            \"793\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Etag\": [\n            \"CJahooafrJMDEAE=\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWylRvP748v4-XhKtTIFc_jyCd_vUV7uvXqyZaMjcsUGzqA93g1RW_j0baAhYLZY9by-\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvcHJlY29uZGl0aW9uLWtleS8xNzczOTMyOTA3MTA2NDU0Iiwic2VsZkxpbmsiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3ByZWNvbmRpdGlvbi1rZXkiLCJtZWRpYUxpbmsiOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9wcmVjb25kaXRpb24ta2V5P2dlbmVyYXRpb249MTc3MzkzMjkwNzEwNjQ1NCZhbHQ9bWVkaWEiLCJuYW1lIjoicHJlY29uZGl0aW9uLWtleSIsImJ1Y2tldCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQiLCJnZW5lcmF0aW9uIjoiMTc3MzkzMjkwNzEwNjQ1NCIsIm1ldGFnZW5lcmF0aW9uIjoiMSIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsInN0b3JhZ2VDbGFzcyI6IlJFR0lPTkFMIiwic2l6ZSI6IjExIiwibWQ1SGFzaCI6IlhyWTd1K0FlN3RDVHl5SzdqMXJOd3c9PSIsImNyYzMyYyI6InlaUmxxZz09IiwiZXRhZyI6IkNKYWhvb2FmckpNREVBRT0iLCJ0aW1lQ3JlYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjcuMTA5WiIsInVwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI3LjEwOVoiLCJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6IjIwMjYtMDMtMTlUMTU6MDg6MjcuMTA5WiIsInRpbWVGaW5hbGl6ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI3LjEwOVoifQ==\"\n      }\n    },\n    {\n      \"ID\": \"e85e1edd3bc5d0be\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://storage.googleapis.com/go-cloud-blob-test-bucket/precondition-key?generation=1773932907106454\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"private, max-age=0\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"X-Goog-Generation\": [\n            \"1773932907106454\"\n          ],\n          \"X-Goog-Hash\": [\n            \"crc32c=yZRlqg==\",\n            \"md5=XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"X-Goog-Metageneration\": [\n            \"1\"\n          ],\n          \"X-Goog-Storage-Class\": [\n            \"REGIONAL\"\n          ],\n          \"X-Goog-Stored-Content-Encoding\": [\n            \"identity\"\n          ],\n          \"X-Goog-Stored-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxXj6B-TTSZNbfvFATl6SRNdWacSiMHch4O1BYNkCJkAcgIdeZSPGVdpni4YorZfCGw\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"e344dbc30be9edd9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/precondition-key/rewriteTo/b/go-cloud-blob-test-bucket/o/precondition-key2?alt=json\\u0026ifGenerationMatch=-999\\u0026prettyPrint=false\\u0026projection=full\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 412,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"276\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxShYa72hX1bcWl3FhlC_Jrs8Q0eypd4WMWBdXTyqdG7jYJ9gTFNq_rmGHZCN8FWxWh\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MTIsIm1lc3NhZ2UiOiJBdCBsZWFzdCBvbmUgb2YgdGhlIHByZS1jb25kaXRpb25zIHlvdSBzcGVjaWZpZWQgZGlkIG5vdCBob2xkLiIsImVycm9ycyI6W3sibWVzc2FnZSI6IkF0IGxlYXN0IG9uZSBvZiB0aGUgcHJlLWNvbmRpdGlvbnMgeW91IHNwZWNpZmllZCBkaWQgbm90IGhvbGQuIiwiZG9tYWluIjoiZ2xvYmFsIiwicmVhc29uIjoiY29uZGl0aW9uTm90TWV0IiwibG9jYXRpb25UeXBlIjoiaGVhZGVyIiwibG9jYXRpb24iOiJJZi1NYXRjaCJ9XX19\"\n      }\n    },\n    {\n      \"ID\": \"f1c49d67fa18672e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/precondition-key/rewriteTo/b/go-cloud-blob-test-bucket/o/precondition-key2?alt=json\\u0026prettyPrint=false\\u0026projection=full\\u0026sourceGeneration=9999999\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWz1H2muHohyQh_Fg-Q42I_LuxF6V6WMGBY-ai88ziXMghsHoh7xOvtZtWb7dAtEGpt2\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjo0MDQsIm1lc3NhZ2UiOiJObyBzdWNoIG9iamVjdDogZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9wcmVjb25kaXRpb24ta2V5IiwiZXJyb3JzIjpbeyJtZXNzYWdlIjoiTm8gc3VjaCBvYmplY3Q6IGdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvcHJlY29uZGl0aW9uLWtleSIsImRvbWFpbiI6Imdsb2JhbCIsInJlYXNvbiI6Im5vdEZvdW5kIn1dfX0=\"\n      }\n    },\n    {\n      \"ID\": \"ffdbb42313a26971\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/precondition-key/rewriteTo/b/go-cloud-blob-test-bucket/o/precondition-key2?alt=json\\u0026ifGenerationMatch=0\\u0026prettyPrint=false\\u0026projection=full\\u0026sourceGeneration=1773932907106454\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"e30K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"900\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=UTF-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWyh0NO4egVXsH5bIqx9XaFh6EDxb4cS7cbsqoSF6q9vdbeN5dbHXYAeiExf6JepSa1e\"\n          ]\n        },\n        \"Body\": \"eyJraW5kIjoic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLCJ0b3RhbEJ5dGVzUmV3cml0dGVuIjoiMTEiLCJvYmplY3RTaXplIjoiMTEiLCJkb25lIjp0cnVlLCJyZXNvdXJjZSI6eyJraW5kIjoic3RvcmFnZSNvYmplY3QiLCJpZCI6ImdvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvcHJlY29uZGl0aW9uLWtleTIvMTc3MzkzMjkwNzU5MDI1MCIsInNlbGZMaW5rIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWNsb3VkLWJsb2ItdGVzdC1idWNrZXQvby9wcmVjb25kaXRpb24ta2V5MiIsIm1lZGlhTGluayI6Imh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28tY2xvdWQtYmxvYi10ZXN0LWJ1Y2tldC9vL3ByZWNvbmRpdGlvbi1rZXkyP2dlbmVyYXRpb249MTc3MzkzMjkwNzU5MDI1MCZhbHQ9bWVkaWEiLCJuYW1lIjoicHJlY29uZGl0aW9uLWtleTIiLCJidWNrZXQiOiJnby1jbG91ZC1ibG9iLXRlc3QtYnVja2V0IiwiZ2VuZXJhdGlvbiI6IjE3NzM5MzI5MDc1OTAyNTAiLCJtZXRhZ2VuZXJhdGlvbiI6IjEiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLCJzdG9yYWdlQ2xhc3MiOiJSRUdJT05BTCIsInNpemUiOiIxMSIsIm1kNUhhc2giOiJYclk3dStBZTd0Q1R5eUs3ajFyTnd3PT0iLCJjcmMzMmMiOiJ5WlJscWc9PSIsImV0YWciOiJDT3JrdjRhZnJKTURFQUU9IiwidGltZUNyZWF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI3LjU5M1oiLCJ1cGRhdGVkIjoiMjAyNi0wMy0xOVQxNTowODoyNy41OTNaIiwidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiIyMDI2LTAzLTE5VDE1OjA4OjI3LjU5M1oiLCJ0aW1lRmluYWxpemVkIjoiMjAyNi0wMy0xOVQxNTowODoyNy41OTNaIn19\"\n      }\n    },\n    {\n      \"ID\": \"1c49bcf27e4899ac\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/precondition-key2?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWxIK2zGj4-WZch5W_EYCckypgWSBsAyiTi86Kxhmqj1y_81gXHy7rzjIWMobK1Z79qo\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6c257af31f95751c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://storage.googleapis.com/storage/v1/b/go-cloud-blob-test-bucket/o/precondition-key?alt=json\\u0026prettyPrint=false\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Goog-Gcs-Idempotency-Token\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, max-age=0, must-revalidate\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:08:27 GMT\"\n          ],\n          \"Expires\": [\n            \"CLEARED\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Server\": [\n            \"UploadServer\"\n          ],\n          \"Vary\": [\n            \"Origin\",\n            \"X-Origin\"\n          ],\n          \"X-Guploader-Uploadid\": [\n            \"AGQBYWwW7ou0Uo_65auCGGjfePuMnQzF5tiZDw14CLE581nu2cG4yGcGjDIrndvRpkd36A7n\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/memblob/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memblob_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/memblob\"\n)\n\nfunc ExampleOpenBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Create an in-memory bucket.\n\tbucket := memblob.OpenBucket(nil)\n\tdefer bucket.Close()\n\n\t// Now we can use bucket to read or write files to the bucket.\n\terr := bucket.WriteAll(ctx, \"my-key\", []byte(\"hello world\"), nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdata, err := bucket.ReadAll(ctx, \"my-key\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(data))\n\n\t// Output:\n\t// hello world\n}\n\nfunc Example_openBucketFromURL() {\n\t// blob.OpenBucket creates a *blob.Bucket from a URL.\n\tb, err := blob.OpenBucket(context.Background(), \"mem://\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer b.Close()\n\n\t// Now we can use b to read or write files to the container.\n\tctx := context.Background()\n\terr = b.WriteAll(ctx, \"my-key\", []byte(\"hello world\"), nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdata, err := b.ReadAll(ctx, \"my-key\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(data))\n\n\t// Output:\n\t// hello world\n}\n"
  },
  {
    "path": "blob/memblob/memblob.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package memblob provides an in-memory blob implementation.\n// Use OpenBucket to construct a *blob.Bucket.\n//\n// # URLs\n//\n// For blob.OpenBucket memblob registers for the scheme \"mem\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// memblob does not support any types for As.\npackage memblob // import \"gocloud.dev/blob/memblob\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/md5\"\n\t\"errors\"\n\t\"fmt\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"hash\"\n\t\"io\"\n\t\"maps\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n)\n\nconst defaultPageSize = 1000\n\nvar (\n\terrNotFound       = errors.New(\"blob not found\")\n\terrNotImplemented = errors.New(\"not implemented\")\n)\n\nfunc init() {\n\tblob.DefaultURLMux().RegisterBucket(Scheme, &URLOpener{})\n}\n\n// Scheme is the URL scheme memblob registers its URLOpener under on\n// blob.DefaultMux.\nconst Scheme = \"mem\"\n\n// URLOpener opens URLs like \"mem://\".\n//\n// The following query parameters are supported:\n//   - nomd5: Sets Options.MD5 to true; no value expected (e.g., \"memblob://?nomd5\").\ntype URLOpener struct{}\n\n// OpenBucketURL opens a blob.Bucket based on u.\nfunc (*URLOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\topts := Options{}\n\tfor param := range u.Query() {\n\t\tif param == \"nomd5\" {\n\t\t\topts.NoMD5 = true\n\t\t\tcontinue\n\t\t}\n\t\treturn nil, fmt.Errorf(\"open bucket %v: invalid query parameter %q\", u, param)\n\t}\n\treturn OpenBucket(&opts), nil\n}\n\n// Options sets options for constructing a *blob.Bucket backed by memory.\ntype Options struct {\n\t// Set to true to disable MD5 hashing. The MD5 Attribute won't be available,\n\t// but improves write performance.\n\tNoMD5 bool\n}\n\ntype blobEntry struct {\n\tContent    []byte\n\tAttributes *driver.Attributes\n}\n\ntype bucket struct {\n\toptions Options\n\n\tmu    sync.Mutex\n\tblobs map[string]*blobEntry\n}\n\n// openBucket creates a driver.Bucket backed by memory.\nfunc openBucket(opts *Options) driver.Bucket {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\treturn &bucket{\n\t\toptions: *opts,\n\t\tblobs:   map[string]*blobEntry{},\n\t}\n}\n\n// OpenBucket creates a *blob.Bucket backed by memory.\nfunc OpenBucket(opts *Options) *blob.Bucket {\n\treturn blob.NewBucket(openBucket(opts))\n}\n\nfunc (b *bucket) Close() error {\n\treturn nil\n}\n\nfunc (b *bucket) ErrorCode(err error) gcerrors.ErrorCode {\n\tswitch err {\n\tcase errNotFound:\n\t\treturn gcerrors.NotFound\n\tcase errNotImplemented:\n\t\treturn gcerrors.Unimplemented\n\tdefault:\n\t\treturn gcerrors.Unknown\n\t}\n}\n\n// ListPaged implements driver.ListPaged.\n// The implementation largely mirrors the one in fileblob.\nfunc (b *bucket) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\t// pageToken is a returned NextPageToken, set below; it's the last key of the\n\t// previous page.\n\tvar pageToken string\n\tif len(opts.PageToken) > 0 {\n\t\tpageToken = string(opts.PageToken)\n\t}\n\tpageSize := opts.PageSize\n\tif pageSize == 0 {\n\t\tpageSize = defaultPageSize\n\t}\n\n\tvar keys []string\n\tfor key := range b.blobs {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\n\t// If opts.Delimiter != \"\", lastPrefix contains the last \"directory\" key we\n\t// added. It is used to avoid adding it again; all files in this \"directory\"\n\t// are collapsed to the single directory entry.\n\tvar lastPrefix string\n\tvar result driver.ListPage\n\tfor _, key := range keys {\n\t\t// Skip keys that don't match the Prefix.\n\t\tif !strings.HasPrefix(key, opts.Prefix) {\n\t\t\tcontinue\n\t\t}\n\n\t\tentry := b.blobs[key]\n\t\tobj := &driver.ListObject{\n\t\t\tKey:     key,\n\t\t\tModTime: entry.Attributes.ModTime,\n\t\t\tSize:    entry.Attributes.Size,\n\t\t\tMD5:     entry.Attributes.MD5,\n\t\t}\n\n\t\t// If using Delimiter, collapse \"directories\".\n\t\tif opts.Delimiter != \"\" {\n\t\t\t// Strip the prefix, which may contain Delimiter.\n\t\t\tkeyWithoutPrefix := key[len(opts.Prefix):]\n\t\t\t// See if the key still contains Delimiter.\n\t\t\t// If no, it's a file and we just include it.\n\t\t\t// If yes, it's a file in a \"sub-directory\" and we want to collapse\n\t\t\t// all files in that \"sub-directory\" into a single \"directory\" result.\n\t\t\tif idx := strings.Index(keyWithoutPrefix, opts.Delimiter); idx != -1 {\n\t\t\t\tprefix := opts.Prefix + keyWithoutPrefix[0:idx+len(opts.Delimiter)]\n\t\t\t\t// We've already included this \"directory\"; don't add it.\n\t\t\t\tif prefix == lastPrefix {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// Update the object to be a \"directory\".\n\t\t\t\tobj = &driver.ListObject{\n\t\t\t\t\tKey:   prefix,\n\t\t\t\t\tIsDir: true,\n\t\t\t\t}\n\t\t\t\tlastPrefix = prefix\n\t\t\t}\n\t\t}\n\n\t\t// If there's a pageToken, skip anything before it.\n\t\tif pageToken != \"\" && obj.Key <= pageToken {\n\t\t\tcontinue\n\t\t}\n\n\t\t// If we've already got a full page of results, set NextPageToken and return.\n\t\tif len(result.Objects) == pageSize {\n\t\t\tresult.NextPageToken = []byte(result.Objects[pageSize-1].Key)\n\t\t\treturn &result, nil\n\t\t}\n\t\tresult.Objects = append(result.Objects, obj)\n\t}\n\treturn &result, nil\n}\n\n// As implements driver.As.\nfunc (b *bucket) As(i any) bool { return false }\n\n// As implements driver.ErrorAs.\nfunc (b *bucket) ErrorAs(err error, i any) bool { return false }\n\n// Attributes implements driver.Attributes.\nfunc (b *bucket) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tentry, found := b.blobs[key]\n\tif !found {\n\t\treturn nil, errNotFound\n\t}\n\treturn entry.Attributes, nil\n}\n\n// NewRangeReader implements driver.NewRangeReader.\nfunc (b *bucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tentry, found := b.blobs[key]\n\tif !found {\n\t\treturn nil, errNotFound\n\t}\n\n\tif opts.BeforeRead != nil {\n\t\tif err := opts.BeforeRead(func(any) bool { return false }); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tr := bytes.NewReader(entry.Content)\n\tif offset > 0 {\n\t\tif _, err := r.Seek(offset, io.SeekStart); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tvar ior io.Reader = r\n\tif length >= 0 {\n\t\tior = io.LimitReader(r, length)\n\t}\n\treturn &reader{\n\t\tr: ior,\n\t\tattrs: driver.ReaderAttributes{\n\t\t\tContentType: entry.Attributes.ContentType,\n\t\t\tModTime:     entry.Attributes.ModTime,\n\t\t\tSize:        entry.Attributes.Size,\n\t\t},\n\t}, nil\n}\n\ntype reader struct {\n\tr     io.Reader\n\tattrs driver.ReaderAttributes\n}\n\nfunc (r *reader) Read(p []byte) (int, error) {\n\treturn r.r.Read(p)\n}\n\nfunc (r *reader) Download(w io.Writer) error {\n\t// This should always work because r.r was created from a bytes.Reader.\n\t// It's only not a WriterTo when we wrap it with a LimitReader,\n\t// which is guaranteed not to happen by the driver interface.\n\t_, err := r.r.(io.WriterTo).WriteTo(w)\n\treturn err\n}\n\nfunc (r *reader) Close() error {\n\treturn nil\n}\n\nfunc (r *reader) Attributes() *driver.ReaderAttributes {\n\treturn &r.attrs\n}\n\nfunc (r *reader) As(i any) bool { return false }\n\n// NewTypedWriter implements driver.NewTypedWriter.\nfunc (b *bucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\tif key == \"\" {\n\t\treturn nil, errors.New(\"invalid key (empty string)\")\n\t}\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tif opts.BeforeWrite != nil {\n\t\tif err := opts.BeforeWrite(func(any) bool { return false }); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tmd := map[string]string{}\n\tmaps.Copy(md, opts.Metadata)\n\n\tvar md5hash hash.Hash\n\tif !b.options.NoMD5 {\n\t\tmd5hash = md5.New()\n\t}\n\treturn &writer{\n\t\tctx:         ctx,\n\t\tb:           b,\n\t\tkey:         key,\n\t\tcontentType: contentType,\n\t\tmetadata:    md,\n\t\topts:        opts,\n\t\tmd5hash:     md5hash,\n\t\tifNotExist:  opts.IfNotExist,\n\t}, nil\n}\n\ntype writer struct {\n\tctx         context.Context\n\tb           *bucket\n\tkey         string\n\tcontentType string\n\tmetadata    map[string]string\n\topts        *driver.WriterOptions\n\tbuf         bytes.Buffer\n\t// We compute the MD5 hash so that we can store it with the file attributes,\n\t// not for verification. May be null if disabled via Options.NoMD5.\n\tmd5hash    hash.Hash\n\tifNotExist bool\n}\n\nfunc (w *writer) Write(p []byte) (n int, err error) {\n\tif w.md5hash != nil {\n\t\tif _, err := w.md5hash.Write(p); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn w.buf.Write(p)\n}\n\nfunc (w *writer) Upload(r io.Reader) error {\n\t_, err := w.buf.ReadFrom(r)\n\treturn err\n}\n\nfunc (w *writer) Close() error {\n\t// Check if the write was cancelled.\n\tif err := w.ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\n\tvar md5sum []byte\n\tif w.md5hash != nil {\n\t\tmd5sum = w.md5hash.Sum(nil)\n\t}\n\tcontent := w.buf.Bytes()\n\tnow := time.Now()\n\tentry := &blobEntry{\n\t\tContent: content,\n\t\tAttributes: &driver.Attributes{\n\t\t\tCacheControl:       w.opts.CacheControl,\n\t\t\tContentDisposition: w.opts.ContentDisposition,\n\t\t\tContentEncoding:    w.opts.ContentEncoding,\n\t\t\tContentLanguage:    w.opts.ContentLanguage,\n\t\t\tContentType:        w.contentType,\n\t\t\tMetadata:           w.metadata,\n\t\t\tSize:               int64(len(content)),\n\t\t\tCreateTime:         now,\n\t\t\tModTime:            now,\n\t\t\tMD5:                md5sum,\n\t\t\tETag:               fmt.Sprintf(\"\\\"%x-%x\\\"\", now.UnixNano(), len(content)),\n\t\t},\n\t}\n\tw.b.mu.Lock()\n\tdefer w.b.mu.Unlock()\n\tif prev := w.b.blobs[w.key]; prev != nil {\n\t\tif w.ifNotExist {\n\t\t\terr := fmt.Errorf(\"a blob already exists for key %q\", w.key)\n\t\t\treturn gcerr.New(gcerrors.FailedPrecondition, err, 1, \"IfNotExist precondition failed\")\n\t\t}\n\t\tentry.Attributes.CreateTime = prev.Attributes.CreateTime\n\t}\n\tw.b.blobs[w.key] = entry\n\treturn nil\n}\n\n// Copy implements driver.Copy.\nfunc (b *bucket) Copy(ctx context.Context, dstKey, srcKey string, opts *driver.CopyOptions) error {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tif opts.BeforeCopy != nil {\n\t\tif err := opts.BeforeCopy(func(any) bool { return false }); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tv := b.blobs[srcKey]\n\tif v == nil {\n\t\treturn errNotFound\n\t}\n\tb.blobs[dstKey] = v\n\treturn nil\n}\n\n// Delete implements driver.Delete.\nfunc (b *bucket) Delete(ctx context.Context, key string) error {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tif b.blobs[key] == nil {\n\t\treturn errNotFound\n\t}\n\tdelete(b.blobs, key)\n\treturn nil\n}\n\nfunc (b *bucket) SignedURL(ctx context.Context, key string, opts *driver.SignedURLOptions) (string, error) {\n\treturn \"\", errNotImplemented\n}\n"
  },
  {
    "path": "blob/memblob/memblob_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memblob\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"testing\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/blob/drivertest\"\n)\n\ntype harness struct {\n\tprefix string\n}\n\nfunc newHarness(ctx context.Context, t *testing.T, prefix string) (drivertest.Harness, error) {\n\tt.Helper()\n\n\treturn &harness{prefix: prefix}, nil\n}\n\nfunc (h *harness) HTTPClient() *http.Client {\n\treturn nil\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Bucket, error) {\n\tdrv := openBucket(nil)\n\tif h.prefix == \"\" {\n\t\treturn drv, nil\n\t}\n\treturn driver.NewPrefixedBucket(drv, h.prefix), nil\n}\n\nfunc (h *harness) MakeDriverForNonexistentBucket(ctx context.Context) (driver.Bucket, error) {\n\t// Does not make sense for this driver.\n\treturn nil, nil\n}\n\nfunc (h *harness) Close() {}\n\nfunc TestConformance(t *testing.T) {\n\tnewHarnessNoPrefix := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, \"\")\n\t}\n\tdrivertest.RunConformanceTests(t, newHarnessNoPrefix, nil)\n}\n\nfunc TestConformanceWithPrefix(t *testing.T) {\n\tconst prefix = \"some/prefix/dir/\"\n\tnewHarnessWithPrefix := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, prefix)\n\t}\n\tdrivertest.RunConformanceTests(t, newHarnessWithPrefix, nil)\n}\n\nfunc BenchmarkMemblob(b *testing.B) {\n\tdrivertest.RunBenchmarks(b, OpenBucket(nil))\n}\n\nfunc TestOpenBucketFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"mem://\", false},\n\t\t// NoMD5.\n\t\t{\"mem://?nomd5\", false},\n\t\t// With prefix.\n\t\t{\"mem://?prefix=foo/bar\", false},\n\t\t// Invalid parameter.\n\t\t{\"mem://?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tb, err := blob.OpenBucket(ctx, test.URL)\n\t\tif b != nil {\n\t\t\tdefer b.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "blob/otel_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blob_test\n\nimport (\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"go.opentelemetry.io/otel/sdk/metric/metricdata\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/memblob\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/testing/oteltest\"\n\t\"testing\"\n)\n\nfunc TestOpenTelemetry(t *testing.T) {\n\tctx := t.Context()\n\n\tte := oteltest.NewTestExporter(t, blob.OpenTelemetryViews)\n\tdefer func() { _ = te.Shutdown(ctx) }()\n\n\tbytes := []byte(\"hello world\")\n\tb := memblob.OpenBucket(nil)\n\tdefer func() { _ = b.Close() }()\n\n\tif err := b.WriteAll(ctx, \"key\", bytes, nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif _, err := b.ReadAll(ctx, \"key\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif _, err := b.Attributes(ctx, \"key\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif _, _, err := b.ListPage(ctx, blob.FirstPageToken, 3, nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := b.Delete(ctx, \"key\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif _, err := b.ReadAll(ctx, \"noSuchKey\"); err == nil {\n\t\tt.Fatal(\"got nil, want error\")\n\t}\n\n\tconst driver = \"gocloud.dev/blob/memblob\"\n\n\tspans := te.GetSpans()\n\tmetrics := te.GetMetrics(ctx)\n\n\tdiff := oteltest.Diff(spans.Snapshots(), metrics, \"gocloud.dev/blob\", driver, []oteltest.Call{\n\t\t{Method: \"NewWriter\", Code: gcerrors.OK},\n\t\t{Method: \"NewRangeReader\", Code: gcerrors.OK},\n\t\t{Method: \"Attributes\", Code: gcerrors.OK},\n\t\t{Method: \"ListPage\", Code: gcerrors.OK},\n\t\t{Method: \"Delete\", Code: gcerrors.OK},\n\t\t{Method: \"NewRangeReader\", Code: gcerrors.NotFound},\n\t})\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n\n\t// Find and verify the bytes read/written metrics.\n\tvar sawRead, sawWritten bool\n\tproviderAttr := attribute.Key(\"gocdk_provider\")\n\n\tfor _, sm := range metrics {\n\n\t\tfor _, data := range sm.Metrics {\n\n\t\t\tswitch data.Name {\n\t\t\tcase \"gocloud.dev/blob/bytes_read\":\n\t\t\t\tif sawRead {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsawRead = true\n\t\t\tcase \"gocloud.dev/blob/bytes_written\":\n\t\t\t\tif sawWritten {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tsawWritten = true\n\t\t\tdefault:\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tproviderVal, ok := sm.Scope.Attributes.Value(providerAttr)\n\t\t\tif !ok || providerVal.AsString() != driver {\n\t\t\t\tt.Errorf(\"provider tags for %s is : %s instead of :%s\", data.Name, providerVal.AsString(), driver)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tsd, ok := data.Data.(metricdata.Sum[int64])\n\t\t\tif !ok {\n\t\t\t\tt.Errorf(\"%s: data is %T, want SumData\", data.Name, data.Data)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif got := int(sd.DataPoints[0].Value); got < len(bytes) {\n\t\t\t\tt.Errorf(\"%s: got %d, want at least %d\", data.Name, got, len(bytes))\n\t\t\t}\n\n\t\t\tif sawRead && sawWritten {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "blob/s3blob/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage s3blob_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/s3\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/s3blob\"\n)\n\nfunc ExampleOpenBucket() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Establish a AWS Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a *blob.Bucket.\n\tclient := s3.NewFromConfig(cfg)\n\tbucket, err := s3blob.OpenBucket(ctx, client, \"my-bucket\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n}\n\nfunc Example_openBucketFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/blob/s3blob\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// blob.OpenBucket creates a *blob.Bucket from a URL.\n\tbucket, err := blob.OpenBucket(ctx, \"s3://my-bucket?region=us-west-1\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer bucket.Close()\n}\n"
  },
  {
    "path": "blob/s3blob/s3blob.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package s3blob provides a blob implementation that uses S3. Use OpenBucket\n// to construct a *blob.Bucket.\n//\n// # URLs\n//\n// For blob.OpenBucket, s3blob registers for the scheme \"s3\".\n// The default URL opener will use an AWS session with the default credentials\n// and configuration.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Escaping\n//\n// Go CDK supports all UTF-8 strings; to make this work with services lacking\n// full UTF-8 support, strings must be escaped (during writes) and unescaped\n// (during reads). The following escapes are performed for s3blob:\n//   - Blob keys: ASCII characters 0-31 are escaped to \"__0x<hex>__\".\n//     Additionally, the \"/\" in \"../\" is escaped in the same way.\n//   - Metadata keys: Escaped using URL encoding, then additionally \"@:=\" are\n//     escaped using \"__0x<hex>__\". These characters were determined by\n//     experimentation.\n//   - Metadata values: Escaped using URL encoding.\n//\n// # As\n//\n// s3blob exposes the following types for As:\n//   - Bucket: *s3.Client\n//   - Error: any error type returned by the service, notably smithy.APIError\n//   - ListObject: types.Object for objects, types.CommonPrefix for \"directories\"\n//   - ListOptions.BeforeList: *s3.ListObjectsV2Input or *[]func(*s3.Options), or *s3.ListObjectsInput\n//     when Options.UseLegacyList == true\n//   - Reader: s3.GetObjectOutput\n//   - ReaderOptions.BeforeRead: *s3.GetObjectInput or *[]func(*s3.Options)\n//   - Attributes: s3.HeadObjectOutput\n//   - CopyOptions.BeforeCopy: s3.CopyObjectInput\n//   - WriterOptions.BeforeWrite: *s3.PutObjectInput, *s3manager.Uploader\n//   - SignedURLOptions.BeforeSign: *s3.GetObjectInput, when Options.Method == http.MethodGet, or\n//       *s3.PutObjectInput, when Options.Method == http.MethodPut\n\npackage s3blob // import \"gocloud.dev/blob/s3blob\"\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\ts3manager \"github.com/aws/aws-sdk-go-v2/feature/s3/manager\"\n\t\"github.com/aws/aws-sdk-go-v2/service/s3\"\n\t\"github.com/aws/aws-sdk-go-v2/service/s3/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/wire\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/escape\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\nconst defaultPageSize = 1000\n\nfunc init() {\n\tblob.DefaultURLMux().RegisterBucket(Scheme, new(urlSessionOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n)\n\n// Dial gets an AWS S3 service client using the AWS SDK V2.\nfunc Dial(cfg aws.Config) *s3.Client {\n\treturn s3.NewFromConfig(cfg)\n}\n\ntype urlSessionOpener struct{}\n\nfunc (o *urlSessionOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\topener := &URLOpener{}\n\treturn opener.OpenBucketURL(ctx, u)\n}\n\n// Scheme is the URL scheme s3blob registers its URLOpener under on\n// blob.DefaultMux.\nconst Scheme = \"s3\"\n\n// URLOpener opens S3 URLs like \"s3://mybucket\".\n//\n// The URL host is used as the bucket name.\n//\n// See https://pkg.go.dev/gocloud.dev/aws#V2ConfigFromURLParams.\n//\n// The following S3-specific query options are also supported:\n//   - ssetype: The type of server side encryption used (AES256, aws:kms, aws:kms:dsse)\n//   - kmskeyid: The KMS key ID for server side encryption\n//   - accelerate: A value of \"true\" uses the S3 Transfer Accleration endpoints\n//   - use_path_style: A value of true sets the UsePathStyle option.\n//   - s3ForcePathStyle: Same as use_path_style, for backwards compatibility with V1.\n//   - disable_https: A value of true disables HTTPS in the Endpoint options.\ntype URLOpener struct {\n\t// Options specifies the options to pass to OpenBucket.\n\tOptions Options\n}\n\nconst (\n\tsseTypeParamKey            = \"ssetype\"\n\tkmsKeyIdParamKey           = \"kmskeyid\"\n\taccelerateParamKey         = \"accelerate\"\n\tusePathStyleParamKey       = \"use_path_style\"\n\tlegacyUsePathStyleParamKey = \"s3ForcePathStyle\" // for backwards compatibility\n\tdisableHTTPSParamKey       = \"disable_https\"\n)\n\nfunc toServerSideEncryptionType(value string) (types.ServerSideEncryption, error) {\n\tfor _, sseType := range types.ServerSideEncryptionAes256.Values() {\n\t\tif strings.EqualFold(string(sseType), value) {\n\t\t\treturn sseType, nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"%q is not a valid value for %q\", value, sseTypeParamKey)\n}\n\n// OpenBucketURL opens a blob.Bucket based on u.\nfunc (o *URLOpener) OpenBucketURL(ctx context.Context, u *url.URL) (*blob.Bucket, error) {\n\tq := u.Query()\n\n\tif sseTypeParam := q.Get(sseTypeParamKey); sseTypeParam != \"\" {\n\t\tq.Del(sseTypeParamKey)\n\n\t\tsseType, err := toServerSideEncryptionType(sseTypeParam)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\to.Options.EncryptionType = sseType\n\t}\n\n\tif kmsKeyID := q.Get(kmsKeyIdParamKey); kmsKeyID != \"\" {\n\t\tq.Del(kmsKeyIdParamKey)\n\t\to.Options.KMSEncryptionID = kmsKeyID\n\t}\n\n\taccelerate := false\n\tif accelerateParam := q.Get(accelerateParamKey); accelerateParam != \"\" {\n\t\tq.Del(accelerateParamKey)\n\t\tvar err error\n\t\taccelerate, err = strconv.ParseBool(accelerateParam)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid value for %q: %v\", accelerateParamKey, err)\n\t\t}\n\t}\n\n\topts := []func(*s3.Options){\n\t\tfunc(o *s3.Options) {\n\t\t\to.UseAccelerate = accelerate\n\t\t},\n\t}\n\tif disableHTTPSParam := q.Get(disableHTTPSParamKey); disableHTTPSParam != \"\" {\n\t\tq.Del(disableHTTPSParamKey)\n\t\tvalue, err := strconv.ParseBool(disableHTTPSParam)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid value for %q: %v\", disableHTTPSParamKey, err)\n\t\t}\n\t\topts = append(opts, func(o *s3.Options) {\n\t\t\to.EndpointOptions.DisableHTTPS = value\n\t\t})\n\t}\n\tfor _, key := range []string{usePathStyleParamKey, legacyUsePathStyleParamKey} {\n\t\tif usePathStyleParam := q.Get(key); usePathStyleParam != \"\" {\n\t\t\tq.Del(key)\n\t\t\tvalue, err := strconv.ParseBool(usePathStyleParam)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid value for %q: %v\", key, err)\n\t\t\t}\n\t\t\topts = append(opts, func(o *s3.Options) {\n\t\t\t\to.UsePathStyle = value\n\t\t\t})\n\t\t}\n\t}\n\n\tcfg, err := gcaws.V2ConfigFromURLParams(ctx, q)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open bucket %v: %v\", u, err)\n\t}\n\tclient := s3.NewFromConfig(cfg, opts...)\n\n\t// The S3 upload manager doesn't use the config or options to set the\n\t// request checksum calculation. We need to set it explicitly:\n\t// https://github.com/aws/aws-sdk-go-v2/pull/3151\n\to.Options.RequestChecksumCalculation = cfg.RequestChecksumCalculation\n\n\treturn OpenBucket(ctx, client, u.Host, &o.Options)\n}\n\n// Options sets options for constructing a *blob.Bucket backed by S3.\ntype Options struct {\n\t// UseLegacyList forces the use of ListObjects instead of ListObjectsV2.\n\t// Some S3-compatible services (like CEPH) do not currently support\n\t// ListObjectsV2.\n\tUseLegacyList bool\n\n\t// EncryptionType sets the encryption type headers when making write or\n\t// copy calls. This is required if the bucket has a restrictive bucket\n\t// policy that enforces a specific encryption type\n\tEncryptionType types.ServerSideEncryption\n\n\t// KMSEncryptionID sets the kms key id header for write or copy calls.\n\t// This is required when a bucket policy enforces the use of a specific\n\t// KMS key for uploads\n\tKMSEncryptionID string\n\n\t// RequestChecksumCalculation configures the default integrity protection for\n\t// requests. This may need to be set to when_required to preserve compatibility for\n\t// third-party S3 providers: https://github.com/aws/aws-sdk-go-v2/discussions/2960.\n\tRequestChecksumCalculation aws.RequestChecksumCalculation\n}\n\n// openBucket returns an S3 Bucket.\nfunc openBucket(ctx context.Context, client *s3.Client, bucketName string, opts *Options) (*bucket, error) {\n\tif bucketName == \"\" {\n\t\treturn nil, errors.New(\"s3blob.OpenBucket: bucketName is required\")\n\t}\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif client == nil {\n\t\treturn nil, errors.New(\"s3blob.OpenBucket: client is required\")\n\t}\n\treturn &bucket{\n\t\tname:                       bucketName,\n\t\tclient:                     client,\n\t\tuseLegacyList:              opts.UseLegacyList,\n\t\tkmsKeyId:                   opts.KMSEncryptionID,\n\t\tencryptionType:             opts.EncryptionType,\n\t\trequestChecksumCalculation: opts.RequestChecksumCalculation,\n\t}, nil\n}\n\n// OpenBucket returns a *blob.Bucket backed by S3, using AWS SDK v2.\nfunc OpenBucket(ctx context.Context, client *s3.Client, bucketName string, opts *Options) (*blob.Bucket, error) {\n\tdrv, err := openBucket(ctx, client, bucketName, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn blob.NewBucket(drv), nil\n}\n\nvar OpenBucketV2 = OpenBucket\n\n// reader reads an S3 object. It implements io.ReadCloser.\ntype reader struct {\n\tbody  io.ReadCloser\n\tattrs driver.ReaderAttributes\n\traw   *s3.GetObjectOutput\n}\n\nfunc (r *reader) Read(p []byte) (int, error) {\n\treturn r.body.Read(p)\n}\n\n// Close closes the reader itself. It must be called when done reading.\nfunc (r *reader) Close() error {\n\treturn r.body.Close()\n}\n\nfunc (r *reader) As(i any) bool {\n\tp, ok := i.(*s3.GetObjectOutput)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = *r.raw\n\treturn true\n}\n\nfunc (r *reader) Attributes() *driver.ReaderAttributes {\n\treturn &r.attrs\n}\n\n// writer writes an S3 object, it implements io.WriteCloser.\ntype writer struct {\n\t// Ends of an io.Pipe, created when the first byte is written.\n\tpw *io.PipeWriter\n\tpr *io.PipeReader\n\n\t// Alternatively, upload is set to true when Upload was\n\t// used to upload data.\n\tupload bool\n\n\tctx      context.Context\n\tuploader *s3manager.Uploader\n\treq      *s3.PutObjectInput\n\n\tdonec chan struct{} // closed when done writing\n\t// The following fields will be written before donec closes:\n\terr error\n}\n\n// Write appends p to w.pw. User must call Close to close the w after done writing.\nfunc (w *writer) Write(p []byte) (int, error) {\n\t// Avoid opening the pipe for a zero-length write;\n\t// the concrete can do these for empty blobs.\n\tif len(p) == 0 {\n\t\treturn 0, nil\n\t}\n\tif w.pw == nil {\n\t\t// We'll write into pw and use pr as an io.Reader for the\n\t\t// Upload call to S3.\n\t\tw.pr, w.pw = io.Pipe()\n\t\tw.open(w.pr, true)\n\t}\n\treturn w.pw.Write(p)\n}\n\n// Upload reads from r. Per the driver, it is guaranteed to be the only\n// write call for this writer.\nfunc (w *writer) Upload(r io.Reader) error {\n\tw.upload = true\n\tw.open(r, false)\n\treturn nil\n}\n\n// r may be nil if we're Closing and no data was written.\n// If closePipeOnError is true, w.pr will be closed if there's an\n// error uploading to S3.\nfunc (w *writer) open(r io.Reader, closePipeOnError bool) {\n\t// This goroutine will keep running until Close, unless there's an error.\n\tgo func() {\n\t\tdefer close(w.donec)\n\n\t\tif r == nil {\n\t\t\t// AWS doesn't like a nil Body.\n\t\t\tr = http.NoBody\n\t\t}\n\t\tvar err error\n\t\tw.req.Body = r\n\t\t_, err = w.uploader.Upload(w.ctx, w.req)\n\t\tif err != nil {\n\t\t\tif closePipeOnError {\n\t\t\t\tw.pr.CloseWithError(err)\n\t\t\t}\n\t\t\tw.err = err\n\t\t}\n\t}()\n}\n\n// Close completes the writer and closes it. Any error occurring during write\n// will be returned. If a writer is closed before any Write is called, Close\n// will create an empty file at the given key.\nfunc (w *writer) Close() error {\n\tif !w.upload {\n\t\tif w.pr != nil {\n\t\t\tdefer w.pr.Close()\n\t\t}\n\t\tif w.pw == nil {\n\t\t\t// We never got any bytes written. We'll write an http.NoBody.\n\t\t\tw.open(nil, false)\n\t\t} else if err := w.pw.Close(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t<-w.donec\n\treturn w.err\n}\n\n// bucket represents an S3 bucket and handles read, write and delete operations.\ntype bucket struct {\n\tname          string\n\tclient        *s3.Client\n\tuseLegacyList bool\n\n\tencryptionType             types.ServerSideEncryption\n\tkmsKeyId                   string\n\trequestChecksumCalculation aws.RequestChecksumCalculation\n}\n\nfunc (b *bucket) Close() error {\n\treturn nil\n}\n\nfunc (b *bucket) ErrorCode(err error) gcerrors.ErrorCode {\n\tvar code string\n\tvar ae smithy.APIError\n\tvar oe *smithy.OperationError\n\tif errors.As(err, &oe) && strings.Contains(oe.Error(), \"301\") {\n\t\t// AWS returns an OperationError with a missing redirect for invalid buckets.\n\t\tcode = \"NoSuchBucket\"\n\t} else if errors.As(err, &ae) {\n\t\tcode = ae.ErrorCode()\n\t} else {\n\t\treturn gcerrors.Unknown\n\t}\n\tswitch {\n\tcase code == \"NoSuchBucket\" || code == \"NoSuchKey\" || code == \"NotFound\" || code == \"ObjectNotInActiveTierError\":\n\t\treturn gcerrors.NotFound\n\tcase code == \"PreconditionFailed\":\n\t\treturn gcerrors.FailedPrecondition\n\tcase code == \"AccessDenied\" || code == \"Forbidden\":\n\t\treturn gcerrors.PermissionDenied\n\tdefault:\n\t\treturn gcerrors.Unknown\n\t}\n}\n\n// ListPaged implements driver.ListPaged.\nfunc (b *bucket) ListPaged(ctx context.Context, opts *driver.ListOptions) (*driver.ListPage, error) {\n\tpageSize := opts.PageSize\n\tif pageSize == 0 {\n\t\tpageSize = defaultPageSize\n\t}\n\tin := &s3.ListObjectsV2Input{\n\t\tBucket:  aws.String(b.name),\n\t\tMaxKeys: aws.Int32(int32(pageSize)),\n\t}\n\tif len(opts.PageToken) > 0 {\n\t\tin.ContinuationToken = aws.String(string(opts.PageToken))\n\t}\n\tif opts.Prefix != \"\" {\n\t\tin.Prefix = aws.String(escapeKey(opts.Prefix))\n\t}\n\tif opts.Delimiter != \"\" {\n\t\tin.Delimiter = aws.String(escapeKey(opts.Delimiter))\n\t}\n\tresp, err := b.listObjects(ctx, in, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpage := driver.ListPage{}\n\tif resp.NextContinuationToken != nil {\n\t\tpage.NextPageToken = []byte(*resp.NextContinuationToken)\n\t}\n\tif n := len(resp.Contents) + len(resp.CommonPrefixes); n > 0 {\n\t\tpage.Objects = make([]*driver.ListObject, n)\n\t\tfor i, obj := range resp.Contents {\n\t\t\tpage.Objects[i] = &driver.ListObject{\n\t\t\t\tKey:     unescapeKey(aws.ToString(obj.Key)),\n\t\t\t\tModTime: *obj.LastModified,\n\t\t\t\tSize:    aws.ToInt64(obj.Size),\n\t\t\t\tMD5:     eTagToMD5(obj.ETag),\n\t\t\t\tAsFunc: func(i any) bool {\n\t\t\t\t\tp, ok := i.(*types.Object)\n\t\t\t\t\tif !ok {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\t*p = obj\n\t\t\t\t\treturn true\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tfor i, prefix := range resp.CommonPrefixes {\n\t\t\tpage.Objects[i+len(resp.Contents)] = &driver.ListObject{\n\t\t\t\tKey:   unescapeKey(aws.ToString(prefix.Prefix)),\n\t\t\t\tIsDir: true,\n\t\t\t\tAsFunc: func(i any) bool {\n\t\t\t\t\tp, ok := i.(*types.CommonPrefix)\n\t\t\t\t\tif !ok {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\t*p = prefix\n\t\t\t\t\treturn true\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\tif len(resp.Contents) > 0 && len(resp.CommonPrefixes) > 0 {\n\t\t\t// S3 gives us blobs and \"directories\" in separate lists; sort them.\n\t\t\tsort.Slice(page.Objects, func(i, j int) bool {\n\t\t\t\treturn page.Objects[i].Key < page.Objects[j].Key\n\t\t\t})\n\t\t}\n\t}\n\treturn &page, nil\n}\n\nfunc (b *bucket) listObjects(ctx context.Context, in *s3.ListObjectsV2Input, opts *driver.ListOptions) (*s3.ListObjectsV2Output, error) {\n\tif !b.useLegacyList {\n\t\tvar varopt []func(*s3.Options)\n\t\tif opts.BeforeList != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**s3.ListObjectsV2Input); ok {\n\t\t\t\t\t*p = in\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif p, ok := i.(**[]func(*s3.Options)); ok {\n\t\t\t\t\t*p = &varopt\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := opts.BeforeList(asFunc); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn b.client.ListObjectsV2(ctx, in, varopt...)\n\t}\n\n\t// Use the legacy ListObjects request.\n\tlegacyIn := &s3.ListObjectsInput{\n\t\tBucket:       in.Bucket,\n\t\tDelimiter:    in.Delimiter,\n\t\tEncodingType: in.EncodingType,\n\t\tMarker:       in.ContinuationToken,\n\t\tMaxKeys:      in.MaxKeys,\n\t\tPrefix:       in.Prefix,\n\t\tRequestPayer: in.RequestPayer,\n\t}\n\tif opts.BeforeList != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(**s3.ListObjectsInput)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = legacyIn\n\t\t\treturn true\n\t\t}\n\t\tif err := opts.BeforeList(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tlegacyResp, err := b.client.ListObjects(ctx, legacyIn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar nextContinuationToken *string\n\tif legacyResp.NextMarker != nil {\n\t\tnextContinuationToken = legacyResp.NextMarker\n\t} else if aws.ToBool(legacyResp.IsTruncated) {\n\t\tnextContinuationToken = aws.String(aws.ToString(legacyResp.Contents[len(legacyResp.Contents)-1].Key))\n\t}\n\treturn &s3.ListObjectsV2Output{\n\t\tCommonPrefixes:        legacyResp.CommonPrefixes,\n\t\tContents:              legacyResp.Contents,\n\t\tNextContinuationToken: nextContinuationToken,\n\t}, nil\n}\n\n// As implements driver.As.\nfunc (b *bucket) As(i any) bool {\n\tp, ok := i.(**s3.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = b.client\n\treturn true\n}\n\n// As implements driver.ErrorAs.\nfunc (b *bucket) ErrorAs(err error, i any) bool {\n\treturn errors.As(err, i)\n}\n\n// Attributes implements driver.Attributes.\nfunc (b *bucket) Attributes(ctx context.Context, key string) (*driver.Attributes, error) {\n\tkey = escapeKey(key)\n\tin := &s3.HeadObjectInput{\n\t\tBucket: aws.String(b.name),\n\t\tKey:    aws.String(key),\n\t}\n\tresp, err := b.client.HeadObject(ctx, in)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmd := make(map[string]string, len(resp.Metadata))\n\tfor k, v := range resp.Metadata {\n\t\t// See the package comments for more details on escaping of metadata\n\t\t// keys & values.\n\t\tmd[escape.HexUnescape(escape.URLUnescape(k))] = escape.URLUnescape(v)\n\t}\n\treturn &driver.Attributes{\n\t\tCacheControl:       aws.ToString(resp.CacheControl),\n\t\tContentDisposition: aws.ToString(resp.ContentDisposition),\n\t\tContentEncoding:    aws.ToString(resp.ContentEncoding),\n\t\tContentLanguage:    aws.ToString(resp.ContentLanguage),\n\t\tContentType:        aws.ToString(resp.ContentType),\n\t\tMetadata:           md,\n\t\t// CreateTime not supported; left as the zero time.\n\t\tModTime: aws.ToTime(resp.LastModified),\n\t\tSize:    aws.ToInt64(resp.ContentLength),\n\t\tMD5:     eTagToMD5(resp.ETag),\n\t\tETag:    aws.ToString(resp.ETag),\n\t\tAsFunc: func(i any) bool {\n\t\t\tp, ok := i.(*s3.HeadObjectOutput)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = *resp\n\t\t\treturn true\n\t\t},\n\t}, nil\n}\n\n// NewRangeReader implements driver.NewRangeReader.\nfunc (b *bucket) NewRangeReader(ctx context.Context, key string, offset, length int64, opts *driver.ReaderOptions) (driver.Reader, error) {\n\tkey = escapeKey(key)\n\tvar byteRange *string\n\tif offset > 0 && length < 0 {\n\t\tbyteRange = aws.String(fmt.Sprintf(\"bytes=%d-\", offset))\n\t} else if length == 0 {\n\t\t// AWS doesn't support a zero-length read; we'll read 1 byte and then\n\t\t// ignore it in favor of http.NoBody below.\n\t\tbyteRange = aws.String(fmt.Sprintf(\"bytes=%d-%d\", offset, offset))\n\t} else if length >= 0 {\n\t\tbyteRange = aws.String(fmt.Sprintf(\"bytes=%d-%d\", offset, offset+length-1))\n\t}\n\tin := &s3.GetObjectInput{\n\t\tBucket: aws.String(b.name),\n\t\tKey:    aws.String(key),\n\t\tRange:  byteRange,\n\t}\n\tvar varopt []func(*s3.Options)\n\tif opts.BeforeRead != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif p, ok := i.(**s3.GetObjectInput); ok {\n\t\t\t\t*p = in\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif p, ok := i.(**[]func(*s3.Options)); ok {\n\t\t\t\t*p = &varopt\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeRead(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tresp, err := b.client.GetObject(ctx, in, varopt...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbody := resp.Body\n\tif length == 0 {\n\t\tbody = http.NoBody\n\t}\n\treturn &reader{\n\t\tbody: body,\n\t\tattrs: driver.ReaderAttributes{\n\t\t\tContentType: aws.ToString(resp.ContentType),\n\t\t\tModTime:     aws.ToTime(resp.LastModified),\n\t\t\tSize:        getSize(aws.ToInt64(resp.ContentLength), aws.ToString(resp.ContentRange)),\n\t\t},\n\t\traw: resp,\n\t}, nil\n}\n\n// etagToMD5 processes an ETag header and returns an MD5 hash if possible.\n// S3's ETag header is sometimes a quoted hexstring of the MD5. Other times,\n// notably when the object was uploaded in multiple parts, it is not.\n// We do the best we can.\n// Some links about ETag:\n// https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html\n// https://github.com/aws/aws-sdk-net/issues/815\n// https://teppen.io/2018/06/23/aws_s3_etags/\nfunc eTagToMD5(etag *string) []byte {\n\tif etag == nil {\n\t\t// No header at all.\n\t\treturn nil\n\t}\n\t// Strip the expected leading and trailing quotes.\n\tquoted := *etag\n\tif len(quoted) < 2 || quoted[0] != '\"' || quoted[len(quoted)-1] != '\"' {\n\t\treturn nil\n\t}\n\tunquoted := quoted[1 : len(quoted)-1]\n\t// Un-hex; we return nil on error. In particular, we'll get an error here\n\t// for multi-part uploaded blobs, whose ETag will contain a \"-\" and so will\n\t// never be a legal hex encoding.\n\tmd5, err := hex.DecodeString(unquoted)\n\tif err != nil {\n\t\treturn nil\n\t}\n\treturn md5\n}\n\nfunc getSize(contentLength int64, contentRange string) int64 {\n\t// Default size to ContentLength, but that's incorrect for partial-length reads,\n\t// where ContentLength refers to the size of the returned Body, not the entire\n\t// size of the blob. ContentRange has the full size.\n\tsize := contentLength\n\tif contentRange != \"\" {\n\t\t// Sample: bytes 10-14/27 (where 27 is the full size).\n\t\tparts := strings.Split(contentRange, \"/\")\n\t\tif len(parts) == 2 {\n\t\t\tif i, err := strconv.ParseInt(parts[1], 10, 64); err == nil {\n\t\t\t\tsize = i\n\t\t\t}\n\t\t}\n\t}\n\treturn size\n}\n\n// escapeKey does all required escaping for UTF-8 strings to work with S3.\nfunc escapeKey(key string) string {\n\treturn escape.HexEscape(key, func(r []rune, i int) bool {\n\t\tc := r[i]\n\t\tswitch {\n\t\t// S3 doesn't handle these characters (determined via experimentation).\n\t\tcase c < 32:\n\t\t\treturn true\n\t\t// For \"../\", escape the trailing slash.\n\t\tcase i > 1 && c == '/' && r[i-1] == '.' && r[i-2] == '.':\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n}\n\n// unescapeKey reverses escapeKey.\nfunc unescapeKey(key string) string {\n\treturn escape.HexUnescape(key)\n}\n\n// NewTypedWriter implements driver.NewTypedWriter.\nfunc (b *bucket) NewTypedWriter(ctx context.Context, key, contentType string, opts *driver.WriterOptions) (driver.Writer, error) {\n\tkey = escapeKey(key)\n\tuploader := s3manager.NewUploader(b.client, func(u *s3manager.Uploader) {\n\t\tif opts.BufferSize != 0 {\n\t\t\tu.PartSize = int64(opts.BufferSize)\n\t\t}\n\t\tif opts.MaxConcurrency != 0 {\n\t\t\tu.Concurrency = opts.MaxConcurrency\n\t\t}\n\n\t\tu.RequestChecksumCalculation = b.requestChecksumCalculation\n\t})\n\tmd := make(map[string]string, len(opts.Metadata))\n\tfor k, v := range opts.Metadata {\n\t\t// See the package comments for more details on escaping of metadata\n\t\t// keys & values.\n\t\tk = escape.HexEscape(url.PathEscape(k), func(runes []rune, i int) bool {\n\t\t\tc := runes[i]\n\t\t\treturn c == '@' || c == ':' || c == '='\n\t\t})\n\t\tmd[k] = url.PathEscape(v)\n\t}\n\treq := &s3.PutObjectInput{\n\t\tBucket:      aws.String(b.name),\n\t\tContentType: aws.String(contentType),\n\t\tKey:         aws.String(key),\n\t\tMetadata:    md,\n\t}\n\n\tif opts.IfNotExist {\n\t\t// See https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-writes.html\n\t\treq.IfNoneMatch = aws.String(\"*\")\n\t}\n\tif opts.CacheControl != \"\" {\n\t\treq.CacheControl = aws.String(opts.CacheControl)\n\t}\n\tif opts.ContentDisposition != \"\" {\n\t\treq.ContentDisposition = aws.String(opts.ContentDisposition)\n\t}\n\tif opts.ContentEncoding != \"\" {\n\t\treq.ContentEncoding = aws.String(opts.ContentEncoding)\n\t}\n\tif opts.ContentLanguage != \"\" {\n\t\treq.ContentLanguage = aws.String(opts.ContentLanguage)\n\t}\n\tif len(opts.ContentMD5) > 0 {\n\t\treq.ContentMD5 = aws.String(base64.StdEncoding.EncodeToString(opts.ContentMD5))\n\t}\n\tif b.encryptionType != \"\" {\n\t\treq.ServerSideEncryption = b.encryptionType\n\t}\n\tif b.kmsKeyId != \"\" {\n\t\treq.SSEKMSKeyId = aws.String(b.kmsKeyId)\n\t}\n\tif opts.BeforeWrite != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\t// Note that since the Go CDK Blob\n\t\t\t// abstraction does not expose AWS's\n\t\t\t// Uploader concept, there does not\n\t\t\t// appear to be any utility in\n\t\t\t// exposing the options list to the v2\n\t\t\t// Uploader's Upload() method.\n\t\t\t// Instead, applications can\n\t\t\t// manipulate the exposed *Uploader\n\t\t\t// directly, including by setting\n\t\t\t// ClientOptions if needed.\n\t\t\tif p, ok := i.(**s3manager.Uploader); ok {\n\t\t\t\t*p = uploader\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif p, ok := i.(**s3.PutObjectInput); ok {\n\t\t\t\t*p = req\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeWrite(asFunc); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &writer{\n\t\tctx:      ctx,\n\t\tuploader: uploader,\n\t\treq:      req,\n\t\tdonec:    make(chan struct{}),\n\t}, nil\n}\n\n// Copy implements driver.Copy.\nfunc (b *bucket) Copy(ctx context.Context, dstKey, srcKey string, opts *driver.CopyOptions) error {\n\tdstKey = escapeKey(dstKey)\n\tsrcKey = escapeKey(srcKey)\n\tsrcKeyWithBucketEscaped := url.QueryEscape(b.name + \"/\" + srcKey)\n\tinput := &s3.CopyObjectInput{\n\t\tBucket:     aws.String(b.name),\n\t\tCopySource: aws.String(srcKeyWithBucketEscaped),\n\t\tKey:        aws.String(dstKey),\n\t}\n\tif b.encryptionType != \"\" {\n\t\tinput.ServerSideEncryption = b.encryptionType\n\t}\n\tif b.kmsKeyId != \"\" {\n\t\tinput.SSEKMSKeyId = aws.String(b.kmsKeyId)\n\t}\n\tif opts.BeforeCopy != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tswitch v := i.(type) {\n\t\t\tcase **s3.CopyObjectInput:\n\t\t\t\t*v = input\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := opts.BeforeCopy(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := b.client.CopyObject(ctx, input)\n\treturn err\n}\n\n// Delete implements driver.Delete.\nfunc (b *bucket) Delete(ctx context.Context, key string) error {\n\tif _, err := b.Attributes(ctx, key); err != nil {\n\t\treturn err\n\t}\n\tkey = escapeKey(key)\n\tinput := &s3.DeleteObjectInput{\n\t\tBucket: aws.String(b.name),\n\t\tKey:    aws.String(key),\n\t}\n\t_, err := b.client.DeleteObject(ctx, input)\n\treturn err\n}\n\nfunc (b *bucket) SignedURL(ctx context.Context, key string, opts *driver.SignedURLOptions) (string, error) {\n\tkey = escapeKey(key)\n\tswitch opts.Method {\n\tcase http.MethodGet:\n\t\tin := &s3.GetObjectInput{\n\t\t\tBucket: aws.String(b.name),\n\t\t\tKey:    aws.String(key),\n\t\t}\n\t\tif opts.BeforeSign != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tv, ok := i.(**s3.GetObjectInput)\n\t\t\t\tif ok {\n\t\t\t\t\t*v = in\n\t\t\t\t}\n\t\t\t\treturn ok\n\t\t\t}\n\t\t\tif err := opts.BeforeSign(asFunc); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t\tp, err := s3.NewPresignClient(b.client, s3.WithPresignExpires(opts.Expiry)).PresignGetObject(ctx, in)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn p.URL, nil\n\tcase http.MethodPut:\n\t\tin := &s3.PutObjectInput{\n\t\t\tBucket: aws.String(b.name),\n\t\t\tKey:    aws.String(key),\n\t\t}\n\t\tif opts.EnforceAbsentContentType || opts.ContentType != \"\" {\n\t\t\t// https://github.com/aws/aws-sdk-go-v2/issues/1475\n\t\t\treturn \"\", gcerr.New(gcerr.Unimplemented, nil, 1, \"s3blob: AWS SDK v2 does not supported enforcing ContentType in SignedURLs for PUT\")\n\t\t}\n\t\tif opts.BeforeSign != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tv, ok := i.(**s3.PutObjectInput)\n\t\t\t\tif ok {\n\t\t\t\t\t*v = in\n\t\t\t\t}\n\t\t\t\treturn ok\n\t\t\t}\n\t\t\tif err := opts.BeforeSign(asFunc); err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t}\n\t\tp, err := s3.NewPresignClient(b.client, s3.WithPresignExpires(opts.Expiry)).PresignPutObject(ctx, in)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn p.URL, nil\n\tcase http.MethodDelete:\n\t\t// https://github.com/aws/aws-sdk-java-v2/issues/2520\n\t\treturn \"\", gcerr.New(gcerr.Unimplemented, nil, 1, \"s3blob: AWS SDK v2 does not support SignedURL for DELETE\")\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"unsupported Method %q\", opts.Method)\n\t}\n}\n"
  },
  {
    "path": "blob/s3blob/s3blob_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage s3blob\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\tawscfg \"github.com/aws/aws-sdk-go-v2/config\"\n\ts3manager \"github.com/aws/aws-sdk-go-v2/feature/s3/manager\"\n\t\"github.com/aws/aws-sdk-go-v2/service/s3\"\n\t\"github.com/aws/aws-sdk-go-v2/service/s3/types\"\n\t\"github.com/aws/smithy-go\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/driver\"\n\t\"gocloud.dev/blob/drivertest\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\n// These constants record the region & bucket used for the last --record.\n// If you want to use --record mode,\n// 1. Create a bucket in your AWS project from the S3 management console.\n//\n//\thttps://s3.console.aws.amazon.com/s3/home.\n//\n// 2. Update this constant to your bucket name.\n// TODO(issue #300): Use Terraform to provision a bucket, and get the bucket\n//\n//\tname from the Terraform output instead (saving a copy of it for replay).\nconst (\n\tbucketName = \"go-cloud-testing-2\"\n\tregion     = \"us-west-1\"\n)\n\ntype harness struct {\n\tclient *s3.Client\n\topts   *Options\n\trt     http.RoundTripper\n\tcloser func()\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tcfg, rt, done, _ := setup.NewAWSv2Config(ctx, t, region, false)\n\treturn &harness{client: s3.NewFromConfig(cfg), opts: nil, rt: rt, closer: done}, nil\n}\n\nfunc newHarnessUsingLegacyList(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tcfg, rt, done, _ := setup.NewAWSv2Config(ctx, t, region, false)\n\treturn &harness{client: s3.NewFromConfig(cfg), opts: &Options{UseLegacyList: true}, rt: rt, closer: done}, nil\n}\n\nfunc (h *harness) HTTPClient() *http.Client {\n\treturn &http.Client{Transport: h.rt}\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Bucket, error) {\n\treturn openBucket(ctx, h.client, bucketName, h.opts)\n}\n\nfunc (h *harness) MakeDriverForNonexistentBucket(ctx context.Context) (driver.Bucket, error) {\n\treturn openBucket(ctx, h.client, \"go-cdk-bucket-does-not-exist\", h.opts)\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyContentLanguage{usingLegacyList: false}})\n}\n\nfunc TestConformanceUsingLegacyList(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarnessUsingLegacyList, []drivertest.AsTest{verifyContentLanguage{usingLegacyList: true}})\n}\n\nfunc BenchmarkS3blob(b *testing.B) {\n\tctx := context.Background()\n\tcfg, err := awscfg.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tclient := s3.NewFromConfig(cfg)\n\tbkt, err := OpenBucket(ctx, client, bucketName, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, bkt)\n}\n\nconst language = \"nl\"\n\n// verifyContentLanguage uses As to access the underlying AWS types and\n// read/write the ContentLanguage field.\ntype verifyContentLanguage struct {\n\tusingLegacyList bool\n}\n\nfunc (verifyContentLanguage) Name() string {\n\treturn \"verify ContentLanguage can be written and read through As\"\n}\n\nfunc (v verifyContentLanguage) BucketCheck(b *blob.Bucket) error {\n\tvar client *s3.Client\n\tif !b.As(&client) {\n\t\treturn errors.New(\"Bucket.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) ErrorCheck(b *blob.Bucket, err error) error {\n\tvar e smithy.APIError\n\tif !b.ErrorAs(err, &e) {\n\t\treturn errors.New(\"blob.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) BeforeRead(as func(any) bool) error {\n\tvar (\n\t\treq  *s3.GetObjectInput\n\t\topts *[]func(*s3.Options)\n\t)\n\tif !as(&req) || !as(&opts) {\n\t\treturn errors.New(\"BeforeRead As failed\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) BeforeWrite(as func(any) bool) error {\n\tvar (\n\t\treq      *s3.PutObjectInput\n\t\tuploader *s3manager.Uploader\n\t)\n\tif !as(&req) || !as(&uploader) {\n\t\treturn errors.New(\"Writer.As failed for PutObjectInput\")\n\t}\n\treq.ContentLanguage = aws.String(language)\n\tvar u *s3manager.Uploader\n\tif !as(&u) {\n\t\treturn errors.New(\"Writer.As failed for Uploader\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) BeforeCopy(as func(any) bool) error {\n\tvar in *s3.CopyObjectInput\n\tif !as(&in) {\n\t\treturn errors.New(\"BeforeCopy.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) BeforeList(as func(any) bool) error {\n\tif v.usingLegacyList {\n\t\tvar req *s3.ListObjectsInput\n\t\tif !as(&req) {\n\t\t\treturn errors.New(\"List.As failed\")\n\t\t}\n\t} else {\n\t\tvar (\n\t\t\tlist *s3.ListObjectsV2Input\n\t\t\topts *[]func(*s3.Options)\n\t\t)\n\t\tif !as(&list) || !as(&opts) {\n\t\t\treturn errors.New(\"List.As failed\")\n\t\t}\n\t\treturn nil\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) BeforeSign(as func(any) bool) error {\n\tvar (\n\t\tget *s3.GetObjectInput\n\t\tput *s3.PutObjectInput\n\t\tdel *s3.DeleteObjectInput\n\t)\n\tif as(&get) || as(&put) || as(&del) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"BeforeSign.As failed\")\n}\n\nfunc (v verifyContentLanguage) AttributesCheck(attrs *blob.Attributes) error {\n\tvar hoo s3.HeadObjectOutput\n\tif !attrs.As(&hoo) {\n\t\treturn errors.New(\"Attributes.As returned false\")\n\t}\n\tif got := *hoo.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) ReaderCheck(r *blob.Reader) error {\n\tvar goo s3.GetObjectOutput\n\tif !r.As(&goo) {\n\t\treturn errors.New(\"Reader.As returned false\")\n\t}\n\tif got := *goo.ContentLanguage; got != language {\n\t\treturn fmt.Errorf(\"got %q want %q\", got, language)\n\t}\n\treturn nil\n}\n\nfunc (v verifyContentLanguage) ListObjectCheck(o *blob.ListObject) error {\n\tif o.IsDir {\n\t\tvar commonPrefix types.CommonPrefix\n\t\tif !o.As(&commonPrefix) {\n\t\t\treturn errors.New(\"ListObject.As for directory returned false\")\n\t\t}\n\t\treturn nil\n\t}\n\tvar obj types.Object\n\tif !o.As(&obj) {\n\t\treturn errors.New(\"ListObject.As for object returned false\")\n\t}\n\tif obj.Key == nil || o.Key != *obj.Key {\n\t\treturn errors.New(\"ListObject.As for object returned a different item\")\n\t}\n\treturn nil\n}\n\nfunc TestOpenBucket(t *testing.T) {\n\ttests := []struct {\n\t\tdescription string\n\t\tbucketName  string\n\t\tnilClient   bool\n\t\twant        string\n\t\twantErr     bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty bucket name results in error\",\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"nil client results in error\",\n\t\t\tbucketName:  \"foo\",\n\t\t\tnilClient:   true,\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"success\",\n\t\t\tbucketName:  \"foo\",\n\t\t\twant:        \"foo\",\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.description, func(t *testing.T) {\n\t\t\tvar client *s3.Client\n\t\t\tif !test.nilClient {\n\t\t\t\tcfg, _, done, _ := setup.NewAWSv2Config(ctx, t, region, false)\n\t\t\t\tdefer done()\n\t\t\t\tclient = s3.NewFromConfig(cfg)\n\t\t\t}\n\n\t\t\t// Create driver impl.\n\t\t\tdrv, err := openBucket(ctx, client, test.bucketName, nil)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif err == nil && drv != nil && drv.name != test.want {\n\t\t\t\tt.Errorf(\"got %q want %q\", drv.name, test.want)\n\t\t\t}\n\n\t\t\t// Create portable type.\n\t\t\tb, err := OpenBucket(ctx, client, test.bucketName, nil)\n\t\t\tif b != nil {\n\t\t\t\tdefer b.Close()\n\t\t\t}\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenBucketFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"s3://mybucket\", false},\n\t\t// OK, setting region.\n\t\t{\"s3://mybucket?region=us-west1\", false},\n\t\t// OK, use KMS Server Side Encryption\n\t\t{\"s3://mybucket?ssetype=aws:kms&kmskeyid=arn:aws:us-east-1:12345:key/1-a-2-b\", false},\n\t\t// OK, use S3 Transfer acceleration and dual stack endpoints\n\t\t{\"s3://mybucket?accelerate=true&dualstack=true\", false},\n\t\t// OK, use FIPS endpoints\n\t\t{\"s3://mybucket?fips=true\", false},\n\t\t// OK, use S3 Transfer accleration and dual stack endpoints\n\t\t{\"s3://mybucket?accelerate=true&dualstack=true\", false},\n\t\t// OK, use use_path_style\n\t\t{\"s3://mybucket?use_path_style=true\", false},\n\t\t// OK, use s3ForcePathStyle\n\t\t{\"s3://mybucket?s3ForcePathStyle=true\", false},\n\t\t// OK, use disable_https\n\t\t{\"s3://mybucket?disable_https=true\", false},\n\t\t// OK, use FIPS endpoints\n\t\t{\"s3://mybucket?fips=true\", false},\n\t\t// OK, use anonymous.\n\t\t{\"s3://mybucket?anonymous=true\", false},\n\t\t// OK, use request checksum calculation when_supported\n\t\t{\"s3://mybucket?request_checksum_calculation=when_supported\", false},\n\t\t// OK, use request checksum calculation when_required\n\t\t{\"s3://mybucket?request_checksum_calculation=when_required\", false},\n\t\t// OK, use response checksum validation when_supported\n\t\t{\"s3://mybucket?response_checksum_validation=when_supported\", false},\n\t\t// OK, use response checksum validation when_required\n\t\t{\"s3://mybucket?response_checksum_validation=when_required\", false},\n\t\t// OK, use both checksum parameters\n\t\t{\"s3://mybucket?request_checksum_calculation=when_required&response_checksum_validation=when_supported\", false},\n\t\t// OK, case insensitive checksum parameters\n\t\t{\"s3://mybucket?request_checksum_calculation=WHEN_SUPPORTED&response_checksum_validation=When_Required\", false},\n\t\t// Invalid request checksum value\n\t\t{\"s3://mybucket?request_checksum_calculation=invalid\", true},\n\t\t// Invalid response checksum value\n\t\t{\"s3://mybucket?response_checksum_validation=invalid\", true},\n\t\t// Empty request checksum value\n\t\t{\"s3://mybucket?request_checksum_calculation=\", true},\n\t\t// Empty response checksum value\n\t\t{\"s3://mybucket?response_checksum_validation=\", true},\n\t\t// Invalid accelerate\n\t\t{\"s3://mybucket?accelerate=bogus\", true},\n\t\t// Invalid FIPS\n\t\t{\"s3://mybucket?fips=bogus\", true},\n\t\t// Invalid dualstack\n\t\t{\"s3://mybucket?dualstack=bad\", true},\n\t\t// Invalid ssetype\n\t\t{\"s3://mybucket?ssetype=aws:notkmsoraes&kmskeyid=arn:aws:us-east-1:12345:key/1-a-2-b\", true},\n\t\t// Invalid parameter together with a valid one.\n\t\t{\"s3://mybucket?profile=main&param=value\", true},\n\t\t// Invalid use_path_style\n\t\t{\"s3://mybucket?usePathStyle=bad\", true},\n\t\t// Invalid disable_https\n\t\t{\"s3://mybucket?usePathStyle=bad\", true},\n\t\t// Invalid parameter.\n\t\t{\"s3://mybucket?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tb, err := blob.OpenBucket(ctx, test.URL)\n\t\tif b != nil {\n\t\t\tdefer b.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n\nfunc TestChecksumConfigurationPassthrough(t *testing.T) {\n\t// Test that checksum configuration from URL parameters is properly passed through\n\t// to the S3 bucket options\n\ttests := []struct {\n\t\tname                           string\n\t\turl                            string\n\t\twantRequestChecksumCalculation aws.RequestChecksumCalculation\n\t\twantErr                        bool\n\t}{\n\t\t{\n\t\t\tname:                           \"request checksum when_supported\",\n\t\t\turl:                            \"s3://mybucket?request_checksum_calculation=when_supported\",\n\t\t\twantRequestChecksumCalculation: aws.RequestChecksumCalculationWhenSupported,\n\t\t},\n\t\t{\n\t\t\tname:                           \"request checksum when_required\",\n\t\t\turl:                            \"s3://mybucket?request_checksum_calculation=when_required\",\n\t\t\twantRequestChecksumCalculation: aws.RequestChecksumCalculationWhenRequired,\n\t\t},\n\t\t{\n\t\t\tname:                           \"case insensitive\",\n\t\t\turl:                            \"s3://mybucket?request_checksum_calculation=WHEN_SUPPORTED\",\n\t\t\twantRequestChecksumCalculation: aws.RequestChecksumCalculationWhenSupported,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid value\",\n\t\t\turl:     \"s3://mybucket?request_checksum_calculation=invalid\",\n\t\t\twantErr: true,\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// Parse the URL to extract the bucket name and query parameters\n\t\t\tu, err := url.Parse(test.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse URL: %v\", err)\n\t\t\t}\n\n\t\t\t// Create a mock AWS config with the query parameters\n\t\t\tcfg, err := awscfg.LoadDefaultConfig(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to load AWS config: %v\", err)\n\t\t\t}\n\n\t\t\t// Apply URL parameters to the config\n\t\t\tcfg, err = gcaws.V2ConfigFromURLParams(ctx, u.Query())\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Create URLOpener to test the integration\n\t\t\topener := &URLOpener{}\n\t\t\tbucket, err := opener.OpenBucketURL(ctx, u)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to open bucket: %v\", err)\n\t\t\t}\n\t\t\tdefer bucket.Close()\n\n\t\t\t// Verify that the checksum configuration was applied\n\t\t\t// We can't directly access the internal bucket struct, but we can verify\n\t\t\t// that the configuration was applied to the AWS config\n\t\t\tif cfg.RequestChecksumCalculation != test.wantRequestChecksumCalculation {\n\t\t\t\tt.Errorf(\"got RequestChecksumCalculation %v, want %v\",\n\t\t\t\t\tcfg.RequestChecksumCalculation, test.wantRequestChecksumCalculation)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestToServerSideEncryptionType(t *testing.T) {\n\ttests := []struct {\n\t\tvalue         string\n\t\tsseType       types.ServerSideEncryption\n\t\texpectedError error\n\t}{\n\t\t// OK.\n\t\t{\"AES256\", types.ServerSideEncryptionAes256, nil},\n\t\t// OK, KMS\n\t\t{\"aws:kms\", types.ServerSideEncryptionAwsKms, nil},\n\t\t// OK, KMS\n\t\t{\"aws:kms:dsse\", types.ServerSideEncryptionAwsKmsDsse, nil},\n\t\t// OK, AES256 mixed case\n\t\t{\"Aes256\", types.ServerSideEncryptionAes256, nil},\n\t\t// Invalid SSE type\n\t\t{\"invalid\", \"\", fmt.Errorf(\"'invalid' is not a valid value for %q\", sseTypeParamKey)},\n\t}\n\n\tfor _, test := range tests {\n\t\tsseType, err := toServerSideEncryptionType(test.value)\n\t\tif ((err != nil) != (test.expectedError != nil)) && err.Error() != test.expectedError.Error() {\n\t\t\tt.Errorf(\"%s: got error \\\"%v\\\", want error \\\"%v\\\"\", test.value, err, test.expectedError)\n\t\t}\n\t\tif sseType != test.sseType {\n\t\t\tt.Errorf(\"%s: got type %v, want type %v\", test.value, sseType, test.sseType)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0VDAcLHgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"48a9a262ca4e6ccc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VzwI4oJ6otE7n+E9wRNEhtODngo8Nf0RWXomO3OL2xS4Cq3LdMmEB0Hs5OBE4tgKXXov5ADisEI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB0AHTQM2TP1DR8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9e30576fc1797f15\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+ucuPWqKfoz0wPH5wcKZo/Pcq8czaO+7+3tZlex/4T/tq3a6xhhqtAuiSgG51IYgABFg+ikGEQQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB4QSHD0ETAKASM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"330af95a754fcd73\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cM3a0QQ9dfIi0TZQ2Z5ZkdVsN9PJDBLqolYDMsk0CFEyKR1MlvrsY76Oe4h7kHSDaSt2XFQgwAY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB9W9G9D4CRN8RR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"48bcdc938064b850\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=mydir\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6crv+XQpZOVwDORi5KxZcyE1wpbp+VvKIOGV03hjjy28UG7bXXB/S0rziSNDYHGnpf/PYtHqkUI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEBBQHSAR7Y89ZV3\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXI8L1ByZWZpeD48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4Pm15ZGlyLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"9fa1840dea7754e3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ien065lps2PkLv7YHeimj3X5ZbvYE2G4xIMQNV7dHttNo60VATZDZY/di/fZl6Jo32ODQ/MTfkY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEBDYNW6K13816T0\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXIvYXMtdGVzdDwvUHJlZml4PjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+bXlkaXIvYXMtdGVzdDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNi0wMy0xOVQxNToyODoyMi4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMmcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+MTE8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"6e7a082118653597\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key-does-not-exist?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VStXwQWK2ZVe0iO+RHCZUK9aacEH4nsZjo6gXKhfhAYHzCo8wcKrVNlyEVKult95EXLLfFtdsoA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB1A141HVBK8SVF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5rZXktZG9lcy1ub3QtZXhpc3Q8L0tleT48UmVxdWVzdElkPkpFQjFBMTQxSFZCSzhTVkY8L1JlcXVlc3RJZD48SG9zdElkPlZTdFh3UVdLMlpWZTBpTytSSENaVUs5YWFjRUg0bnNaam82Z1hLaGZoQVlIekNvOHdjS3JWTmx5RVZLdWx0OTVFWExMZkZ0ZHNvQT08L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"f9d049a8c7a450ba\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fmydir%2Fas-test\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uhcH8VtJfJ7KUBT3hDWEhVB5YcJ+80S2N1EYsmRSpN5f+3y7t0gP7y3QOrGj8Mp+AxBPEhlEOZQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB9CCX8WRR2DMM3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjIyLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiPC9FVGFnPjxDaGVja3N1bUNSQzMyPkRVb1JoUT09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"719bb5de156667a0\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AXCVmWQJCHGrxTVjb0eBT32ai30TxocxZqfrey8AK6hRB/Z/6ugZcacSKG6epYrU+5w7EiZjKWg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEBF17V26V14MZDZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"944c8c8c090256c2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UNHFlYtBmQaIm5IvBRsHEbvyGIuzAqckuFq0cOeZsOxRJwrsUPhTOZYNn2ANSmMm0C/jb26PMwo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB0TJNYKZX68ZVV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"caeb1d633102d299\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/ccYTNzeXNX50+KMSx167DZU+RNIwplbxZPWZFlB2lwO1SW1kobPGHHGhiXTGYr9fhz9VZNnGp8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB2J2A8D81XJSQE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6bb17d1999049ac7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"D/O3pLXnDrca0tZVD+P8h1DgyOPZNlHnVImHoK9YP+FrkDhivrvvcc5Ugu0Ii/Ov4AH0U05YLxA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEBB0FF2CXBYYQA5\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestAs/verify_ContentLanguage_can_be_written_and_read_through_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0UKNL5bQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"071b516330624a28\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2Ncxx6qtzOpAtRZB0Z1cSBqYjByxlvHKmObKSbEcSMQ/m+77vpUtuJwot7JCee1IS8tRgoiYFQOTTO4IKAYBWsHcCZRByG1j\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V5FNESX7HQKCM8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c59fa740cb81b709\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/DVv7HN21ATfLt1/YTYSCGYX9jiqL3H1ZBBw9PP2+3xtd6U+CjyiFP8AeuFipi2Esx+8vBA7sq8imyaEndloxClV7eNT+083\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V4CA06MD883QDT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"43e25455e4df3684\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OYehWM0pRCIsDo4DIvshLpeYCItcTb9R2UJaFtHkzi78yW6er9w0zD7Jd7YpotZmGip66aR55iuqiZ8ZK/VmeppRxvXIKYmi\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V2P1AK8K1TWRRY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"8e621f33f7699658\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=mydir\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wuJVV6sbT3hU+D/guQus3vKG1eHF718WZdO4sYxOaisbjL8EVD4T8A9UvqcNkoKLvLlehHiJV6KZdWxk1Zz9HuxgnbhkFzig\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V8S13Y6DAGXJ6X\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXI8L1ByZWZpeD48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4Pm15ZGlyLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"b67848233bdfedf7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vWGtElR4AIGSMhFJdDtFjWV90rXcsdYPm4u+/CmA3kFmioVPkN6Cyc8ciF6EvWfMXtyS5UYPdjeVrkNf/UwpDutIjM4g9HPW\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VA1JP91M1HFRK1\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXIvYXMtdGVzdDwvUHJlZml4PjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+bXlkaXIvYXMtdGVzdDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNi0wMy0xOVQxNToyODoyMS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMmcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+MTE8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"db612f7485d204d4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key-does-not-exist?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZbTue3NoICkrWX5RdDGTBQmTv8EeiLiCnNfo7ubpMp9g24eNqGg8qe7QLw3KVmHqUT4yseGz4+nNtd6w/0Ah1av4/djpU816\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V9J74JNE8DHTE5\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5rZXktZG9lcy1ub3QtZXhpc3Q8L0tleT48UmVxdWVzdElkPk0xVjlKNzRKTkU4REhURTU8L1JlcXVlc3RJZD48SG9zdElkPlpiVHVlM05vSUNrcldYNVJkREdUQlFtVHY4RWVpTGlDbk5mbzd1YnBNcDlnMjRlTnFHZzhxZTdRTHczS1ZtSHFVVDR5c2VHejQrbk50ZDZ3LzBBaDFhdjQvZGpwVTgxNjwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"0f652f83b8989ccc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fmydir%2Fas-test\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"X3jPuZcKWBTIKupWWvpff+ydwulRYsxiwxUEdAJ6cs3Abs+a4yNMz47HnKDfiLGhya4Sww+G6+kzAXqrnC8KUwBBtqQkl4S2\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VE1P9RRN1K6M9H\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjIxLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiPC9FVGFnPjxDaGVja3N1bUNSQzMyPkRVb1JoUT09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"013bfe6691e056aa\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"icFm495hT3jFPO2KESFH/vZVbFgE8TtbJMkRRkUYyHLd7rhhpwklDvAp8eVchKGIcn3KE3fxSmEXBePdx26QlapXLDSsoldr\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB8NT2M7P9TWCPG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"853dd16a4442c3c9\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DNiL1rPLjypxvGJIPC9Ko3AqUVNBbsLHQoORym0sFlWjiRhm0Q6cnHdB1If/Mb6cTw/1e5H7RTWAIm4MlxsY/x5LlIoc/FV5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB5V6PY8SG0Q57Y\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bbbc22d598af86ce\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qFswUPDvnUZLpl71qjApOBRCfnltaGNIgSfj952WhZ3dktoYnA9NuA/HdbrYLk9QsYq7kiYqTc9zxVhw0pC/rypqkeqMepqx\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEBF1QFVZZZRWXQR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"59b4e18dadde0f8b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5JrVEh8xAL3y3zjUuy2BaSXEIuhDCWFGemG2n7cIwHTGClLXjw2J07zaaHnv2zr4gRq9jWzd8S26qpXKGS0LkBgKfXMehQQb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB7BB8H5JS57JQJ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestAttributes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0CDuTtSgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5a52e900a38d0e52\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\",\n            \"aws-chunked\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"12\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yw0KSGVsbG8gV29ybGQhDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpIQ2tjb3c9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"HCkcow==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZQ0ekbDroMOCGhhHY1J6+vLDgOyfHvhLJOzE11sc24aHxeN6p1Bqv9/WgYMx/FuJlqh8vuj41bOcjf+R5Kj4F4EKnpN+smfB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9BZBWPZ6Z8GMEK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8d1b2f7d1fab43cf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/not-found\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wy/qtB5evDZr6Q8uUNO6WCU9Sb/F1PpIh0cef7CnPsHbszQSV/cvDKQP3nAt8wvDDxIcpUe7zqqG/L20Xhvh3H4+lv1BxEiI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D91K8PD9P583XAQ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6ff266b3c5e1f741\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NG9FfmVj9z4+/Y0o0RWGNkl3FK8unZ2RE0hGHTkV5brAasqyvoSDVdU5PxN36XWceQwCsKCOTaiJjeO5kbFX8NN9KhTx/XPH\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D91MYD02N0XDZA8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0bdd924f79bf3b19\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"H+hqbPO5sKgiIeO2xeqax4HcbkD1BW3/9PYxdXQs2mQ63E2NPhjBe2b0Mwnd2rQIFgTst4GoN2iJvYJ7OcsJWbKLEinGG58o\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9ESD7K38JPT2Z5\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"730b8fd9c2947795\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nwboQIfIEoqG7KhafR1CY2O0t/nXvHbkOHrVsiabaxKducBCSSfn45TVVO+j7AWtdBGnLcDpwBiH8rqaNo6VhM33TTfhqdMS\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9CGGW1GGXKETSG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9c5fcba6755e1601\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"HCkcow==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aDgz96uNNzi5WAN4zaQsvSW+cBDhQ3USatQQJ4HTwH8g6G8oY6NuRRGr5gG7Zc/tnz7RTBXucsK6OY40Aer82G7wI7PrhRdo\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9A1RJ1F3SEWM1B\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQh\"\n      }\n    },\n    {\n      \"ID\": \"a465d3086bb5f62e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"12\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yw0KSGVsbG8gV29ybGQhDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpIQ2tjb3c9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"HCkcow==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Bv8m8jD25jK7UGJmx3ipWh/Kv4JARu+PKVKqJfZP+a/JZ9R+fGKbdEmlvmDWXKdpMKkYGpbdzb5x0Pp0CExvfo83JkaWynb9\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9205DVRA9ZDF87\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e6883090ab52cea7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3VU6rV5xpj0A7dXMOw3Nod9lrcgfHEcSRbgIktBte6sw3ZrfwLA05TKjrGm1V2NKCzbqdpIH2ap14m+3JM25PK93p0UvYtuz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D99BF8E3XSY80AF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d01c12ed0e6e4c49\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DMQ7sIVKyLOFNy6rsH0NshmPXqKcgEyUzDoWgZxXmRzbtwNwmkdqPQjqt3wu82iCavZM/ZF8laLKPwEVdoFiTFzRyFPF36Fb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9FZ5C2GP2MDXNF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1d17c8a94fa00ee3\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TEsLZmKYCFRw1iaZMIKeCfzKuFdkTjd+WdMLcxns8HTigXn6ym5lbyHZUHg7j9GT8YCwUEpUNXr7a43E4TdCyd7mk1UTtByK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D99EJAJBBM9APA2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestCanceledWrite/BlobExists.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0FOV/lhwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7f7f7211a098b2d3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rB6iATIJOXbu/s3gPC6z1mZpS2RVjyUQW0zPJvn/gUi5+TEZeLnmm31o+KugfC+CG74nhNUoHdg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1SPDNQW89X6K70\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"16538f0e2c63ad83\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"u7r9mPSlTqBQucOnzhtz2tEDwdUWwyo10LrqgWxrO1iAroriLUv6daXY2ILkq4PTBzvhtrocoT4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1KQQJD19R58CH3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"6bd54cfc1fd2fe16\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xtaej0PTp41Cqh1lUanEF7ai05yTNLXClWoBPw3XLLSS3jiqKDqLgpTtDzTfLled+c22wshAGkw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1VC1HEPBZ0V0D5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"bd1707d4277b40db\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FtVnDtDaSfgkjYj5q4R5ntxCSKqpJRhWqW8jZYR+H5T5vlmeQdsiXJA3erdo4A4fiQzIA6dxzoM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1RCKQ80R1DM4FN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"942fcc53815d678f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hz9n9HqfjaOSfgM9jAo5ofSgBwjOAXsthJoD805LvIf9hmqI+bDLDQzo0ufYbFdQm2e6Z2PEYBA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1YEDJ0GCTVEF17\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestCanceledWrite/EmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0FKbKieQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a56b2eb147cb8976\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0oJvCxg13e2rtyz0Dr/GA5r3kbJ87TJkEsHT5UOwhi5RdAE6KO8SfInDf7ywrOAVp5otyTPUcTO7Xa0VqOmvZvFrZNItWSpR\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48QTECA4EYEWNRR\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+UDQ4UVRFQ0E0RVlFV05SUjwvUmVxdWVzdElkPjxIb3N0SWQ+MG9KdkN4ZzEzZTJydHl6MERyL0dBNXIza2JKODdUSmtFc0hUNVVPd2hpNVJkQUU2S084U2ZJbkRmN3l3ck9BVnA1b3R5VFBVY1RPN1hhMFZxT212WnZGclpOSXRXU3BSPC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"d87aa9ed7d1a5daf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nSKTJ3VmGhUgy/FRS/Swfo35anY0WaaxzuVmU4AJAnywduaMzfUUttZRTq5rACkdG2dh5MTNm/w3MkM9f6+X2uIKxRUEvwQ+\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48SE6ERZ7DJN650\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+UDQ4U0U2RVJaN0RKTjY1MDwvUmVxdWVzdElkPjxIb3N0SWQ+blNLVEozVm1HaFVneS9GUlMvU3dmbzM1YW5ZMFdhYXh6dVZtVTRBSkFueXdkdWFNemZVVXR0WlJUcTVyQUNrZEcyZGg1TVRObS93M01rTTlmNitYMnVJS3hSVUV2d1ErPC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestCanceledWrite/NonEmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0FMcVn3AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"434654c3f04c9649\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LCYN1AFU+luW39ytezCZ37reXc6YsiqASLL/5NPReIDzHSuqDtbqOyEbrDbdAG+O92dqPANfa0pCDvUHF4OkGguQ/5VY3QEi\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48ZVA2B2HQQN2HC\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+UDQ4WlZBMkIySFFRTjJIQzwvUmVxdWVzdElkPjxIb3N0SWQ+TENZTjFBRlUrbHVXMzl5dGV6Q1ozN3JlWGM2WXNpcUFTTEwvNU5QUmVJRHpIU3VxRHRicU95RWJyRGJkQUcrTzkyZHFQQU5mYTBwQ0R2VUhGNE9rR2d1US81VlkzUUVpPC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"287e05574b930356\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ywOUrqPYi1k35AqPGXeLfgQ6e4IrTdyJuryGezpJmMJ+HWlhTFg3533n+sNCQ7VGwLwSZ9uwGFWJDu5sFDOThNHEh78SciZB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48QBQM48W62XR24\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+UDQ4UUJRTTQ4VzYyWFIyNDwvUmVxdWVzdElkPjxIb3N0SWQ+eXdPVXJxUFlpMWszNUFxUEdYZUxmZ1E2ZTRJclRkeUp1cnlHZXpwSm1NSitIV2xoVEZnMzUzM24rc05DUTdWR3dMd1NaOXV3R0ZXSkR1NXNGRE9UaE5IRWg3OFNjaVpCPC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestConcurrentWriteAndRead.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0GDc8yrwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ae3b45018c676cc3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"2w9S4aRqKABHoeAhyiAJMA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6eG9SZE1BPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xoRdMA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jQr/6JatdjZZWORmrFfqM416h83Ytp6h16jl2vHZqc1+S0hYNq+RyeCEwpLWqB+t0B2QeNC3Xx1J53YTTwvxWYhByzxcT2vT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1MN1YQPX1B6TEK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4bea1c4d98377416\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"qPZPE0uAGBNKE6LhEQTA8Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UlBjNHJRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RPc4rQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LWNKYyLbnSyjK0jLq/36uqvRyk7Jdt/j9l1Bo1LL6ODsRGWdRE1DAcyhf9k3NJYhjJ77OYs8sAqFsLCV7VeBGSibqntVLSRO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1JRAT6XYK32A9P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"99ae374b89111d56\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"VkGQ+3LJseHAFopbb+BYvg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6QlFLazh3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"BQKk8w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0EZdtgTxky8pnEahhv+B6U0xFevThBG0qZQ9X2jlyHYe4OTiWJkFkaBzIBCyQFlN4dPeCO/OaNQzYKoI84tMknJNxYmCT4Dj\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1YHH4NJREAYSF0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"24a2b4c77d1dcf4c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"Yg8LZ6kff3QVG8W+dFtxEA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6eHh3QUVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xxwAEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1Q3bMcqPS3VUBjypYf5mPvAr/8o6iGNhqOO0zitoDCfallPyL9TRTij1TCHaLuC81hz34L7XH4CM5Tlqp6nAbQxXVRHe0ZZF\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1MM4WH813MRM81\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"760c1bb9c0597619\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"ZUHn/UhoC5tg7AVev6McAg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6NStiT1BnPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5+bOPg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xeh7LtOMKi4iYltcF51paBU9UMdrT3xAtSe+kc672EFnpTsFhDY1A7VMIrSp3Nii/JjL4Ye0uKybYtV7/EscIKHfl70JNsBA\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1W1B1670TTZPQ8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"16832c1cdc70c836\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"YfRaKQkG0Wv1UeeMsD1f+Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6ZXl4NGVBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eyx4eA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BT+SK63s2UmrRsCPICnz0Ip9g2ezl4iDvttECjwfOxDtwnGOKmeEx+RT77dOvvljJSN1LvTr+oO60ylWlpQRg2UGqjWEgz+v\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1TS04QC0X2Q0ER\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a8706b9e57291403\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"32eeXsj7ZyhCl0o20wPQ/w==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KEREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6NW42VEh3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5n6THw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"01WPpdfOgnPpZnPDtxPE5T9jgRR80JeYTrPWYRNe4NrJhuKjCuDk8lwM9jDAWAhz+Hpb1xsQQXS652tvIMcS05gj6DpLu2yO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1P3Y865FS14SYM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7540ff648f8298a1\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"65n9CjdrJkNQEaG4fFWMgQ==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6Rzd0M0tBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"G7t3KA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TUCiZEmfu84+Nb5bHh88Wf/yJ1ZySbvixHNZgaMzTppYVyNMja56DJ+5CvM97CG8DBnirZdUkXESP015n2AENhrr7kNUh011\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1HH1NW8G9QT8J3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a7afa4096ff15d96\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"AbDmWR96f1VIFnW4JQ5/SA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6bWNnU3RRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"mcgStQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"h8T5eNurJRVyp++7fGtyyL/JqDYvMmKeqEY9OvYSnXsVH+4vGizKkibfPSNql9Q1D8k00VpyeHl26sQX1T8X3MEt9ahzH137\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1WZNTVCDN7FGF3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fa196f70241cd074\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"SsTzFZ3m7R1NrIc42UKW+Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6K01kQXhBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"+MdAxA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"j2o5d8l9gWIgXyFFdMDtawLrU0MeCoOgTEG9y+EkOT5wd2Zb1habM+qpZKQ3AYcE5M80OVyIA8fXIKJO4YhY5KsG2ZLCRu3H\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1Q9S77EFE1KFFC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d1abe01518f2c28f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"H06jyF3ZsJDOcwyB5gg+zw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6aHVtY1R3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"humcTw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ymXzhGhpDsOQyq11x5s0fNYTqO94oCJCbmu6CMDvLitQz2pAZtOJFAZTM8cdN23ZEoxvk+0MdyuD1Sg4aujUdRH0KiDG7yF/\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1WKRWNWDRX30EY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9f1307767876fd4e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"NlFDUFM0TpF1S+MXE1PxDg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6SmZocTNBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"Jfhq3A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Di1Eg+DpQJeObs2xGEjkYzdDlKnXV5XszeeGPP04gmlZZIrJtrG6+kz+7/LjSj0lEe8tMWSWSUptbDVr0mSb3tTLRY2Hu8zr\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1XGNG92G5F5ZK7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bcaaeba3f754d61e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"kfsiuKRZ73D7CzauKodAhg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6dVRMY21nPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"uTLcmg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7wL/yym2IRL839EbWrMRNB0x9Dz6Ydg2haxIfcaFWIlHzqwrCoBaj3Q3y/zb/5EUmPSCF1mu4IjZIgkbUV8GBlEjrqaJmAIR\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1ZWPSW22AZX1HM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"52e87d0e49b80f74\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"wZvI1MtOgANGQD0gzZ4NUg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6TzBHNUJ3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"O0G5Bw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dYr8Qnzwc07wCNubAL47b7YuigGZSLL+dSGjC6Ca5OS7tG7pq/WkYdBVZE5s2gLg/Z5IsnLIg2OXkiWFlmSR9wImoTSI9Lxn\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1S99SJCK9JXXTW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"211606f0846fd4bd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"lko2uDqoJrgEyYNnvcJ6vw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6cGhOU1lBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"phNSYA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"n5wDaTdHMI8+R77kvsnm+1GrAvMXNlMqgsKN3XgrHX843w3Er8zcJn2MCnHqM+JdDysCnnV8YyqJZPJQeobsVUwihGiUyxBf\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1QSFHFY88J3CWV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3e3bc46a17150677\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"AXKK1JVcZ791KxchIXYNNg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6WkEzMmdnPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ZA32gg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0fDlH+qP2SpDfLIZoOJdeWlZu1VtfYEKjv7Fdwnkcq+kM7dlj2XaW8mrbk7lDT1M7TZAzcm/B7/JdwAIzHf5JP35qmzQRS/6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1WX5WAM3P9Y1HR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c8147e185415e682\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"7tBPOyKIo0omYOmbN3Ht7w==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6R2lNcUNRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"GiMqCQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"88DO+dBkW59KOsc1ubBD12qQLQwzo578+jZwDBheEAI/3wf/XBiv53/gkn5O6eQiVobCrAvctU4FWrSXJ2uGoy4MpjwpQpAt\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1ZT357VC0B1EDB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8488f1474cb42d1a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"kbuiTp5JEugjwAkgztPoXA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6VzlhMlZ3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"W9a2Vw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"c0rp5yLxoCuw5HCcvvFy/UvGFHx0F8hYmiHJYhomqSItnI2ncW4ycKdBSeUb+w4pGyFPGAfSehWmTjnk3Afsvg8215b30xVp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1R1Q9SV2ME9VQ8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bb6be050f74c02d3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"qo85ln3rRBpudISWOUWpYA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6T3Rua0pnPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OtnkJg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Qrog7QZI84RKi27FPdGYLnbOwBgC5XHmo04iO1fj2RQorCLzaXRFBUoHSTd3Atq3IO0zx7mx1h20S0U+IvI9PAicKoP5DUX6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1G6ERPZKMYFW08\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ca8f1448e9607766\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"qHqy3TOCPLWABZ/YTEeiAg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6MkQyTzZ3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"2D2O6w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5o78skI02lXup/XIshdFnSODUbqc4tm1NVVUV/BpH5DXNKc6sgMvvKbZrHzkfcQZxIcgLIQH8VEveQ5mBP7FWonlSaXVPMqb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1KTC45S5BN8ECV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"21f353e200ccc348\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"mcgStQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8FdkhBE169h5wvlFLlj9VKKF2di3WsptyDJ0NZ3C4gqXQPqz5/+Jd1V1jsnrWnVoHO5QqNXrxOaTHz2kerCaXJJnwKSeds8O\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1M8MXJRVSV4ZG5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw==\"\n      }\n    },\n    {\n      \"ID\": \"79579d1fdfe0039e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xoRdMA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qSts4v3Xoh08y5No7ZSlCFyKh3+tw53o99XPZ9ouLkor1xN8nJNnqb0YgWOwB87BaT5y4RGRTEF+B8wat04dWyOKgo9XTNUt\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1R4VPHQKS0PB79\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw==\"\n      }\n    },\n    {\n      \"ID\": \"a49a92231009aab1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xxwAEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZQK31FRQx0HCJVD+slpjm3YvctOhfBdpQcfUSPnQsxm2quEfHeNRG4MjayR+4zOi78LW7qTiSiNiMcSkYL3UOJZXRccHHWbL\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1X4SS3B7K6MRX6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\n      }\n    },\n    {\n      \"ID\": \"6b8b67318757a228\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"humcTw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eQnpzCR92sSzwpoT251DO3vFcXk2eSY2BlPqiMe9c0f6PiVLtx19Qpx/RwRkd4cTUC44m+70zWZerzEXSrRH5LGPp8f9TzFi\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1PJ8DNG59K14ZQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA==\"\n      }\n    },\n    {\n      \"ID\": \"cca0144f3b1a6e23\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ZA32gg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LP8yl8rOAUP8F+YB9U3JLw7PnUXNglnf6f2uXMBLNoFn1hro8RkuF9Yy3jPVHhrFGC4BAWo4PMs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1ZY1N4FSGJYYWA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==\"\n      }\n    },\n    {\n      \"ID\": \"e40085efd0eb5d36\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"G7t3KA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"F+L/1wwUH/6t61uS/MpFbmDuBspLUmTQ0mtg/k/0MFqcf6+R0TLvJCRx2T3L6sAGAnLLx9aTTls=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1XJWCACF84F4W7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA==\"\n      }\n    },\n    {\n      \"ID\": \"01f8a15751ee365a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"Jfhq3A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"M/eGeUIDwFBWZpF/g27XemH3ckWpCVPCBakjn2vlGH+ABijjhYnIuSgHG65HyFZx2EeRKbUrMH0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1NGAVKTGMSFW07\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg==\"\n      }\n    },\n    {\n      \"ID\": \"de59c4f80cd569b9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"W9a2Vw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"lub4GhBfOLUTKG5lgpvMCb9fW2JY1XE1DWTDH/7jh5jzH5QuSSygU0Upl2t4SwH9EzI86NGHo1E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1XHBY7ACS3SR55\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==\"\n      }\n    },\n    {\n      \"ID\": \"98a4dfffc387ce6e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"uTLcmg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6FI4eq01SClpHEYX5mWcMSC41mxG0ON6WDIhz7e593HECOLNu+1ZjD8p8nLyjKJ79nTxSFrxW4A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1M6CSR6GKXVJ5C\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ==\"\n      }\n    },\n    {\n      \"ID\": \"8735027a9667e37b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5n6THw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kqbMu1T9Ql2COL4eS14+s+6g4kvWjIokXoCPn6qP6mm8XMrmkhfqr+u6v6GUK+UcYVuy7swEQ2o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1Z8EZB7KZ7X8X9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ==\"\n      }\n    },\n    {\n      \"ID\": \"77c854d2c14b124e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5+bOPg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LqcmrDPwA9TXxDqBVuj5XPZwu7Yy/RbuSLiNpuCeVhjoE7nGP/zM9Puntks2li6vHxcwETraKTA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1HS188MM2RYVVC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg==\"\n      }\n    },\n    {\n      \"ID\": \"d48f433fcf781231\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RPc4rQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"trpXP6dNZUzuhq63GEM2oBBh2DkK6obN6P2BjfFnwlcvVTySLo0WPl4NZ5/uMOsh1jRphsuUBKE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1Q232DPJEP4FS8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA==\"\n      }\n    },\n    {\n      \"ID\": \"b2d57277522d6d84\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"+MdAxA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LycbNPGS9XXH89IyO15ArBsUle0KojTS0vjXpyHKeZIctIxqmZ88SrZidGdoxo5AkRHkEFFLFpA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1PSP4VNDN4E0PY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ==\"\n      }\n    },\n    {\n      \"ID\": \"a17865494f25b3ac\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eyx4eA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Z/4V2yrDs5L2njZxKaIwB2SDUUBW5qS9Z5Rc0Tvo7BeKPseKHnbKGSN1ZND+0IHGUEMcxTQePcQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1TK1A3XS29PH14\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ==\"\n      }\n    },\n    {\n      \"ID\": \"55a86893ebbe04e7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"phNSYA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Swjfedcxf8sk//kFJtHbj51UetwDo1akgcoldyKcD0fPa2W+xQrBbC2f89yV21nv6pjIJVJOAqQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1JDXRW0ZNRC7HJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg==\"\n      }\n    },\n    {\n      \"ID\": \"4eaa3d8d569904c2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"BQKk8w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wC6ZgjSmN0QFltcNdWjSE+WXMfDJDdD2gOw3ZBw5M6rE9CYsGAPV5IDcvRYbmvC95R360MDRYaM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1PVV8YA08ZN21P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA==\"\n      }\n    },\n    {\n      \"ID\": \"a164c5920155c326\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"2D2O6w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9XHwY2X5Hma+uh0UxcwOcmgAwy8LDjpCw583A2owkNr+eE0fJ5t0Mh0lfcc+TKX5LwE9NM4WBo0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1GZPB9B07CCGZK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw==\"\n      }\n    },\n    {\n      \"ID\": \"72b3c43f5d14d7cf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OtnkJg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LWyXLdVeOeuCXsYx7fJdJaATf8Iw4/gXFg+iY+H/pFfEPRG0m8O5oFs7Ost9lxecdIkcNEpSbHU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1ZRHZM9AN1BF3T\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==\"\n      }\n    },\n    {\n      \"ID\": \"b1921baa46654ea9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"GiMqCQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Yib4mIf3YdXZU7oRkZ+fXyMm8IIXIFuu9wBK5HOvj0YmTlEa5SSLobVlRy7FdjYtqRJEFKvuOdA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1YF2607VH31AJW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==\"\n      }\n    },\n    {\n      \"ID\": \"3220844614875179\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"O0G5Bw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"543yoD1cynHiNEUoJUeJ2N/r3nBb7nVuJHov5jfIp6ocrcJr8+WLOjoaY25qPSHhdmJyEypEnvhCFS/pEj+rrZRKrc33JYA9\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1KHXWV42RN5MFJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg==\"\n      }\n    },\n    {\n      \"ID\": \"25da29944b18cb2b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dwQlI6nWc7R7ViExfApjY1CbGgRSaYoRz6ymYd8zEE/vO+2YsU/N5EZBkITw0jQJnGpYRTE4ou7bXieFEWccRMlTQsXo1xiK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1GHSTNAM8BC7JT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"efa716518e01c0c6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Key3Kn0wC47kkuSRhF3zxxXqI0h9KxVUaJRFvkIvi53MY5GGjC9ZRkghelyj0d4r1h7dwQErJk2xoE83raAFQ4bHHLEDTV1Q\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1VWDP3JAF0ZWCC\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f74984f23db79569\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"p7AD/5uUAIxH5TIu+NjUItjCJyEQRUnd2tq8d2femKd4ziluSKhTDWH0tuCSZeVGRQRoObYNcV0U/Lb/bts9CCPe5hRbek7J\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1ZGX7ZC0NA6260\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8aab6b29384fe943\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eseYS285JMJ8+211pfrN1U37DJpDrrhPbaw722ViRaPzTZAL9idT2CiuIGilUMj2fi5QVFqJUW15bMI8f/4Ze7c0XFz2DgPm\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1XXYNGY9DK8VA8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d764f9cede237926\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"z8bXfXAPE1hrM09lhB3B8pR8AIi6lCh6R5ogrxybZsTwqYOvFm2w3Muk57LufbuaXZn4m+ymzF8Z6WvsebTbS1P8+1OnxbOB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1SYXPVZKHDX1YG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"09df45b9ba499361\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"leu3ocNcFYJvQHwSXOUk+hwEeNNZ3pWMNQ0ZB9vR+HEQttYl7NyfD7GTdFNgt+di8wbtnrCyBAu0yvkMCAd6PMJ4GCXUeAtX\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1X0T9CCFRYFM0J\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9fced115963a2c04\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aDGyB1+9bvl9WUunhZBMMEhnyQZZlGCGcLSETYI6+4gYTT1mxg8HWkU8y+7r0UlGufx8JRJvmjpFbAdukuk8rW6WM+/CC9/E\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1WKVQK16P04P47\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"da5c9854e9e75a2a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+zyodankdIVXlclctBiHSIXdP7mIZ4LknpIT4+x7ZMkbiTyVjAqEEictxk8AaqWD5yT3ERC7fkg7Ce/TZGsTk8pP4JVzjZlZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1K6R8AE9AQT39V\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"46ee94c7bdbfa8c8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"geWflAUmfNGnG9cHaaTpBEjNaRlvJNkMLNqnY6swlTmyfTqYGFRPn+V4hr3SBOfYaNuXykRM5SSivovg0aHYkEaoeGmwNiKz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1MTXD729JF24J9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"86d61b27e10b196b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3rzL+suKnYi5f0xFmuEa52CbfeIwJEApciC6EsDf1EWwtdJKuoCkEzIVtYntjECRN3Vm4f0ayY9vtsQGkW0DUCzFwdR8AomH\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1QZXMK3XH3G8A9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"49e9ae45f2e6e992\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tBMQZ44o4ZHH1vfyXD17WzIw2lenPRalkwVpMn3tZiFNA/uVTZjzIR80fXN9EbseTZM2smCc6GPGDQUBMO7rWtJ4+IhSNpWA\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1NWC13G0J67SEZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5a454e4e3a0be3dc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xqIXccArSFzUegdk1OlsRY9fDSgAOfF4TI2HbTQseo6xS0MJp2k9KFFqzBJvQyPwaD65dG/ELWOvcV6Gfq8cBYE0TgKz2wKH\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9P1S6R943W2NJYGN\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"dd597078b28c2db3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7UK73IFGeqwX/qVo+cgC4krTZvX9RYZfnGfZJ58ptGCgP1ISWRpJzojJU7yNSQtsnHD4JuozflQcFFofFTVNgE3Tx01yQ7OB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF353Y7VY422FDX7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7288eaa123692d45\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vYolpByh+jkJRdNGtIyGnZbaL9RhGG4B+SObgZU64+F63JhiQhweJw8hw/LQF7Wst7IELBjEh8er9tXVMO87T78Qad0Tvwfz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF31WB9Z72HTPVMA\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"708975fe5daf3510\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wp+4Y1lev96l5SQVI9Nlanx0eRIihdozptP3mgHsaBIeGhbYgMBytDJ7w8oIp4h/NSmSKaflg5FkwcUxhou3DJ5mGeNijCJE\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF35EY3268DXXY58\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8da21990fdc9889f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8PcKMAJHT0QCIzIfaDPYbHdFhgMhzvKw+xTQZttuRiyfE/CtRvYUDWXY09pAXjBTTF5DXD8u+qoXJXWMozuvluv5nKWe/Q7X\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF32KQKAB2JN2BDV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e23b5e9b8940e4f7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9n3EFazGvt1pgDARtKsHsuhP7kHhU82pTFR/28VxFSKIavVFqHEJePqzj2e58UNcXmpQNPQajwNOS8neTgkaQhLrFu9hsNPr\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF36K4GH92064X0B\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"96fb2bcd85e3ec64\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ysY5JE75vCaUQbDW/dDInjGnlMVfQR2zY4kUsq0ZXeETq4Yhj80yUEd2HXq/JB0ycTBPZA5X0F7kQoOhf2obKUuzGrW0r2s8\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3DA8PWDSJ5WR71\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"be444e673cbe21f9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XH414//PaeneIV9gLUB7Bm1Myj/eIIiSW6FkggZNpV9mywktrJG9454LlkJLOl+WpB/oiFu8IKKfWfgD0KOYOcGivoLPaz35\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3012DA0C4JW252\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"987374981b5373cc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ElNmBCAjBfl0eeYZPiIsnKLkS530fqPxQkKXkYHS5vi25sjdTfSGUvM286nM2pW67dLj2dIoBw0siFZCFXBwCgUeYd0JpXkV\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF35B7RJ0TGSAY33\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"06af4158b280f51f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7j1K3CiFNlBf75niAAPLArKhLQ9FG2e8gCJn8pYWpX2jDqlbtP6PGokhfcAknHrWWStgnfY1YLDT+YfISE+3PuJDI8nqq8r5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF321HKHE608PZMQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"21c0a9f39170050f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2wJUFsYTVo22D5CcoVjNFRkWwRiViDbfCjunMgXz1wy7v29O6TY/9SYktdUHL19wd/npdv6+P9j3OFmVTRcOtQf95/5Tun5r\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3ENPYBG8HH4A7E\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bb272d4b2e5f52c2\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CTkAxC95TvVLZwD+Zd3Z1POW5ilwzzvO6GYOvYMJF6tfL4oX8zyNAPSMLvGc3vhiVjkP6JSw10LbjCKY5eOi/5gNaaQvwHWj\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF341K0V4M28NSKB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bd1cb4e18846c0d3\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dZ/dQcyZ2U+Q8/l2+QitF499iZdBgad1WeCy3Ub23bFQ1sbCqt+EBkjQ+c5ZB5Kjh+dmkSJrVfvVZmD7CC3fzek9ZD+0YSdO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF321YJGT3F1H4QD\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e4c246cb2cc6a688\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/bGn6ReFwN94LtHND1nM9dW30ul6oS3MoC4DxSFOxD5xSUfKbZjbIexX9x7EkWAI5ID7a7GVPa7yLETGFgJ0XKqb+KCYOoSk\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3A9G2S4C5FWSH2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bab42d55fb74c0ab\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XDwTRlc5yNkkhwKenaSgp7+skqa6pbIg1fUj9eg0jAuAS/7gsqu5g6C4I8kPvN52mKXCeI7fZjmBwfpTrVIc6Uw2UflnhRJI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF399CK3ZHRP1QQN\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3281faf9c1a7d1bf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vH5MdizHqfQNtxks0iFD+dkhykyK1Wu6e8V7yxTCru+qzTUnA2Vd2zzL0hQVvz9paCakPxORZn3wGWi5f+q37consUiTbqkK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3EE2Q5GNKDSKB0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d60fe0783feb2195\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1v+vKG6gHobqH3LxfxmSYYr62yxdNuInYtp9bSBN1Nhozjd65q/agVXE16mcMWilR54BQpDlMlvFgOGGFLwB3DYLaHfNdUZk\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3CZV494XYXR423\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e0fca0aabcae667b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MtDBssav2EDie1P4ytgvmWum2tBIaoanD7A1WldyLg8I2F61crkw3SyrYyHdZoyZea+BWasUbqoc5ZtLH321+D93YDYYFBRs\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF338TDWJTVEJ0BA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3ac9e111c4b4361d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BKhx0bpfOL0ip3k72lFTV5F/6ETxajxlZMf8kr0sM03dghIp6q0/1EHMN2f5evMPSYkmJ0Dswd6eSMxzQXGyKHrMYQxrwd0D\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF30PRVXSK1TNJHP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b3c0e74dfae0457f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"lf8SB4x0BoHLF+0f/6q8KRXwGvmLPh6jQ6YRcAQlVrEQvH3owrLX5iuOpS6jWsBBNXmFidmwnJ4Ncsj9Te03oFDWHre3GIdG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF39JE24680493P5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ea6a72dffb56cefd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HpxL5H6ICF7SvrMR2tGTKODCQxM8arKaTKVXAoQLZSygSfwuvLVKTyYeRe5VcCnVPfm0PcZKMKJ5la9A1AKhvXiiTUkeVUCb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF389K48J3YARGXT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3c5c9702880a20ea\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TO6tKrgJxP+98u85i+wjbZKxwE/40LRAG/8iiLRZ4l0cGtH8cyTlKeNGQF+Dc192mF/DXo6NFMcMBbYEp+4pa5CynfougGF7\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3DNXNWWE1Q0RDK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2197b633633c9245\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZFrcV/RAu6KdznrrskGjV+BeOmWZykd0LB1clyuRt2DmLMJUqAbo2NQsbcYHUzHBG71hrdgX5ee/LDVtwcbYM53OpDlVfxb9\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF343B2FSFVY9C84\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ae3460fb61f3526a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uauFIWG5iKo2+IDx1XtlNmDB5KH9FasqMN4wcu8kR16Cv3a/qeOgDJflVHxAFEKLxg0SsQLKAGGAKKtw5Mn1Yl237Z1s2Deg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3A97G3YSNTGAM4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aaef209f97974ef7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Opn1cwrGrBpDk4U05193/pz8V0dITZOVodNJIhqSuil/qCt1LlwY1NlYGaV+0SQNzlH3WaNNJCXy7eXNAVLtxAGdu7TS39df\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3AMDPCFZB8HRF3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"239270fbce6a5413\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5wKRR8FAoqSwPWDqw4qbxQhcMmMLhzwJ3x3/CoHsDhylP0RLugtC+SpxIA+V+CjclLkJuVzw9CCcrtsmUAmeoI1f/GXdkJlu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF37AWCQCV9NTHFZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c35dbf33228c468f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:08 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NExGwSCFY7quRKf2sdGQYRyfJ98fuksZtzhz4HgFreYxsTv0RTII48tL9l5QOoEs7X6jGKUwmwjw4ilCScmj0p2dG7Lnlnik\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PF3F8XEQT9W32JXB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0a8000e7a1968395\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ha17HBMtFdmrmyqjQhcStRbW+qFPwfr8+1Kb5rV969i+88DKEcKgDuYoERdXI+JfunTpCtEVpwLQ66pOBbYFM3VNGn8D3bOK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M914Q2V3NHQZHJT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9b279c80f032108e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xU2D+POYssLK9AEmZhRB4to4GCn1zJMNYtpmH9yqFQMWeyctuFDWtPbrybCujmsiJ6VhupX2ykuHfEsty4MFVp9HVVU6HXWP\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M93HFT6GJJZQWPJ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestCopy/NonExistentSourceFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0KBVNTSAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"17ce5e0f8e46f03d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fdoes-not-exist\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/mRAh8tvKx1vceAgyKIswX2vv4yoqb8nj+VYON/EwHrP/RFXaHHtemMpZHNn8XCQVGtmaxGOH+4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V6CXB2QTGBHZ82\"\n          ]\n        },\n        \"Body\": \"PEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5kb2VzLW5vdC1leGlzdDwvS2V5PjxSZXF1ZXN0SWQ+OTFWNkNYQjJRVEdCSFo4MjwvUmVxdWVzdElkPjxIb3N0SWQ+L21SQWg4dHZLeDF2Y2VBZ3lLSXN3WDJ2djR5b3FiOG5qK1ZZT04vRXdIclAvUkZYYUhIdGVtTXBaSE5uOFhDUVZHdG1heEdPSCs0PTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestCopy/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0KC2YzswAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1d51f3b1618073d0\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-src?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\",\n            \"aws-chunked\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KSGVsbG8gV29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOlNoZXhWZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ShexVg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nLO9+1h0EzxOX+A3laWAF2y0B2i8NDms1tTQRtj80jKN8VnVaD2OD1FP5W5ouzo5oJqCsu5eXbA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91VDPCBXG2YD7T42\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"431819ba674edce7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-src\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ky+7nEbwiB+iIHumGZLG6JD0IETXbVLyXf4LNopnIiLSZFhBVvwIiPq3qwURPFhqoieyEmLfSAk=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91VCPN09QGAY4D08\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"34ac8e0018e94408\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Md5\": [\n            \"oPqafXJA1cXuvXCJlDDFlw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"10\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"YQ0KY2xvYmJlciBtZQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6ZHZHeXlBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a0fa9a7d7240d5c5eebd70899430c597\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"dvGyyA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oFiN+WAHWbOBSQp20WU4IBHoIz0F2bq+87v8FcOzrcUETlZ+7uJPqlZuFGTcXtDCNxzjyRkD1VA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V5M4A6D9PGKWYX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a59091688edb4922\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fblob-for-copying-src\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fdVojh+CEz6QYFKttjdyrRLG0n2jXaEJECWSI9aJGtjca01N5mguG0OqRfpQp9LsibI/Wh4oQ4M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V6JDKBX791HP4J\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjExLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iYjEwYThkYjE2NGUwNzU0MTA1YjdhOTliZTcyZTNmZTUiPC9FVGFnPjxDaGVja3N1bUNSQzMyPlNoZXhWZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"e1489ffa624c1b95\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ShexVg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QUwpvxic1hQQDT2KqEnOkIbi1mvsnAHe1JYKGFXUjo8Xg2vZ34zT7HGXrAb0+PpnZmsErNLxKIY=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V4MCV2A90AQ0JX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"f2660fd6458883da\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VqeRbD7f9HXIQrN95fpLq40SjA3b5SyOzSbbCaLpOpZlili8KmDmJ6MJy1GKfeDjBe4Qoc2SSYU=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V0F9JMZQ5E193V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cde021cfa64e5161\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fblob-for-copying-src\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xlIm4JbCMJUkXeBjYyq55vk2sCrXJn3KW3wLJQfLUGKD7O/Ntm8Wao8kshRfZJ23EGaEf4K5YYY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V602M9CAD23HQX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjExLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iYjEwYThkYjE2NGUwNzU0MTA1YjdhOTliZTcyZTNmZTUiPC9FVGFnPjxDaGVja3N1bUNSQzMyPlNoZXhWZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"1683362a1b68fd62\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ShexVg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OKe7g6kTGHA5iw8hTIEiy18CMAVfJ55PVWpOcZX1f6dn67zJBbyGjpHUC6UR0gUa14S2BYMZjw4=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V6W8TMDEAXKNM2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"4140408fd4b2e1c3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OWlyx0KLDv5WUtzzg6FI6nSfjC9Flybjn4SQwW4BvBs89SosdP1vE+oE+TCJ74llhtI5PkHwtDM=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V09JCGHSEEMPC1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestDelete/NonExistentFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0KKMconAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"00276d9cc3bf2636\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/does-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PYrfp6wn4E07NrperchmDSyD8bRPIujIvKaycKSIGCIwzdBNb/+0TsEzyGxwUrwQ/FFOACkhbRs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V08DHEZA9WKZV1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestDelete/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0KLq+dxQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e2ce623386255f92\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"PiWWCnnbxptnTNTsZ6csYg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KSGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOmk5YWVVZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3e25960a79dbc69b674cd4ec67a72c62\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"i9aeUg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7IJAj8N75BeUragAEbipkBgImQw6H30iwXLcot/KV2dKiCiwg0D6iDWA7AEbfW7x31gaddyi3ulyYdO/ZXn+WPLmXqtryfVs\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V0JRPJGZQV4WX1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e6830890b7242ad6\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3e25960a79dbc69b674cd4ec67a72c62\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+LA4z+y1+lbrIjBpa84NOzX9WaLuE5a2G+wf6ah6qFf/RPUzePd5iQ/E2YyxFAFYyGplwKO+dX44ERWW7Mt4MwN3LdFZlQKF\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V9TKJ86ND85NCZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9cd3c2b3a9737541\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0PLqJvwcsPmqTRB9M2lLh/A3txxCfnhkk+A+SIlJLkwLJP5ghoGyUDYSX8K7O6jpCFLw2nbOZa/wqbLjlsIOUmY91BE7eya5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V4DA8HH3FRYEZR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0c0674fb3dadf395\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sA0H+7Y7COaGfZCfkEhXCjBJt8zL92k0jDTNiNbBL08MARvRMsn/IMVuhs91QaPGdCFH7P4SSE26Y2hGhO74v/lwzVm/yRR3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V4Q5EVYAKR3E5B\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1kZWxldGluZzwvS2V5PjxSZXF1ZXN0SWQ+OTFWNFE1RVZZQUtSM0U1QjwvUmVxdWVzdElkPjxIb3N0SWQ+c0EwSCs3WTdDT2FHZlpDZmtFaFhDakJKdDh6TDkyazBqRFROaU5iQkwwOE1BUnZSTXNuL0lNVnVoczkxUWFQR2RDRkg3UDRTU0UyNlkyaEdoTzc0di9sd3pWbS95UlIzPC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"c1e078cd03407d00\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"241u70gSvL4WYGqGfFHJfO0LBC5YCEreHCHlQZwaJ0Exfoo4PnHjZUJqpQUh8iwaOidhOKKAFfa0L/Vb0C3RFVUukadntYvn\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRP678J616H43BF\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestDirsWithCharactersBeforeDelimiter.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz/A7gylQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"94b41537a89b771c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oJEs6m+cKdaEgpNZUOe3pFfgxvBJX/9RIlUcDh3xdO7koyyi1RvNhLnVV+ssHik5fq7ga5Pit2k=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8NV5MP2HMAYJXA\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjEvdGVzdEZpbGUxZGlyMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyL3Rlc3RGaWxlMWRpcjI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vdC48L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC90L3Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"ffd2b7a79a43677f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=10\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JaRhnlgccetIqT68PhGBJqZHAK+WN4BEbbE3LWsNpnV3R8oIRoCAmMWZuH+M/UkLkSw3v1e9J8o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8XW0QAZVPJB730\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjEwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"d6f55f3318420c7b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=9\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1aEh66h96drKrZezUfAKarQrBm1GlzBR+1Ynl/CyiJ0YF7W112iIPieGdRkHcAjkUxASTkI0TnE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8SC16PRGHFMGJG\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjk8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"1b8f8a61a438a76e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=8\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kFZF1v0ws4n1gDbj0hQNbMWgqUA3kkBmhEmEOAgzAev2YjkJQi6I5ffI32ywtPvY3InXQoH2zvA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8J0C2XGM5RKV2B\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjg8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"579aeff18238b4c5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=7\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UXebL4BTvk/uC4F1T1TT96w4nG0W86hsuay9y6L/Py4249O8cvRhxFeMLddcD7TIxsA7X2HrTdk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8KM3X5EGHDQEFJ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjc8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"58e8573772dc1550\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=6\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hUK7xc9sMf6tr6P3rXfRSTkCg/unPA1FPOxNN503p4rxCc68s5aQWyJ3IAmEOGL+dUE7u5htGLY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8K0CCTPA1R774H\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjY8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"6917cd2725a64422\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=5\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EsGnsE00Dsfw4JSQbdo9BXVydDF/qM34bsjpPrAHPSuj0/c0vbCWUTTwVMi1dKUbyiLu8rqwvyU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8N4MTPG6NAPTKN\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xSnJFQWVhYlpVSXJlTjROTWl0bldIcjN0b1ViUDJ4aWJTdW1mMXN1NmEwWFRUS0FLTk5VRzc0YVRHSlhURmVvczUxcXpwaGRTYXpqV1pjTGxrWnRvcllLK1YrMFREMlg3c205WkprbkxJdU09PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjU8L0tleUNvdW50PjxNYXhLZXlzPjU8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"7ffced9b47b004ed\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1JrEAeabZUIreN4NMitnWHr3toUbP2xibSumf1su6a0XTTKAKNNUG74aTGJXTFeos51qzphdSazjWZcLlkZtorYK%2BV%2B0TD2X7sm9ZJknLIuM%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=5\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MflDCYqDFzmQJxEVbeDmdirPAAI00E381jxdb9c+QMg2aSs/AaTkZiX9hnV70qsM3e1ZUONubyQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8SQR9DQR4R85DS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFKckVBZWFiWlVJcmVONE5NaXRuV0hyM3RvVWJQMnhpYlN1bWYxc3U2YTBYVFRLQUtOTlVHNzRhVEdKWFRGZW9zNTFxenBoZFNhempXWmNMbGtadG9yWUsrViswVEQyWDdzbTlaSmtuTEl1TT08L0NvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz41PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"e013eaa05f849f6e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=4\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vr1zKL1TyDbx4P3P8MgDCDnEQDmNoqKqKpsgLxyw4TyNCMVi9tKejUS/sixe5050dIWsT79ec7s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8TM2HR27A7MQG5\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xaU5hMlFJNGFVY3p4aC9yaUY5S3NudmpGUVJscU5iYng0aWlUaGlBeTFHYnEvU2xKdTRvajlEZDB3SzZoNWl2dGtnTTR1dFdwcGZUVmVFV2NOZFdMTSs2cjZvV3FlRW4wK2hWRjBudHdEdXM9PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjQ8L0tleUNvdW50PjxNYXhLZXlzPjQ8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"76a66dbb28e43f70\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1iNa2QI4aUczxh%2FriF9KsnvjFQRlqNbbx4iiThiAy1Gbq%2FSlJu4oj9Dd0wK6h5ivtkgM4utWppfTVeEWcNdWLM%2B6r6oWqeEn0%2BhVF0ntwDus%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=4\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dDEvSAm+2S/v03pbTKfRqKqciUOzfv+0eCjpUWbuoLE/zsbOPMWzu6jKEvDyRFW5TQIgJldzktY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8S5AFE7ZGMVQJV\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFpTmEyUUk0YVVjenhoL3JpRjlLc252akZRUmxxTmJieDRpaVRoaUF5MUdicS9TbEp1NG9qOURkMHdLNmg1aXZ0a2dNNHV0V3BwZlRWZUVXY05kV0xNKzZyNm9XcWVFbjAraFZGMG50d0R1cz08L0NvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4yPC9LZXlDb3VudD48TWF4S2V5cz40PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"85ad6a32c4b32434\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=3\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/uGiKFzOG9WODbfTUb4spSgkH9tA82EYbRdeTGT96zlSOWsCOUiS5ECaxw5DGkAuDeAE5TVKgZE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8P2X7QSPBZA3CE\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xNGhnbE9PQ1U0LzBjQ1cvOEt4UGJ1ZGRoR2pBMC85NnVxZkVKQmZ0UlJ6MEhBVlkxR3NvL3oxRmNwa2s2dEM3aTAwRkhkMjZRM0RBTStSYTFHQnY2MjdKZ0x4WkVPU2wrSkM4UWYrQkpwWlk9PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjM8L0tleUNvdW50PjxNYXhLZXlzPjM8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"0775be3d1ca8156f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=14hglOOCU4%2F0cCW%2F8KxPbuddhGjA0%2F96uqfEJBftRRz0HAVY1Gso%2Fz1Fcpkk6tC7i00FHd26Q3DAM%2BRa1GBv627JgLxZEOSl%2BJC8Qf%2BBJpZY%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=3\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rt74lGDTSQsIlRTjyxJM85obJLIQjsZ5sCqCrGQ9o96muOFgwHf5Rrcv4fi2yjKxSkJc7VFCL54=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8JCQ9XWF95NJ2C\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjE0aGdsT09DVTQvMGNDVy84S3hQYnVkZGhHakEwLzk2dXFmRUpCZnRSUnowSEFWWTFHc28vejFGY3BrazZ0QzdpMDBGSGQyNlEzREFNK1JhMUdCdjYyN0pnTHhaRU9TbCtKQzhRZitCSnBaWT08L0NvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4zPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"aa699075eec4db0b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"652YH1H8S6OmQbTpGwcKfwufD5krz6l0KX+++IlbAFJ04k1nWRmgio724pOYv57C/yMvtZIf1RM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8HQ8S7YKAKEM4D\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xVzZtVlFkUlVBcUFwN1pOWHJkVStRRkcvdFFaSHRhT085M29pOGVySnJoSUJ0cXBpWFYxOUk4MHpUenJnK1MyUUxBZXV2VkRNYWtmaTVhcndFMjlpTGxGSlNybFU3RW9zZG5nUXBuWG9LL1E9PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjI8L0tleUNvdW50PjxNYXhLZXlzPjI8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"59478f8c8d18f3c7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1W6mVQdRUAqAp7ZNXrdU%2BQFG%2FtQZHtaOO93oi8erJrhIBtqpiXV19I80zTzrg%2BS2QLAeuvVDMakfi5arwE29iLlFJSrlU7EosdngQpnXoK%2FQ%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Cyc8iICglhjWYfgfmUoe4bvYd9U3V7winy2AZgiruEmqrnAy9o8yFGbMBgj7sfFJ929MQ+5mR00=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8GPBVEG3DS5PCJ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFXNm1WUWRSVUFxQXA3Wk5YcmRVK1FGRy90UVpIdGFPTzkzb2k4ZXJKcmhJQnRxcGlYVjE5STgwelR6cmcrUzJRTEFldXZWRE1ha2ZpNWFyd0UyOWlMbEZKU3JsVTdFb3NkbmdRcG5Yb0svUT08L0NvbnRpbnVhdGlvblRva2VuPjxOZXh0Q29udGludWF0aW9uVG9rZW4+MWFWRDI5dlIwM3MzbGR4emx2SUwrRkJIcVB6dHpKUjMxNGhLNjNIZGpOMWg5MVBab3NSVlFSenk2YjR0Wm5LMTlidDZvUTVJK0hyRmNicm55WnRFbVFxelA4MGtkTHZGMEx2RFU2RTVYYm5jPTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4yPC9LZXlDb3VudD48TWF4S2V5cz4yPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"f0ecc4925a1e2564\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1aVD29vR03s3ldxzlvIL%2BFBHqPztzJR314hK63HdjN1h91PZosRVQRzy6b4tZnK19bt6oQ5I%2BHrFcbrnyZtEmQqzP80kdLvF0LvDU6E5Xbnc%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ncaBCI5kvmtLBIaWs9Bxa5VWpAxEekXBFKEw/l99I2sugrd6TnTeoC+jaAOIvkOGzUKV0+szQyo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8P4CH2JJTD7CQS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFhVkQyOXZSMDNzM2xkeHpsdklMK0ZCSHFQenR6SlIzMTRoSzYzSGRqTjFoOTFQWm9zUlZRUnp5NmI0dFpuSzE5YnQ2b1E1SStIckZjYnJueVp0RW1RcXpQODBrZEx2RjBMdkRVNkU1WGJuYz08L0NvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4yPC9LZXlDb3VudD48TWF4S2V5cz4yPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"c9daf38f17dfb56a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9omtmq3U9zGXxeapZqeyQjW/iIkhh8OcI0LGCKZSBUh/hoz1uJoZ+xEJZKVPYbhsXuM/DJHBgyo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8XKHAN8GS7SABS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xY2lhM29FWXhJbTR5L3BxN1puMGxXVDlMOGpNMEZ5RG5INldrTU1yNmpEQXFHQWxwVnhIb2FqaENMK2RkZmV1aWR0WjZqMDUvRDJMOUFoclc1cS8yM0JGNzZEdWpUcUxXMDRhQlhJenU1Ums9PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"d7a2115c37e0ec59\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1cia3oEYxIm4y%2Fpq7Zn0lWT9L8jM0FyDnH6WkMMr6jDAqGAlpVxHoajhCL%2BddfeuidtZ6j05%2FD2L9AhrW5q%2F23BF76DujTqLW04aBXIzu5Rk%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kBeTpqTBTepnVIwnXeGjQX/1ZHTks4dgTf+pZZxz94lDN6PLB0bYcUJGPUhjOpg7lQwxfh+wRu8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8PEMQY7FVY2THH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFjaWEzb0VZeEltNHkvcHE3Wm4wbFdUOUw4ak0wRnlEbkg2V2tNTXI2akRBcUdBbHBWeEhvYWpoQ0wrZGRmZXVpZHRaNmowNS9EMkw5QWhyVzVxLzIzQkY3NkR1alRxTFcwNGFCWEl6dTVSaz08L0NvbnRpbnVhdGlvblRva2VuPjxOZXh0Q29udGludWF0aW9uVG9rZW4+MW5CdXVPZ2JqNXo4S29xYU9zU2MzUGw1U0lwY0hQZEh1VjJDWTkwUmFNOVRGS1kvN1hZZTJkOGNvNTV4TDdwOWcyVjBPRXFkc3oxRFFDOGZ2c1ZpRVZWeDdFWGs5RjB5VDNsM3hkbm8xSE1rPTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"f0da9983d353684b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1nBuuOgbj5z8KoqaOsSc3Pl5SIpcHPdHuV2CY90RaM9TFKY%2F7XYe2d8co55xL7p9g2V0OEqdsz1DQC8fvsViEVVx7EXk9F0yT3l3xdno1HMk%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ryK4/V5v1xxVEGcxjEgSlYBdqMyPjpKho76qFsEFJZCtnijN2UeQuqrF9NPnm8g7inzy6NFceys=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8YQGPK0D78SZYQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFuQnV1T2diajV6OEtvcWFPc1NjM1BsNVNJcGNIUGRIdVYyQ1k5MFJhTTlURktZLzdYWWUyZDhjbzU1eEw3cDlnMlYwT0VxZHN6MURRQzhmdnNWaUVWVng3RVhrOUYweVQzbDN4ZG5vMUhNaz08L0NvbnRpbnVhdGlvblRva2VuPjxOZXh0Q29udGludWF0aW9uVG9rZW4+MVJVenlwQ3huOE51U0JheHlZcWgzMGEzbzA1VlpjWkNNQ3VwZ1Z0S25sczM0cjdjamcwMW1BczZReDBiWVZMZ2dTTHgzb1V4QkJEQWFsRkJmMDBST1ZhSGRkS1NDQ29UQlRBbXJDbHlRWlJFPTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"3061b5248836c6fd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1RUzypCxn8NuSBaxyYqh30a3o05VZcZCMCupgVtKnls34r7cjg01mAs6Qx0bYVLggSLx3oUxBBDAalFBf00ROVaHddKSCCoTBTAmrClyQZRE%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UsPdzAkVCriYu2wZyHconIp5/6jV8eD75a/js2peKwsRUt/rsG34wwt5VxLAs4HlGMu+o973qqs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8K3R5PWBAYY1YF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFSVXp5cEN4bjhOdVNCYXh5WXFoMzBhM28wNVZaY1pDTUN1cGdWdEtubHMzNHI3Y2pnMDFtQXM2UXgwYllWTGdnU0x4M29VeEJCREFhbEZCZjAwUk9WYUhkZEtTQ0NvVEJUQW1yQ2x5UVpSRT08L0NvbnRpbnVhdGlvblRva2VuPjxOZXh0Q29udGludWF0aW9uVG9rZW4+MU53TXZEWjUvWURIREttVDNORk1kRzl2VjJoTTZzSktWRVhOVWhEUTRQWVdia2tmMGNwbjVDa1VWNzE3Z2VxRHZtZUZSVmM2ODFFb1hJQlBDaW1jWFhjdGxybUZiSFNYZm0raGFlRFZhYk80PTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"17c664cf086dc834\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1NwMvDZ5%2FYDHDKmT3NFMdG9vV2hM6sJKVEXNUhDQ4PYWbkkf0cpn5CkUV717geqDvmeFRVc681EoXIBPCimcXXctlrmFbHSXfm%2BhaeDVabO4%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OA4mfi5hzmzW1gTkZWKjkvGnTBunSUtNUguXW3f0KdyrqA558Vvop2zM7Rf36Egyupo4UGeYUuE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8QNPTBWYY5BZ55\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFOd012RFo1L1lESERLbVQzTkZNZEc5dlYyaE02c0pLVkVYTlVoRFE0UFlXYmtrZjBjcG41Q2tVVjcxN2dlcUR2bWVGUlZjNjgxRW9YSUJQQ2ltY1hYY3Rscm1GYkhTWGZtK2hhZURWYWJPND08L0NvbnRpbnVhdGlvblRva2VuPjxOZXh0Q29udGludWF0aW9uVG9rZW4+MVdCL1pkZzk3aUJJcUxFZVh1d0c0YnJVcERMMlZiVTdSbWx3Sk1CZWJSbHkxcnp0RXJLa3dnU0xobHdzMVZ3U0hKc0RBemtsNEI4YXdyWlhVVDhRMjFhRGdWNzR3T1p3Sm5XblhyWDY2L20wPTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"3369e7fcd7e76353\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1WB%2FZdg97iBIqLEeXuwG4brUpDL2VbU7RmlwJMBebRly1rztErKkwgSLhlws1VwSHJsDAzkl4B8awrZXUT8Q21aDgV74wOZwJnWnXrX66%2Fm0%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nl1eR4rydgWoJYmDn5m9QgNO1+3XGpHFrZUXQptseerqiwJYFMJaqq6Hz8ADtrgSOxKYSSppqEs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XVDXYE4SEQG48R\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFXQi9aZGc5N2lCSXFMRWVYdXdHNGJyVXBETDJWYlU3Um1sd0pNQmViUmx5MXJ6dEVyS2t3Z1NMaGx3czFWd1NISnNEQXprbDRCOGF3clpYVVQ4UTIxYURnVjc0d09ad0puV25Yclg2Ni9tMD08L0NvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestIfNotExist.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0UG4SRvAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b5f0dc6017b56316\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"If-None-Match\": [\n            \"*\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"04gq+2W3zE5qmFHj0fWWZXUAsdiFKXGUOwSHhuqWVX4wVUvLeyIZ+jAHb1P2+btrkUOGbZXh4V8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VFEZ1E1ZR7R2JZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ad3534b2dbd9ebcb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"If-None-Match\": [\n            \"*\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 412,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XIsHGMUwAwTi46DEixseUbTO/wgXiC+nFX+PubLLYiWlZt/tBgYFVIRC0QCJOGx2M0VvsuT97LM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V69TW51K3WRRDX\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlByZWNvbmRpdGlvbkZhaWxlZDwvQ29kZT48TWVzc2FnZT5BdCBsZWFzdCBvbmUgb2YgdGhlIHByZS1jb25kaXRpb25zIHlvdSBzcGVjaWZpZWQgZGlkIG5vdCBob2xkPC9NZXNzYWdlPjxDb25kaXRpb24+SWYtTm9uZS1NYXRjaDwvQ29uZGl0aW9uPjxSZXF1ZXN0SWQ+TTFWNjlUVzUxSzNXUlJEWDwvUmVxdWVzdElkPjxIb3N0SWQ+WElzSEdNVXdBd1RpNDZERWl4c2VVYlRPL3dnWGlDK25GWCtQdWJMTFlpV2xadC90QmdZRlZJUkMwUUNKT0d4Mk0wVnZzdVQ5N0xNPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"1e90d51f8df14c58\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6C39QPkSUGPCkYm0cY9TbfJp1OjcvVMryoerN3rN7vTmjATXtshUETV27xELPh9ZkFymgOzPg9A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V98YHT401NKVNZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"96e95d49b8469f7d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Bns2naCTu0a7YFo0G25AHRw5ncu1S1AazTU8iEFAfNCaZzxcGNMTNZ19EiChIVXXCv7SvSCLvDo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V9BGW8BJE9KE0K\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0RHkpOmwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c4cab406fa5202a2\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"k6VTnCaVeO+mQadsj0YmRZplwN/0KarkuMnkbLrKlHCD2uTXxkAr8irXayr01yQIhZInGFmgD25B8mBv8I8ghxKspK6STzqa\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6DTFM3H2BRT9M6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ed2d73c72703d638\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vd/IJczA3OcsZC7TsrERkz7Q2zjdFWCOaLLD5adZF8i6m9GCU3HTtRVEh7l8703MN57EZa4krdY7xWPTIFkVNhE0PrBOqkEu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE651BT9QJ2BW455\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"505aa6a180fad8db\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7gQH+N/nP38q6Wl01eIwN1a6FKK82RpLHeCgVNedEzT+VVyvjB4CZT+71qSw/LszDCi6bUTNtQ7y2BlxxFYpK6B2qWelFtiH\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE63NRMYVCDF46MR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"76fe3ffac4459c1a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Gk9/h0sjdnCUxZrkrqXet/qRHbsmf4Miv73S8HUXqhfISUuwPCvXsCHue+EelskpdmXVohunISrR/OavM3Sqr/OGYecRetIp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE68DJHD93WCDW5B\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5169a2a4745a1487\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EJBt6v54XtZkkEGoQhhK33fCuF+zqGRsHrApwWxj33p8KkdZfzyT9djGQ8WT63NcG+mZy2k1Cbou64Cb5i8YMKfPgrFIGVl5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6ESF6YT6VHDSZA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"796f90276782af51\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0iwbXoc1aewjBBLp4k8OWc7vxqekHI6LDj/Ti1U5YG+i1JoL5dFwOAKLmB+bPFTX48u+1oISeN+qoSeNtcmA0PZeD35ZVAEB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE65RZAGH7F60XJ3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d92e4f44aee578d0\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8M0D8Ai2KlysNTbsNQrO6I2u91vo8uFiuUCmB0RgUbiS8waOB0PVxBcSlX8bWQbKK9IN6gUP/T5QWCCd/F8v49IdeFPTFdx0\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6779N2SX0TQCGF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a8f5ac0a40197926\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3DrJSmtHQjLdnWC9LSFH5O/TEcgOvYrq86Hp6nW0E029q/7kLEsWLrUn96xxkLmgwfU0gU7BgtuUkmxlCp1eZXvslDi0V8Mo\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6FX53V20RNWCH8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2fc9964725b12a43\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rClLBN/6rZcpiiOEeYCHhHMh/kA/O5FKdKMApSwFANEVSa7KNK1bRjCTba+YOijzP7Si9ATZMehhTpiKHWh0OgXi/NBZESuY\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6E2F7BA2P9P2TT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c7f436d6303070c3\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OVrNnrmol0hsGkqpbHdIdqxJMEh6nN/61Gm7zVK+aj9kIJBqYH4ZpFoZNOeoMjf0FR0LfRBbUCMHBht/Kk3dZwBSEtQiAAsh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6B69FE9MQS807P\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0NGheDrQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d72c7909ec64706b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5d6bLKqExDXXvrgGvIi/eQQbX/YjUKS2ZC9Roeom5iUfCoidjtbpe0x7FBwCqsIm4fJ9BJuSuW0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXGMSGN3BSGP9NX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"634bb91e45cf6ba5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"K+BVm1wDzt5gyUa4t69GAwmFZ/X6wAwzItGl8iSLfrbROFUlkCBOCgxLXfAKmvIwb7KbKfbOFlM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXRJS3XMQD1AXGS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a2bb525049f8fe85\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9csv4Q/R/iGYH2SYM579+VSadlftxl0c8TP7mXzYvMDiroVlabFAamZEwcFFUBmAhDMO26JfYu0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXKAQWQKFJSZNGJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7617b6b53a0eb529\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pOCL5mADMr5IZ8f9iTEkP9JruhqBCzrRYWPTGOBXVfN7YTVw42mfs1i7ssoPtOv0tGQqJo9cQC0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXQDBEJTEGBM64A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bb4fa455f29e9bd1\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fEKEYHWG6JVijvXsfGkR2IaJhx1BddJnZAAXLEdBLaAExkcAF/WrroyZBc3cz3HuV7/wCEUynns=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXS13Y44E61894Q\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE0LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"42bceade2c48d5e3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IDU/KFbEAzN0m8lOWJPEfq7fAcErrOFvhzysDhe8YDVI0zBksCUXKNzb5c3W78TRaVNFK7k9U2E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXY8N3Q11NFH0Z7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"56365a923dc1cf4a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zi/N9UwDg21jpqDg5/EL2DSrUTz/Q195ldi0f47OPVIcovEFT7rttb+njwn9j/9pfTfsVozu7Rg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXYV11MXPGW78M1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2890cf4804eb37df\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1fd/qRaKtA5sQC7nq0nL3fudb+C69QHrSTkx6DAcCFlvDm69MYuufpThR2hvNgKDu/GZkzuUUIk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXQP4P3TYM0VSYA\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"97668677251f3c86\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TNev68tl6+2+jYbyPBob/72s2v2OR+Ug0VVGmpcaU6K42TVfgHpHS333qBxravC94WWVRI5VXXk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXHZP3B0B4ACWN7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"005867d2fe347571\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LXLjKP2Ka7ZWWMTSAjtc71V07tV0eG+qKTbzr3eM8w8ijv+uvpCflQz6gTB2IW4z6uJBAcm1oqQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXT1M3ZHFCR3W0D\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0PHG3TtgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6426be21a79cdea3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"78SXAIcdZEk9Vmk8sigWgDY9dqj/69TlQpvlG5sZHLXorlcw3Un0fVE1f4Fm4wdm4SaXppHwAyYuwcmVgjJB3FGkwXCjiD3u\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S1VZWZH45BE7KV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8d36ed5aca5965fd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XaQyyDjM27YqD4PbA0xDeXjjnYpyy5gYOzNNZjMHnO6zShAMvrmqBqd116ORX90no+IrPKvd29nIfWEeo+Ke4A9L5Lt/Yog5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S65DXJEDE4XQKS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b2c56d3e8ba18604\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Xf9wabzzMztD2hqlQfcOw4gyDevZRNpD/8f22XwZXI8fDwOcot/xAReYmfpdDgc1+0sH7mz9+bLMcvIwBmn0PWnzFnh0f5DT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S0SHYH65CZNE2N\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"866b77dd237d4edd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Zl1R40TyEkn8zcqluMoqhhIOA+/cNyAVqpCJeArW2rm9PA2HjwKSm2IEmngKUvBB8HQKjItnvx6vcQ72HJNOo56v23a+i64B\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SA176ECX9T07XS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"3e4c8dd551892647\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qxfftfrHY7nN7QVTxFXLrYwmfPxJGweieK/edsKdLQM15bsx13iOOqKjtt1oWuOAvJeDH4v6ItB+qBLpKXU0XJhKkf2NHjkq\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SDEKTADMR174FM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE2LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"cf3eb0010f561d46\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oEB8VUni+6SVNpdlv9m6ShewhZCJXU1WrwvIxPBUxLTejeL48gU47o43DLq+p4zTQdDiRrcz0Bn0VaF2/0kqET86TfT8qqUG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S64R1BMM6WQT0F\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4d8be4a256cac1d2\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Aqlmu3ZrOUQtGO50vwVUhs42ZbeqdmWVz9JVfN2tutp7zp+X9u3BRv4lh6Jt1fl6Ts0Wj+CqsofVAT4GiOOQ/NeEYlIob1J6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S0TSH80QK44WJ5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"62f00a62915347b6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YRfvMDL7Siac8q3FLl7OMKN9W7ZzzePmCY0SPa6Ba0QLmg7uFmN/jbrgu8FQnT4FyUmoBAR7SATOUltFxwzhmRFeAOO0rUEu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S0S7C6V6VB531W\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"93ced037362792ca\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"G0svPer/2go15W6bVuqEZ7naTmZJ2MDx1/oHdxhvbJSdL53ut1iVkIZfw0wj1moSO90+UW7g68EioQUTkONFkfBVR0udIDzh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SBJMKQR6BFX33G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f7037cf0e3490bb1\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Jg4CfUPQCTXrSROcy0hgOUY1QHXkts3pkixMPumvTxD9M844V8D910VhUhQ4ByHmzt+sOxLkpl/T495Ongor9TmXMo34yo/D\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S2MX85134HBBEY\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-4.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0POR59mQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8c0037bbcfe3bbed\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tGuuxZINFMBn3wB3uswILyZEK36E2/g+lzDmx8ZwhzZzvRRbAJp90muaH/U5X7z8rUsGBG86r2mLlUDAzVJF/Olhvk1HNzxG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS45VPRAAB4VR0N\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f227aaeae831ec81\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gPK9PKQMgmcDYI6ydDKNP+kRR501GvA7pM0bkhrrGs/xvgr4XkkzvtxyYVl6qtfhggmybGZ/TsyU4U1XYq+3TcM0fKrruTvq\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS96PSQ8GJ2MWFK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"1efaade3923ecec6\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gPiY1DSLFF1kV+Msow4gUal7loplp5vqgdGcvsS+catnqTC5nMZYMhwYByAxbu2d2u3EYkf6Ck8JglsHfw/e61RH/U52C2nd\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSCWDJDM9PVMP5W\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f9edd73a3d117d0c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9t9maGJpYkLdkwm+BEVJlnxNXHt4mkGKvt4PBdnDgAhR1gN8f/6/Jlec6ae1ZPsQQYsyDn6Sk/GAKTZkVfnd4lUbPfO7Odh0\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS7E3TF4D9E2HCW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9600f84bbc33c189\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%3A%3B%3C%3D%3E%3F\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Qhy+8VQKOdGc4gBSLcmGuc7B7wE/juoqZnysK05XpvPc6Ie4j1M+ApQVedondyRFoYnmwJGWOGfEhta/b1uAubi/kwRmuq5X\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS3M0G0X7QCWV4J\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"c41c31cf1f8aa56a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OkHYXWcT9wblyz6IpBWst7WdXCcsyVgrpNXa0Vioo9aHXZevX1p/HR5RLxZEWSbHtCLwbhMcWTjrv5rAN9mnB63pihJvDKTb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS3ZGYPZV6225Q5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"54a3085db2f3bd70\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vOQzZWUMARwd0BIaW9d3h8UDiWoB1hh40MwNFYSjluNVPSkolcH+EJqLCP3SbuIuQd6eK8ZLQsL9a4HVvy4SWSducBebp51N\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS8R023WV53H7K1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5572651d4c9b30a4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fX0EGtPGDdHPYiMftmVk6Xx30sGPHn4poBQqf0dSsRanDLrj5/YeuHw7G54Uzi0PwjZEUq3v0M2wjUUfmu8XnENWnvREZs3e\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSENYZHRVQHQ637\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a15f613f4edf6f5d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AQSERWIjsoXPdmf6Ww1GAIiKuwyT/O8WD+Sai74tKQ7eZDAC+QYcANzMm7EYrpw04hIlSMSxstFH3o6DHmJgtT/Xy2lVVojn\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS3XMHM7RB90K8A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bb8cdc8c6b9ae6cf\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SezM7g5mSyJe+eBLD70ZmOX1QnF3rtjfg/gK/GrpTonLYlevDkuvi0EMBrY7LgDjSY5aYEAhpElN1AUISsvA9YJP6yN0KQKw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS8748HNXV7TJBR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0RO1iqMgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4655a45319609097\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"A/pm4Qorq328zmcY0f43PZ+H/G3P1FGhqBwJlDnVq+xtHGmA0djQFmLkUURa1XMLwgYTCy38Qag=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC0CZHNVZGYY76R1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"adbbb67bdb7d5011\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UzAy1XWOvWk0AsOYq8qxTMWKiUDR2ic7/O4AXtSCNZa+SQCeHycQv+3Otc2ffHvh3Nx5kx2ofog=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC0F4AHSNWWF7FH1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b6bf815a19025227\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FXcmXZVBJzWmNLO73b8t4Bgef5SdUa963eKnqRMlNPTZiwocG7GcuoMu4qWBSp3s4nk3i4LRkVQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC02S2XV7RX9D25D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0ced42c1a7cea278\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"q/lzdAkcW9LYLgv2B+UPvzCmBUZfJ7gTwokwtG9tin+QdRz7m8YCJy4RCBY3eYb8VPGG4jjVFyU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC09R6136V2H9Y6T\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"3fa5b031d292835f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%40\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Rrl7SyRtmu1h7hCY8dI/0KSNXI8+X/hBGM9e4gczHCtBWAOF3g1lMMLRAJg8y9pJQDHIgGND21s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC04YAQZRPY9EJXE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"07b7b908e1b7dd7f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9QC6xnWKCGUVb6Ej3Xuz2t0i7hV64IjNy1lNX+ErXOlWsFbkz67Reg4yFsiyRnySHb3wCemn9Ik=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC0C2EPWR5M1226E\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"755299328987fac9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OBb7lIV4N0Af7x6bvfSI3+lWMVVPWh6Vngft97IhyUsi2h8c5oZCFHKkybmCEXZcbTqiVdHss0k=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC09J92XNBFETTFS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c8715acab55635c9\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"J4zk2Y1QmBPEtP9r2UA5QFZTTD8yaA+6+IWQcZEbqmtWT27oVAMEW17Qw66OXzLd4/uAVpgdF8k=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC02QDY15P1G1F8G\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e6d9bea814cb9b72\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PxQoJu1qIvHoV5IrYvcMMZYoF1/dxkNg8ktFQMqSWztMyoZAAL4T6SiavqXx+bByAJmu7Rvkw9I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC094V5ESV2472MV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"34beba328f9bd3aa\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UDtRqe1Di0anEL7Z16sD3KB6VNfaPh0BqxHjBN9qhdEUoXpHs0fRnQCeTDO5fOLFW1s8bpty9MA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC093SH9V15EA15Z\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-6.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0NNqyH1AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7c2fa45576dc9706\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dx4g9jNI71FI2Qm0hadAvWFrA3Hyq+BdiYuGq8iKvQjQAOlh0Z/cun0Hcho8vVG45jsB751IMczghkul+SrToFdGoQ0Ve9+s\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXSYFZ8EZ74NCVP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"250f48358a74d782\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nh0hUhwpV3M4ZGHIg/CLNLWi6LFBEq1mGwoXMkUjFAkSCeknbDOKE7lHLkGbPKixUecbTUamj/hpw7ojjnQo+sACPmr4nXMJ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JR780PQHHMT9V4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9286a95bddbe00fa\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aTM/wW0MoAN9y5VcB8yRC2tbZuFWOFIMmJuCZPlu0RM6Ro+xZOIxfWayeeqBDRROO8mAbZRhhjOPzYQroI3E0WGSezdW6Qi+\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JHGEAQ9372GKJ9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b038de28c0bc696a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hRAqvvTV6wcqfTpG8MBhA6GuGp1XW3LLrZFu+Nq6ekTu8zDsE3gnZilI8AzDWWcP6s03mgRt2lwTCBcehBSXxorhPC/S6EAw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JGABTWCK4QE3A3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9bf327840444ea49\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PbTOz2urOpWbaMYdTT7r/xStSaH42O8qoEpBrpZ1Fh33qCtFVLJXMHGSFrWKu4BMpD64tsJctY57bBYcPuN6u8Jx2neEogUl\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JHCXSBS2N9DCC3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"684ab49fd2e1b00a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/1dMYCV8VUmNpuB0HuDqSFdnHi1aj+njHMRx5oMY4K97tdEZVIdYIMk8d0yz0AbemBHAlDhBy37daFKOvsfrgMxXZfQDJ5r3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JZG7EPS0X8S7MR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"33b0694739d396ab\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YeekZ/RB5UbhuaSO378WfILJ+3sGSkz3h1Sm+A8RBsa+LN1ldDOtYs230o6/+A3C+8GvsIHmgmez4icmQHVGopD1XS+zzyLz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JHC88MERW0A1DS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f7341599284acc6e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AIwOOlrC9exFue54Qouly3NNm+iOtWpMAp/Qt1bzVZxqMzMpgnCwDecL4iidgcfq2S+SvnkhUUn8vzHrSjktLl7FpYUIycty\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JSKKGHA399GT02\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"46e4591b81bd6d99\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aQ0s0dng3kxC7Hyxat0PnHL8PqI8BbfPkfbVKdCURqPVEt4mXgdKbziEGrYrcXLla9zmiPrnH3BrltQ+VChxxz/XKyxf+OVv\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JGBRCQK9A9WDJS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0358f3756366969b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bcScI7zj+30CIm3WxuOCpmqVeJFNO2EP0aVebkgGyqyz6ZCmtV995Fr+v2Co9ohHyq+pCunkxOpP/cisFzH3jJ8UrBDcFSH/\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JY30J75N20XS74\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-7.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0SHRbUtQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e6c4b0e86e650e1e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aTv3QEKZ+m6e9Ic+1X3bD2Z5JjK4RPvQUopYHcHJNEfLOQII6yVlbmD+7z55LK6I+YxXJDHVCa0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC099E19G8JGWNBX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bfa4093b1212f494\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UbautP526+q2x4HR56pr+4Omz/5kiSkuvTuQiWCSaSYecX40QMvw3bILa7INdiIhU2FVjRGQBsc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC0BNT1B2JZ1KQ2A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"519522f1926851da\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"k4NOxQCLQTGh9A4kNtaxAIvJV/jRSeybaGcdJefUU1TeQbkh3Vfk0EOLlA4ponw8/WpY7ZvW8H0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC01NHCCHD40Y2PE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"eafdc014de28cc3c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/Alp85853damldM+u1Spl98H4whQ1amxlnsSjp8srBv1A43PczH/ZAWj7nQ7ZbJkSCI3DE6m2n8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC05W5RNZCB9WNZP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"0fcc20c8e86f46da\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%60\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dFaFAqryP2UfzUoLHuGik/0QCRME39cvBkg58Dyxgc0/DdJMJeSEImzwbdsaWf9YuVc7kPDreZw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC067X1G56422CWW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"5c78688770bd09c4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iDzsSIao9bxWoVQookdfTGLC+oBIMqV4YdAJqAbJXOiUm0wVc1KpSYKyAwvsce+6OqDg4D/R+g8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC0CYBZ0ETW9Q4A2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"813031b7c6b91f84\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sdZ/1n28Abw0X3UjHmYQOILr+iRAH4sqTW+s4VKjEjCOZ6TbkoQuaatI9Xp0Vq/h8DqLNuI5F2A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC09ADJHZPVDMW0Q\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"936e819af4ce75a8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+ZbbOa4/lqZv78L3atLQDXMZg4Xxb/bRMJAo/kpRq2Mr0Lmz/83Dk9vmSRTlFk0rS6//dlvGgBY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC06R22Q728JABMS\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4b632b8f9c281d36\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rhm0yCOD+qSlfx+2t8qHE3Klm+t85lcFVJxdD2ad+MYV6z9MsoqOJEoG4AD79ATapH7BqbBazdI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC0230S55QSMXQ23\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"19bef636abbdffbc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mdkUbJlQcbRUC1Ib/DFotqxuTgshZQe4T9fbB7dYY3s3XqptECjO8xlh1TGOcPNPj/IgHlGyu9E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KC05MDP5DDTZ3EF3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/ascii-8.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0QH3KCNwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b81f6fba36cafd12\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BcmtloAL/yr6tOkyPONVWnE6hXa1XBp6D3/LPlRKtF5TudUI6BTEdChPjhhS9MJpqjOTfp9xzD0HadIBhgIbSH7vxb3tdbXZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS6YP43JNWP2EC4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1fd3bfd49ca50130\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tPbPWsk5A1RO7zK1j6dgIBwLZssqbXiqdmTbPfBiyWiaeVaH+i93+01jt1kldNAjjNXAwq/1O7wYmmlDEo5B1ORr4BAqmrdc\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS475PCXPTJNTFG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"7ca3beaaa11144ea\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cyvycJH+XHXHkJDG7qqg57qCqvW9QfYJ8PsjB13mRUcpzq/u1BRHT7/QFAQFwDTp5QDs4OZiJ09WHg8fEW9Tn7XWQIOEUd49\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSBCY9SMCM2AF4Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"05a4b21e71fe7256\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"v4Kh8uiDmnsxZpiJv4HUKrnCCZQIWY6eJLgW5p88nL4nE6cqexON3hNXAcGdP/eofGSiAHq4NxITtJKfMVTJfOLX5qYr49Tf\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSBVWGE3KAZTKCP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"04a5130e64c7016b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fgCQ0aQGtIH5j1/aiuPJafft7jepcApwLaJFsTOpViGrVgPlgq9VylRDfU+Hlxa8qPLVyQWVi91AZcFez1f5Z+FEQBGBoo0A\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS5EWGG9MCD6A60\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"9f8131e92439bbce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"08AWZnOaonWF7onZza6nXKV7+FOyrG+za2UNAjHcD8SDJQK2+BpRjJyrUsfDg4SBctEEwvtPwD26JguNYLFditXVsXF5sZL1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSDF9CCEXY8EBZA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a74f6b5be568479b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YzUhjdlRD10BYksstE2WUT35bduUXWieEumMyrpzj00XbeS8+v/HtKn2YK4IhDKtv90b3Q1r8SAMupuuoCztW5Zv97kOMNI1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSFX17C4EAGSGVS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8b237c4919a59663\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9mvLpH115GES3+Cri9/VGP6DIERYqJM2r3AZ2kqyRQWlQDPwTRxcHnR829Voxfg22BnEVHHdygiNkTVwkK1Leqc2bwmKlIoQ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FS3NXR13396G6QP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5678ee7b787e757d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mVdV6yLifnucvaToatIRZHPPCttEnBSB73q2qy0Zd5zxLxmi21Mo+nDVi62Br804RwdBRgpXqzR1S3o921vVZIQiaawpUnPF\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSADK13VRB3F813\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"111e4ae6a53aacd2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:17 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"l7SFy+99hP3VPiRYpBE8AyEtCc2WKzA7kJNwWOondB3QePh6171eyd0yW5FsnNXrelUmdhj6gR0EYljfOv1x76E3eUGCBM1l\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9FSFJGJA3147GW55\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/backslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0TG8nFjAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fbb4aa905a8e7cb2\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5RqgqZq/b7WGY2qwB14IQ7wtpnnKiIdOWvfLcRrOvDwYgvqafo4DE8IsPANgxuaVBXbH8P0PycUdCvIdF2bbyAnwXGgBoBvj\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQPAS05EDN2Q4PE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a32d91e6c69ba4e4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SkR6m8U15l3LuVNUHlBQEKTAwPjCy0i6rrqbMMxbb93g2K7ysWjeHTCwwt+t/kPyHINUxCPaUk9gnl4HGm4QPVzqdVghPKO7\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQY6K6QHCVSPAFP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5d368e2f3f417ff3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7ZgMamtyl1yRKPG+eUvRtkhD1faV0DwsSmqQXyvgOuEo3mTCQ0850tDlS32bhIAHyzPf9IjrmdZcPCqiqXGJrmaYpG0IjzTL\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQRXT2RVCJSZWJX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5c2d780100453180\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nd9unGikmoj/luKz5uBHWZQwomairCr4jhVmqgFlKAEMMAoIn/HhalMh0eRlgMZqz2PTalwnXiBMg5/I0mrF7tg7ePidZRB5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQYR6DG8YAH9PYF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"feaf209bab4155e5\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Qaq4O1emQ6Z2Td+9l1JVS7edtQaEydmb5VnFVErGKGMQqNRYQUpHtiiRx9FhDROD5V/hTG2pHbMegdC2VGP9Sda6qrmZxCfb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQX2H2W1MJQ8D18\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"b5c30e113cb86b3e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xy6NSSERBMh/WnbWXrQ4M57qRXei8Ad1eFw2Bl3i2yM/3LihOB0dItJSy6Y0lHcFPKesF7r5vDFxLzojRoPHhZu5m83ByKlz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQGH5Z3HS7QB4NK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d3870fa6cc0fc564\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Hty6X+QU9vkTfAzAT0gKiqnSTmfT0yJUjH9qEnA/tWi0rudDLyK+hRta2+b0UMg6eyyHpYvDJdMrSUz7/Eo48N46rWObxmDr\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQSMF6K0RE0WGTX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a6a507c3f5a2920c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CHBuzIOGQSMJDlcS5VFtBORnnFBVY6GOlpA0WaRHUpN5r8EkAulr6i7hv0UchxnJXryNgyh0fFeZ9LUe2iW2rxT5kBv3FYDA\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQSP8706DDN1AR1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d73342cfc063f6d0\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"lEXJEKLf6hN4yGzUh0mFmA6sXbLmg2zb9///TyXHhDPWnTeHDnWS/BKdn1dVXqzSpeXaEHcig9e6HnXh28brI4F2kXkHeWVk\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VFC21F43VH0Z4Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5f837c33ca137296\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JLNNBAU28V8IHqB1h2QmOcsbuYshlBzO5rzYgLzaB3jF8BrPzU5STYmd6IglZ3WS6QSPZHI7SuNLzFW/MFJ+Oxx09Q7iw1sl\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V8QX9ED5KYHY8D\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/dotdotbackslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0OOjb/tQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cc27be5920b7ca0a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qQrzvGo+d67jy3u7hPaBYHw7d2aa3zJZ5OnjSY8sfmPkosK/oLNjFmD3QlFtNQlQgSZsMb5SraY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S3Z5SDAMXT9QKR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"57569d830ba5fd2c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DCTLqXj0Bw2DLGw4D7Dotl9z33zT6lU/N9MfdqYqGsxYzqVr/4yfpv1YQsBDyPLIrHxTfw6bn7A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S9ADZ1ZKGJ4QFD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ac8870e7cd2aac33\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ObZyLbdo1L+vhpPV9/3j9BFP5oWysCatWYkBlR6iFAe1ZGmYpgVtRqXY91U0XTDn9FWz6FjiJ44=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SARRHCEWJGWYZC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"29140be152a6c51b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Eev2V/ZfqeJnv9I7Daw3/W+/L+n28aVGvcAcjtUr1nLa7AeL9zlMXRinqrefGZbjzTaXRgBQMp0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SBP5WN1NYAT8JB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d3bf9d091f9051dc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YevlWZPzxsGl/W0/TMcLKuQhAcqUL0p3K5HWOMrQGd1njOKaDEjj5UCuomGcEVD/mf/nyKCZZCI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SBHJVBQY74GD36\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE2LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"827416d9b254e389\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"depZxHd6X77CVXCJbQea/uhNanLRIN5QqEWLC86hgUNKWTzOiD3TyvDmINz8qf+DCTz1+s8WaXo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S3VTM1C9BSY7FJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"85ecd5273daea166\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"woBubi4TlBvqV5KDTnHLL/giBpFWXtIahMR3EZIVPMotAaZdXod0VeBPK3cDN94szetRW/KfU9s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S6KFD2RRKNJHK9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bb1dbbc58e225a72\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aHQXSofTkjKuvqkWvuMOzn54N8HYGnNr++WbnbZvOJKQ8oDJP+iptpXmr0CZyVbB4XVk4ZfZO+Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8SBHTCHPD03TQYN\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b157bea5ab025f66\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SFhEd7aIoBliMMhQK6lKVkU1a85WFPv3c65febyYtKFpMRAqUVcuWspy5e4Y5Jt5elmWHETaP6A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S9DCXD7PTP8J06\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f83632e826f6901f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:16 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1Fb6JP6Dkh+LC9hUsNMblOG7IQSVKysdFbfmnLbKIprrixHvjFMon5blcrSxkHgONYaI4kip0dI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y8S7RJZ8RHECJNSW\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/dotdotslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0SOXey2wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a284973e97933159\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Pj0Ofs+vwcVmTp0RGuEuYtoqOZYYlS0RrXjjt4vSZtavQv7DQygiLSrVOAe1C/D4/ZbeB2WGasJzVXwvwwBxAnCLDQpSl2Fm\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQGQKSFQ037G2BA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2d572cad063d625c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"H7EdS/tyGMnEL6eT/5kbcr0kDYTcE1g/dy7uBzqgHTntIAQRowtkUj3gZgy0YfIX9Q0f6xWEMhTrOPJ4TQrTkyrxYqtKvlp3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQS22B5G9GN00QA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"fec1adf49476e46a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4Cw0+yK+BZBZuiVmOE26GeEppfngJ/OTrgepMQoIV00+723NghI86SJO5WgJQcz2JK11mN0GzfRbsPeKceHeZa5AYx8R1Z1u\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQRMFG7RWT87NFR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e3355cea83f30126\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8WpPDv578xboII5WVpb8dXFrkDvyuPIy7C7dZuwX01Tb2odmmtNM/tpzlCDjhPBJmGNHU+PvjzXXzsa+wq/UGeWHZOl6P152\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQP03MC21ANJFKB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"dd0bc256dd31eede\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"19LJ+JaDFJnOcGlrlHiJP+jf860wgbcM8mLTXi7fpXiYJNFNRE7hu/PduNDX2dccU7RzLR42WWAt2zHrGxLXls3mCVJabTwa\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQQNKYSCKKM8H0M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"c4d5008323bd97d8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"82i3QYj1KwEtPFQSckJLoC6p4iIevhhTuAUR4TNFQLSlK4g8SaG4/Z1c6KKqKgoEjOS7geebpoyg1MLbJsqkDeaHKt0D6Ypx\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQWQMXV4VK834JJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"f430a59538d7be69\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"25mpWL1NTUW6INItJ+ySAhJVDxIW9s1MXaygLxtAtg188kZuDdUo8a3PvFTgcoXtlld5kd84A9pFQFmJbtbHrZtxJ2Ylatmh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQP79MFQX0EZ9DW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2f0cc7fa5cf59c6e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TSneMiYHsIBUIbb1Z0th4TwvJtd+VlaY/ObFBU9dnk6H4MiHsCFkskf7yKPS1xILZvdgZpNfwCBulBGAkzjFxMKjYNcEvasD\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQQ0RPG16YTGDB4\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4a20090126001e7a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"i6QCTDwOl8yNdlQQsBmzXAtXvxijRuFK1b6ZLmLR3cDyKof+Tvl95f2liyjgoxSFINgt2v5WjL+oNfeoia5bJqMcbuVT8l+f\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQS5YRM0EMV8ZM5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"54bb8013132974c6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:20 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vAQ04mcxaQKWbXxCx6ce4VFTRB5xKn4zlIM1K+vkREW/jnPQ5Hb45b/5QKF5EjmvXuLMk1tBdbfoAbP/yVUs3dr4FYLa+S4E\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1GQJGKNZN4T1ZB6Z\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/fwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0OF4SXEQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e53c029192b9f042\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"e1/MN7MAypRuKSWt6X+Pfh0r/p8mprVGc8eMqaRXDOxn+o2t7idq+VWxVkec7iM8WRVM1F7CnR0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JS2MQBM8N0FQ44\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b11566ab1aee89de\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"J5hcDO24MYcjlATIGiRXIPOBsI6ugE80uR5NaKuEntMRydjAFan7NiT/FKBq8qavs7g9H2W0U9U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JJXAM9XX41ZSKQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b4ef55009fef4079\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jgzAWbEHWQ/i9QX5eng7kv+5tdLmSMJV/bbbIYUYyOH1c4xlS1Scx37fl6uJvS7OG8/nUidD/wk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JW75QCMDHE92XB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d2e0fc403a439cac\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3ChaD7U2Y0DP/Zecl1OpNYnGLXGNEfq3y3hpjNPZIE3u2O/0MfrNg2xtNP3dIKB5c/cglBlb0e4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JTNG77TGM8FGG0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8e4a614560e690a4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ik+QIkEDpYZyCIoATInt97b/A6qykEhqepM4TtpbWBYGM4SUszEllJh2EisjM2H9ZgQF4yei3kE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JMP5KCZKKQRFA9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"49082404fa260115\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dswuaZGynjQ/HtwlwVvTDdCNBKyn7c6fHD9xCIauEWEeN0tTmFFqS9zkP9Vc+NTdsUdy3U5iqeA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JYV8JTTDKGYFG7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b62beffba84fa42f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mG7splqL5p57cytHa2Aep+Fqod/qoPVKoQumGbVnkB/NC21/P1ImHLftCzdIk6FVWb+ylykzc34=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JKS3W91QC4A6RF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6c884ce79409e610\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0jv0IaERvNtKwlNF5pqiE9KdGoBE30lIm4C8w06P+j880sC+6oWHbjuMOTonQYxp82EluuXIQf0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JHZKNDE4RGMMCS\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2f9198c6d15589b2\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HxNEsoQBWsBF8NbitLceifwS9UEz7UCHHVRx+rSUzevLPLnY1MiBV7ASH2zF5SVG5aeHml3u/+Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JQNQSKHYV8ZF63\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"565c03061d941081\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FNTg0uqlmJf5KW6dm0Jlwzc4J3HDIKd+vDGuYy6Ag3jM2yeiJY8vFXSrx/Ts4m1ryjl99JQK5HY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M7JJPM1PWWYVMT47\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/non-UTF8_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0LAkr5gAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/quote.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0LOsGqZQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ce836bb9ac01b7de\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fKtg0lHL+x7I8z0fp7pqOfq99JBvL96JXYf7TLep1/iRG5rdq2FkVmfR0GNoJbGVlHWhVUMjA5uy/pXPQLvzdSFeXOMkVo9W\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCETHKAEVRTZBG9S\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f1547b44a50a9fa2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"G7/9rOznfSEOwAsTiOjbQI/+LnlYltHHdMrdM9RB+diTZGdAJd71fpGu68KC4W4rKIV+fDpkutw5Jqn5q+9+OWui4lw8bXv+\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCENAP8M5WBWTTTP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"33557e5e36f47300\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mtUq/zm4lgLt8TW01Ps2XTxLQ46PqGxTJp03nDKooctYbSyjpIs9oRxOGkg0VN6sFJ6o+I+JNX+DRngn+sZMg0Q2yIAm2am6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEMME1YH9F0G14P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f9c1dc60925035ec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uhyZhi3BONXgJvEV51ef1VYk3YQZ6jh4EpR6liWghO1O9J/tJBRHIppAnVnGRzvE0+P426UajSpYhfw+UENAq8U7fxTWgVSg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEY8N2SM2VX4NT0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"b1565883ee63299e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%22bar%22baz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mUCSua5DwJfeZ8zRCVRhW2JAgtUZ0XUshiQff6UH5gYtwKurqyGxZPKA+ZIazK8LEkl8vRpAFd4E8DEy6ZK/uzxnI3ZCZSc1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEPKYJBMH0GRJCW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjEzLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"1257ba780431e401\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oSaWgUsVIOyNV1YPV1PSpo+odVuXhqbgXBk6zdRWOyCl9cVtxAy21HyFoHzFdaj95j2wHonFPU1bEUz7wyJV+O8IEnHjZpf+\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEZZGR34833NJH7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e35d392298f22c0f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JoPKxlS00y66rtx+9E2SgHO2GlfxlSziwpPOP2hJC3eUPj9pfFNeZJTNT9r8bf2xVr51GiYFRuf3tqi8whdHHNNrz4i44vBC\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEYX7PCJX710E8V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aaa5c9f7c1b5c516\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5j1f/GZyyhSUJ2SBCK7eY94Fhfc2fuBMJc3O2uXBrZ8F5P9B+sNlTeazvGtfeIsPEMxBECsCayiIk939M5rI1sIgIlCyKQPh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEWR598T80FG6FY\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"292c70dc3e35839c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+RKwrrAdb/CvyZzVzerWcgsMicc2wvhncOXghvG5mRIt/1h0vRfqLyScu3JhEuI6qVf9BmdXU4Ya7NjDXPCYfboIKAULcKD3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEK6WVA1DHZT5A5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"34ae9241fc568c0f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aBq87HcFGANwLvalxUupYL/ku/DGUSROVb/iRs+cccWNSdxSwf+MuPVCTy7xPDvKnFd93yFpsmRCqol5db7ScJhHVwbdXQSl\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEV2759AJMZC0R4\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/repeatedbackslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0LHpCEsAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"502650c77efd2cf6\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fVaPu9OWOdLmfrGK632TtFzYx9XRJk+FdQ8h60CDcb1j6rroqAUzKs8kmWSCGpFB1q4sjtMdgu8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRMV8SAKJTHFGZ6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d2f8b6da49207aaa\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7mxxOqaHXCLvxkDcizMx6OlqXOc3Eb1TXoZu4hsy6vhoLYyKC1MTjPqA+VokymTEOZ8ljU4XBok=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRPCWH57RVTM6Z6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"72db8f2040d0231e\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0Jpu7h4MWKY27I4uPuwIdP64ftxDdW8dmExNI/bnwYE+/AwIQ1t1+LXxv5Z4GVn5tnShBeiCS94=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRK0GWQ8KC1ZNX0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fc99dd409f1ec27b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zzb1cqUvmi0Ny2v00D/yqH/xVXykLd5OPch4u/geHdxTT8UXiHyPR9fx/nKCH/rkAJ+gD5jyUC8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRS2XA74207S5WC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e3795658fb4be438\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vH9FB2uLLw2fVCsXeM3fsxU7UCpGpl3mxK5E2cuR8dygRVK4zFQQiNb9CtApOkckhYfTEt4HKII=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRG5YZ0DK7CCWVE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjEyLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"cf4f0b52f1507ab2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HCAnv3WJGs8gyiSJ/9NAhzzure5O/0kktchxcvM8GiNPxMGJQbt54avQCCoRjVHZEBlgA4Jly9U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRWRMS10XEMSB0H\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8feca1003488d622\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jpvISb2dTDI0cJIfZR1p2OKy0JsZJNMmm9T5MxR3VN/V7d5ecEuEpYMPZJJCNTmBUQdskkNVQyA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRGSWMMGYP88WHQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"330506602a968a60\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+MabqyJ4EK74nzmyqpCkDESBtGU/lvsmy68APhwNlm8QNGAjAxZo3WyAV7fc41AOSPKRSeY0Kiw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRKYVBGTANFA1Q2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"81ac8f06bdd69de9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Y+fAP6skRxBuo3FYPsiHGPdFMECpyCNbQqL9xYvwKEmqOjPlCZGu2Ut2cND00Y6TOTAOlX9tT0I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRGRW5E6BPQSG3M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f3218577908f4a0c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tlRowjrMEq4RlvS0QoRGXlbXts4YZjlMgBRMU5RwOBbTe9FxNFBM66Xuw7KftZ/jh/MHWfSQV1M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRS65TGX9YN4478\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/repeatedfwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0RAUvyuAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9c07f069a585645f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1PSjKSCXL458q9xnGp2lkhPeMm2Mwv1834+kgKbQgPnZD5UDox+MfKjYz3Ymq6NgB3dqmLdArPo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE60S5PGFANW3XK9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d0e97f8263ce6c26\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Wit6VhTF6hn0FocSzCy+OPfMj1wGL3vQgMfWfjLM+Pnn1xUtjoWjgGQInATwvh85lUsTi997sgA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE60JQQ1MPYSACKF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"49fbb516cf4f5596\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"I+0NW66HKHQTs3rnvF5aY/OZ847PjSfccw1cJbqHT0OxXjG1lXLk+3KwB0T1ENf1JoK94/ZmKQY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE66X01N0VXHYPDV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9aa211f3e6a244d9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VfXEtB65iLx/kcB+9dev0eUUFx+F1FPNQv4wjH0Lew2KWwzNsSwCuRMfDio54Xng012e9jBc++8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE67A6ZNRZ5NK4AC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bbb5a78ea11c888a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iqKPTYN3095xlO97qQjjWoBhIMrBqnme6P/9a2I3X7qDgyDj9Q8r52OZfBBqYCKsvVXR2HOd4iY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE634ZWMDG13F1FH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"1b3d17d9396acdf2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KrTR6+EvYEOVU0+Gn1zuZhPzwI6Q3SAN6gyeDKNINJFD1pIj2KSqPmguqei7h8rYIRskU1RBtBI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE62KQ8835ZACXAN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e50a36062ae3c5c0\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Qb5ye/+CihJvw+4rhJZE8UWjqZr63CHLNnTMlp/ZBiXxeuSn9bmTIZQibJwfSKbfRU2YjTjtJXk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE61DGMXB4Z2JEAW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aaa22dad266f45e1\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xcMy1bRkre+FOVgFxxDYy7UlrClLHK67uWP9aiOxtYvDA3+coie8+3ckQ/vl32kStT66SmKq1Io=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE66DEBVJZZM5SA7\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f039685005816a19\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wa35PLU+DwPsbVTMCI0ESuWIBFjKNeS/H1qiE/ToZ8KB8Yb3Sz3uTG03IIVggDVp0Ta/N6R8E0o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE63GAWPWMP7KB2V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"07f2ae23ae7b82ba\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:18 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"63Ku+y9Ud4OTXjvhw7W6OR5y/wnyuDK3pVdbf/hQW+fGYF1C2crs90CoaCxR0ZV/5guE36PaMtk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TE6EN3QMC4RHHNS2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/spaces.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0LAlfKIAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"dcfedc320ba23bbf\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MV8EqHKVv/9r++qwPIJDs9ADDIP/rwFG4DvzUznPnXcaGo/YKUmC20irhkfBOq4n6Vf9iA8+E4s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRM3HE7BPR8QS5V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"98ec17def1b6b7f9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EbBcHd/bBcehHNkuHBUADlIhICRX/L81vnExxaBYchf5gyEakZXtcM/8pxM6py6KfOr+Ip4PenI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRMYGXGDC7TCCDH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"07a27b2fce715e78\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XCYusKQXTkUn7tI+r3yYyIRh10K8gjFtAvF2rFBpNF1KEMsHvqZg3JMDQKaXpFymSRsap1mr4bo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRY63YXRV2H959X\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d32bbb4bc040ad78\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Cu1g7WaaCCEFqf15Q4XkTe/KGaVBxCHAhwSi0DGTYKtdFe7oFM/9uB4gJcrlY3LwxGijjGUZYKo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRMCYDZK59PW6KJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"44d5892b6671a218\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo+bar+baz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4LgPn5xw4azJokBmfQf9l1gReP4ij3dzKhJw9XbaRzUPZDrIj9UY+r4T0646aWU/WXaflwwoITo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRM96WFJNKDVMYD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjEyLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"10cdfa3ed4800276\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"23qPSAG5RUf2edwYLNsQjHm89uDO3OOmiJWMtz2Vco/UcnWAmBO3RPvm/rt1F7bGEShZ3CzWHxA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRNSM6BNKRQASA6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a3b77eff2f9bf8ea\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qpQFgOXu3jAAcmkKN8mZMnxVuzDoy8yLmxJ0y8KaVqt51eraU7wYMU8nDMZgVT/+PBIIo3/UoBg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRWGP9XN4MPRXBP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ccf7ae3078ee5f0b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Q+2i7AfVViiaodwMRsSpdLyiktWiyD2MTazC+o1R4z1M6vQKyVxlVVP3nnjG+qzVR6qhggyhmFo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRYG0ZFQW762N96\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3a3566149f038dff\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6Kz8aUwfWiN6o3EtDCjdxPbThevGQGE6BD4bnz+euOgvoIPMkT/mw3p2Zewyhn2u8cyN3meuGK8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRPD0HVVXFRR42N\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8fe2b52b5fcf4bde\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:12 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rc5BTr+SOwGiuI+7rCv40K/iUsquiU7/sgc8lZDNhy3eahYZQ9D8I47hVVjoSFBHAK4MCspzSCs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PFRY6PSZWFXT9N18\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/startwithdigit.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0MHFrhkAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1cf9929052940257\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ozDl540WJFlQXICKSYTB7eTwYttf8JDGu+YvBE5+gsdF2qthnN4xgYbynvinCzyOe1cHNCQqLgE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEVVYF29HFK3Q16\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4d4d5c4cf3818ae9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yq2/MUxr1+EueUkRbVL2ER5/mmnJ9XUVpKRp4a1OEtZpfZ/L4qxb/JB6gDDYoniexHseHF6x/8U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEP0TB4VX9K9K35\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"35903b40d4520949\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"a8iMz5xAnM90+GUCF8Z9I0YIQlP+vNwUj7BJjLWp2oLIDLPQDoLV6SLR7rdbaRd9smoaKgVOTSo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEN9B74TQCR2A3R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4b6815d115398ba4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qIj+wFuABv/9ExulNeUJ4yDHhF/fOZDSOGf5dP5ipO+0hFwxr6yp/mqOT5v1EiRU/JPofhoTTxM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEWMFA7JXDZTB79\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"981d7b01e4406643\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys12345\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Z+vf5egAC1GiEyeof/K22H293m9rpzQfG5YdoNptHwE+izqTBdeK+pd0O8AEZ0V/E34Qdhlxo14=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEY3V6SC5AVMY1F\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjEzLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"c07061d3f4ddf6dd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vgnQ32Q+PL2NQjeGvwnfsCW3UOpXZM986EJWNyHxxv35CiEzEpB6tfxucGYgkfHOZe6RTvGqBCE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEPXP1BMMPKBBEB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9a874f0f32b3a529\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8zl3iIuhK+ITnRPZ/VofS6uRqEImN08vHSMuQk6m5o1/ZYlv7b7ULTttcyJVPMemGr1CsnCiopU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEH9HDESA4TZFGN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"94f81d9da5883e87\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"l6a1COmz/Z8B6AOoksSFd6/ktcXy2TBv0Htnxe8iCwdd+gVcyeSSopySQdQH7Bc+jLwTX8GcjP0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEGR8Z7EZEEM9RW\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e01eaf6a72527e2d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"t42RH19YlfraOiEtIwdZ8rlCemnDbA4WI43+jDvB7dq9u5veNaJxF0OKwOGPWwXHudyarlNcZfg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCEHCMQH80GQPYDV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"67aeba69ef76c137\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eLlXzUt+zMWwOkXU35a3oBNvbTwz2i/JVbwddejlwQKc/lBviE+Blr7skph/W6pD5ZqXKWl2aPQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"WCETAR4JT85PBKB9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestKeys/unicode.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0MOesYFwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"23f04a17ae2e8b9a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kzZ9pt3kXmv/AAtombCk8/1x23+TMsgodwBeHg4ccB4H/n7Z7FlGRln7wsp0f97U32//0LmEJhI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXNM3BW6EY0EFVD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"95f6a8e565904846\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4mKHOuSs+4aMfbAssn/Gzc7uuGKdHZQLsesVv/4V7FjF9NHhznu2przUpjYN7/bmbGWQY64ShkE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXYBT9KJ1Y8NVYP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"1b5effaf63998bcb\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MAzR+Lui4TUiRlAX2hVvxP8dGTMcLumSuea7vKxXC/69gG2aw4YbjzZ97CKSncvwSQcjmhfQUfk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXMSB3N5WMZMYS3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"66ba2add1914901a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2lbUBVORcMFlokkGmGQgiNbjO0iTaweiFBYuertfQErHVYjhgBXO0mugXOsk2p3bTTkeEr5iq04=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXPS114JPJGDBYS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"c8ceb241625ec434\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZYqbTMSe4cE5R/ftAiElZ1VYGNTLk0XkTQUOZO6+f5Ii8bu2eoFxkUuob8Il/ftWi4RS66XE66c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXSPXG9SSMX5TGW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjE0LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"d3fc1aaa583b355e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FhE3AvkTDuzK9rLc4bgaQx41T23rbIJ8SkOutzFOD6iiH6ROrcRwov/KsCPCBaOzAscQ3wS6vUE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXJTFFFA7HYGQ4P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"cf8d52880301f6e1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"GVCdjnbcQRxsE4WV4RBd+DTLpePt14qK8ZS7sAPvk0xF13PojjTcPOCpG9DNZ0pPLiQ3wK9Hyx0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXG2MHQXZ6QEGVE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d65e83189c286f80\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"a0WxXskG2tRpEpbK/tUqyapfQdSRZi+hkVXlkB+yxD1MfH6lv2tULONsWN8maFTmizPBoSSLGt0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXJVYD2WG3GX344\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a8500e0996a9cc78\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"x3wOwxxF71q92qXsI5xB534KjVbvjQOAY3b5fbVaq13pPa4bJ7dYkoNJTQGo4Ji9uLmSXfAwn8Y=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXTTR4SMV0WJ83A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc7cfec5b17b0d56\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bjl8d3DB/Hr6JpEwRMmXgMmuT4p3Wu9MAVq19vE5+48ZRVJUQ9R+mH4uxX7JP5ZxgAJldfJCKIc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"BFXQFXCE6D2XN3JK\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/PaginationConsistencyAfterDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz8OcferwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1c608fc7c787a5b0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gk7Qt3EYvx/K+h9Rb1V2HeMOOFG55u+bFs/KY+8fI/mR3utzHaTbbm/Ej0VQ1qeSRfT1gKuuwEg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53F37XDZ7AKD176\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"575c3b35db4cb3f2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"h4yi5lBvYdFryowVT2eO3xoDCAPKpmZV1UGy512WCf1azaLZx50YF45gZCkfPWd53vn+34hKTm8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J5311RWPWQH08PS7\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxOZXh0Q29udGludWF0aW9uVG9rZW4+MXU4MkRFSkZhei9kUmUzU3VUc0g3Z3ZuWFFhdnFoYVNPZnl0Nll3eS9uc2dsS24wQzZPWk53NFg0TjRjZFNuVXg8L05leHRDb250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MjwvS2V5Q291bnQ+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"4e8ff13efa33d7c0\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Mon, 01 Dec 2025 19:00:13 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TQucqkFtDff3THfb4dNP7+1RHGc4fsdLWhugzuaTumN2saJ+9FIu5PD3NmMdqJbBwG4ooN2honM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J5385VBFX7X1QVG3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c35e0ed58b5e170a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-1?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nlhNjWRqvXNRGqUioZnXZ79Ig5AKjejSq5acHAb1fQxSlXcX3wFyFH4ZEsiLU3MNEWmKc5XRKZ0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53FD6C2NCVSVQ4C\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2c71390e21077612\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1u82DEJFaz%2FdRe3SuTsH7gvnXQavqhaSOfyt6Ywy%2FnsglKn0C6OZNw4X4N4cdSnUx\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"R2ZJWkafvChIod0mBJTuCuzvGTR940heDrGtAJpOfkxPdPRxuX7OYFcdKD9KbwhdZgJierTnTvg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J534ED7AKBA1667T\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxDb250aW51YXRpb25Ub2tlbj4xdTgyREVKRmF6L2RSZTNTdVRzSDdndm5YUWF2cWhhU09meXQ2WXd5L25zZ2xLbjBDNk9aTnc0WDRONGNkU25VeDwvQ29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"b6924635ac80b99b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-1?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Vh31+oKOcWHrDDTaObNiawNjQbVbrGL4Mf1k8LAYl7BXngqcAJEM68NReKmLRO81PRs6p0ZhT0E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J537TZJH6AW5AM16\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/PaginationConsistencyAfterInsert.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz8J8D0YAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"85db9e1e3efb8bed\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6z3tYM6n6b0rrXFoAfDXqHqyvQthN6oggiHkx8JjLR+LPSYxdbCx8fOlEbZjmSDB7m7pL+g7y4c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB05S7M101YRZJH9\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"a30360d3405d8342\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yVqX46Rzbhzkr/uGekkt2b4cQi9DAna5z+sbfDu7Nwa+JZuMTd52RVESNsswLiYlH/6PT4ZF1IU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB01W075EPARBWW2\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxOZXh0Q29udGludWF0aW9uVG9rZW4+MVdNR0RENFl0K0laZ2duQkNnZ0dZWHNjSUdVZDRteGo0dVBiK3VnVTdBUFNmbEJBYWR6eW9yaXcwekZiNjhPMUE8L05leHRDb250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MjwvS2V5Q291bnQ+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"243c3ac869da5c81\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-0a?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZyGbJuSkG4UdzCyv6/azeT6N92jD8wdiuk8BweGrVvRufSEeHnJi7IVK+6Oua3ix5/MbWYV1XgU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB0FJCGA0AFEZS5W\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"31992b8bd3ec831b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1WMGDD4Yt%2BIZggnBCggGYXscIGUd4mxj4uPb%2BugU7APSflBAadzyoriw0zFb68O1A\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7emFh3GnDfI85XLXcD2/IAI4ZRck9SkRClHFhSOsqsVCF5PonUFu9cz9mjvgn/pbEjjwEYTxxVY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB0CX8MJN6FXM82W\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxDb250aW51YXRpb25Ub2tlbj4xV01HREQ0WXQrSVpnZ25CQ2dnR1lYc2NJR1VkNG14ajR1UGIrdWdVN0FQU2ZsQkFhZHp5b3JpdzB6RmI2OE8xQTwvQ29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"aac31a10d2d1db37\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-0a\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"r4VUGEvq5l5/lvLOnkqsySgr+avyIF6bImsf8b25onyf1DB9fBkB4Agl7vepgxH1H+BlDA7kl1s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB02Z17KWJ3ED2JY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"72e358faf3f91542\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-0a?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pUTqLlvnx0TwZ6iG0/h2fapfihtUnghSYOrFoQZPWnxc4ik6p8b/cbf6/MFtXG/hJxFr2vX+ots=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB0FJX3B2M6NR6RA\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/by_1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz8Bj2MfQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"be752cd02f34516a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pY16rnJlPbfX5TPC+RNBGn+Penl7cJukPGIKKViSAJQsHhN8IoBLugNawpuq5waziVnIVmt8Y2UhsHv5gWUKWefyNBXAXf+h\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB0ANQ37HZA20K2M\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"d09d83e5ecf6b232\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kjrhgC444GBV5hhjFBNDAioHqQ/b2pG5ULFwkzKfm2mLR5t9pcds94qE0xvH8LkTiKtbBKpzQcF1q2nX+h3TIS5HC12pfFhm\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB031784M5EG1PZ1\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxOZXh0Q29udGludWF0aW9uVG9rZW4+MVVFNDdpSkhhTmJ6S0p0c2VQcDdVRWxMZFY3anhiYjJSTG5MWU1sbmVMQXJmOHM2VVYydGROMGJrOStEM25ONnc8L05leHRDb250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"c1b9bd678275897e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1UE47iJHaNbzKJtsePp7UElLdV7jxbb2RLnLYMlneLArf8s6UV2tdN0bk9%2BD3nN6w\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KBzAHsSJmPOQ5RpXRfqIU4aZzXUXqfs4r6qcmx5bp3TU+BCft1aKzON3q4h/SRVDcJXyUtolfp/TTPhvHr3Mn6kGOlFDsDsK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB0E4A338JR5JBSZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxDb250aW51YXRpb25Ub2tlbj4xVUU0N2lKSGFOYnpLSnRzZVBwN1VFbExkVjdqeGJiMlJMbkxZTWxuZUxBcmY4czZVVjJ0ZE4wYms5K0Qzbk42dzwvQ29udGludWF0aW9uVG9rZW4+PE5leHRDb250aW51YXRpb25Ub2tlbj4xUWxLTlkySEFac2V3SkMvOGsraWJnT2Vob2hHMzNNZDFiMS9oTHRqSUhUQmNKY1k0Rm5LNzVhaEJsQzE4bmlmTjwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjUtMTItMDFUMTk6MDA6MTMuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"097edc14753fdfb5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1QlKNY2HAZsewJC%2F8k%2BibgOehohG33Md1b1%2FhLtjIHTBcJcY4FnK75ahBlC18nifN\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"U2dO7aiwQiLOWpcdhwcaVuQtbwoAtHrthOn4TZz3X+uFUcADXR6Q/sbGBks6ZUPPjDFkLurR+J0GWi1VUFQVVVS34k9ZxjR3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB05JQWN9R42FZG9\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxDb250aW51YXRpb25Ub2tlbj4xUWxLTlkySEFac2V3SkMvOGsraWJnT2Vob2hHMzNNZDFiMS9oTHRqSUhUQmNKY1k0Rm5LNzVhaEJsQzE4bmlmTjwvQ29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjE8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/by_2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz8FDv03gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"92d46edf105d7dbe\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QgPw7xnmHJCzFi+CZbOXZVfrpTqfZcfZ+wq8gORWBQ4lY/S8DWZDKSEwVa/Ha1LYVuRRaaALMY4mT3hPhkJVf3EkljkIgwCt\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB02A1AZA1V14C30\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"1167dbd870ba1b15\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+84pAn2BmPO45MG4+bfsiSs8LQSpHdN//6cB1k4GZOqc+xuJKSqMDkQAzio3l/koHYnWB0hIwjljdTU1iOCTPYVui2UI7kgU\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB01F87H1S9SM7HK\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxOZXh0Q29udGludWF0aW9uVG9rZW4+MXM0S09rai9MRldKVW5ZM1RzMW9yVThkT1M3OXZTbk1sTzhvbzNFcklHMHArdlh3b2F1NEw1THZzclZhbW9WSXk8L05leHRDb250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MjwvS2V5Q291bnQ+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"2a1938c433f5c4d0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1s4KOkj%2FLFWJUnY3Ts1orU8dOS79vSnMlO8oo3ErIG0p%2BvXwoau4L5LvsrVamoVIy\\u0026list-type=2\\u0026max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IRxuUYEd4AQKCtgf8A99eE5V/5OD2vkl0PsrPL/l71YaNIktVTiB94DbPS0WpkuN+3FahlpuSeXzqia1VuGO+q0tC4cL9xpc\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB04D0S6AZW1PXZV\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxDb250aW51YXRpb25Ub2tlbj4xczRLT2tqL0xGV0pVblkzVHMxb3JVOGRPUzc5dlNuTWxPOG9vM0VySUcwcCt2WHdvYXU0TDVMdnNyVmFtb1ZJeTwvQ29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjI8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/by_3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz8HxmH/QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0f8c832f8b9be6d7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ety1tzvaxp9OGIxMBTvG0Ln1Lq87aC2kX4MnSo7vzGx/tufPlufkIdJSJEBXp8htndJm2tqH7Bs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB08E2DD4HH9H11J\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"86a17543e3a2bd48\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=3\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"N5hzPGio/dumadHtQlhpskSo2aCEVkb5rZ7dt9J1qiarfL8lVIqVpTLzAfzvJod28b/i6RhkQec=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB01MRWC2T8GV16M\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4zPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/exactly_1_object_due_to_prefix.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz7MPEGrAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cfe039d39746a8c5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:56 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3cyEef4ZNcTsIdh1Yq1riBWuVXMeFnR003FcYKarep9enavOUoMMIQ9119rIJENqvWD5eoz56KcSCVWQ48QJ1/qphUyMqkW1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"5WYCF24YJEF469XJ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"ec14859d49cc613b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list-1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:56 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hKVzvxcjEyODzbIZKmEVa3HwctEg7G9BD3k5viN/O8X6L+/9datsXVAuxtaiiMDtME56kIdzJB2yG7OFTSvdu5kqNNJrAN3u\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"5WY21Z8NJ0XN2XMT\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdC0xPC9QcmVmaXg+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjUtMTItMDFUMTk6MDA6MTMuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/no_objects.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz7KLlkmwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8cc3c3594a4c9018\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:56 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CpQFxgJsA5PPEepBUAU/UazSpqC5L2KkKtceMSGJbAuHApNjrWub6xplujhgrCo3hTKqSG4phGk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"5WYE5JXM7PSW9R2C\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"1ba4061aa03e114e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=no-objects-with-this-prefix\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:56 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+/Ueus/EvQ8/uwP5UzcVRAjlrSaPfwfwvkEJFhCgGKF3zfgcty3NZEmpXNVPw4XSYwh0c2kyq1s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"5WY8JB13G6NN0T0X\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bm8tb2JqZWN0cy13aXRoLXRoaXMtcHJlZml4PC9QcmVmaXg+PEtleUNvdW50PjA8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestList/no_pagination.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz7OdDTaAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7b10f604ad7db3a5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"64DwXfBfxtMaFHKoSUxSpnfDj9/tEqZBlWyzqe0f3v+CYjWh9B+0ZMzBsVybim2MwAsEqIjCRuzprF3Bv0LpXn4mVtSOqIbB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB06044R7F5AD4M4\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"fe35f21bd3f7667e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:57 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zTN+iB+Vy8gSpLvDt/MoAQVeRclSODyS58KaYL/hu64Q1P+9BFMFfin1ShaKjzzovNQX8l8Kna9dUuUdjksRPZCFLMn1K404\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PB0B28B0VQWHAF46\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxLZXlDb3VudD4zPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxMy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestListDelimiters/abc.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz+HlaWTAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ac5b76a052851cfb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RJZCu7htbHqH0ypJA0UCRi99ac0fWb3Gqhp15VkXMpKyrcxvYorMAUg9wmfEmYpUMYaUgGepLF/HjGGRlBZxdXIyM76d0Dor\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8VNDFWXCRAG6NE\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48S2V5Q291bnQ+NjwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI1LTEyLTAxVDE5OjAwOjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"49aed2e513837144\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ipsRadTvZ/7jaJOdLynb1BIEcbBPTw7RFMJzcxpGBA86/VQ1FkBOPzDhM5ApuLSlt8Ob1vIuCEUe3fBQGnSXNJ6R0P5CXCiv\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8J223HH4GVEJ5N\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48S2V5Q291bnQ+NjwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI1LTEyLTAxVDE5OjAwOjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"15eb5170821fc658\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WWkdRKl5FC3gDdeqz7bnTyJg0HcT+YujdSy44h5Tb/19iNuN2PzvgqQkne6qHqLSC/iHsytVO5thUVXynVfchgvuqUpCApIy\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8WR78PSW5VK1JS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48S2V5Q291bnQ+MzwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPmFiYzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmM8L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"7afe50bf8fd3a0ea\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abcdir1abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AgSSvAiSJu/FYXC+PhedKkADjtKfj1Ute1Wfyk7Cpa6ZgPSZsqe/3X2rGQJfuEbpp/FaE8UN2RJv1vES1Y6qvRHIUBAQTpA+\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8R5PP94QRYXMS3\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjPC9QcmVmaXg+PEtleUNvdW50PjM8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2EudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY2IudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"9bc3930d3c8720ce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abcdir1abcsubdirabc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ddFDKGbKzh8n/VAVb3YV01bP8TiWWBdAkkGY1fCa4lqsShMc9on7mCaD3MzlFy9sNeowBeW8ipp1064exFsrmXtC7qiDYDUU\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8P7ZFRBHXHQ68X\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjPC9QcmVmaXg+PEtleUNvdW50PjI8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2QudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"79bd9f84bf7a7174\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abcdir2abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ekrIKhmXTispYL4w530HTic5zZum4TvGqrAEEqC+J9bdNtOAtQ2BV4YHk8n1q+gWTgBZ8Yxm9dIfllkX3tPpY46ovFxkl8SL\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8SFY3Y7T2ZH1AR\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjPC9QcmVmaXg+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiY2UudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI1LTEyLTAxVDE5OjAwOjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"6a14dd2109805c42\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ds+3yXwESJ815E1vCamlC+wm7NVo2y8uAMiiSiScEt+gWym+Nh6jE09t9q0ydlo+Itgph/quSAuozAojcJChY5SWrbuG3o5T\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8SCH19VSBWN226\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TmV4dENvbnRpbnVhdGlvblRva2VuPjFLUldXYzJJMk1GRmVyRnYxZHovOW9XdXBGZjJTQ2txOStGR2tVY3ArMHV2SW5Jb21zYkNESXRWOTNmWjMxSlMwc0VxY1ovcUJmUDZRME1Ca2N5VDRSZz09PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"29276d1ce7d7591d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1KRWWc2I2MFFerFv1dz%2F9oWupFf2SCkq9%2BFGkUcp%2B0uvInIomsbCDItV93fZ31JS0sEqcZ%2FqBfP6Q0MBkcyT4Rg%3D%3D\\u0026delimiter=abc\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"a6eD5KP12DVOnNgLU5XYSAwO88+x/hxiUc85pmq4rI37UMLH4m1oVNO2E7ZLFCLIf+euQHjD1DPkcVvh08jvVm4xrGZ50OkP\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8XQ0W66HRTMRNS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48Q29udGludWF0aW9uVG9rZW4+MUtSV1djMkkyTUZGZXJGdjFkei85b1d1cEZmMlNDa3E5K0ZHa1VjcCswdXZJbklvbXNiQ0RJdFY5M2ZaMzFKUzBzRXFjWi9xQmZQNlEwTUJrY3lUNFJnPT08L0NvbnRpbnVhdGlvblRva2VuPjxOZXh0Q29udGludWF0aW9uVG9rZW4+MVNMRFdTL2JnQmRidkN4cGczU0dMZ3RMZ2xEekIrV3ZMMW5tVVBUQjlBWFlzNkYvRzNIanlTZGR0R1dHZm1SOHoxcUpxTC9yWnNsV1JaRHhjcHYxTXNnPT08L05leHRDb250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTwvTWF4S2V5cz48RGVsaW1pdGVyPmFiYzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmM8L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"57e84dd6f41f2200\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1SLDWS%2FbgBdbvCxpg3SGLgtLglDzB%2BWvL1nmUPTB9AXYs6F%2FG3HjySddtGWGfmR8z1qJqL%2FrZslWRZDxcpv1Msg%3D%3D\\u0026delimiter=abc\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"znmqor32UhMUlFDcIAsvRk7Te/VgTLgXqJ3E4v1GFUJTuBsZUDKENNfBi7eiAXV1a5oB687L1ZpgrjEOXyOx7BW5Udii8GRG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8W3ZAR6ZDJWSMV\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48Q29udGludWF0aW9uVG9rZW4+MVNMRFdTL2JnQmRidkN4cGczU0dMZ3RMZ2xEekIrV3ZMMW5tVVBUQjlBWFlzNkYvRzNIanlTZGR0R1dHZm1SOHoxcUpxTC9yWnNsV1JaRHhjcHYxTXNnPT08L0NvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2YudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"571a3ec47b4928ed\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-abcdir2abce.txt\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Mon, 01 Dec 2025 19:00:15 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"a+B36SX6TB9RoIrW7ExcvT+Ly7u6e9tztuAneIpLXzsU33HJ58i6fCmUheQjJcJx11M/G2KJoIpxrqDvCZxSf7gHGp9u5BXo\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8NG4M59N46HT9D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"eabb9395c902f988\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-abcdir2abce.txt?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"49qtfK1oQB5VcIDwyjVhEL6aW4kg0pKvDQQDlZtKZXtlhs8iJG9CmrPnMQ3mOpUcNFDsTdLG3RC3BBfhUrVo9Dk+bgGkyyqp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8WA4ER20G1BNNH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"16ff65504f647273\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Dq6D1gy+f/v65Z6st7cZLeRsBjmIyzp5Min2AxMCxWrxM1iejHV2cXYwoHn6pKbQ2aymwnhpTPeUhTngX+7VB7KA0sAtGv06\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8YKDAHKAN06VN6\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48S2V5Q291bnQ+MjwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPmFiYzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmM8L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"5d4312369d7aa28f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-abcdir2abce.txt?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EZqaTIaOolezy1nj+drR7lO0q6aBLHc6lQXVON3rT9y/VG1Pqr1EK2MLjeO1pppAoTVxjFFRvdWwu5+9j6USLfRz7pts9UPI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"TA8YSHJTWKKJA5EG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestListDelimiters/backslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz9OpWFcgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9115c445e65673bd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kvA7OK/cAMDgnr560gacJ+YBhon0kdvDaQqhsfMJKy3dRXCty9Ut9ghf2RjQWrUYl6vsNbl95LJQo571cTZia2LMGyXP1hrT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8N0C3GW3X0DJV8\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXGEudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcZC50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMlxlLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxNC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"cd15dfb1a22f4e64\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oxqGxBid34egy6le/F23rfnhZDnek8HNSpTK6GgoXKRkIUgSaxrZMnPfngViM+KwSYOqmckQTEA3yCMpkq2D5M5pr0D0yFKm\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8P6N193WARPHH7\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXGEudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcZC50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMlxlLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxNC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"2fcb82e21f671b71\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2Tb1KLlwvbJ9+Qc7n4rLkMkCHNr1hFro6RM8Kk7UCXFPGdzQHicGE3xhqBRMzU2uIbvh+gcPQ3vvLUpe4buAaw2APAQ48ihA\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8WWX433S5WX9KT\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PEtleUNvdW50PjM8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXDwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMlw8L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"ca62fd9327c260e3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5Cdir1%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"l1lHcGrlNodAsQiz4hnJQ2/UhMlD8AcBsCzYtbFtreiffEq3Opif9DYxWv5bZIGLBLn01TApzGCs4EJpo0LuT9TOCZ2Gp/vq\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8K1PTESV02V466\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVw8L1ByZWZpeD48S2V5Q291bnQ+MzwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPlw8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcYS50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxiLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXHN1YmRpclw8L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"ad1c1109c11af653\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5Cdir1%5Csubdir%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"m3wgIncll4Gp5bvFPjVs3Wl9LGkOz05Qhn78xGqMDfLU1atuMzZYtL0zaJn4dch5Bpi5ZaQjvO++jOyNsdUjaoJyXl/p71De\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8VC8Y28J8G1MJ5\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcPC9QcmVmaXg+PEtleUNvdW50PjI8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXHN1YmRpclxjLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXHN1YmRpclxkLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"35e855ecce396891\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5Cdir2%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"r/uvqE63HZfDTbbNur3Mdyhm0HI3/oq0eb1WtyZUo1BL5XwieSR/dr81agtM/GjRJISjDF2b+l3ssVyqNWFEUVXhFIT559lY\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8Z3CRMNQYBQE1Q\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMlw8L1ByZWZpeD48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPlw8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjJcZS50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjUtMTItMDFUMTk6MDA6MTQuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"c37303c9c05efb47\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qNf+GEpEV/ZoRQyabajeuAfWAE23XsSU34UfNB+t++q4rdiykO/9liB/3KFsmxNRZ6UmHKZrrWo55ggI/u2sHOo40UJtnxIW\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8WCEJ4TRTV424Y\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xWDZzVTlMNFJnOWQ3Mjc2Q01QQlJPcWNqTC96ZmhwTEdRWVBEVEwwY2dVb1VnVHhwOFpLUWtnTWkyWXhUc21xUkkzK2xJdjR1dk1ZPTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+XDwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXDwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"0c0c2069c22feafd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1X6sU9L4Rg9d7276CMPBROqcjL%2FzfhpLGQYPDTL0cgUoUgTxp8ZKQkgMi2YxTsmqRI3%2BlIv4uvMY%3D\\u0026delimiter=%5C\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"V3wpjj89LAmPYCGW4QgchubpQlSd9lXar23d1jw0iUXjCutWmM9LGcTa+Fn5RvVDhIddE0kfZJKs0CAqj0cmYsllCqAi0Iob\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8NMBDKEFH6MQKC\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFYNnNVOUw0Umc5ZDcyNzZDTVBCUk9xY2pML3pmaHBMR1FZUERUTDBjZ1VvVWdUeHA4WktRa2dNaTJZeFRzbXFSSTMrbEl2NHV2TVk9PC9Db250aW51YXRpb25Ub2tlbj48TmV4dENvbnRpbnVhdGlvblRva2VuPjFHRWNyQlFRdE9GK3R2dkpoNEtJY0ZEQjJTY3lIeFlZOHlMRkVTQThRcjhRMjErbU8yRFhwM2ZUL2w0eHJ2NVFOMDV6YUtoUmx6RTA9PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjJcPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"f8ef36826f9abb49\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1GEcrBQQtOF%2BtvvJh4KIcFDB2ScyHxYY8yLFESA8Qr8Q21%2BmO2DXp3fT%2Fl4xrv5QN05zaKhRlzE0%3D\\u0026delimiter=%5C\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gu0wKfTV5iCCzNc37lY4Ai6VLf77c9nBcPLHP5I0Glatr2MjXr2Tf5QLjmdd4VQqCcTAj0L4d+alIKMXN5mMY83XI4ygFWFm\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8S439KRG13SK62\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFHRWNyQlFRdE9GK3R2dkpoNEtJY0ZEQjJTY3lIeFlZOHlMRkVTQThRcjhRMjErbU8yRFhwM2ZUL2w0eHJ2NVFOMDV6YUtoUmx6RTA9PC9Db250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTwvTWF4S2V5cz48RGVsaW1pdGVyPlw8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGYudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"84120a935d5bce17\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-%5Cdir2%5Ce.txt\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Mon, 01 Dec 2025 19:00:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CYsj8gtJIMYTxwSn/R9OtErgc89Zt4sneqYjdXKwn2IlfkDXmjhNKXVl3GeZ739WCJFxRIRsZeOqWxYu4ic7cFcfylIxhru5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8HFJ89Y942NP0C\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"12722b3b14f39ce5\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-%5Cdir2%5Ce.txt?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8K+1YELiJJ3qs/pzW6EQEAxM5T/Jg6z0f6e9Aae2XtsCO50zHMws3E79FeXZu/0XLJcIU32eELAG0g8K1ot6jcS03jKloJJN\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8VAA2WFXS3D3ZX\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d2bb56cb6384bfdc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mvvn+5CwQJJ2OqKVWzQrP1wq2B/SCMQsQngl80bs/G/+fG/SdLZouLeWsHiq3eUXaPXAGDEzovmqNXLSWT7T7YVuMWhjCIUY\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8N3YPREBV4T1RM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PEtleUNvdW50PjI8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXDwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"7963e49554e7ec52\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-%5Cdir2%5Ce.txt?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IsXc6+UdCwrFhn4lzcJ43Ebmrw1FI9TrCSg1DBaZAMvyKFuLM13cI9TAzZvzOsGXelKqyT27LiJ2nEsHUKl274vW9rgSTUQT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"EG8J24P17H2NW4CC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestListDelimiters/fwdslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz9GHz9WQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7c99ceea1fe69aa1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vN0/9D9iYklM8I2omBQGoRBL6qhMpspkW/PIqWkWyYiRNC3g4vj+gJc0G9uoKSYqcnkIGuTnrO+AQQyN+tKBgW+C3onJar61\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53C0PFJQGCRW96V\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvZC50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi9lLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxNC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"85fb55d4e8000c19\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4JoWH3cIGAVoh8UqZnzW6CdM5/oQU3TxZOiZA20bt8mj5pnOp53pfzfUPMomCxvoW+z0YVIq/zqGCxdK88KB70yLBMQ4Gmfy\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J538KM5WQHCYSNMY\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PEtleUNvdW50PjY8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvZC50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi9lLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNS0xMi0wMVQxOTowMDoxNC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"b1d1171792e7a935\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Sv1Cyg6baoDU3MI9StjQDYqYwz8apHkPjcAniZ9dXLlwbR15JWY3PaWHhv9WaoFlZxzHQu3cv2zvO2egrHyJaeyzVYScBqFj\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J534T6X44X4SZRSZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PEtleUNvdW50PjM8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"6616324bcb9886d8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2Fdir1%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iZgE5LOPoPcphax5oFTWM6D4uUe9EnUjTeTqkVsSz+esh86jWCXkbjGUJv8SivBnBp5uA5Wg7Ju3LUb20wUQlddlKQnwBy1J\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J5370E0T0J1VJX49\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS88L1ByZWZpeD48S2V5Q291bnQ+MzwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvYS50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9iLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"7be3cd8f085e7f23\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2Fdir1%2Fsubdir%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kC4mJojnu5e2aoqJtiItBPZ9HYkFZWnu+TJ38iINpRrsxN33zw5R6RaPF9cm8w91xIVXxnqhn4nLQjx3CNel/rhLhFQN763m\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J531KWQ39QYEHG0C\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvPC9QcmVmaXg+PEtleUNvdW50PjI8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9jLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci9kLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"ed847d52a12f308f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2Fdir2%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/YjXj5/XjFJYNQ9tou6smjzqNNg5PoJCXZFfJ+qn7iJLbpKx7bL0fk+6y1ytT4ghDFkqa6ualJ0JDcaSJHn5L5YQsKa+aEl2\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J531VMWB220YJWA7\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi88L1ByZWZpeD48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvZS50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjUtMTItMDFUMTk6MDA6MTQuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"a50f1410a4b70446\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uMnjh8sSD+qINeZ4odWDdcjyDJ0W/MAVoHCzm+Tj02HdNE22LlwMkADf08kOLCaz6fFcGJdyf/clOrSIaogewKnXSszNeN5p\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J539RFEVPJ79NVPQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xMkwzVDJWK2NiZmdaUEg3TC9OcWQrVVdHSGpHNlBFZTIrWHdiNWwySGNEV2xmNlpPcXJBQit0MHAxRkI1V3MwM1BNRUJoelZVd2pJPTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"a7dfe0d33448f879\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=12L3T2V%2BcbfgZPH7L%2FNqd%2BUWGHjG6PEe2%2BXwb5l2HcDWlf6ZOqrAB%2Bt0p1FB5Ws03PMEBhzVUwjI%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RK6mFYneq7pJ9yStzSVW3sj//pwHgmACQrhfneBdXNS/mLiUb+Q2K1cqWlqCNVrm8oMtuO3TWgJjPpRcjyu8V1EkWhacG9f2\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53BMM631FHD3HYP\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjEyTDNUMlYrY2JmZ1pQSDdML05xZCtVV0dIakc2UEVlMitYd2I1bDJIY0RXbGY2Wk9xckFCK3QwcDFGQjVXczAzUE1FQmh6VlV3akk9PC9Db250aW51YXRpb25Ub2tlbj48TmV4dENvbnRpbnVhdGlvblRva2VuPjFxRklpUEZGZy9FR2JqcUpzTGRVdWliaFdGWDZtTjF2a3JmVkRpRStvYVhqQ1I5Qm9RS3A1ckVFaFVMVHgyUGdtOTV0bC9MWGNzYkk9PC9OZXh0Q29udGludWF0aW9uVG9rZW4+PEtleUNvdW50PjE8L0tleUNvdW50PjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"4be2233986fcadb1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?continuation-token=1qFIiPFFg%2FEGbjqJsLdUuibhWFX6mN1vkrfVDiE%2BoaXjCR9BoQKp5rEEhULTx2Pgm95tl%2FLXcsbI%3D\\u0026delimiter=%2F\\u0026list-type=2\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"w/RG4vAnpwXWtv4zRJ1qzMK7E/xEMp6IQLmPh4PUJk5JBZqitxr9e18wL78GHO5MBb5QOYg0bRBa+yQqJyQHFPnH3dW6DIXT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53ENESBGC42XR6Y\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PENvbnRpbnVhdGlvblRva2VuPjFxRklpUEZGZy9FR2JqcUpzTGRVdWliaFdGWDZtTjF2a3JmVkRpRStvYVhqQ1I5Qm9RS3A1ckVFaFVMVHgyUGdtOTV0bC9MWGNzYkk9PC9Db250aW51YXRpb25Ub2tlbj48S2V5Q291bnQ+MTwvS2V5Q291bnQ+PE1heEtleXM+MTwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2YudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"265fa96698c05d2a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-/dir2/e.txt\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Mon, 01 Dec 2025 19:00:14 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Q3NFEB8s+GL2avNYWnVnvt0CzPS5jMd5BkiAM1IrTO1pUEm/4Jm4CO/t1DEeAvKI6UNQn2qWS8LSuSbW1TdhPCEc8iRXKwY1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53A557NJPHJBJZ1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"03ef43ac8522d5f2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-/dir2/e.txt?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rSjuKJmQKo67aJrFjnPIY60EP7bj2ecDJPmr2HQFXA7JBYUsdimPflVjz2gpk++8E+tt7ImzjTLD8zvNFpEHLCP5o5L9CdLt\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J530PZ49QJNTKR89\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"698665c07b4ca4d3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PD/KUD2PD/TQ3KGf5HRvViM+E71mMo+GsbfrNCrpmJUrZpam04cK3JclJGEsbUjyNm6nazx0pbcmeN+rRzBgrlajMbN6VNVe\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J535EYZT1DBD9FZV\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PEtleUNvdW50PjI8L0tleUNvdW50PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"21e39883d2fcb1ce\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-/dir2/e.txt?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rU+0Or1QlVsTFasdI7Hz9bm082McKJ/lyWbCYDNLOgOma8rQ3roK4CiebKrrOToUTVn7nZAc9kKLH9pCnO0WTOGDY+V/urDQ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53A3TMH7Z5AZXP9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestListWeirdKeys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz9D/EzugAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"feb56a989cae4127\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=list-weirdkeys-\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fPoywA+IfMFXIf5hSekXh1w17Xd7vBiAKfuqA7bOLkivqFeI86XnAOUQAotdlnY3vtSPTMNc/Sg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J534XBZYBC182E5X\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bGlzdC13ZWlyZGtleXMtPC9QcmVmaXg+PEtleUNvdW50PjE4PC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtICEmcXVvdDsjJCUmYW1wOyZhcG9zOygpKissLS4vPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLS4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX188L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtLi5fXzB4NWNfX2Zvb19fMHg1Y19fLi5fXzB4NWNfX2Jhcl9fMHg1Y19fLi5fXzB4NWNfXy4uX18weDVjX19iYXouLl9fMHg1Y19fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLS4uX18weDVjX19mb29fXzB4NWNfX19fMHg1Y19fYmFyX18weDVjX19fXzB4NWNfX19fMHg1Y19fYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLTEyMzQ1PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLTo7Jmx0Oz0mZ3Q7PzwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1APC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLVtfXzB4NWNfX11eXzwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1fXzB4MF9fX18weDFfX19fMHgyX19fXzB4M19fX18weDRfX19fMHg1X19fXzB4Nl9fX18weDdfX19fMHg4X19fXzB4OV9fX18weGFfX19fMHhiX19fXzB4Y19fX18weGRfX19fMHhlX19fXzB4Zl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLV9fMHgxMF9fX18weDExX19fXzB4MTJfX19fMHgxM19fX18weDE0X19fXzB4MTVfX19fMHgxNl9fX18weDE3X19fXzB4MThfX19fMHgxOV9fX18weDFhX19fXzB4MWJfX19fMHgxY19fX18weDFkX19fXzB4MWVfX19fMHgxZl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWA8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vIGJhciBiYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vJnF1b3Q7YmFyJnF1b3Q7YmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvby8vYmFyLy8vYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM5OjAxLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvby9iYXIvYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjQwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvb19fMHg1Y19fYmFyX18weDVjX19iYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMte3x9fn88L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMt4pi64pi64pi6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"d181eba2381d178e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=list-weirdkeys-\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ylruVI6X+EJ+Zjkc4dWCiyE1hBtt1dHThgObEBxWLwhbL9hPEOo3AcqdamB1SM0kN9Iur06HlJ8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"J53CMGA0M490TPSV\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bGlzdC13ZWlyZGtleXMtPC9QcmVmaXg+PEtleUNvdW50PjE4PC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtICEmcXVvdDsjJCUmYW1wOyZhcG9zOygpKissLS4vPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLS4uX18weDJmX19mb28vLi5fXzB4MmZfX2Jhci8uLl9fMHgyZl9fLi5fXzB4MmZfX2Jhei4uX18weDJmX188L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtLi5fXzB4NWNfX2Zvb19fMHg1Y19fLi5fXzB4NWNfX2Jhcl9fMHg1Y19fLi5fXzB4NWNfXy4uX18weDVjX19iYXouLl9fMHg1Y19fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLS4uX18weDVjX19mb29fXzB4NWNfX19fMHg1Y19fYmFyX18weDVjX19fXzB4NWNfX19fMHg1Y19fYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLTEyMzQ1PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLTo7Jmx0Oz0mZ3Q7PzwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1APC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLVtfXzB4NWNfX11eXzwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1fXzB4MF9fX18weDFfX19fMHgyX19fXzB4M19fX18weDRfX19fMHg1X19fXzB4Nl9fX18weDdfX19fMHg4X19fXzB4OV9fX18weGFfX19fMHhiX19fXzB4Y19fX18weGRfX19fMHhlX19fXzB4Zl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLV9fMHgxMF9fX18weDExX19fXzB4MTJfX19fMHgxM19fX18weDE0X19fXzB4MTVfX19fMHgxNl9fX18weDE3X19fXzB4MThfX19fMHgxOV9fX18weDFhX19fXzB4MWJfX19fMHgxY19fX18weDFkX19fXzB4MWVfX19fMHgxZl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWA8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vIGJhciBiYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vJnF1b3Q7YmFyJnF1b3Q7YmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvby8vYmFyLy8vYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM5OjAxLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvby9iYXIvYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjQwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvb19fMHg1Y19fYmFyX18weDVjX19iYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMte3x9fn88L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMt4pi64pi64pi6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMD5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0JKQJGYwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8851ea99613e2395\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NvyBYG+QSFl/MzuwuyRDGLpTf42bw/q3NmW/RQqXwkDdk3lO6GeExqtF8Ok2C8X6xBjTKrgJIbNSY9tQIdUOS0xTBugfFbqZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE1MKRQJ9XP1XGD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8e2e1e2662aa98ba\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"Content-Md5\": [\n            \"afqrYmg1ApVVDefVh7wyPQ==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"7\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Nw0KZ29vZGJ5ZQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6RFkvWWRBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"69faab6268350295550de7d587bc323d\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DY/YdA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"e87/jxUYtsam0Q2aHceomBatHbx7SsVv9NvH5LJBGZ9Z8tQRvkDUJGrTS41kZ2vdMkoKShTB3eFIy8g5KNgK5e96tNG8Sbx9\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE139P6712RHZ8R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"244f64a136281285\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LR7GbYQIRbih77j+iJwciSdxiCpY37W5APSlY7OupkoFiA4UTJJEbZKSZG9/zFe195xlADSxth3KCnY3GNuYKvYf51ixiWtO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XEFBQVJEKH27FJZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b691a3e212393480\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"7\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"69faab6268350295550de7d587bc323d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/rSc4bK4ic7ybFd8PIMVA7i9HcWllXc/3hQW48AHekYNiFtR3dgMQxB219GNgH7tZ7/yQ7OZDJc6r0MGyibeOuN/heLw6q4e\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE9G8T7ZQJC1BVF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc5ba9b0ca0dd4a2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1000\\u0026prefix=blob-for-md5-\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rI1Rlp1hw0oj5vWqNCoThTLypgTxNe+TNaAV+kwTy7lG39jSYzgbDKv7ozJp5Q/IF2W/3QP+S1EjDCCU7a2Re0BF2bk9klok\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE2ZX4NRKVFEB2J\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbWQ1LTwvUHJlZml4PjxLZXlDb3VudD4yPC9LZXlDb3VudD48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbWQ1LWFhYTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNi0wMy0xOVQxNToyODoxMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1tZDUtYmJiPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjEwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs2OWZhYWI2MjY4MzUwMjk1NTUwZGU3ZDU4N2JjMzIzZCZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT43PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"dbf1ca5663a10282\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"7\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"69faab6268350295550de7d587bc323d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1PyQblI0yCPsu75GcboC29y5xA/JzsahOQs3whVIAZddiiH2HxStWR36v64BqLvrzcuwIx+4MJGof2BR2+nnkgVfFzSmZdxg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE4BJSBNQ95NVCW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6df0cd0d4865f0a8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"592IfY4BZzlV/w7G14eOROSlRyv7jQXvKDN94Hygy9dvEFBdnJMvJ5t7ekRXOfaiOEhMQjgA6+xbWOKyeCPMrUaakl3nYdXh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE0SGS73RD1C8JX\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"32efa3f97635b1fb\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Bp2DS39U/il9I/DUwJaqPxsAkrRJCGikPTZvKvDo7YSz1iPlYnQCYVH0f+RjpSkbl0Wi7p1hcqBlAmCmd3LWuh5FlPsm8zuW\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91V7699JQXGPM2TT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d9ff5047a70e6dad\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:11 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"s7eu8XGw9UaekHXLZi5IuL2DLOrFIxnly5EKiX4WqxxKEKGCjmXBRomqdQ5k6Jb5ly4P3e2QvfJUg5+qIUI+qjaF8SYNuUyf\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"91VAYAP8YSDF9RCP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/duplicate_case-insensitive_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0IKC35EgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/empty.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0IGlsLmAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7e597a3d14aaa6e9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"01vXuboxwHfyTw5K6M6Kz2siDtBbOFSP9tXRoAkcV7543d3L54e4/L4JmkvH8Y0k7ZOMZXHuPmg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M996GV20M0V7338\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c9fa6d68b185793f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"goKfu1jZ/0FQmm7TSBr+e4nezAjH1OQHQxW08NtEkTs17cpTHrx972NmeqAPaLEh9Ol1iBEpBqo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9FQK5G364CR8HJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"29ed30edda5dc76f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ss8JVPTcrHdYzJI+xd5YHsOK05SWkvEDk3YigIQQywzOe4Y07UxthEeQz7Ij+rTcnUwMHSoSUCI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M95TAMMKZQAZRYW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4053a3bc85b2d58c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1h4Hw6OSzyAHk7U2jIrH8QczvzT2MOlO3fPwRlqu2Xd0hfgAA9UpbMmx3iYxPLbscb5SkVp9WCA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M97DJV6AQJ61543\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0IKB1kxgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/non-utf8_metadata_key.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0JKOjc4AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/non-utf8_metadata_value.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0JKPZeLwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/valid_metadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0IKDpeMgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"23061af26cbf8ea7\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Amz-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Amz-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PpreET3+qrt3rbOWvfaG191/LyIXZBOeolPn426k8G+wYcNloAa1a6BYctn7XJ8nwDuXHUUoD5vIB8le3Hjf3IMNJSuXQ6Q9\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9EGSEVEF1QZFVJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"68054aff2b26df67\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"n1ekgbK99wIiVCiQNOH00KWqp2bvZm5rWPpBmUzLvK9O6WhDxyaE4RkK4vW4cfVWieC6vp08tRjzxA1MpKdtNWUCqHqb/+ru\"\n          ],\n          \"X-Amz-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Amz-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Amz-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9AWB8BQVQ23CK5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"45c4c6678ad78e54\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Uu60NlfSpjFPO0WFZiFiUw3p0bLj72HQP1h4Qsz3JP0yRmrinr3OJ8rHo6xFl/K9/lSPI6gnQtF7IkDDOPFlpUOVBxKot+vX\"\n          ],\n          \"X-Amz-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Amz-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Amz-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M99J22Q9V03PGN3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"730d2fbaad4d9844\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sR3qhaBFGrGcjmlQPnznMUXL07NZZWo0hkaIKg2QlkemGnIMJbfcdi2BU4ZIcqb/ctJ0ELOVN209ASmpi3rmPDMydQXklym0\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9DZCEAQ629N817\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/valid_metadata_with_content_type.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0JBeWDNwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b20543dae740e567\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"alUQt4e89YydNAu93j1knZ+s96MPtLCNuLXn7G7pMrVsKAE4jqpmDq+/LLqhHMg0bES06c1tC9A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XEB58KFH80DG1DY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2d2eee4fabddef9e\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8L8kInH2mnZLvaWiSLW1zL6PcL3LuiP4V3a1G+wpu5LWHs2zhgC5qx4FEcnjFU2w56sr3WVc1ck=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE25CSG6V2VNA0Z\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0476ba9697fab91c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eMx0XKtG9VjF1BQ2icK0LPxDi2EmqWrNqubEpaKVMyXaoX6NlZLgmZEQWAUW0CzbHeBuMusA8WY=\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE5MKYFV98KB8MC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c64bab1c8efaf8d6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"U1fHqutpyopBBQoBauBIIBUghkU7wJLDxLIVTIbyuq3PO0SpmsP1tWt5bisWauMCMSKunGovZ0s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XEETK8N3268N7V4\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/valid_metadata_with_empty_body.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0INNMypQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a9ea4547526135da\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2e3zBmhZlIFSakGMTsaOxWu1YBjrkGWcDIXvhJnxv+/ZotYn++YSxkkoJh4UdkO6r4fl09gT82IAzmICWPCFjlnBP9hwlQgC\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9C4C1ZTYTDYQ24\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c88d02fa91d9ccea\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"g9tj3MqTlqIjlPZtpnnr8ZjRy+4Ih+hT9Mio8fComHZgoLvWSCqHtFXkd90xcsOFbRwAxeukJyfnOcAmV2lJ6l705jvSHURp\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE69FJDRY7BMWDC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b2b141fa5b069482\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TXq/bMm/2L/GYwEh6h9DBcjJ7NW9GduzaovT0HFaMW6P2WEJLLEn4z9qFNDxP5Vevc/v6xs6pYKTBrXEv4jgkTAWQG4guE0k\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE64JJ8YB1NHD0Q\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"411365bbfbdfd076\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NJeJK9OV651XqGKg9Trj9Joq+54FAkYsuWTWyy+YgPpUntCuSbdJumDwIUyke1CIgPl0JRAMFI6j0Jvjgj22uNdTEoQ03nY3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE262BAZDA6YEAH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestMetadata/weird_metadata_keys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0JGhlFcQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ed436725ff7dec4e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Amz-Meta-%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Amz-Meta-%20%21%22%23$%25\\u0026%27%28%29%2a+%2c-.%2f\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Amz-Meta-%5b%5c%5d%5e_\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Meta-%60\": [\n            \"%60\"\n          ],\n          \"X-Amz-Meta-%7b%7c%7d~%7f\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Meta-%e2%98%ba%e2%98%ba%e2%98%ba\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Meta-..%2ffoo%2f..%2fbar%2f..%2f..%2fbaz..%2f\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c%5cbar%5c%5c%5cbaz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c..%5cbar%5c..%5c..%5cbaz..%5c\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Meta-12345\": [\n            \"12345\"\n          ],\n          \"X-Amz-Meta-Foo%20bar%20baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Amz-Meta-Foo%22bar%22baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Amz-Meta-Foo%2f%2fbar%2f%2f%2fbaz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%2fbar%2fbaz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%5cbar%5cbaz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Meta-__0x3a__%3b%3c__0x3d__%3e%3f\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Amz-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qtD+15nT3W+DbKKEhewX8xYDJLS1sVqmYQjG4OPmTpPwLsCuoJ86dC8In4h5VtOi+KMmKZxIyYs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XEBGGENWPTACDFZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"70f5cd6af9194643\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sWF9H3cExhbh24HuRia13/r+U0bnjMxinYmrgJx25oebEa+OjP5ojh4JMOP5ijkflCVaQLry0pg=\"\n          ],\n          \"X-Amz-Meta-%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Amz-Meta-%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Amz-Meta-%20%21%22%23$%25\\u0026%27%28%29%2a+%2c-.%2f\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Amz-Meta-%5b%5c%5d%5e_\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Meta-%60\": [\n            \"%60\"\n          ],\n          \"X-Amz-Meta-%7b%7c%7d~%7f\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Meta-%e2%98%ba%e2%98%ba%e2%98%ba\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Meta-..%2ffoo%2f..%2fbar%2f..%2f..%2fbaz..%2f\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c%5cbar%5c%5c%5cbaz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c..%5cbar%5c..%5c..%5cbaz..%5c\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Meta-12345\": [\n            \"12345\"\n          ],\n          \"X-Amz-Meta-Foo%20bar%20baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Amz-Meta-Foo%22bar%22baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Amz-Meta-Foo%2f%2fbar%2f%2f%2fbaz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%2fbar%2fbaz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%5cbar%5cbaz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Meta-__0x3a__%3b%3c__0x3d__%3e%3f\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Amz-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE8Q5KE5CJVA37V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"05d7f5c92e326ca1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IYFXriwuLg2FMfZqTlXuAoS/Cm5NavzTfIYjFoFktGdeT0MJqO744sLnoTPQiuJo5QvN3PH56oQ=\"\n          ],\n          \"X-Amz-Meta-%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Amz-Meta-%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Amz-Meta-%20%21%22%23$%25\\u0026%27%28%29%2a+%2c-.%2f\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Amz-Meta-%5b%5c%5d%5e_\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Meta-%60\": [\n            \"%60\"\n          ],\n          \"X-Amz-Meta-%7b%7c%7d~%7f\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Meta-%e2%98%ba%e2%98%ba%e2%98%ba\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Meta-..%2ffoo%2f..%2fbar%2f..%2f..%2fbaz..%2f\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c%5cbar%5c%5c%5cbaz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c..%5cbar%5c..%5c..%5cbaz..%5c\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Meta-12345\": [\n            \"12345\"\n          ],\n          \"X-Amz-Meta-Foo%20bar%20baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Amz-Meta-Foo%22bar%22baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Amz-Meta-Foo%2f%2fbar%2f%2f%2fbaz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%2fbar%2fbaz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%5cbar%5cbaz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Meta-__0x3a__%3b%3c__0x3d__%3e%3f\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Amz-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XE4BGGPRSC4RVMH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"739ced132767b85c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:10 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nqW93toRVzb0jW+2x3esgdWdEVWX5T0G+UxQkGNweQ4WmNWNTMGy1FwxEr2iHJdmrAEilCrOw3Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"2XEE93S52QPAK599\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestNonexistentBucket.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTgz7CN6TkQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fdc0aeedfd3d4b02\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cdk-bucket-does-not-exist.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:54 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eVg5LVORRu+L5FC3Q5721JqmpEPaa1qFCCTGTBrtTBHWAKwfU9dNHu1t2h/YMjdNsnO5PujTGhs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"5WY71E7KZGCFEE7Q\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEJ1Y2tldDwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGJ1Y2tldCBkb2VzIG5vdCBleGlzdDwvTWVzc2FnZT48QnVja2V0TmFtZT5nby1jZGstYnVja2V0LWRvZXMtbm90LWV4aXN0PC9CdWNrZXROYW1lPjxSZXF1ZXN0SWQ+NVdZNzFFN0taR0NGRUU3UTwvUmVxdWVzdElkPjxIb3N0SWQ+ZVZnNUxWT1JSdStMNUZDM1E1NzIxSnFtcEVQYWExcUZDQ1RHVEJydFRCSFdBS3dmVTlkTkh1MXQyaC9ZTWpkTnNuTzVQdWpUR2hzPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"c1e871c5d5d5c0c7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?list-type=2\\u0026max-keys=1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:27:56 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KImgUoSQut2Ky6HJRBea12pXK7VEkF175SSnS7ZjdpPkeRcbmhYE6AtgMN7nUBV2Bo2UnoS3gos=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"5WY0WQ83HN6946AZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+PC9QcmVmaXg+PE5leHRDb250aW51YXRpb25Ub2tlbj4xeURyUUdsdjB5bnFXUWtXcTNLNURpbHAvVUVzemFaZmU1QXdZdEFrYmh5MXcycW81U0M5RWVkN1FVcE5LcnRxQm9helgrMUc4UXN6enZWRHNZVmNsb1E9PTwvTmV4dENvbnRpbnVhdGlvblRva2VuPjxLZXlDb3VudD4xPC9LZXlDb3VudD48TWF4S2V5cz4xPC9NYXhLZXlzPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1jb3B5aW5nLWRlc3Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjUtMTItMDFUMTk6MDA6MjQuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90O2IxMGE4ZGIxNjRlMDc1NDEwNWI3YTk5YmU3MmUzZmU1JnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjExPC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/length_0_read.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0AD9ue/AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8717f8afe384f27d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6DGrztgOst7HViP57EPqBHy0fs5yT5tj7UVQGKBwGdqMc8wxDYVQJS2UQKQqDJPg4ik221kg3ucFFZ0qeqvWUhEVHDgnjO3f\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XZ6X2HXC3MQA4V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"72f2c643e0e13bf2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=0-0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 0-0/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"swckE/f3YOpwZ5NPJWTbg01bBCUOxsVa3yBtA+iPAsPSEgNObA2r0aXQByD7IxbBfIjmlZh04FOBL7obRjDc5lBQpTHuZGlu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XMYKVQQ9Q0KRJM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YQ==\"\n      }\n    },\n    {\n      \"ID\": \"12230824cce6445c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=0-0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 0-0/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Yk4G85tXcXH4w3G4Gx0bHazvm24rqBzxwUgC90bhsqtp/eFs3cd0XIb5ZAdJD54JEqPtgamQHL/reKh0tasJeN6LdQVlqKRw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XWGFWKVNZGK71R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YQ==\"\n      }\n    },\n    {\n      \"ID\": \"1ac24663f149b5b8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ubeW/7KXYWO+AAVLTe3HWHjdEtXAGMXlQ8sdrKEh2ijxHuJSyUsIk5WjnHm1yD6ibrAVDPGbSbHp2B3kcznmlwZgzc1Sg4eH\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XRPKF8CTXK9YYT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3be6d18095aa3fe3\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fbwNBaMV0gSFNRFAFF5Tp3tQT1ANphMPisJRWyQV5I3H3ZXyS4SK9tNtj66WNAmCH4A0NPeGMdi1zHVw40s//QmUt5b24Lj6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XM5VSW2XEW8SJT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/negative_offset_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0AD82AGgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/read_a_part_in_middle.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0AOp8hDAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d710213baa4d732a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wq36sZiadGl4PdyQ1UBZ2t3DIgNRgc2wCTqPHElFRa3wKwW9jC/uzKmjqrTjr+ZCuwm39ue0LH0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6T9N198C8BNRN8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"74f2fdfc82d1369a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"17/+1McADmIgMagGjxxrKOMqSFi2WstO9D1Xs2KJE/zdl7SgUnJ7pk3zxopPdRiDDk0XR4r0eos=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6V7YJ84KHC3AQJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"e3ad6bca750c43d2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oeTLBTrtIckWuF3gHDtIQO5LwiB/TP+gkil1+UXwLiYr56PGODAFf+OMz4aJLrLUovBqpb3QHd8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6HDZ39194VC3K3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"7647df116fa36112\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=14-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RwJYdu7rEjyHhN+J+ea7w1br10OvCeUe58pQF/EOGgtM86arQcXFm0NiUKEepqUytNX+2SlhoiI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6MWD0P1GVXHD46\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"4f1e3680daba0bb3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=14-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bO6G6QVZZGEYw/JBgZzudWUW+0vYTALZMgSiR7x0aD5ZfuFWuBbHJc7SzdkLgl8h7aZDQ6qOty4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6NYM3S0EYYDBBJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"77b1a1d30c19f93c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=12-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"Content-Range\": [\n            \"bytes 12-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"71edPgwv3B7SvtwjBx6HSYOyUHTVNIXDJAVfUcpJg7MBZPdl7W4U1PVZFleCM7sLc5F503MMMtE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6XWPFFP9SK5P1Z\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"bW5v\"\n      }\n    },\n    {\n      \"ID\": \"5fe48a0139ebeceb\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"z7m8ni1XkY0uRn7af0vH6iCMbOC0F7L2Va/Ojn+B+J8eL516q9eMAYjbmtMoOarPCF9Cd/woYxw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6H27ZVHMWYH69X\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2fced126409b5ecd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cP/KqriFA9Q/Svi4Z/Z2uqsT9be8/3OH641yGHohE+NR6q27/CfEOP+lI5LaDW9Mo5eTAijs8+Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6SM1FGENKPVGE2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/read_from_positive_offset_to_end.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0AIJ9GFgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"db64e9760e1384bf\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8dLAgUassCL5QgGoVLBxqx8nU7cV0XKGOGeNyHp3EUzzwukQexMP0VcQdVEpSk+M/U7lnpL3qk9ul8BCG94WL8I65TQQmyba\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XSCMXW9WA2EYYF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bd8067e4db6542da\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Xi9ABxh5E2mHUMdx+Eb7rt9CRBYgIXIDPCGs3N0Ml/tD0oE3M7tnepBwySxZJvicIa/kzKgKZoPAnlT/ZMgxfFkyzeLuMTlP\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XHPBVBCYXEQ85X\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"b6c05fd53128bbd2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RpXFbH1Nd7SYvHK968KSlKMlb65OCZg5GjmphcYCdFtjFJ73FeWISPmfeCHqS82l1OOHi5+RNSmbrZRU+uzpev6inDwYjaCy\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XT32N50BF2HC7S\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"3207c2fb77a2ce17\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=22-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jyFwYXBmXdQ9zvMKZAfqF7famaJmPYrX+X//wjt87V8rDwlONbZIndx0IyGcviHqpfhfDR5v6Taf/6gENnHmo0NygxEulxiK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XRJA298QDQHMHQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"8fd4a0b2c1633e32\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=22-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iLBlC21Qe5HotsJRSqAUNW4yfYwg1ox8oiTVDJsTllp+drfmh98K3KxiWtjPnx/m0tlM6EMJHpXuZRGSsV+/QEJPzPXIA2Dz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XZM00N5TYVJVDQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"f2eb382152abd076\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=16-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Range\": [\n            \"bytes 16-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"k76xyZkJy+IJyzwd07+YgauSg4+zlvfaGp3589dcWv+r++qYaejGnQQhHh9gh5NGgcV0xM4KvL8/7fLTJBXHAG+Y13ZwvOE1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XV904AA2Q50V4E\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"c2e0c32c041bdfe3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SuOf/nYErh3HuSb1FHy+4KUj12Tt1Wnd8vikFO3s9aOFS/o/AwS3I6xGJRvplc8vJJd1zxT8NTLmyKgV+RDuAV+yiarNn61C\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XHBFBJ33F048AK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a2e3e952b3426f0e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XFH+WU+fiDycfGjJQjjtzi4l9J+6UfmF23gQu6jpH+B4+GzwGdU+c6+eeIMVwMkDc2XLl6IEy+Jvo+qweG08AI89xi1nKjdw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XXAC9TDVMM2NBB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/read_in_full.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0BGT5ICwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bbe9536d69467dc1\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Es1vBhHxgFG/V4/RuYtHMISPlLYHl4HufrsJ/Wwsl32GFdVsBXdoh3klwsyz2+J55XvP6IS7+WE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6V2J5V7N0VYNF9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c158e88e9e12434d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oWG2xVfgLaPQ1oBVXvYruVQkQUIKUf66Ay1JovFbjcEPluNqNywMx84Ab+4b7pMdnRDKV4jMiAc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6J8CRHN3Y3Q46R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"1d02af181686753a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CADirsMh/UWRduy6h/msUYP2oDWSZQhq19PlPJNnPtUyjeWVKEdvtSQjtEM43cuLItmNMtURiDU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6GRB85YAQKN3YZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"65cfaff046f2bae2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"quHynYlGVOfsakOIcJh0WJ8moYZ2fgfWG6pV0LBXE6fKn4Iv/Gcm6DUDVhjGe+U++EEfLd94HYE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6HBS10K23NFTAK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"4127591c254d94e5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QdhhN05NFWO+U7+VLufv0IK+/4uaMGmyHdHsqaWxbckIaOaa+hunIedTSc7+y1sx5LHAZbqCwDU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6H1ZYWV8358NMT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"7238c77512f3c1c9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=9-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qQLIM+16ezQ8lqtanksi1UMXeOHCq8q4B7uC/EobzVe3lvIVnYcqk7m+zHAM/+jRaRuAVVkPveY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6TC4MV6Y0DEY7F\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"c184ed2cfa4ac726\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"j59Yry+DvuyZsXvBqwjhFoA90wm6bRDfXrGZV4iZC4qSWDYeifV5kFT7hULPhiLllzR8CKWZcTA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6KMQNP6GM5AAXD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"77713c378733692e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/xS3VsHbFtw32YqEgKIAeF4s5XlWQ+iyc/3rZCNiXbVJfZSFGn73JHtVTWW0xdtZGXtOey2ioOQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6YETZP559J9SZT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/read_in_full_with_negative_length_not_-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0BMknIdwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d023383d863c22cc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"g4R5TbYIaRFC7J8vNOVs8Su9iDiWZrXtSANAN+gIU0hqleMrO2t7A1sFgRMbWGl5sRD/bFQKEJA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6ZPPY2HJDEWYTQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d335d2da8f28f9f9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"p1KaSXRDeoys5BFbG3KHOjTwg/sVTBoZkrKQu1djZmVl4+GV0/nAjMQm88xMkT+SLsJK+YkMc68=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DT6WX26H5FYGF4G5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"7273463293791798\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WAFTllkCq9oAHZ3AGzI+PlgeW3oao4/2fv/bV499HW/85sjmClhAjujN/SKp0eOH8YyF9rW0xMM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D99X6H14PD2VJ6J\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"7bd8cc336cb9d247\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Z2KzPM8Lg7pQ5mt2T59Se4+keoQAVThQ2b5oWIKoHFGlwp3JsdrHIvKHNj4ONw5GcIUTH4viMSE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D98DE1DBPQGDHKX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"dd1de01bd1189cae\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"J4DA9Vq0+mH1w8nJDgCo7399Rq2uQrqWKaxEJ8UkLAwx2OREJy+tIRw3EtlCxqnoFB/D5XxJtlQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D938FF8BXVGY1ZR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"a59fc13dc458b7c6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=9-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Tre3btp7Vmh3PL9JHydV9z1ViFUSTD/Oadl0ERwhsa3r3GauD9+4ZzNiBQLGW0pkXoVUD/N9DGI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9DDSBZPXPJ6QD9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"b0ab5687bef8f3c0\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2eL9bOcngoQzPIdBQb+/F5OrbE8V9CQfRo7K1BXm6YLN8jKuvYo3IouihsVWU9ML2LSqRBL5fDM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D95R2M9XYEQ34Y9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"03d76aaae1643a28\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ld3ZYXyOz2J/5ZLX4DajZB0Hh9ryGwKSA76UUsDfTIobS5Xaftx/26Ury3NYYpB3ZB/MbDroFso=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9B8MW1GVKY22H1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestRead/read_of_nonexistent_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0AAthUAAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c77aed156bf05d9a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mlQhDefsTaxRJXm776JO+BaNdC/IspIS9E08Xvw+FQROFeDgsLm9wqic5t6TS+acR5BctlQiH20=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XGMGFTHM9K7NKZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7f569ccec934bba4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key-does-not-exist?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"u9eGQnwmDfOxpz1K6paJRKVRnSo9aNEmmx7l2UdnuVoxiDwaqIkNWF+GKaCE7mPZAFAf3qvkoGQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XK2RWSTP89TD98\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5rZXktZG9lcy1ub3QtZXhpc3Q8L0tleT48UmVxdWVzdElkPkM3WEsyUldTVFA4OVREOTg8L1JlcXVlc3RJZD48SG9zdElkPnU5ZUdRbndtRGZPeHB6MUs2cGFKUktWUm5TbzlhTkVtbXg3bDJVZG51Vm94aUR3YXFJa05XRitHS2FDRTdtUFpBRkFmM3F2a29HUT08L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"2ae5bae300bc4357\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DHZ+eH+ozXgrI5fkcHSH4WhBQw+gix2lRjT3e/mjNdEuBmqiyjwR+65NptFKPwp1iYq4iNJy4DI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XZGXC6SRF4DCKQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fc46a1e433583c8d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:01 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oh8cRZVxi/UT2Kqp5tLxd4Xcpdy4oXxiSygTQeiKMNfAndSGmEUHaZhSleBIA1cLLzXkUopEwzI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"C7XTFNMM4FWGJAZ1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestSignedURL.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0UBZymtQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"763a932fb92c363a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hseBkpU068NoNVQqJDrzaShR4+oWJJYU922rJjUxfXcsyQvRI/hCz90FBZWi2YRHWPy+9BrT7TobuaF//q8/kT3EfJBboA63\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VAWESZNF7JNPGT\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4MjBaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKNTliMTIwNTVmNTE1MjYyMTc2OWU5MWZkZjMxZDgxZjE2ZWY2MTkwZDE3OTQ2ZmM4NmQ3ZjM5MTliZGQ0ZmE4MDwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD44MDQ0YjI4NmY0OTkyZWYwZWRjMTUwZDI3NzYyYjkzZDg2ODhjMDYzY2FhMTEyMGExNjg4MWIyNTlmOGU2NDE4PC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzIgMzAgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgMzUgMzkgNjIgMzEgMzIgMzAgMzUgMzUgNjYgMzUgMzEgMzUgMzIgMzYgMzIgMzEgMzcgMzYgMzkgNjUgMzkgMzEgNjYgNjQgNjYgMzMgMzEgNjQgMzggMzEgNjYgMzEgMzYgNjUgNjYgMzYgMzEgMzkgMzAgNjQgMzEgMzcgMzkgMzQgMzYgNjYgNjMgMzggMzYgNjQgMzcgNjYgMzMgMzkgMzEgMzkgNjIgNjQgNjQgMzQgNjYgNjEgMzggMzA8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PlBVVAovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ2hlY2tzdW0tTW9kZT1FTkFCTEVEJmFtcDtYLUFtei1DcmVkZW50aWFsPUFLSUFXVVdFVVNQVUxZWDNCTDNNJTJGMjAyNjAzMTklMkZ1cy13ZXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZhbXA7WC1BbXotRGF0ZT0yMDI2MDMxOVQxNTI4MjBaJmFtcDtYLUFtei1FeHBpcmVzPTM2MDAmYW1wO1gtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhbXA7eC1pZD1HZXRPYmplY3QKaG9zdDpnby1jbG91ZC10ZXN0aW5nLTIuczMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20KCmhvc3QKVU5TSUdORUQtUEFZTE9BRDwvQ2Fub25pY2FsUmVxdWVzdD48Q2Fub25pY2FsUmVxdWVzdEJ5dGVzPjUwIDU1IDU0IDBhIDJmIDYyIDZjIDZmIDYyIDJkIDY2IDZmIDcyIDJkIDczIDY5IDY3IDZlIDY5IDZlIDY3IDBhIDU4IDJkIDQxIDZkIDdhIDJkIDQxIDZjIDY3IDZmIDcyIDY5IDc0IDY4IDZkIDNkIDQxIDU3IDUzIDM0IDJkIDQ4IDRkIDQxIDQzIDJkIDUzIDQ4IDQxIDMyIDM1IDM2IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDY4IDY1IDYzIDZiIDczIDc1IDZkIDJkIDRkIDZmIDY0IDY1IDNkIDQ1IDRlIDQxIDQyIDRjIDQ1IDQ0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDcyIDY1IDY0IDY1IDZlIDc0IDY5IDYxIDZjIDNkIDQxIDRiIDQ5IDQxIDU3IDU1IDU3IDQ1IDU1IDUzIDUwIDU1IDRjIDU5IDU4IDMzIDQyIDRjIDMzIDRkIDI1IDMyIDQ2IDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDI1IDMyIDQ2IDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDI1IDMyIDQ2IDczIDMzIDI1IDMyIDQ2IDYxIDc3IDczIDM0IDVmIDcyIDY1IDcxIDc1IDY1IDczIDc0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ0IDYxIDc0IDY1IDNkIDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDU0IDMxIDM1IDMyIDM4IDMyIDMwIDVhIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ1IDc4IDcwIDY5IDcyIDY1IDczIDNkIDMzIDM2IDMwIDMwIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDUzIDY5IDY3IDZlIDY1IDY0IDQ4IDY1IDYxIDY0IDY1IDcyIDczIDNkIDY4IDZmIDczIDc0IDI2IDc4IDJkIDY5IDY0IDNkIDQ3IDY1IDc0IDRmIDYyIDZhIDY1IDYzIDc0IDBhIDY4IDZmIDczIDc0IDNhIDY3IDZmIDJkIDYzIDZjIDZmIDc1IDY0IDJkIDc0IDY1IDczIDc0IDY5IDZlIDY3IDJkIDMyIDJlIDczIDMzIDJlIDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDJlIDYxIDZkIDYxIDdhIDZmIDZlIDYxIDc3IDczIDJlIDYzIDZmIDZkIDBhIDBhIDY4IDZmIDczIDc0IDBhIDU1IDRlIDUzIDQ5IDQ3IDRlIDQ1IDQ0IDJkIDUwIDQxIDU5IDRjIDRmIDQxIDQ0PC9DYW5vbmljYWxSZXF1ZXN0Qnl0ZXM+PFJlcXVlc3RJZD5NMVZBV0VTWk5GN0pOUEdUPC9SZXF1ZXN0SWQ+PEhvc3RJZD5oc2VCa3BVMDY4Tm9OVlFxSkRyemFTaFI0K29XSkpZVTkyMnJKalV4Zlhjc3lRdlJJL2hDejkwRkJaV2kyWVJIV1B5KzlCclQ3VG9idWFGLy9xOC9rVDNFZkpCYm9BNjM8L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"aa7a0464e9d762d1\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc64nvme\": [\n            \"jSnVw/bqjr4=\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ee6Zr1tS6qgu0nMozkdvfhP+jFFbKBwr02hE1QPx0+quFt4wh+gIW7OGtDkoRsTivi2C5aVNC2M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VBF3JR449N27FF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8b7d46790b11b868\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wbN6KG1twEpK+SldWzUNdmouFkib9qgDjO1rbEtKdVD18AffpP/iXN5bLwCIda48Z3LbVuje/pc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V6DBAY01M2SF2W\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4MjBaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKYjdlNjQ4NmMwMjE5NjMwNzA0MDhlMDliMjNkZjU0MWQxOTViM2U2YjdlYjZhYTlhZWY1OWJkZTNlNDQwYmJkNjwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD45OTUzZWRiZWMyMDVkYzk4N2Y2MjMxZWUzMDY5M2Y4ZmNmMDU1YTFkNWRiMDMxMzQ4ZDdkN2Q4ZjU3MmJhY2RlPC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzIgMzAgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgNjIgMzcgNjUgMzYgMzQgMzggMzYgNjMgMzAgMzIgMzEgMzkgMzYgMzMgMzAgMzcgMzAgMzQgMzAgMzggNjUgMzAgMzkgNjIgMzIgMzMgNjQgNjYgMzUgMzQgMzEgNjQgMzEgMzkgMzUgNjIgMzMgNjUgMzYgNjIgMzcgNjUgNjIgMzYgNjEgNjEgMzkgNjEgNjUgNjYgMzUgMzkgNjIgNjQgNjUgMzMgNjUgMzQgMzQgMzAgNjIgNjIgNjQgMzY8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PkdFVAovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ3JlZGVudGlhbD1BS0lBV1VXRVVTUFVMWVgzQkwzTSUyRjIwMjYwMzE5JTJGdXMtd2VzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmYW1wO1gtQW16LURhdGU9MjAyNjAzMTlUMTUyODIwWiZhbXA7WC1BbXotRXhwaXJlcz0zNjAwJmFtcDtYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYW1wO3gtaWQ9UHV0T2JqZWN0Cmhvc3Q6Z28tY2xvdWQtdGVzdGluZy0yLnMzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tCgpob3N0ClVOU0lHTkVELVBBWUxPQUQ8L0Nhbm9uaWNhbFJlcXVlc3Q+PENhbm9uaWNhbFJlcXVlc3RCeXRlcz40NyA0NSA1NCAwYSAyZiA2MiA2YyA2ZiA2MiAyZCA2NiA2ZiA3MiAyZCA3MyA2OSA2NyA2ZSA2OSA2ZSA2NyAwYSA1OCAyZCA0MSA2ZCA3YSAyZCA0MSA2YyA2NyA2ZiA3MiA2OSA3NCA2OCA2ZCAzZCA0MSA1NyA1MyAzNCAyZCA0OCA0ZCA0MSA0MyAyZCA1MyA0OCA0MSAzMiAzNSAzNiAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyAzZCA0MSA0YiA0OSA0MSA1NyA1NSA1NyA0NSA1NSA1MyA1MCA1NSA0YyA1OSA1OCAzMyA0MiA0YyAzMyA0ZCAyNSAzMiA0NiAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSAyNSAzMiA0NiA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyNSAzMiA0NiA3MyAzMyAyNSAzMiA0NiA2MSA3NyA3MyAzNCA1ZiA3MiA2NSA3MSA3NSA2NSA3MyA3NCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NCA2MSA3NCA2NSAzZCAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSA1NCAzMSAzNSAzMiAzOCAzMiAzMCA1YSAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NSA3OCA3MCA2OSA3MiA2NSA3MyAzZCAzMyAzNiAzMCAzMCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA1MyA2OSA2NyA2ZSA2NSA2NCA0OCA2NSA2MSA2NCA2NSA3MiA3MyAzZCA2OCA2ZiA3MyA3NCAyNiA3OCAyZCA2OSA2NCAzZCA1MCA3NSA3NCA0ZiA2MiA2YSA2NSA2MyA3NCAwYSA2OCA2ZiA3MyA3NCAzYSA2NyA2ZiAyZCA2MyA2YyA2ZiA3NSA2NCAyZCA3NCA2NSA3MyA3NCA2OSA2ZSA2NyAyZCAzMiAyZSA3MyAzMyAyZSA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyZSA2MSA2ZCA2MSA3YSA2ZiA2ZSA2MSA3NyA3MyAyZSA2MyA2ZiA2ZCAwYSAwYSA2OCA2ZiA3MyA3NCAwYSA1NSA0ZSA1MyA0OSA0NyA0ZSA0NSA0NCAyZCA1MCA0MSA1OSA0YyA0ZiA0MSA0NDwvQ2Fub25pY2FsUmVxdWVzdEJ5dGVzPjxSZXF1ZXN0SWQ+TTFWNkRCQVkwMU0yU0YyVzwvUmVxdWVzdElkPjxIb3N0SWQ+d2JONktHMXR3RXBLK1NsZFd6VU5kbW91RmtpYjlxZ0RqTzFyYkV0S2RWRDE4QWZmcFAvaVhONWJMd0NJZGE0OFozTGJWdWplL3BjPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"3a7fca25954639cd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2a+7XVrkf5OaBB/M14vQQm9S64YS6ttXuA9upWa+UR6rAB3a3CNg+6jJKoMXzdeHsBD+FuvKkWk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VBPVE63PXSCGAZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkFjY2Vzc0RlbmllZDwvQ29kZT48TWVzc2FnZT5BY2Nlc3MgRGVuaWVkPC9NZXNzYWdlPjxSZXF1ZXN0SWQ+TTFWQlBWRTYzUFhTQ0dBWjwvUmVxdWVzdElkPjxIb3N0SWQ+MmErN1hWcmtmNU9hQkIvTTE0dlFRbTlTNjRZUzZ0dFh1QTl1cFdhK1VSNnJBQjNhM0NOZys2akpLb01YemRlSHNCRCtGdXZLa1drPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"bd6d2af534ca4597\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"binary/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dUlaKInBba0Kzi7NZJJKE63PrFpTtY4HGBK1ej/onuV8q1DByoKVzHfRJC+pNFubdRtz2Ocf6tM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1V04HQKNRQ01MTN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"413aed2c14fda4b7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4B8Y9WFSrzPv6nC/A8g/husaUal7vJJnlAJSOShc9ozJIecdwpWJFmpvwmFO63dT3AHmoMsXoiQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VFK6KPVXCTHW6K\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4MjBaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKZmI0NzJkNTM5ZTlmYjZlZGI4ZjQwYWZiYTRjOGZmNWRjYTdiNzYyZDc5OTUzYTU1YWY0ZDc3NjYzZjQ1ODBiMjwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD44MDQ0YjI4NmY0OTkyZWYwZWRjMTUwZDI3NzYyYjkzZDg2ODhjMDYzY2FhMTEyMGExNjg4MWIyNTlmOGU2NDE4PC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzIgMzAgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgNjYgNjIgMzQgMzcgMzIgNjQgMzUgMzMgMzkgNjUgMzkgNjYgNjIgMzYgNjUgNjQgNjIgMzggNjYgMzQgMzAgNjEgNjYgNjIgNjEgMzQgNjMgMzggNjYgNjYgMzUgNjQgNjMgNjEgMzcgNjIgMzcgMzYgMzIgNjQgMzcgMzkgMzkgMzUgMzMgNjEgMzUgMzUgNjEgNjYgMzQgNjQgMzcgMzcgMzYgMzYgMzMgNjYgMzQgMzUgMzggMzAgNjIgMzI8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PkRFTEVURQovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ2hlY2tzdW0tTW9kZT1FTkFCTEVEJmFtcDtYLUFtei1DcmVkZW50aWFsPUFLSUFXVVdFVVNQVUxZWDNCTDNNJTJGMjAyNjAzMTklMkZ1cy13ZXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZhbXA7WC1BbXotRGF0ZT0yMDI2MDMxOVQxNTI4MjBaJmFtcDtYLUFtei1FeHBpcmVzPTM2MDAmYW1wO1gtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhbXA7eC1pZD1HZXRPYmplY3QKaG9zdDpnby1jbG91ZC10ZXN0aW5nLTIuczMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20KCmhvc3QKVU5TSUdORUQtUEFZTE9BRDwvQ2Fub25pY2FsUmVxdWVzdD48Q2Fub25pY2FsUmVxdWVzdEJ5dGVzPjQ0IDQ1IDRjIDQ1IDU0IDQ1IDBhIDJmIDYyIDZjIDZmIDYyIDJkIDY2IDZmIDcyIDJkIDczIDY5IDY3IDZlIDY5IDZlIDY3IDBhIDU4IDJkIDQxIDZkIDdhIDJkIDQxIDZjIDY3IDZmIDcyIDY5IDc0IDY4IDZkIDNkIDQxIDU3IDUzIDM0IDJkIDQ4IDRkIDQxIDQzIDJkIDUzIDQ4IDQxIDMyIDM1IDM2IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDY4IDY1IDYzIDZiIDczIDc1IDZkIDJkIDRkIDZmIDY0IDY1IDNkIDQ1IDRlIDQxIDQyIDRjIDQ1IDQ0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDcyIDY1IDY0IDY1IDZlIDc0IDY5IDYxIDZjIDNkIDQxIDRiIDQ5IDQxIDU3IDU1IDU3IDQ1IDU1IDUzIDUwIDU1IDRjIDU5IDU4IDMzIDQyIDRjIDMzIDRkIDI1IDMyIDQ2IDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDI1IDMyIDQ2IDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDI1IDMyIDQ2IDczIDMzIDI1IDMyIDQ2IDYxIDc3IDczIDM0IDVmIDcyIDY1IDcxIDc1IDY1IDczIDc0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ0IDYxIDc0IDY1IDNkIDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDU0IDMxIDM1IDMyIDM4IDMyIDMwIDVhIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ1IDc4IDcwIDY5IDcyIDY1IDczIDNkIDMzIDM2IDMwIDMwIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDUzIDY5IDY3IDZlIDY1IDY0IDQ4IDY1IDYxIDY0IDY1IDcyIDczIDNkIDY4IDZmIDczIDc0IDI2IDc4IDJkIDY5IDY0IDNkIDQ3IDY1IDc0IDRmIDYyIDZhIDY1IDYzIDc0IDBhIDY4IDZmIDczIDc0IDNhIDY3IDZmIDJkIDYzIDZjIDZmIDc1IDY0IDJkIDc0IDY1IDczIDc0IDY5IDZlIDY3IDJkIDMyIDJlIDczIDMzIDJlIDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDJlIDYxIDZkIDYxIDdhIDZmIDZlIDYxIDc3IDczIDJlIDYzIDZmIDZkIDBhIDBhIDY4IDZmIDczIDc0IDBhIDU1IDRlIDUzIDQ5IDQ3IDRlIDQ1IDQ0IDJkIDUwIDQxIDU5IDRjIDRmIDQxIDQ0PC9DYW5vbmljYWxSZXF1ZXN0Qnl0ZXM+PFJlcXVlc3RJZD5NMVZGSzZLUFZYQ1RIVzZLPC9SZXF1ZXN0SWQ+PEhvc3RJZD40QjhZOVdGU3J6UHY2bkMvQThnL2h1c2FVYWw3dkpKbmxBSlNPU2hjOW96SkllY2R3cFdKRm1wdndtRk82M2RUM0FIbW9Nc1hvaVE9PC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"8a6ad74bede085fd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:19 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QzPfzvLUkw7hsoJ8Vi9IX5SdKTt2K0vogZA5p/6T0CtoVVV/pD2k4OEyZxD76FgvFJVMlImu7Xw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"M1VA83TPT738S5G1\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4MjBaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKYzIxYzFjZWRlNGQyYWQ3ZTcwZjQ1YzRlODMxNGIzYzhjY2VjNjRiY2U2ZWYzZjExMThlYWQ1NzIzYjYwY2U5YTwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD45OTUzZWRiZWMyMDVkYzk4N2Y2MjMxZWUzMDY5M2Y4ZmNmMDU1YTFkNWRiMDMxMzQ4ZDdkN2Q4ZjU3MmJhY2RlPC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzIgMzAgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgNjMgMzIgMzEgNjMgMzEgNjMgNjUgNjQgNjUgMzQgNjQgMzIgNjEgNjQgMzcgNjUgMzcgMzAgNjYgMzQgMzUgNjMgMzQgNjUgMzggMzMgMzEgMzQgNjIgMzMgNjMgMzggNjMgNjMgNjUgNjMgMzYgMzQgNjIgNjMgNjUgMzYgNjUgNjYgMzMgNjYgMzEgMzEgMzEgMzggNjUgNjEgNjQgMzUgMzcgMzIgMzMgNjIgMzYgMzAgNjMgNjUgMzkgNjE8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PkRFTEVURQovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ3JlZGVudGlhbD1BS0lBV1VXRVVTUFVMWVgzQkwzTSUyRjIwMjYwMzE5JTJGdXMtd2VzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmYW1wO1gtQW16LURhdGU9MjAyNjAzMTlUMTUyODIwWiZhbXA7WC1BbXotRXhwaXJlcz0zNjAwJmFtcDtYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYW1wO3gtaWQ9UHV0T2JqZWN0Cmhvc3Q6Z28tY2xvdWQtdGVzdGluZy0yLnMzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tCgpob3N0ClVOU0lHTkVELVBBWUxPQUQ8L0Nhbm9uaWNhbFJlcXVlc3Q+PENhbm9uaWNhbFJlcXVlc3RCeXRlcz40NCA0NSA0YyA0NSA1NCA0NSAwYSAyZiA2MiA2YyA2ZiA2MiAyZCA2NiA2ZiA3MiAyZCA3MyA2OSA2NyA2ZSA2OSA2ZSA2NyAwYSA1OCAyZCA0MSA2ZCA3YSAyZCA0MSA2YyA2NyA2ZiA3MiA2OSA3NCA2OCA2ZCAzZCA0MSA1NyA1MyAzNCAyZCA0OCA0ZCA0MSA0MyAyZCA1MyA0OCA0MSAzMiAzNSAzNiAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyAzZCA0MSA0YiA0OSA0MSA1NyA1NSA1NyA0NSA1NSA1MyA1MCA1NSA0YyA1OSA1OCAzMyA0MiA0YyAzMyA0ZCAyNSAzMiA0NiAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSAyNSAzMiA0NiA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyNSAzMiA0NiA3MyAzMyAyNSAzMiA0NiA2MSA3NyA3MyAzNCA1ZiA3MiA2NSA3MSA3NSA2NSA3MyA3NCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NCA2MSA3NCA2NSAzZCAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSA1NCAzMSAzNSAzMiAzOCAzMiAzMCA1YSAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NSA3OCA3MCA2OSA3MiA2NSA3MyAzZCAzMyAzNiAzMCAzMCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA1MyA2OSA2NyA2ZSA2NSA2NCA0OCA2NSA2MSA2NCA2NSA3MiA3MyAzZCA2OCA2ZiA3MyA3NCAyNiA3OCAyZCA2OSA2NCAzZCA1MCA3NSA3NCA0ZiA2MiA2YSA2NSA2MyA3NCAwYSA2OCA2ZiA3MyA3NCAzYSA2NyA2ZiAyZCA2MyA2YyA2ZiA3NSA2NCAyZCA3NCA2NSA3MyA3NCA2OSA2ZSA2NyAyZCAzMiAyZSA3MyAzMyAyZSA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyZSA2MSA2ZCA2MSA3YSA2ZiA2ZSA2MSA3NyA3MyAyZSA2MyA2ZiA2ZCAwYSAwYSA2OCA2ZiA3MyA3NCAwYSA1NSA0ZSA1MyA0OSA0NyA0ZSA0NSA0NCAyZCA1MCA0MSA1OSA0YyA0ZiA0MSA0NDwvQ2Fub25pY2FsUmVxdWVzdEJ5dGVzPjxSZXF1ZXN0SWQ+TTFWQTgzVFBUNzM4UzVHMTwvUmVxdWVzdElkPjxIb3N0SWQ+UXpQZnp2TFVrdzdoc29KOFZpOUlYNVNkS1R0Mkswdm9nWkE1cC82VDBDdG9WVlYvcEQyazRPRXlaeEQ3NkZndkZKVk1sSW11N1h3PTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestUploadDownload.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0IBdTDtAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"195e1b6bd4b31183\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QGKkwH9fNkxGsPFtZUSgNQyR4roftPolF6DPedqFmeZM3pz0/O9m4E5UWIGLUjB/XXg+u7Da/Bcf7sTcCKKQt7wgcqmJq/Ru\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M956XFMCNDEW9R4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b3be35043ec79695\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"k9f1pfRpDYzlpLk20yIke8I9mjEVcOMYF/RdhhyGwcyJDVUADatFUx/WtZhn4IeNSn3sG+Vtytt5RgIol/29sFGUORw+A6t1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M93NXW78NBNB31R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"dXAgYW5kIGRvd24=\"\n      }\n    },\n    {\n      \"ID\": \"6f7824014050dcb3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XRqgisyBIljw23rHTVjzYsTFCPw81qs6m0uxveS86c507pdIlR1znSfRl70ublolLwpaNJNCQ39u5ZUT3Kp46ggwdIMMqMRS\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9820F33X9QQ07Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"740e40fe7b5eccab\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uJ69Kdg2aM4/n6yqbfV92rWOaO70rFMPgQcj658WilzPlskGWw3EZPFKkKndPHGLqDR2IK8HWFgdpPlwDomwGJsdQXa5Ntrg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9FRXEMNVS7SK4E\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a748bd1026ce96ac\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:09 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"N2WELNb6lXDzC5mhmapwfjFYuY6hDDmKxPx0sKrS467SdUWcGz4pXL0c3/Wf8pS5YmkeX6hwshKZdePwAQUoTTmLELYD9cr9\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M91RFZFY00XWQEV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b238b44e5b5968b5\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:07 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5etE8Gbe7dooTwvVSv2LqhFaIQUh7TPN+yE5xBRb8gl6q7j4/noWBikpYzTJLidBLl47sDruJXACWCtOwEarP1X85SYp1EMN\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1M9AFCQWWF4VQDBK\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/ContentType_is_discovered_if_not_provided.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0DDzyx0AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fa77c8db71858305\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"6398\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/html\",\n        \"BodyParts\": [\n          \"MThkMg0KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+DQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjplQ01DcWc9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"H+piY6SlgTGxQsQWMLsT1Whi9Mt4AP8Y0C18VWmcb0nC3/r7UqFT9GG4UkD636jMjNYNYcm1Bq57fqEfjI8QFcWf335GIZvE\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNRZ1WCEG6SPWNS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9f297d16afcfd2df\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tNHQ2xK+7m3hebNv83xyikJxYemVOM6mb4FkqIvzY6W3S7Uc0k0blLVZokHeLXcaBftTYRd+EodWsRpckN20a4SxyVjxg0pI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNRJ7Y8BNQ37SMB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"89627495bd334977\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5njE1t3Gzycp7UAbJMzTvyD/BNqOWfh6M17fuypssaWmKgEIItkaGf9qRUSQkeZjEqIRrj8y7KUngbMNga5E4LMT8pQY2kzL\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNY5WZC3B08F4KZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc3a6b900d8205b8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"B75G4FUWZuC9nxkF+tc7MaJQEvcvoK4XBAjPccSOiH+3iLO9t3OjcVXQ9kpmx/AbtVyuAw270zFNTuI8RrioFouosEPmK6ps\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNXVMV7FBSBTQ0K\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1dbdf0cd3d5352eb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HRlcS6TOIRpgwSjPbDN80KROLQwQXU0L4FZXUPPcrTMbUuo6hCLO0Q+3ubLjpOJBjDBNdwYz+RizqdD+PrQjP8r6viCh9hgW\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNNG2NYY5V2X0BQ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/ContentType_is_left_empty_if_not_provided_and_DisableContentTypeDetection_is_true.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0DH/Ba7gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"dc6fe6dc2aa7990e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"6398\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"MThkMg0KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+DQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjplQ01DcWc9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rjjAcqavVyY0k8GsIw28m07DBQ4O6iT5nJo9IfXaJaN+jyGE+p1mujhxecpvhf/BokU+APgC4OI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNWB00TRVRDSSG2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4e26ab3234338270\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kzWtWmLIHLU6EhkwUCMzwuTKzihQbMZN5Zb53x4Lqwz64jb7w2LQ2eCNrX2UximHpxtaGi++wqE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNZFPB45EZYZRC6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"770a360e2b1f64d2\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zB95WeNHTTsefalE8/pswIIygxkDDg1uaYEcLTilwW2WVjY0QzxEdop8PZp1wdJJPhysSqbwUyg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNZC6J1ZN7TNP58\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b1951eb8a406b43c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cGWH4pkwKCtlU/hatcGru4QHTnTRY/f5CvBqlZzeqLg9v30mzXNF6qSuHIEkMdsfvUN77ErnoSs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNMDSM89EAE4PYR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/Content_md5_did_not_match,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0EIB7A6AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"36fb02ee4276faa9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"58\"\n          ],\n          \"Content-Md5\": [\n            \"dH9B/ScP7BuCvgMMwc1IAQ==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"16\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTANCmV4aXN0aW5nIGNvbnRlbnQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkl1VXExUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"IuUq1Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"exqtkOATW9PsPKCeq9nb38Gi/Ah6IUtc0RLU7PVQu0+UKW0+mZKk8vios2SqlD/3lyot4TIWsdFU6nH/yq8ugP5uQLQ+1/Jb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FT9K9FB11JXWMM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cf760c8b6073c94f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"IuUq1Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DQIUSplHGIurkzUe1IES+9Pa8S+ygH4UrTOxsSpptR++UK2EINeHYSZZfgw0mqpOYBKzTM53cELFFj/Ec+1/U6alM91M6e6C\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FM3PZ1C0GQJJCY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"ZXhpc3RpbmcgY29udGVudA==\"\n      }\n    },\n    {\n      \"ID\": \"79173623acd3d71b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Vx/QhwKSXv3UOkmA4fHQUtBiWKk3vyj8n2aaeVgM+SsF3+3h/R5szi6mTWOASaSYy6aFjavwKZB/l2q3I3us7M41ajyFelnA\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FKTAFT2VKC52TZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"443098181da6595c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xxuT2bqFjmJ3TiPaXzVM9e6NpHTFxstbFFADNx5YYFu7kXJ0bCex7mUU866zOkrAf/rQvuBHQ0ir3909ErTmileR/Gx/b1+B\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FPFVF7XE0WN5PP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/Content_md5_did_not_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0EGiXAbwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7ac839aa5dd56e6c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0jyxYHSWtuwKzVBad75iP9iXGFvGHJSe9a4+RZMzp3VIBDPVuh0zm5Dq7lRE2bHttrhHQouNJuZMDeGpm6NVFzrgbfNxgW6m\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FHXSQVFBRPNS8X\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1yZWFkaW5nPC9LZXk+PFJlcXVlc3RJZD5RMkZIWFNRVkZCUlBOUzhYPC9SZXF1ZXN0SWQ+PEhvc3RJZD4wanl4WUhTV3R1d0t6VkJhZDc1aVA5aVhHRnZHSEpTZTlhNCtSWk16cDNWSUJEUFZ1aDB6bTVEcTdsUkUyYkh0dHJoSFFvdU5KdVpNRGVHcG02TlZGenJnYmZOeGdXNm08L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/Content_md5_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0EAq3v4wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f0357be1dcd7ec3b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"f+huXp6rHYQNeVnsvZt5euqHHCQTiaDLRvRL+9Y8WohaFbmddftJOpQGycnQP6oipiLDn9W2E+Ju3z9S6ryI5XLo6L50V/br\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FK7NWZ6VR0NM2C\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5a9b7787130d5513\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"C4xsac/iQa2YNlegSX4ussTD8s3/SJ5k6PIMw50SpdlZ3P/bgNP2jyfSvdAwJs4h+CgKvUm/c9eCOBQK3oVk46JNFqIxvwxY\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FRVBB4NQTMA37Q\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"7e435b0b82f8b2b1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ExbPS4Fz8ilRIv+lUjf9rz0OYc8fnCYcLUM0x73oRNs4k9Y/cAtoV5DbuXYeqhL0mCaNSyn8sj+icDUXR6a00sA/b9qZoCAG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FNQ1ZCW11HDCP8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"95d40f7e2da37b38\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"F8zynBqUlRyhAs4lrBQ5ixy4hC0ovLdpT90/Mcj9meQdjFgSEh4q4Hj5b0oNb4tDBZmzFXzgyrm4+KX6ssogjfAwcQyL6VMy\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FY3SM2ASJHHSCF\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/a_large_jpg_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0FAQeqmgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9df1550d395e4907\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"38474\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"38430\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"image/jpeg\",\n        \"BodyParts\": [\n          \"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9HsyyadINQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//ZDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjo4RGhML0E9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nqSml3hNvKUrnSttY6RgHzIfLSaA3KT28NIGsn5Yxb0TrcAGMlKNfTi+J6FDihsAFiyIu8HxvRg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48XTZWEHPP5B5PD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"53e570df8bf48f92\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5b3P6tIZgX/zN1ZzGjJvaQvX5hkLscsJQVjNzYCKPHsg4Aaj62Dwovqpyal4acP+d6oNwPk/MsA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48GM09GW2TJ5WFW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"ca22d00a7c33c49d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vHi+9/cJsvvQo0MsWPLfYWtdwcdrvWJrO8AoAi5ryx1r3nZa/Pd7k1URFEI/ckRIBiYEG53NgYY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48KDB4F33871725\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c82de332d722f18f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kXQGZez22di4no3WfEFglVqS1grIsdX2mHONfScMxYzg7TJvXm98BPZOzQUa8ixAYJK1BcyJwRk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48WCHHNKD2M9654\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2965d1d90f3e5fcf\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EG7VSSRmRDN7B3C5Ag9RlZC69PqG0uHnaEe1fRI0x97aHvh+LjvfsFA6kfX5orrC7ChCr22q8u8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48ZM7DH1M387JBR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/a_large_jpg_file_written_in_two_chunks_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0FFsPv1gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c9d5f416cb265dd3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"38474\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"38430\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"image/jpeg\",\n        \"BodyParts\": [\n          \"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9HsyyadINQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//ZDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjo4RGhML0E9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5bf3Vy9WOud7qOaLzaPApVeVuUdbwihXzuGPxtArpCsgD3Wle8BmFm3Jpef+TsbBDJjImuP+cI4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48QGMY0JAHYDVD7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"db6a1cf7fae0b27e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fUyfRFLaeZgCuO5/4KBn8s+9rNldEJRFtYmMET07wbJZy0rpW+TVS0YIlXhlQ/hXZKDeCxiWTIE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48VKSXNA7HTKJE5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"c4e72f53e2d2b660\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9qJYXM0Cgm8UtH8oG9OUmyXIxOmNwPw++ghyurXitORjh5tfwIqRRYCTmQjwmo4l57a2CngfU+c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48RXNRDSXVK1NFP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c5e43e1e1854bada\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ok2HRAUxiZkqTQfBx7fRmEZO+gDfPosc+gwXhTCRo0kFxFC2hjV82IEFvtoC5H5LFxbA9AOcbIE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48JRM4N2WQ33TEW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f795893adda911a6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:06 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QhP83rkX0wMXrSs0b5zVFTpFUHV8b8I3ToLVF01iP4OVsMEvOsFbeg1GtbyoRMvUP60W2oVpxj0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"P48Y726R524JF5EC\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/a_small_text_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0ELNv5kgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ea1436d5ed3a2406\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"62\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"20\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTQNClRoaXMgaXMgYSB0ZXh0IGZpbGUuDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpzUURpRVE9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"sQDiEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0o+KMO9vu3BIYqGv1Vz3UmZDeTzUN6NWlHEyAO59wlkoShZbs5WEDp6+6z870e05/RxkFfGO+MzxUmnytd0Nnz1Q8FoBlXYF\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FSRER2NZK16QW0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2507203fd81a3452\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"sQDiEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dH8re44KqUnW7vor8U9HRmyyyhs+BcFrv1u6Up8Ktq+Tef6bTazRjKC/gTKMyPTWG/3/rOAz0nSChRabDzv3UWM7SH9T/RGh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FVXJWQ93QASJZG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"VGhpcyBpcyBhIHRleHQgZmlsZS4=\"\n      }\n    },\n    {\n      \"ID\": \"78be3cbec99c1419\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JhgmVRc46Z2Zy40LiA8I2/gcr0ZKi1/d+e8rKkmJnXXN2lw9cfx4sQyhUa6gZl6iCJeNr/Zkr92ZSY6uoRSOF9KD9sGRhjRG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FZ2MMA6NDTPG7Z\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"00b3b63e7ccac0c5\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+mivFFzd/wPJLdtT64G57lVzncDMflG6uieVL1+ICVnc84LcqBdjUFm3gM/fVNtdcASqFyikQL67YzEhXILPr4EzwNJc45hg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FRJXG7RAW3WMA5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2acb83f015d0ffd6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"depAM7yJDczg+xhmLZPT16NGrqcGs6IhHbahnaOLt7uOyn88s3K5wmxMCmws4LTdATjgKx5+IhrP5KQFa9JjMAlFN839Xx0c\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FTPQVCV14J2ATN\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/invalid_ContentType_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0DCQs6xQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7f08ebc6dda6150e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:02 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OtYzCfPfnbJtoKaMMLUTXhqjjiZw1EdOEhKFXEI+hQfknPuChNQmVp9T7Ra8OMdcZIbYXA68GsC5Esq+EhYdJ+MaGAACLYqI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNK5E3T4HTKCTWS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1yZWFkaW5nPC9LZXk+PFJlcXVlc3RJZD5ETU5LNUUzVDRIVEtDVFdTPC9SZXF1ZXN0SWQ+PEhvc3RJZD5PdFl6Q2ZQZm5iSnRvS2FNTUxVVFhocWpqaVp3MUVkT0VoS0ZYRUkraFFma25QdUNoTlFtVnA5VDdSYThPTWRjWkliWVhBNjhHc0M1RXNxK0VoWWRKK01hR0FBQ0xZcUk8L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/no_write_then_close_results_in_empty_blob,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0CNpkMxgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7133276b55409f6d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"UNSIGNED-PAYLOAD\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ficpv/L0H51EM+oMClfRoZbDc3RbtBlPWQ6I6+PCIgYhDU+Qdl69Ufp8ZkhGYzmWBAO4a+obl2E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D97YTNYRX454FA8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f9c3a3f5d896ec43\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4KtFpkulEIW+nrSdBKVOc7yUEqb7a4eVUMZu7sYgJtF87ZY3RHRB7jmcQiqU1Zv6DodhNay3cNk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNYZ9CCZBVJY5H6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5b7606c8db7a3fcf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uf31jGsfcZKlVAkglWCcwSZJEvwFGGz+yotAiFLX0IrwnJPUiJDM10HxuFACV6wsJNPzyjKMycI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNMK29NSHPW7BED\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6a7fb6fe2d9869c6\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"u3IaYpQoUQfTiKFyQSvBMsbgfGy798NPzpeSzjlvuzdTc9wpZvVmyXs+G8PPkBpKreVtvzFvG0I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNS7M80824Z7Q9W\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/no_write_then_close_results_in_empty_blob.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0CKPRyowAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3b580f8038af034e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"UNSIGNED-PAYLOAD\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sDZo0Z77mS3B8DrN89f5ccI0XdRVYDJs3nnxkq4gHGju7c6pjsVwIoeNfmJjglpbv+cvbSSo7eo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D96Q2G17NWHT38X\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b6aaa786b982bb04\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yK5KGPzIkKO9MkHg7wgGoBPq6+s2UJKXKBwLnY1iJUDSKIzYfTS8XHFtxSegVYr++2lxMqxb0vs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9D7KVB76RZZV8V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b9c9e62111b7e3e9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"G/kAmtR8c59o5fqhiEnTp8heOux4NFeaQSJTo0HZ8j/0Ow+qfpLqjR88l6HOuBzgISZlIaGWoDA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D9FC0DGQWTGZ41Q\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0a9085e4b83e69a8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:03 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4dVACyjsKaGzXybcLADZXI6p/v6hi1teDP58zDc2b/xXqLiYVK16a5sOo8kOzq9QYSrJ4xqSBog=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8D90BFW2TMNPVSYJ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/write_to_empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0CKOQwhwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformance/TestWrite/write_with_explicit_ContentType_overrides_discovery.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0DLf36RAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b994861a1ecdee83\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"6398\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"MThkMg0KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+DQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjplQ01DcWc9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZWlfdFHFl4igv17nESGVjXA5TI0yZGANRZEx1HPT3gpSGaQq5EtjsIoFGITiM2BdcpP34XTW/p0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNG3X1RWJNFXQYA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c9827565ab3f35ae\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8r6Of8LwtYJONot4EaZGOqrnmeoxf5czfeT0bH3XACeVFM+7ufeEoK9WnKLbP4wyuRimTtgR+Z0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNY0QT4R91PCEMY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"75cb995a8d6e2dd7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QemzLZO6/OznhsZXa7tdM6yZEFAX/uCLZ8O+wunNm2LG17WU7a9Wrfud/TJoYnwqVZAODVP9F/Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNQ91JR9G94KZV7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1472eff734ef93d7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:04 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"H3+QE7nMc0BZVoS7bixqoE1ypjLRFAeLDER2mOJ3XiNaIgpaSAQjO0sXiMHs/9GY+Ib3Gew8VKc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DMNM5RJSZJFBHB6S\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9c237c67bc17ec5e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:05 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dKUKXK71uwTkH5I2Pm04+0VKbmwJKhhtUoMB5Ex3U0IENtV/E1Hnbm7LNCVyqsbcSuaHddusy/c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q2FJX850525AR81C\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0vKcjuEwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"69b98c1a198cd77a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"v4HWsWs0yfmQK687LugHDYE8fXlyPZerXXyhgLr2F43D0H5wYYU6l/Uhu9JD2RWkQxOpjtV5dGCWHEJtjTsW9lkqapPp4GaO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCH2P8VWRC2VEWP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"32bfda922188099f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HndkpMcgY1X8lkc54HjJhFwP8x8ORzZGCDDcbi3JQSnLZpKpS0hVEmQT+LEBKRYjl80zHV4h7TMQJ6A5TiFkl2Wl6YpnYL/K\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCNETSNTYC58400\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"03f089759108dbc5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qjfxX5Ff/vPw1vH1JTH/ZPGhxBKPaSRgsWTCMTH2tE/AShPYLjm3dRMHtcbn2tUR1en0Ee912u73NJEf1F8QzIwz/pA7QkqR\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCG63FPXA86ZN0T\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"3ca46c38723d3947\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=mydir\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QUZ0cZMf0ZPGHJUt+4tu2uQAAj2yndaf1jMgIfnVYP8i1xb2zcHK9/ADUKsf/lK+0YRbgNaTYpluSJUUGCepDH3J+UO3/T2Z\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCY7MM0NMAMT2SQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXI8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5teWRpci88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"5d62da95f42464b7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5GTFIdFV7ZuZOsLDerwSsvM8bewIlbzjQezi2xwrAINAFNCnAUausAS4VWFFwT+TXHg7NuLiGK0eMobox7iNzzWE1FqImH9P\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCNH42WNBXS4687\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXIvYXMtdGVzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5Pm15ZGlyL2FzLXRlc3Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6NDguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjExPC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"b8ad206d0d556357\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key-does-not-exist?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"069ZZfzVj9jliCBIT3qBX+lO0y9+HxHK+5Knltv17IPbLjapgpX86DdBjB0jztF9H+q31TFhqhtzkWVsaD166RchvtvO9vu6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1HFF1WCPSXZP8GXP\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5rZXktZG9lcy1ub3QtZXhpc3Q8L0tleT48UmVxdWVzdElkPjFIRkYxV0NQU1haUDhHWFA8L1JlcXVlc3RJZD48SG9zdElkPjA2OVpaZnpWajlqbGlDQklUM3FCWCtsTzB5OStIeEhLKzVLbmx0djE3SVBiTGphcGdwWDg2RGRCakIwanp0RjlIK3EzMVRGaHFodHprV1ZzYUQxNjZSY2h2dHZPOXZ1NjwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"b5a03c3e37729bda\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fmydir%2Fas-test\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:49 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wYObzZ0l2f/ZJQuDH8olBZNbCLn1T93R/fJhW6VZVXWa8VZiWljuMQ+33Yak2PKCDtLuelFh+sh0hV8DkEYUm3I8BVNtwT0o\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1HF7ZV54M4BXY6EX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiPC9FVGFnPjxDaGVja3N1bUNSQzMyPkRVb1JoUT09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"f40ab0a4b21e8673\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:49 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:49 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"J1rQIa18OJHlFRF+YQzCde6nAleWVR6FrQHYO2uELOjqhnW9y0GfB72eX7max7UL1cYrbAwZyZNoxlPB/P0Go7dl1fQcZHzY\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1HF49247A3QJFGE4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e494098ca8915b57\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:49 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PqYLdkjvh+0AzHQ3/Nbgzj/tm6STWUo6YpkW/NE7he5Kz+/OWgheRF39TMHUmHYE6cVeSFo7wz26WxnzUEZONyMUaFlaQR/Z\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1HF38W58TN8M49EH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"410a2c261e662e02\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:49 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ooCzbk1BDyLfAeuh6yCvN0QdmXWrXpKUmQ0W/QzTV8w3Uhs7m606/aMzmjZ9XJHWP6PGw4IODIX6G+BKcbeJlwtYKRgelLyO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1HF53J4AGKVAVHZX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"954451e686b2d73f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:49 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JJ+7TeJP5iqas2Pf4KbvenScxMesYgYOcY4RkCtw7NJkyPhUYChNLoMzR24naa4Fyu2GmlBMgz49Uj72eOyhMlPGK4ux4xpv\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1HFFKHH7J8J6SEC1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestAs/verify_ContentLanguage_can_be_written_and_read_through_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0vC1O5ywAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6d58fd7ffd366c80\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"D0XbcsRNTns+5oPJke7UE6ZLly48x41sBhF+uvOJK5n/4bL7JMJfZX/1lMVlqOfYnc0oHPIfHbM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCTDPN3V1GEZ4G5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c0106fd05df9d14b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"B0+kPI6imAQ9X1A9gKfizJXNGBHp6jXN5Tb35ol/gelUHnpgIzHu+aFztptK027JKxGCJr1kAwY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCXNP2JVD11PV21\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3b76fe489c65facf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3xAz0SOfdWPv1uI2uUSY5/dYpCh7tm3iIVPLuCL+Ua9OHu8g7xhFfodgSRhRvjF2lYEAYVS97v0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCN28PA6XFYXNGN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"b8048fdd64bd9809\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=mydir\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2S4Lx6A25iGfKhpCawJnuvDlwqNhsECcWXa+1vp8tyROt3mdbjHVwYKyZOEj7urdND6/tASNrXc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCV0WM52E0J4TQC\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXI8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5teWRpci88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"6ea52599f0097587\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=mydir%2Fas-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DAexnTK9Bsau1xTfXrQps8tWSUZQ9v3kcAx2XLMWuEdqNv2VczkJncYESRdGCUqVHcsc5qfajaw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCXED01S4VHRWN0\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bXlkaXIvYXMtdGVzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5Pm15ZGlyL2FzLXRlc3Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6NDguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjExPC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"fd6245de8cc30c0b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key-does-not-exist?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zIyVYIuiPzYFwuRZfoYemDcUsylQ8AXuRn80g3fqY5HzmWe0npst94Zl9VMUM0Rk181BvJ/7IbY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCGXEM5VK16QSDB\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5rZXktZG9lcy1ub3QtZXhpc3Q8L0tleT48UmVxdWVzdElkPkRSQ0dYRU01VksxNlFTREI8L1JlcXVlc3RJZD48SG9zdElkPnpJeVZZSXVpUHpZRnd1Ulpmb1llbURjVXN5bFE4QVh1Um44MGczZnFZNUh6bVdlMG5wc3Q5NFpsOVZNVU0wUmsxODFCdkovN0liWT08L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"9d49969a506c4185\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fmydir%2Fas-test\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kgbi3VkAwsLz1SFDXuPXGYOZgAnTsxjhZBXBljVYyz121gNjxvPa9pB7Ean2zod97CKzE04MjJE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCYQK1MC9WQVFYH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiPC9FVGFnPjxDaGVja3N1bUNSQzMyPkRVb1JoUT09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"e12f95b1f5e5ecf7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"D4+3/itqHhdFY9w2Uqe4mQPZKy6XXMxY6B0AwSSOTfNlrMr3h3lMuH45BxM4wT4ojmXv+hXw/uM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCQTQZVVBQX7PW3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cd319fdc0e1933d5\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KnM1sHR8C5NNJw9pKeBZZxeIAkMhef1BrBRokyJVqGzvAH9MBfidVqgktCQnzJQGO4ig3eWN/4w=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCZYB9MMYZ5MVZ3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a8610630ed426eb1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Language\": [\n            \"nl\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"e2TmXtGgpbvlYePDsS38HvUqprXevYKY1Jo8oVanD0j/ucA5BywDWrznCM10cEdvO0L7Q9MI508=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCJ2D0BKEMPN6D2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2844e06ca6be346e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/mydir/as-test?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Bczc2Z3xCzfgPGPtKkDTto5nqwXohFjfgCNwn9yg20Hy83G+sR85zLaKeO0ixVn7ocEgXrsmpPU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCR8W3FXN2PX242\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestAttributes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0cKEMQhQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6b60635bfad53e1d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\",\n            \"aws-chunked\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"12\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yw0KSGVsbG8gV29ybGQhDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpIQ2tjb3c9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"HCkcow==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tA5lJuY7FuJeW6EywBsr3ZPuysGtGaAD8/GaCzCBiJYA/IeBVeWylTQM3ygUm07PQ0fPGB43e5w=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CE1T4XV768Z56P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"55071baf093eddd8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/not-found\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cKGASMjkGqhHhJisipJhm00VqaX5PAyOjVm0a55qr06v05+OMAsj/+XmTJoMG/I4twLCvwLYd8U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CEBB1M38GANZ72\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3d007068573e6c48\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5LgdFkbL7bXh9AuwMVdrCb/R+eCUheKKNu5bZqwsFtyH0xI7DfdEVx0LAcN6AJ8n2S//HSt76R4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C9PKK0VAP10YAN\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"583a4746a7ad20a2\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wiR+P97AxQOXLvFnFTUP+AoX8NKsxMsOgELtKzrzwHa477oan+Vpq/UsQqFIX3tTrDiKkORIs7Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C5WAFYC44P25MF\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a546fc21efe254bf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dDImLGGA2gbG3ty1eamPtiA+O8oLbE+Xw/UGGLJwDoNTMYu2BF1176uEJH0DMJ0DdQw0CvbuvnY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C2PM4WZG1KY4P8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6a7891d9588f30a8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"HCkcow==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qg98mn3wHPnE8vfH7Ua7hlfNzjbvTuyldzPTVbEWiWaRxqwJ5jLAHnsplQ61SzvfkmoTBFO1gio=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CBK2SZT6F2YB7K\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQh\"\n      }\n    },\n    {\n      \"ID\": \"81b040a91f0a21dc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"Content-Md5\": [\n            \"7Qdih1MuhjZehB6Sv8UNjA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"12\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yw0KSGVsbG8gV29ybGQhDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpIQ2tjb3c9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"HCkcow==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"P1StGVis8ryi1uIjWDV46obvOf4jmt+9U7/X1VG8Qq3saIgIjCeoRyTXJ6tt1c38VUT/lJB75QE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C1YTY31N22ERCT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2aa7c82537f9afd3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3fRU/DBvV+jhrqSVI9r7+K0ZS+7QfATGlO439YruuPTFLXvEOCIiwrOdSBKT5ysvQFmLdj1SMh0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0QVWFH97TERAX2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"33b16fc40525bec9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"12\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"ed076287532e86365e841e92bfc50d8c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FxTBfKr1kQcHWvCrco2JJHLkA0I919D25Bi1DjGYtWcyDDgChmQH2afMjGST+j5FwifOUjdVqwc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0N3MWZ47HW6C6M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0549265c830d6f4e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/someDir/blob-for-attributes?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1PywoF+W9DpL4N14VPkEHn+qx3n/RupqWPQMr0ZW0asyjpjHklzHc5HVlCbwxCEfQZmnqvR9q3A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0KR1P2057DDT87\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestCanceledWrite/BlobExists.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0gGiOPAwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fb59fc6eb73404c4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eO+JRDdGtpS5m/oxYQQf/42QhYg7jbAuLOUFpVipJMjsdcokr2f2qFuV11Suw4iMOBIerzdQpYCTFpo1MMZdhemACkcpx/cr\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94TCVSXSQKXX2A5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a0157deee06f502c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0Ll7fck+VdG9hksiZScV6FgbaD5ATjyDe2MDMuHAm/amA/UKBsXGt52uox+G4kSEsGij8ywNQIBBEfVBk5w56+2BmcMUpMjh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94JQ9WTJT1Z9FJ7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"f86970dd0a40eb62\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FEFIgCGFwGEEEACq9fra9zYAv2W059hoRzXNavX94kiiRd4fJz6xeweTxmveHgts0zGw7siufHZ6wdAA1oX+Gar4Sq1lNdEm\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94JBHV30MAW81HT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"2ab89afe7a3b4902\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3OZNLsY0j6ZKlkgG9VzXCq+z4MnKVZTQVdzbcqFhlvWqsPEGlqCoyClDjG8wKgRptEjH5RyNBSh0Hc8fwDNH74Fr93fSPdxk\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94KN4WZWTP9CQ7K\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f23866d08af4e911\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"V4SUqdiiNepYGSpuCPqHjGtA4AL05EU+OGbsoFHy3IUJg7dtNmA1jNmQAHC8ZF6Vtnk03gN9eCoIFHc+2KXQ/OHlrp3jao7A\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94QZ0SSB3SD7JA2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestCanceledWrite/EmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0gA2U/QQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bf19282550870109\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jp3epgd+CjNVuIxhqa4FPejhkvAapcjdrQ7oAoNzFIXKLrkqpn/TCZpPHJPOsPA9dBGuaTFLKpU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94QVR62D9EWCH12\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+Ujk0UVZSNjJEOUVXQ0gxMjwvUmVxdWVzdElkPjxIb3N0SWQ+anAzZXBnZCtDak5WdUl4aHFhNEZQZWpoa3ZBYXBjamRyUTdvQW9OekZJWEtMcmtxcG4vVENacFBISlBPc1BBOWRCR3VhVEZMS3BVPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"bdc77e0cd849527f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xoQMiw8DASGP+WaPHZoI8/cT3aGAD7uzbIbMpvboj3XDZw5RFOyulQgVhsckT4uFaHWdWtSK5ds=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94G7P0TXVK5QNRV\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+Ujk0RzdQMFRYVks1UU5SVjwvUmVxdWVzdElkPjxIb3N0SWQ+eG9RTWl3OERBU0dQK1dhUEhab0k4L2NUM2FHQUQ3dXpiSWJNcHZib2ozWERadzVSRk95dWxRZ1Zoc2NrVDR1RmFIV2RXdFNLNWRzPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestCanceledWrite/NonEmptyContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0gEkeSZAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cbdaa23d106a0526\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BATjttzP2hjGaj2CFjTU9+VA68BwYh/dQjeM1wuAySoEAiFH3rVpsK8GyuuSn89miKvrPfFcUcA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PCVFR3ZVZBC1N\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+Ujk0UENWRlIzWlZaQkMxTjwvUmVxdWVzdElkPjxIb3N0SWQ+QkFUanR0elAyaGpHYWoyQ0ZqVFU5K1ZBNjhCd1loL2RRamVNMXd1QXlTb0VBaUZIM3JWcHNLOEd5dXVTbjg5bWlLdnJQZkZjVWNBPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"dc279e064c2bdc2a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-canceled-write?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IIlWBAwX24R/bP8umkp9Jpt0ei8z2aDcj41ZZdT2ZfwGQOi0NvCbsyKn2pSSu0VWIGOoFMi3X30=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94HER5PSEBWB7HZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1jYW5jZWxlZC13cml0ZTwvS2V5PjxSZXF1ZXN0SWQ+Ujk0SEVSNVBTRUJXQjdIWjwvUmVxdWVzdElkPjxIb3N0SWQ+SUlsV0JBd1gyNFIvYlA4dW1rcDlKcHQwZWk4ejJhRGNqNDFaWmRUMlpmd0dRT2kwTnZDYnN5S24ycFNTdTBWV0lHT29GTWkzWDMwPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestConcurrentWriteAndRead.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0gLFX6xwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"33f43e0a6d0f262b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"65n9CjdrJkNQEaG4fFWMgQ==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6Rzd0M0tBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"G7t3KA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iPTLrJKR2R5WLxyNigm+prSeQco8TZEU9It2ggF3JXyBrJbN/Gtgg8rBehqcIVkJ7PeCfluW8GI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94GG4JM4F6CA875\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e3891c0c53d3dc90\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"kfsiuKRZ73D7CzauKodAhg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6dVRMY21nPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"uTLcmg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VA8p9sWldvk+7y8+E6SdB9eJF7BTNXaF3+vtGVUxpWxzyvHl3fzK9NZcItzjYfXevijRA1ZJuk0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94K75TYFFW9PVFT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"25aabdb96fff64f9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"NlFDUFM0TpF1S+MXE1PxDg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6SmZocTNBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"Jfhq3A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"lIoN74laKCTmS921j/qYv0OWDq3y3H+jogm3XBh/n496toBMpcix4Z20fjQkbuEkG+D5tD/E1yI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PWK9RBE0KSY45\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"63261116584c681c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"2w9S4aRqKABHoeAhyiAJMA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6eG9SZE1BPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xoRdMA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bAupgKF99+QbqIuVj4p36D2Y4Cz403QCBx3McNs3bDFVBRrsZZokqV1ifFwAGBFMfsgG7PVOGIA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PCAQEVT8ZSKXG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"392b5ba15040a999\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"Yg8LZ6kff3QVG8W+dFtxEA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6eHh3QUVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xxwAEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Lt1bGSpEoaXvDDb97xsgY/6uZjeZCtF2Sfd+Fm/kBAT53vL76UOtB4LFu4cXRu4ojuLd9CMDDlc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94QJAGTAARZ3RSD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c5cd8012fa71c4eb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"7tBPOyKIo0omYOmbN3Ht7w==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6R2lNcUNRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"GiMqCQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jPTReZDe4X6GNSjdRA2x/Kj1Lm6cgIgxvn/aIHRiJ81qMhRJKS2WKQNzl1diT0rUAbyIJc7rsnw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94VDVAZ8K6P8H0D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"47a94a739fb15f3f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"AbDmWR96f1VIFnW4JQ5/SA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6bWNnU3RRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"mcgStQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TbnW6P+pSwEM7NJwGxDcNLlwbIHEc4mySmkY4t5hZVT7lPIl1IiOmOi7/187Kcu4CpopnuVaAIpjoUTGe+kAJ5fH6T8Qqh09\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94KE0VP1VBX1ZYD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4d0a671bbe504c91\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"32eeXsj7ZyhCl0o20wPQ/w==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KEREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6NW42VEh3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5n6THw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Xbbirxu9mGyaDu9kjpEYvc3NPOqPSPmCcp4YloIbfNsQ7owsx0/ErW65hHURRI731jN+Ye+QGq2d3CR7HsLT3sdsoUrbse55\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94KXSGQDE561N5D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bdbd8c6586fced2b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"VkGQ+3LJseHAFopbb+BYvg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6QlFLazh3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"BQKk8w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EonuNpmbd2HxCMSxj/cWPXJjIWFJgiaXkUacFIHXK/jTDPveKFNQOrTZ/f6y7jie7cFBxsZ+Wi2khhstQMQExGw5oLdi0r+T\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94P0R9F4PF1SCE6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6dda276869dba171\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"ZUHn/UhoC5tg7AVev6McAg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6NStiT1BnPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5+bOPg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jF0yhobWva/1HgODbZqoxeS8tMTowHiiq5vPb3TX7wL7u82Mn03EjNgN84lIVUS3o0bsJ+I6Bei4Ne0yFI1hY1uh5T97SzUB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94K4KMN2FA4G3QT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0a057dc99f746698\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"AXKK1JVcZ791KxchIXYNNg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6WkEzMmdnPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ZA32gg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zPsUqrt9GwReG8tWAryBS17MTe6Azp/6FOpfUeG5wtiCodzyGYLODYNt9ZOg4RwgLoOnKiaKYYr/Qi4b1YXGsRlZYvs/64Va\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94QF4AGWM5TX1QT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d921abebc4a0c079\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"lko2uDqoJrgEyYNnvcJ6vw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6cGhOU1lBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"phNSYA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uTIw4gbVhaJYgkLoquguiibiX7GKpoU2MI7iZkmY4q3zxJN+u5mrl9pbajkSLZg27l3/J7f9fhduuDQpCR9VK2LikEg+RVab\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94W1M2QH3S3B0K6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc2af4dcf9d8d94b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"H06jyF3ZsJDOcwyB5gg+zw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6aHVtY1R3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"humcTw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PkaqRV9XTa4X+IVOTxzwBsnJo1XUULLcTyHHHNJMtE4yBCJ2oHmjDykRnLDZeChNE9rLt72QvaKRgI4jord0/clme8beQjMg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94TGQQBT5Q9T5HX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8bfdc9b8244497c3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"qPZPE0uAGBNKE6LhEQTA8Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UlBjNHJRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RPc4rQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pbfkhzEhY0+PUnC7LvHOOc2Dmoad8qVYGqS9i7x5Q+CsAm7t4ryCfGYMNw1ix0qYQlR212QxApSsO4OC3JHNtHpJqzIhlJFQ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94H9VASECTDWXZW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0b2e494311f336b6\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"wZvI1MtOgANGQD0gzZ4NUg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6TzBHNUJ3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"O0G5Bw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jbY9SOzuE/UxuLXEl+gcJahPzfp6aYc+OXxq2e6WkaMkrKVc1QrJtcQE62lYyz8NoHuAIsn18aiqqu0c3qmf5/DViQpX7zBc\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94WV1NYW179C7V2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2e8ebb652008dad4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"qHqy3TOCPLWABZ/YTEeiAg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6MkQyTzZ3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"2D2O6w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"slqtsryPh2Fz0KQ3lhsIyJQfIdCbB7EcFIG/icmW56Ii9K9o8f0q5cnqANvNbALTf9RS9CtXfmymM/OirVupvQJ7xuUSISal\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94XRRXH3WCAZC7T\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9ffa418379f52a4c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"SsTzFZ3m7R1NrIc42UKW+Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTAwMA0KDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6K01kQXhBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"+MdAxA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1jOdvUEvDACo6OUhyWN/RmX8sy05SFzMey/UG8eWmYRhXXJodbuLLRAZTdSE021ehBk3Wt70GlPZqtLxUx3PvqYRzcxIi7Ri\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94ZW3BME86W39A2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c465911e220fd0be\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"YfRaKQkG0Wv1UeeMsD1f+Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6ZXl4NGVBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eyx4eA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SyBVweOkAWtjavXwkDF04NSGuMbhCtPZ5rkgFHbRfG7rC1DgCrtFX6l/1W8n7SfSpRny5fkzovCGEDBJhMqgBwy/28e8zWLg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94M3BB0WSY9XKC8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8afc85a3201b0064\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"kbuiTp5JEugjwAkgztPoXA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6VzlhMlZ3PT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"W9a2Vw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZqTC2y/rfIo+AFhBvhFXDtfZa2oJAZgEit+NaCSJgeVNOiWMEnc7jC+E925n0/sFXrmla6ykwTQ0l0QrbPues+z39m9qeUxP\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94RFDRCX9PJH7EV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"827c28df42e5d3c2\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"4140\"\n          ],\n          \"Content-Md5\": [\n            \"qo85ln3rRBpudISWOUWpYA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"4096\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/octet-stream\",\n        \"BodyParts\": [\n          \"MTAwMA0KAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6T3Rua0pnPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OtnkJg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gITttwxlyiWFTLq0l+8Nx/N0Ug2p3mCsZlgQQn8EGHbnBodVaWSsRnJYA310XY2bffm3LpGrM/0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94VJFMC9XP5X06Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f7c12fe33c34469c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xoRdMA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"i7IK3o0YazVUYQHLEmYjP4cFhFqr3b1PwMvFh8OA2MJl4qmdLiGcYdlC+3qL0NzHnfvSw0pTEKE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94SZ8GMSF4TKJRY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEw==\"\n      }\n    },\n    {\n      \"ID\": \"6202bbbad837c39d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"Jfhq3A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aODa5ReVH44Fy/UfyqGd3oHrWiJm3FCCVNLZEWjXiUHXR8n8GgwNBNX9/7fyp/LticSpnOMzZfw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94R119Y5QKEBJ99\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg==\"\n      }\n    },\n    {\n      \"ID\": \"24819150e5bcbb42\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RPc4rQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"d+bQN5sUAKBLE65VWpp5pl1Iakzxp0vdOLYJxUDPNq0wdBmXplmN29ICTOSv/XQmAm7iYhbdHmU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94TNA2TH7WR025Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA==\"\n      }\n    },\n    {\n      \"ID\": \"e73a9c04802b0b11\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5n6THw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jO5acXeDN89b+eCIPa0WdgHX4Y8L6LDjanv/NTDbFXv9YeXqY/X8wF0tyqjeqEQ1lb3KQN0oXtc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94TKYWJMVR7V7KT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREQ==\"\n      }\n    },\n    {\n      \"ID\": \"228044239c25cd22\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"2D2O6w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cAJJjsZikVJEYZomT/RPdjq+IzKTyPsVDJXG5TdFQiWmoTBYAMBDGrFcOtuKezv3hmFbI13+Z/E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PFVVM6E0TTSAD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"Dw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw==\"\n      }\n    },\n    {\n      \"ID\": \"53b42fd3ea88d9ec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"W9a2Vw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uGh4xouwrvdowwFrnXc3bRzxkzg+aVsYrAXOFqhyrxSH0VQCN12Ry+JBGKoJCymRID9cKgRZuVk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94N4XZJTGTTMM0M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw==\"\n      }\n    },\n    {\n      \"ID\": \"0b81829e1f2df627\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"+MdAxA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oMPez2aFS0RQ8zmaEu4Gz4nAhzHxiscQmzNvUggXNgthpz+q4MTUZsGb9gsJrrM1Krz5tIhPSkM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94T3AFRDA60V11F\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ==\"\n      }\n    },\n    {\n      \"ID\": \"7bdbdcbad85f41cf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"phNSYA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0lY6eQxbLhU70hxnIojusvkiCw62A8pXHLiBmjQBLAyWYWSr1oUKlx9MBcn/g7YtwoxD3gCyRDY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PNEF8GGYVA7VR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBg==\"\n      }\n    },\n    {\n      \"ID\": \"a32046cece6e71fc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"xxwAEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xB62uCBmItQT4J9A13ejhVp+LvbxOO180REouGiFgKORwSLtSGaV+zHKUDCA4RRCOT7rfKhWZks=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94Q957WGF9ZQQP5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"\n      }\n    },\n    {\n      \"ID\": \"9b901bfa8d17afc4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"G7t3KA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xHFFIqt4i6g+qlitvHZdvm4zcnrWR85B7n/PyUcH9PyLgUMruCT+MSaEWZtljnolMKPsxNmcrvM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94V1F1Z8N0R5B9H\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEA==\"\n      }\n    },\n    {\n      \"ID\": \"04eb6c4119a88f97\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ZA32gg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tYkyP5re1g+XRRq6ozwrTX6QsBWRuAoR/GD/CDmZiOFGJQoYhr2tuZL2j050GCo606mqStlEwOA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94P77CE6DED4NE5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==\"\n      }\n    },\n    {\n      \"ID\": \"c0aca020d686a624\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"mcgStQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iyeXNjQPH8tBhhy7p2R7k3LdoltyQnF5Jw+Ya4gOEPua5zCO0y+01+GPOD0u4hejjqBdm/S6zlc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94G0YR3AX3Z6M5V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw==\"\n      }\n    },\n    {\n      \"ID\": \"5e955537ce18f26d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"O0G5Bw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4Ah8xb3uZsvaCBTrPeH0UO1Ar6bQ3FL9bMqtBJkF5TSEz8fUw8dKCdjfglymyTWSKM8aFo4Fd4Y=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94V5S2ABJQ751KX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"EhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEg==\"\n      }\n    },\n    {\n      \"ID\": \"661a4d56da0c9105\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"5+bOPg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JgsWEKdzzpavLEI2Jl/Y1XNLNHtDjHPDf/bPrIf/tr14OZrHAywctx3ZnAah01V2sQ/tw/TThbg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94QMAR9F43H1E0S\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg==\"\n      }\n    },\n    {\n      \"ID\": \"847379375351f47d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OtnkJg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"H2wg054zVMtrTqEG5mUPbfC6tq8AF654rDBOiuwEmsb1QyoE1OLMsp/J8gJH7WHeiNxMu60oUkI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PGZ46PRB9E7A0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ==\"\n      }\n    },\n    {\n      \"ID\": \"2b0ec7230f40d9fe\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"humcTw==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4Nnyv/NJgud/hmLwjhNDk98phiccLh6L8YLKhx0YIR+2kHl8BdlGy2MFLhSjKFOpvp1Avm/Jx9o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94W3DRG3QF342SP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA==\"\n      }\n    },\n    {\n      \"ID\": \"6d95a7d292f77298\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"GiMqCQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dkUJKqXC9vfae7ozrv15E4eVO5pyi9ATryg8tmwe6KILk4nEJABacMrNdgCzzayn2UIR4Gc3e6Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94SJK86KT9H7YC1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw==\"\n      }\n    },\n    {\n      \"ID\": \"cbeaea3b0b077483\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"BQKk8w==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PIMOYLd2hrmHuyK/pODnOglKx9Gf47Tvau/A69D96IHwBP9FW266ZguFaBU1V8b4A9BdJMKyw/o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94TFAETJ2CGVNCX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA==\"\n      }\n    },\n    {\n      \"ID\": \"385c8ed3642e23c3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"uTLcmg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iGhmLe/IbU/cUKJoskgyFLDnhLg1kvfDCCak2z6yc8CzPam6NJj/w83LBjBOEfo+c+MqjMmkPOM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94WSDXG3YKXQ8EM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ==\"\n      }\n    },\n    {\n      \"ID\": \"2b8c3139f156e34f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eyx4eA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qHsmkzqlsf8imwHVWzi+iPc2gx1vKgKiB+echupVVZ3j+6YPGvBXSgCp4Mc/ECIpHn+IA2H8+/s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94PN934RHHSK443\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ==\"\n      }\n    },\n    {\n      \"ID\": \"1994e2de64ac031d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"db0f52e1a46a280047a1e021ca200930\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"W0MWpHf8AIViG8ZT3F77I0Xssr35QxJn2uTf1rLAx9Hddvk7f6mkKL/e5civ28aS7t/NHdrAP+o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1J3BYCYRW7C86R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"32666e82c9bd27f9\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key19?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9T3+x9iVfS56qRLsoQvApO5zwOi+9YxuDQaSoa3kjC0MhL4Px1p8mM5IJ2h0dBAbFXmPYr+Sldg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1KY9SDWSCH6EKC\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8b5b9513c487c49e\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"c19bc8d4cb4e800346403d20cd9e0d52\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Su+7yXSSg1m4dA0ENO7MDCkgPJ4dZ+m4yxp3owFdjPCQwKc8JeBNrm5WHrN5+7H9e0vUYNQMmN0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1TWCHCXFS6MWWX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3493db76246792b2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key18?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Tn50bw2Hv4i1E9H/xpEwIJniVfH2UOnbgq0aH5k7eCbJJB9zb24zLYl3x2V0jOiIvzYZc2VKggw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1MZYKQTGWERCN0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"22b38b9a03390b27\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"df679e5ec8fb672842974a36d303d0ff\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"f7+EELTyh3tH818ZMtcQbhDHJE+S2ebrc45KyjtxMG3KiJiTMnuagtC7QFoXc8Zb50DbTRaPbS0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1JRN7RSTN6N7E6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c58d2191a3481dd7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key17?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7Zqk/uXsSfAn8/ivLYV85L5GVGsfyuDKZrzM7ol0eHJu/xBX18Vt4Vli0/9wygU5ytHJRQlG8FU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1KERW4X3P8CYA3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c4f009dd3a3e01fa\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eb99fd0a376b26435011a1b87c558c81\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VxMyE9Fr0p6cHQ12pBaGuzqoY5hIMEWVeAXJOX9yNdorYvIVoi/Bhudrpp8MSdLrAuwx9dzKq7E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1XV2WVD1T932CR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6b508f454997a077\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key16?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jsn/77sWHAKOXqE7Nvh6YCs+N5XlfesQ9O+XXzEN6sngfY1tGjct05tyjDabJ3UgORmok1VHr80=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1XQTY1B1RSEX8M\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6c4dcdd984cd09aa\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a87ab2dd33823cb580059fd84c47a202\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iXnB99ObOycLCrGT1RnMXFoaQ4eP6hmgF/r3HDFzlzBl3g1nEVri3xQNoAOp1Nj64C1konpRGPk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1M28EXND4JWVTD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c1737c25188da75c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key15?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PznxIsKqRons/kvYqUX4XoXtsSkrIMrp9+fvEXdHktivSHspfqnqbbcXqVGY2nbLyLQxFMPkvOU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1Z1DKCZWJNMKFS\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4e493e72ed71a711\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3651435053344e91754be3171353f10e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zLnLrJxeMLrEWdYIo3Xpp94V/0SuBZnBgoXFldkGkhDxNA1MNzNz8Zn+SqgQStDZw1JIGMOjViA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1HKT82EJ5W6FZF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"527e14e083e3bdab\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key14?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Jt+k3KGO+OezildQMhc/JIae8EZ9drWj3HtAAWZ6XeqmRoBKKy/AOa9VqJkvewOQ/eOG4c49qXI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1QHPNWNYZ459EB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b77b7097c0058f13\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"4ac4f3159de6ed1d4dac8738d94296f9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2htOMEG7pEZ41fHRt5iKEZi/ljycF1qYX9mR05Z3mTn8bYdfI2RheSVTvVPsQNRZOwO+sItOJ4I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1W9DYKT2JNZG1M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5516a3bb1d1b9928\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key13?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CRU57XlfMUAbH0ElK9QtXzJgJC4sqwBUdOFccfSIZpiwzxGk5Nu2Wxv7s8B5IK4b5fw1gjYgvwU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1V9F8C9PD64TXZ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d6b20eeb8aaac53e\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"564190fb72c9b1e1c0168a5b6fe058be\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"p3gZ4D92ialWl340McXXHzf+iLv7kjNtUeP/yAibwPMwxq1w98nFtKlV1k6riL6LfzqF35WKow0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1SPRM07B6AYYBJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bedb9e784c674313\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key12?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YX/8lB04l1vcOJsJImTKm2Upn7xGBQxxFmmkbufUxds+MfG5Ekvwp+fY/WilHwG1RdsYB1DS5xU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1X3T4QN87Q7HNV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0964d110b4039196\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01b0e6591f7a7f55481675b8250e7f48\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uYP24wQhLr5QUEzZa4rRvhteOlf4Gmx+8v4vH5Hqpo89400YVnbBuxveY6nLi5oGAncOJOEO5V0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1ZC6NAQJ587A08\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"dae56eb9fae58362\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key11?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"68XxxKwj/rzZaOxc9HwlHrPeEpWEOramzvoN1h6NL9MrsczV7XY6i1jgGauOWxjWritI0T4aPd4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1JSV4KRPPF38PV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8e3cc90e195f5a6d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"01728ad4955c67bf752b172121760d36\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CQ4pcth7/4HcvsWARNlMHFhA9A7wf2C187Ncd9t1OWpoK5LAZuuXbUEjVMZzffU42ckMJsasy7g=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1TYG6MS4RGVDGW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c05e97846a311fdb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key10?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bgbhuQ9wvDBYD4uXwdSSnz1etT1ebHvAtUDJR+aXT3we7ltRMqFD0J4GQcMo+WyD7yfvzXeOqsU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1QNV7GY28R79AB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8e232a39f7a20329\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91fb22b8a459ef70fb0b36ae2a874086\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nRZ8mehImXaq/I5i0EgplnmIrd4a7MfnBSnpCo0P4zjkKVu8dEfOaP/3fQ0IL8NuAk3wZanr67I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1M4XM68Z2CP7FS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c76e1f9f23007b1a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key9?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/1r8M0y9nMagqwgLo2hsi/C9yhjcB1NOm4sxhDEXBcB5gaNqVzr06m2L+5w1VQ0PEIlWnEgXXgU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1NYV6WJHDDWK90\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1280f43ad0ffbd5c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a8f64f134b8018134a13a2e11104c0f1\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SqjmPXSQT6NXabyY1jJDBDkQGRma4XeuJlKf1i3HZARvo/i1fWTe282MyZP8S5u2ZswD787Hzj4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1XWK1XM0GTB1EB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fbacc5d56911480b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key8?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Yup3vf0P/xCoX+SL2gSxLUrsWxKE65i5UbyQiAahAosRr5GZHb1/O8ALF0YtZLlKVah37pWjg88=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1RWZZZWTF6EW2A\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c487653bda795aed\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"91bba24e9e4912e823c00920ced3e85c\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qNkmAQYUBQUQPv3j6ynvv6Wsy2XRqP6862rTNdQkG8gkv4XQph7cEy/sm7E8oC1bjNRH5J1RKrE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SE1S1K1GH9EQM3HF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"04d2342e3659f43b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key7?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"88rO+HN02eKOk8l/zgCN3wTai/6ASRR/EHeO7CX7elUoNy1iyqdIIxlW1hXQd8gHBP1fJDe3O0w=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF4TMZJK9WJTTZV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0ce9579848dfb638\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"964a36b83aa826b804c98367bdc27abf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pq37jibW50FViU62T5msFbjp2xKXpqGPJvx+9CkbahMentbg704I4ai3o2Nvp4pcwoc9L+OI/pk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFA4Q508WJAZPMX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1ba5bdd847bb326a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key6?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3PWpugy/n+RDsUlND62nCFJumQcr8CkgOaQx80X7ooxf+a7lIT5Ujm8zFrwiP7xR7skMHEIbcFI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFBHN0HQ87BX15X\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"12bd8ebc8b432cc6\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"61f45a290906d16bf551e78cb03d5ff9\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"17hhfA7dh1p6f+ctasHaXS+0Q/VZzToJKl7bMrvk3aLLDzZBUPDtDZzWR8k+sneky1L7GSYNgxQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF5ZN2ZYHVEPNV4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"dd66f71d4e458072\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key5?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bXJkqM/ddjyYFsl4K7B333monUDBLNwH3AoSTcYKUNV2z/adoiVOS0kYlbMQ3Uu2xizw9ENnepI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF0YTF7CVHJZRJH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4546e13257d33aed\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1f4ea3c85dd9b090ce730c81e6083ecf\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nt9WMEiUb4ZdKY+Rk1Ugx4mgBfENLPv4Tqcb/v9/iyIIyFrDaUtlcXQYdXrr/proLJP8a5eDbc0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF74Q6W0Y2HH91M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"87b4fdf25cce5c28\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key4?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6fAr8g1t9IpAwt7GeauLKt5AQt2BT1qKgvYwRpCMD6b9dYLcCbp1vlzGfK5wm9aJguq2g8TwBfM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF4FA95TCWWPNK9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"054104abd8815fe9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"eed04f3b2288a34a2660e99b3771edef\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Mx6+ohohi9F6jAB0KiN2kejOW9dne+E27fjVP8ZAz5WjQcjbPxTvI3vQSXiFJ8NeT8ouKq42bGk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFA3N97TWSF06A1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c1451d887959f3c0\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key3?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"w3Js9gEHWnSnV4j1KQBhpspfTJYGvgRJrFobVWRUgERJ1kfyOML5jTXb5JNc0ee5kWkvOSO8lqA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF0X3YK5D9FJTJ7\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"865bd4b39b090372\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"6541e7fd48680b9b60ec055ebfa31c02\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"C+NJOtBCuzRO+EWCrpAeLvho1soXjZdbNb312Q1uq1ukdGv/k+NmXLNB7768INVu58gpuMXVNGQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF24WF7CD89NH3Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0e0470ac8b67bf02\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key2?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BHdr4yCgpxfnBFMreZY5K8i0YnIv//2sBsHs3+Bto+v7O33lYfD7htpgSQLM3uj/30eoi0y7/tQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF7AEFHHRAKYV4Y\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1d3c2dfae5665bdc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"aa8f39967deb441a6e7484963945a960\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"M09L6EY4juK3igBWQH+aMMSrbSbeUkNmax9rcdggIVR1sMWGTamjauowG1kArkvDhSnAa9On3VQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF8XQWRT6K2Y5YG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"07f26e9c57ec9894\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key1?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WNzXawh/rC70PxIAGCyWL8gmM9U/jM3SPcd4iwHrZfiCAuNptOu1f77u6IVOYBaxDDHc9jTs3jk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFDJ7NGFE9VTWQT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2b6e4b346bae4218\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"4096\"\n          ],\n          \"Content-Type\": [\n            \"application/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"620f0b67a91f7f74151bc5be745b7110\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wxhicM9ypvHs+2FOVp9UN3AbeFoy70XUAOeamOp+94H1GiAcTVFpoZVpbG6592rVT1SRB70J+Qw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFFK262GMWZ7R18\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"21d640bbae3b2caa\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key0?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zmKwjSqKhk2jJ1XIuy7nzId17N1U4XkhFF3Yy7rtcJVLcz+fpSS5ZIz3GQheFPF8SFvMY1rxUug=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFC91HG9CXC0WW5\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestCopy/NonExistentSourceFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0kG8A5AQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bc115eb3c90bdc6c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fdoes-not-exist\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"enkt2LtayBIv5f3j92Yq043VQR9OXwVhjoyQ1tO9KMGdLLRf4Hx/z6+cY6j5pjSRzi2i6mG96ps=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2MGFRWNXTTXXBD\"\n          ]\n        },\n        \"Body\": \"PEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5kb2VzLW5vdC1leGlzdDwvS2V5PjxSZXF1ZXN0SWQ+OFYyTUdGUldOWFRUWFhCRDwvUmVxdWVzdElkPjxIb3N0SWQ+ZW5rdDJMdGF5Qkl2NWYzajkyWXEwNDNWUVI5T1h3Vmhqb3lRMXRPOUtNR2RMTFJmNEh4L3o2K2NZNmo1cGpTUnppMmk2bUc5NnBzPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestCopy/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0kIghqrgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9dd3eeafd4691022\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-src?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\",\n            \"aws-chunked\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"sQqNsWTgdUEFt6mb5y4/5Q==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KSGVsbG8gV29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOlNoZXhWZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ShexVg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EWVUX0ayuqGOmPiCaPuGcJf3vuFniizhTpijd5QAU3xL1SBhQ6hobwZDetZVeGNDsVVQnd3xrXy6p251LoFC9S5/2bt1SDvs\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2VY0HFVX4XXJ9G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f7af0de903f7922b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-src\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wovY9wIsqdgiRpaXtc9MJL36at3Oye+hFGpQ8rYOEnXvlczaK02Nw9Rm+JM/HUTE1E1FNNXrhGKKL66Of/tP0lWuLF8yVBQB\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2KB0K8EBQ8Z3AV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc489101eac05e32\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Md5\": [\n            \"oPqafXJA1cXuvXCJlDDFlw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"10\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"YQ0KY2xvYmJlciBtZQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6ZHZHeXlBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"a0fa9a7d7240d5c5eebd70899430c597\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"dvGyyA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eC5JqpOW2cSD6oobka+gQ8OAUHqLM+eyGeazh16ssG0UJGYF2fxEpd3zz2kqAIOvoNHpp6L6X+WjGF4D1AVAFvx9Cnocq+8A\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2S9W59CCJXYVQH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ad8dcf4417585d55\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fblob-for-copying-src\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"61L/KfBUYjXCS+CH30KoUVlXnm9lAd8TCyx2wgt+eKgWUc28XkFfg8DjOduAaWeqO5bk9RnmEot8udhvbAH1roQwpuRTbKbr\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2SPXMR17V2MQ9G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjM3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iYjEwYThkYjE2NGUwNzU0MTA1YjdhOTliZTcyZTNmZTUiPC9FVGFnPjxDaGVja3N1bUNSQzMyPlNoZXhWZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"9f2628bf58a8ac7e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ShexVg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/4pIPHLjYibqh4vnXsP1saD/9ro7DjgoRVpFwtdZfKzGq4lNglE8vy5zpsajM43TMDUs7Til+0TryfqT6h9nQV/X6GEYu3ly\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2Z52MR1Y9G2CA6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"6b3630f3273dd14a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fLiufBg43jNSZnas8e2NAdsth8OceYih7hqEUQTeKB4j6sN8SvCszB7eb2sM3KrCmoaValJot75vNHJlQHzBDxGzOPPzXPSc\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2G7FTRKSF1XAP6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"22b3be811df5b501\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fblob-for-copying-src\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BGxxvq7+bzTbhW9uIS2CBEVQNSC0Jfrbo/L9vZrhxHd1msnGSUXKQAnA+mkB8pTR8oTZIiHcl9hs9ClxUNrAC2zRBgxdwhkg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2VFAA3FCKZX4J2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjM3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iYjEwYThkYjE2NGUwNzU0MTA1YjdhOTliZTcyZTNmZTUiPC9FVGFnPjxDaGVja3N1bUNSQzMyPlNoZXhWZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"8a8a2652efb7dde1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"ShexVg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MsWdX9BgzrP98UUbv7z6IaW6WFTu92sDSNgp5qP+2Cc90jw1sKbiZWRk4AAcKG0M7XEpPsQ+1CZizdZ6CZMzrOuF4mAwXDsA\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VZNQ40QM2DKJ9D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"SGVsbG8gV29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"842d0a3893194e08\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-copying-dest-exists\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Disposition\": [\n            \"inline\"\n          ],\n          \"Content-Encoding\": [\n            \"identity\"\n          ],\n          \"Content-Language\": [\n            \"en\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"b10a8db164e0754105b7a99be72e3fe5\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mcmm+Leef9rQL5kPp6CPy0yow5z/dN6KRK/mnHBwoQnHRVtDp496e4GE/jWrM1VZqTr7ySDzS/jjlQcMj38Sm8MiPzWIns+Q\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VQTBKWEGT962KV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestDelete/NonExistentFails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0lA5k/BAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"87a72277ae2ec7be\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/does-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dHnEzapT4AQnYRm8aRf726dnaiJxV4/Qjq2IU8u8AXVI7jaDSbxfwHbGnAOwJF4FXOV7nd/zHOA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VN2WCS434345A9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestDelete/Works.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0lD4XJcgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2f5fb7a80c1f2b3b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"PiWWCnnbxptnTNTsZ6csYg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KSGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOmk5YWVVZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3e25960a79dbc69b674cd4ec67a72c62\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"i9aeUg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8REgOjydqSCGyx5qpG+Xl47su34MZaFdbr4BLl99kKHOeC01VG9mfTAtV+aFIiUc3NMScq2NEPI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VVT0TY2CT3JSTA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9340869d16bc22c3\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3e25960a79dbc69b674cd4ec67a72c62\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8oeue6GP3JF8/mXIU9ZjNT7EorNMuyKeee8guVcQ4CihN4WFtXYsUHoxFpi95xlFSLWXIfW5ZVE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VY60F29N5AWG3Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ae90f60e8686340a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1eJxU4RKsRD4fA9vNf5o+4FKF/8MclqkkMaJye3OsxBokdIPL8GlLFiw1r9Xrkhwc+qgo8SV7t8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VRYWT7SN9N8FVJ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c64ac4867f5bbd60\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wC3gs7LZmsbUNnNfQS0+LV1hzw66QpGtYkC1qiNNEGaPd0CRvtk/dp+hOfd7aDzy3ffvBMn9Im4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VSCAVK1SHX5RQM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1kZWxldGluZzwvS2V5PjxSZXF1ZXN0SWQ+RzNWU0NBVksxU0hYNVJRTTwvUmVxdWVzdElkPjxIb3N0SWQ+d0MzZ3M3TFptc2JVTm5OZlFTMCtMVjFoenc2NlFwR3RZa0MxcWlOTkVHYVBkMENSdnRrL2RwK2hPZmQ3YUR6eTNmZnZCTW45SW00PTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"20045fe7d1fba10b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-deleting\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gaEtBx7mNfhcmB8wPzbKEqyFSEnP40/UlyBgi+N7csc6gLJni7Rbh97aHjwZLUxKlk7tQXDM4bk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VR82B0BNR15N28\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestDirsWithCharactersBeforeDelimiter.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0ZGy8lBgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"aa53ab8ec6b02e44\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/p9zzhbUvgXVB4/q79tSOxLJOE3zswnrQ/DkzEhgp9uZmmQkrtlu7UspguEnoGSli6kNtQOfenI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KGXA75VYMY6WVJ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS90ZXN0RmlsZTFkaXIxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyL3Rlc3RGaWxlMWRpcjI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtL3QuPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90L3QvdDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"e0719e1edd70dee1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=10\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MBYNo5fUAGesSH5gRQl85LYCdGWODEC8dYQHWy+MMDcGojpIWFPrzP4cuCC4JmC1z1yNEXasCR4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KQT6DX70RAD80M\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3Rlc3RGaWxlMTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"567dafc89ac52b83\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=9\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aOE7G4X6MKjuY+/NiGCX3RJEfJ/PhBDkkqSXPLW4WT0SMv6jGtAQLcmJ3H1zRaIp5zzgwWJbsGg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KNEE216FCJ0SK4\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz45PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"6c489038e1108ada\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=8\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jqaOWUgo7k3QWEsWqPHtmaMN4X0oajVzFEU1q0Ayo76ovn+uNVmj6tSIchG/Oj6CcVjMXRXfFrg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KPQJRYRRKJMCXZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz44PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"640e311ae9dad041\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=7\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"T64jUoCrZ1h0GXQDidCeHCz9ER6t9MCu/JzaOQPA4BQmao/oibBGh+/u6o+oKqmxd48a2xVWgtY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KWDCW7MD5R9Y6Y\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz43PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"47cb82ad02f49f13\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=6\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gxTFou1nw+D6utVTjxkJjiF9ZLtd2YmmLcMQhLsLB3qhTUXz80+qE04CD6aNAQvXuZhLOnvahqA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KTZ3JJT17M3KSZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz42PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"c72f88346dd5f8ec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=5\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2GorQSJCvJ4jOBnC9yh8OmYxmlU7XY+vz0KcVbPnSEh96gG9P47dZyqUwVTu92Huj0S99ioq108=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KZMTMDE67TQWKZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTmV4dE1hcmtlcj48TWF4S2V5cz41PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"ec859c3cfa77c24c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Ft%2F\\u0026max-keys=5\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"N5AOaz+uBTaTOl3Lx04bSBlHOa7chVnqUTJkdns7ifd4JUbSuLUkSqNJ+cSQ1Si7WOa8KbBsYw0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KZJBKDB3F0Q3M6\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTWFya2VyPjxNYXhLZXlzPjU8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"6305518a756b7fd1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=4\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Wu8yOMX1x0Nc+wkFnvehaWc/1gGE6FY7UY04JYUG2VYOgB2yodSyWzdbNz6vrvgMUnaU/nOHa7M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KS8P81JR9YQZ1A\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L05leHRNYXJrZXI+PE1heEtleXM+NDwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoyMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"2c9b94b94bd7e987\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Ft-%2F\\u0026max-keys=4\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Tf8BCKCuFgVNAjV7iK7BohHLVVpMnswee3iPd+RNcEKrxOMn7zG9aqHnmWUonVkY3st+M8hy+rU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KRJRNG55Y72KP0\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L01hcmtlcj48TWF4S2V5cz40PC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"5fa679ceaf5a231a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=3\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"V/0bg5yrsCCeJXq+JvfDPsM/sPe8dToqa8EWc14yVJUe0tebgmxi20gXUu3g2jqMU0RXSZDG0Zc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KX1MRPTH3Y7Z8G\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLzwvTmV4dE1hcmtlcj48TWF4S2V5cz4zPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMi88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"05046632375ff074\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Fdir2%2F\\u0026max-keys=3\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eYWz98cuXn/037kf5fVXNIMlIsgQ0rafBhbv4eVZE+k4s7JG5aD4uu9uqbGNi2TWpgc33VuWMOo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KYQX5G1XBY8K9B\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLzwvTWFya2VyPjxNYXhLZXlzPjM8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"1dfe5f180c78939d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZvKp4HCe5uTuGaock3r4+AyLQYDmD3Jx2aktfyphTwqmNWiF7s13N+9VXCyAAmeDkWCpx3Nkgcc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PWSNQ0C86HNE6X\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTmV4dE1hcmtlcj48TWF4S2V5cz4yPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"c5e40469018878fb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Fdir1%2F\\u0026max-keys=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cdttayTx/cCr2UpSgbPB3aVKwQdB7pKwct39RkoqwhdMw6EnZH0zOmQ6T+QyDiwHqXf4Qi5Szbw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PG2FRPTFWSX8JM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmV4dE1hcmtlcj48TWF4S2V5cz4yPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdC0vPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"f3e3bcde56303da3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Ft-%2F\\u0026max-keys=2\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KKBR0vx2FOYakSMBl9YSfymqGpnFPGPo3fw80tzLKM4TPVZOK7zVWaD+oHHesO2QeiV21ip95/E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PJWJEP4THFA4JX\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L01hcmtlcj48TWF4S2V5cz4yPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvdGVzdEZpbGUxPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjIwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"0621349cd2699319\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xDsiuocKfdbfcZhAhqpj6MnuqMaEleQO6ng4lc7tkPUNpWCUpbGam08McEfjxM9eAqBZmR8dI40=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PQQY7SWSHX2D25\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9OZXh0TWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"f3055d7616ca1022\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Fd\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"viz/yeM4zyZ8BuZ37DGqonPFDywb3aZk27GyovJrcyLEC+CZHH571oP675B1hoWWDbWPJiPEqEg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PKRDFVVCN4QKJM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kPC9NYXJrZXI+PE5leHRNYXJrZXI+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L05leHRNYXJrZXI+PE1heEtleXM+MTwvTWF4S2V5cz48RGVsaW1pdGVyPi88L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvZGlyMS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"65d6253dbf96f723\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Fdir1%2F\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cGNE0TpERxZMdKvnFUPE8TnYQSvwyQsbbvvFFhphSJmTJhX9IGqCPsfD0c/DN/bBFRa5z2S1Y5A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PG5351HGVDF6TD\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIxLzwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9OZXh0TWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"a516f2dd303fe19a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Fdir2%2F\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"D5pZmvaYwDBWlOnWBs60r/tfNllYH6TjBoKdnmu5d8rBzYIy6HtC483VkcyPV2vSdvxZ0+juLFg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PKS7B41QCQ2C33\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci9kaXIyLzwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRpcnMtd2l0aC1jaGFycy1iZWZvcmUtZGVsaW1pdGVyL3QtLzwvTmV4dE1hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"5f3b7bb6b796120a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Ft-%2F\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"j0v3oTyr8q6DAyk8We9yPxOnUZlgQa2EXTzySdwrGRRm7c6N/S+VxmAW0Fer4h9fNsOVo7ur61I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PQ50JW90EV0ZVX\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LS88L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTmV4dE1hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"cd489e018c52ae88\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-dirs-with-chars-before-delimiter%2Ft%2F\\u0026max-keys=1\\u0026prefix=blob-for-dirs-with-chars-before-delimiter%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9ga9bFxhRA8jpKQd/GS45MWkRUNM3knsZzavP4lJoI1OziazjGm80n66HcCYy/o5+4rRq+d8Tq8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PMB9KDHY3ZP6VM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGlycy13aXRoLWNoYXJzLWJlZm9yZS1kZWxpbWl0ZXIvPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90LzwvTWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kaXJzLXdpdGgtY2hhcnMtYmVmb3JlLWRlbGltaXRlci90ZXN0RmlsZTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MjAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestIfNotExist.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0uORnuQAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"54d654acfce8bd6e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"If-None-Match\": [\n            \"*\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yukWpgvoDG4/A9KI3XgCENntg7uhQd3bIYniMiHsLMGetWtFNkQbPaOu52M5HHg/q/+16cvUnPg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCR99CMGJ44SVD1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"795b7e0789d1746b\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"If-None-Match\": [\n            \"*\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 412,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"e9tYlKmMkExsqUMUojvGI3AQL14We4m0qmq9k7Y/dNH9M+h+XRwVXfj1DxSpFjkVslK2/X+rIF4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCS927ZCZ4Y5RS4\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlByZWNvbmRpdGlvbkZhaWxlZDwvQ29kZT48TWVzc2FnZT5BdCBsZWFzdCBvbmUgb2YgdGhlIHByZS1jb25kaXRpb25zIHlvdSBzcGVjaWZpZWQgZGlkIG5vdCBob2xkPC9NZXNzYWdlPjxDb25kaXRpb24+SWYtTm9uZS1NYXRjaDwvQ29uZGl0aW9uPjxSZXF1ZXN0SWQ+RFJDUzkyN1pDWjRZNVJTNDwvUmVxdWVzdElkPjxIb3N0SWQ+ZTl0WWxLbU1rRXhzcVVNVW9qdkdJM0FRTDE0V2U0bTBxbXE5azdZL2ROSDlNK2grWFJ3VlhmajFEeFNwRmprVnNsSzIvWCtySUY0PTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"72405421fc3968fc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uOKjBOXsNmzzZcD+/2BYplRRZ+weLKHkYBbJ4VvAn3yTQdT569F7yWci5hJOvPnSgQo3tMu+xSc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCGKTBW3ZKG8KWX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc27dc5dae93a9b2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-if-not-exist?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:48 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tbR2M+l/cMmB/FrroNIr0xDZyDUVL93BO6XqjQ4P2zi6eSsOKUEXf6eLjf6Aep5DQBVJ7zPYD4k=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DRCQK7JCEA57GEYT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0tAyEwZQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d262d5b2e12b79cd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SSVLh0OHC/JElNdD6/6WBRwES9rO+VeEtD9jDrB12HwIr1qaDNtF0wgkYicYQ2fNyxQXauMyMfo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM8AZ386NTGPARF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c90235352ef39936\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PHwTmBf6RMYMPJshJExqY1PYJx5eCf9T+8uCf3PaDJsRtzrcLD9+MOYeljv0+xMtNXWJ87+fsoI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM645SD8T5RCWQ6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"227e69f6958d63ec\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"74pDgqHMRm4+2ndusrX0oxo9m6tq+PyhiyvifHl255cfJy7Q/tdEbXPJI/3+bb+JriFcoAYvujI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM2NDFMBART3VKX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e6441aad209dd9a0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yhpvw1DwyDhjnzE24Q0Tk3PyJ1VwfyPQWBAAn25hesXb/stfy6bM2PGIgTfN14I8SqDRm6TVUXw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM4A4P4D9WEFF1F\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"8b24379ebb9bfa4f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"02wVEoXJBXth5YF/fndUVRWky4Hmeocp0QKKVHqcq7zVf5SM3EbTo8W1q8UV7FA78ifJane1KqE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM4ZAWP7276SCS0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ2LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"c43516b0fe9ae9b3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TlOE6mav3A9PoAKk04BAhvtFXG44N8f5a68kvlBAEb61JWWkD+w4oVwfnJxNoD41EfL03tV12GQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM33ZPWCE0TJXX6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"3cb40305e8225adc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/ZJGDZjGpHx8jfjXl1IJq/FBH2BF9g51VT/iIIf67uDWVcJdTATTOwxfH0X/hlESfR3GeiMuhhI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQMEG6A6YHCR67GY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8035ab707726d9e9\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WlDvGI5XTXNHRgV8OStK2t9qyGhOUIRksMw5swJ2+V6yfYCoMOqpw47PWKnqY4mbBmjMFRynqQw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM9FRQ2VYCF0MZV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"596cb6dc68b0a586\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DupKfkSYwYDfgC3j18dmsxAU4BuCY4HQTYYmhO9BzJ79iWlKp7xSsHxo865TtukTfRydbuUDa6M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM4BKYRPZVXQ5GR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e6691e570613fe6f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x0____0x1____0x2____0x3____0x4____0x5____0x6____0x7____0x8____0x9____0xa____0xb____0xc____0xd____0xe____0xf__?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9ynwYx334rbuaaDwnJoxQ4UcPELCDovusOveOlIsunktTGNnthR6NShSKyinHg555ABxY7f/DXs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQMF0CF3JWGAJHG3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0oOtPiywAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c0d6e91eaafb3894\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qXph+YNSqFwpAfSY0MXlzdL0uL1GWciLT+Uvx5WP1nWSSAsOHV0ooe+RjN9GGoEhjR3N0k2z2Is=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEC2WWE6N83X8N6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9023b9850e203091\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xyn8mAGK4yTRxuHRnECRONBSn195LY6lErNiZvUHFl22a0IWTuC55smJYWNAVhYvahYcLL++P9I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE2YHZ8WC9KCZ0C\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"f9f7bc2d59a6f8b8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0XwcVHXSleiIoKkH9ElkQjRGFDWWlRwlnwxsBp/sVk7ymeCBuuCM2hRdnKZPpBrqvTTtvksRzyk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEF4K8TM6Y8F899\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"930d0c46987a8830\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wz6wELmxmCvHcN0h1l6JDUCT57G1MO0moUZbHzPa5S4XSXxOzaEuEtZ9a5jAxVo0Ag5fu4Kkn7I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEFVYK2ESGPST44\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"cf5bd6a076ac711a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RNwItvecDEEhMFNbD6CV7KHmIeq56HJlAlnFO2U4VQjh6B6Oz+daVvUvzGUK0f5+vpO5rSSDkqw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE1PR3P6ZDY8J7M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQyLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"cb438cb3eca1da65\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7AQheRO42k2TRvGl1nNDFrWa+JQ4897Cwm5GjqWQ2/XWJoiD8fdE/SsUuyH+UEMH2F3Qgh1MgTo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE5Z0THFYBAYATG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"05439020943136ca\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3T5CHidKb/iQhCbGW8TupyWhvjAGKaQTDLAcNpG89E6jFSbEPPjMS6B7xu/TFsxtOVRlUzZgIcQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE49CK092BERAAZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"36dbefb1dc3c541d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xLtktUIrsnDpUh5iy8pMqgiNF/5yU1DDWCt2EVU+EiNVX6VmEfnOIQzQjsVoDCmD3xgWPPdUF3s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEE1E8CBVNFJ2X3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b783d2295d560a34\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5cWRPz+LqxNnZTwlPosQQqYNUQc+9nVHWuYvhOo8e7xDY4uwnhAAs16+9p+jcCfqf3UtyYb/hlY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEE9SX96S6RCV25\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e83cf95bbea2dae3\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys__0x10____0x11____0x12____0x13____0x14____0x15____0x16____0x17____0x18____0x19____0x1a____0x1b____0x1c____0x1d____0x1e____0x1f__?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XQmJznpW2BbiqrboOglOrWB27f5OU+PxW5+fh9D9FBXpt9hB9ctY/4eGTKRqcCbble4e13b4ZFQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEFRZB690AG8JPV\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0rB+OhkQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5cd0f4a06c9e3cca\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Y/ZMyTKZfb0jep5iU3TdzzjxQmf2yVkUVlCWWvVhsZeokchmlXoeeXmh3LYEeGJHzBt0N6nR/D6+Lf3+db0a+LmXrqnJ677R\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTGV0RWWR72ABV7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9c5d12a8247efd7a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7vaUQqOfM5qBbQTVdTdeHDRWqIYbbkVWPeJfZ6Z6KzfsecA2Shk1PJqoJ0ewYw2eVgOcAk4zJfrs/1/kIXbnT9xgwIebp3tS\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTXYV5X9M1FQF0V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"edfafc04ad8b3e4d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"l5MZH7fE55vD3FEQrRtIDY3ZDJd+Bgw/PixL2gt8qyNRlHEvEROtYVm/n4vjTK8OzzLuRu93Yi2L6SCS4qGVtIjYCUnzTSJl\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTPV5VZH08V3G1X\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3f6fd469d1ca566d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gjzyFcFt9nRd97k6G8isvrqK4tOjGDYMRzCcjHALPEXQMS60rRRX3hbfqYoWgPY/mSR59EiE18D2HgAjPW+rB/E9Sk2/9+V5\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTVF0YPAD9V67BS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ff5354d6828c7cbe\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IihRWctDbsTZ+YHMiLHIzEjQVlByjyqi3oba0vG20dpP66KykvPMIUN1kzb64eyGCZvO8zGdZGAE4oyiBToDNb4sEQM9OrzD\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTZTHE7B73MVK5V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ0LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"e90c332be7bbbd54\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1tBL8EnFbj86+NP8vIzGGBEbCg2toq5XT1mJJhINw4dDNgr4Ni16Fas9ZfA+mqKvlB5Ju+C4CPInG3p/aKemhSCUZDuE6DcK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTM3JJNR17MQ8NA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ff262564715ab018\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"A4edYQU6o15VQxNm0zNxTwrLTyh4kxhRKoCvuP1D13sBVfqcDyit+g5yl6KS1KMiviBYWZZvLVxuJad/odFFB3r4ZZbdQTAt\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTSTQ1V3RX64ZWD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b6778161f50208b4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"t66IpQtrcbRG7wc+7yn81/+ASPLQiwUGO5wejYGKSbwf4TAVUb8Rkg9nZc0leCWr/OCOhfY3LbDRpFDDQ2+dSDw1xdbDFh1h\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTW37SB7EN7V2CB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1c28a4695935afe7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZRzEJc+qnuSpomzEDNXDwmEpHW28fCMI6IKTQhdNRCln3xSzm/fwWOzRu/qpvhF7HoLwr9NBAZBctS0jMrRr/H2/gNAGXCdH\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTGY79WWRFGA4KZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d0fa7c2c0c2d6ccd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-./?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mrrpvbILrCNamxeJfKPpDMIvpG3wbYOJT5tjPX3jLyAr8UoQX8U+zzvUZNHM+iAGXQPKI3K9gJ66lnMuz3UY2QQvpO9mRzDx\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTG188CERM4HZBJ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-4.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0rIygXvwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"626ee7cef82202ca\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Z72kbLKe5nJa5/zK20WaECII9VNsY9Fdq/qcrC4QhlJvbWgTmbC8L82AMF+dZeatFGJzUWCCqrOK6UP/M9VMWQXu0MNMxGwx\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTT23177DQT9QRE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d006ddd42e87d21c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"K9VINYRbqP9olXJvCOoDdrLYRtNuv+GhJIBDLWwand+lfdDxeW2tGyelYlOfbHzOoV2b8WG2ba0TN/mN47/sCO1xde+Unwrb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTHS8Q2PES6V10K\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4dcce36683f852c1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FPCZlL86khbrDmQ8cqsTX3OyjR1zklpacFEjckF/LFOvm9Of+VNHnSmHNjMigOzEKDF3gF1towL2uHzsn1iL7JkasgMEGlxw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTJ6MQ17S2KBQ1G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4c1772c87cb58a3d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8uHZpG9kXXgh18VTx2vG7hLjiOYve5LgrKyOElgEsLRl+OAHwn4GXXF8WuSvcWdVIv0EFYXzjCw0m0VxemSTgKZphIUm+OBn\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTTH69QP01ZZFYV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6fa9c297199ebd8a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%3A%3B%3C%3D%3E%3F\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NTR6jDH79k/UsC3bOY9gOCy5TxrKvyzgBnlqCjHoX1akjSu0HzqDXee98Ueva6AwRCv+vzAt6mrjCiHmc29YpNwv7P8F0kJM\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTTM7XBSR4B6ERN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ0LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"5daebb98ae170ffb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iywOAhkfGNDbvpGFv1NQy1jekH0jAk+KcUsg9QCq7zZJbNsjZVKvwl+9CYQQWfRHWh0PBEJbE76zwIDj6d8ELfGtzetDGCJq\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTSFDCS0Y9HD0Y6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a07bd93b1b399964\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"D8TZmlm2Rq7bPDub9zyqmIYcjxdLE5cyxGqt1LOsPI5l9F9/c2SwcXjjE68qbcZMkO0c+ergaRCxQAfgFhOfsIr07WP2roBa\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTNB1F506CD42VP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b64e83c2d94624db\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+BERCRxSZ+tSVrPoxtiiehIckDsCF6+UMw/zdSYJahZAfG99M7RvP5eYORWcPTOK0R1T1qwj0MMt8ZbkAZrImHE3wvp6l/wp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTJD98JGXHXMWQX\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e10f24400882e278\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HZfDTqGRyc5+ap0nHMxUaPEXGXF7DL6cO+zpor6Q91WzB3U4HJatPiwWDMEWh/WJrc3kK4ulU/9iapUPNQq8OSBhpWg9HbJK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX5CM3C8SHCY484\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3db5d2eb80b21857\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%3A%3B%3C%3D%3E%3F?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4gzBxmi9G16lBA/dS8UqXccr6wMa+f30nzFEYs8AVprDbHkgofWQJKsEGkAn0pGXpEph7OQfafGZ7Pn+U6kOTNxU9Kao6+Hw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX964BM78VQRRQJ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0tJjXHDwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"eedb93ff9e3ffc97\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nEkiZ4qNxrgiH0ZeX/IkLkOry3KdH6Rarzf/daSThrG4SYbPgwBcX7+IErc5CWZIsYG4IZzLPos=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM3E1ZMG4BHGGM0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3a4b91ad9c668e37\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9hEqM57mWSKVz+IA0oO+IDyFTUBoyUarzcmJV1S3UabJa7M3BQvWdiKzVfpqdvWYutVipztO9j0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQMBZ9VGMYWADF6G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"caee48e54d27c3d1\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kj1gT9X4kw54+SATIxzv/ElQqMwCC7GB4r9QCdEEZ47U/X1PDMf6tvgV5D9X2uDTKTx66m3gLQA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM1GQHAPE9GJCTQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"36f0eaf5f64f7770\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8FhveD+qHdZjTgBhKFRep7URqrnWXWc3QE1zfQIPx0rMR3sXgLrn7e8n/UrsN//Cdzl3xC3Y/vI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQMASK2SRD528HXG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"348f297eb540649d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%40\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nZIXSaiXbK0vmCw3fXUkSfI0g/CJtk2oNYChduiw+ii61KtdbnkSNwm5ju29so5VGy6AvPdRQQI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM391BDBEXT6SPB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ2LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"6f2479675f25ccc9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JRa16CLJxAGdGQv6717Ys5bt8CThAp3RU7mqy90JcvXTl0nRMnTVm8aJKb8LSED1ga90T5vfjDI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM3RZYAF5484DJV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"fb35fe4a7ccd09ea\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YQfv3bpJZY2AjeD2iuj5Bf0YITHBX3ykkXxD2rpZxZJAKkpHUUaPiQTg0ZrRCsUNZohZsVKb64E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM9YV7ZNXWAFGCE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"23222c5e51abb294\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bYNDeBKFPVAuba3uLuXk14CGvgDTBmio5uG6v/ioT4gtXNVXqm5p7OCIorVBGCTyDW3ThnybDoQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RHZGNTBRV2K7CT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d5704684087d68ba\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fWWiaWy9sEhjyFW74Kfoev4a0tGB9SoxwotslT4Uuabt0R5fVZWOV9qGjsg5r0IJE6zjcsDHVfc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RGCBXGDWTP0XER\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0cd844631089e06d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%40?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"puPZ8FcsdpyO0ju1fxJ4phjmX/29nQBg4o3MqrW7RXrAc9G/ovr/WlgMhTOxjjiCKQYMdoaGh2U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RZ54CWS56JCRFP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-6.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0pHMkLvAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"87a659fbf1b3b620\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WGXQ4bi+2NzPE3Zsz27uwVxD9XDa3ewKDPM908eX0tapiMh3o4vXlGo+TvdGoGmDhqIstf6LPrw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE1RHYRXCSHA75D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b92fbaa15e6ed194\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RaPwp1HSP2Y7Be0gbayDkmGKX2hCEVI6aaZmjWZ7pMhVtXMB+FCluxYxa81lKAeeSTRWuyrOP8Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE3RM085JKH3X9D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"96eee652a3050248\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"MIXNfLNQy5KutjC5TdXvEEQeIKzrLesO87fNbcJOIShbkqo2VO7Z/qrtqQsLdEOghT6H20vk05A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEF67X5GA385VBK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a2cc30c0e56cb7e6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JSbCwHzfCrw4KB5TFic9NMn8HNI2ASt4k3GYCqDNYO1B33ZAaRJVkjinaae+o1q2Nc5ronz/PGs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEBARV82F8P3DQQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"9ac7e5f4858591d3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Zfgb7kV7nuRYN3fpwVwA6MfST4rR+PFNulbzFyBoaWruCSSa9cQFP/WIJkNq8NUvboHGbhcwcXo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEBG88RCY7SE26W\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQyLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"ffc503de4b659b39\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uys3yoodZwKTUNyY9F0WWHE9VxvUhZV6otUn4S48v7rKBA+f7vVUZ/0fPrhfE0pIimhRYnqS9q8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE0TZDW68BT44FC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"95409f296e63d1da\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aHTtT56Q6bfhMyGl6xalz0qs5hWFAiuBoH+F1/7cQB0OEwWyUpRsHexC2QcnHvgrCLTd8UcCiHE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEATEZWRSDKF8FK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"06b484fe860a3e5e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vfGCHgp0kCsac+q75YRaFHHfGZrn1w8bxB23DeTfPl51GVZTatRJAOz69gPFDRu5cuMW0MIoSVQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE31EPKQKTHK9HP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1a4986d477e4a441\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NqqYPujBI/r/FPhmIKIwNcB0abhrmm9MX9UIMNxFG/878yZ0z10+9ICE6FNx8/8NOtYvlNmroKc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAEEWDBE49EW7ZXP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ae51968f8c4f631c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%5B%5C%5D%5E_?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:42 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+W8rbZHkoapI8yI4LWCYc5SHlNOZ5dmY/oRrTSOcZ9pVdN4iMip11JcC+Ky0RG/AcIV30vTxOMo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"SAE3N8SHN00F8379\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-7.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0uBtQWAAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"88d89e8f52f934ee\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"C9tfYmlT2bd3igvW4lwRMD0gvr/SO+MGXRj6X1Oe3OkCl14krBKLVUyFzMTXF235zkIp/eHF3rj1tm9xN6Jv8jcGCUaGU1B2\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RJCSAFMJS34VTE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3b0f811230fd9e49\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tLS1SbuX3vcZQh0FVVD1v0pnhLCkPZmTzqbnS8RAL1y1S5wVZkgTbz2CuRaGoMySw903VfrTcCgnE48RLdYpJ/SaZ6ZIamRG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RS6R0ZTR5KQPQA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"725caf681418a3cf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yVw8zZyFmfa7dGy1rZEOjc/KzGTvftMSsr8BAERBGfYamZ5nsdkgL1ubcfWbehQzxgBiLyJ6MP02zGSAXUHQYIP6blJTqMuo\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RXYJ7MET2XNMJ3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"59cc181d105d4471\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"R/gGR1UtwwvDNW5AMOYiD+8QVArPoKCypuL8G/LTVBo/8jTM6L197ZqIhnqRPExTNpJkf6nvvWtsDimhoaLk+bn7yHx8DztI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RPPNCFR2HANH46\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"716b82a80413caa9\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%60\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1tvgsloQpZXwNuhWWNiEcL+MGx8afjqUcXqbRZhfaa86LXVYr6TV0gQ1Z/qZh0u0jz9yHECp/O2JmzOqDaKf5S2Bn+4K4pfC\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RVE1H68W8DE3ZH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"d76df5c2f01ec5ad\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UYHP52HHEUwrGl+CGvXEpYElnJ/F9/PEBJ/VBwXblG9U41yEFWD3Mpd6avecFeLGYZA/cNlsSVpOHn0y4okTTQcZpF+AzD3S\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RQ9QFETQQ5XYPH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"c600b9e47c8b6ba4\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2dhM2nAHNfuo4j2e4jjH2gaTI/ug2F6hr+nBCesjPC5TWqfCjpjjVxY1+XZLMuH89sn1PMdVdnQxHzSjPUwRthQB+bVYVWGu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RXZE1MEZ0BMSXP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"45d30d54a4b567ce\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SVfv6e43zkkTaBp4+qE9KqLSdxS8LIwYhjiez7VbSY3M8JRgBJkReRVMMMucM2C8QfUWjG4uO9cdNvF5itZnBq2JChzIvE19\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RRKN7WS7SJRX8T\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4862d781a9900479\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ctGxzz+LJqw80d0AQf/rTexIPiPTgOnwUNtcPwvW9JSVLzEAo1BL48IVSX+G4rT9X3xmqylna++85TnCqxTrnUSOEE+jXWS1\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RH6JNG68PKVTZV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9f9a08b39984fecf\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%60?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qekeputXNUirQN+xtuR7jz/KkyrYNAVqMDRX3N2vb9aVNMT+/q76lYNte7aMFWbulmw7xIoAybPY5RmnpytmNXweYOjE+Qpz\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RPXVMC5RKBZAT3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/ascii-8.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0sBM5xiAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1225dcde372ed1b2\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5rrhG6VqKPxu0NGZjwTujdKU/kni5tzO/tjOg0lvjkIWSAKIs4gDu+0exM+hu8Yh2MUWaMAfsVs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXEW49Y8AT811CB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"34ee50fe20c74a7c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7q3RKISBw40SRIwroF0r3mMIG9Z3BcSPMZSnQm+9vcxSykCXcBBIFJ7hUZjLuPWyo2Cykt0z1WI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXE258AANGST2G3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"78e1d6d655d738ba\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FnIrNMMUkUFnvLz2o6IM8qQ+JvekafVfMgRJWdBTK+ucr1AI2C1s+TKIes0OQH3Kd+uZiOPKeV8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX2V7F9BK4RYRQN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b7d0d3d67c9ae01e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DSAbG6ARLx4EkFAncBS1whyHHmBd3zokzKuA7JQr/2WINnsH0sA0sBizMUVkCWAWwH9RHNRFetM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXAZ036F2KBN36D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bd37488dc405cba4\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8a1XoznfwxzXMegnuvmY6ENXs29w2ZmAzP7A3j9OOm6IJeQKZrImxqq7Ezn9uiGacGaadWo4N8I=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX9FJN9R9F6FC03\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"88d2fecb7397c514\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uXWxfT6l0n6CYYWPJd1rrhWgtSmZqBxqrBXbBSwBm9i5rYT+Qo+vzPb+gtI/xEqsZIXr/LN9u98=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX0115W5MZ0R7X1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"02aed28ab75e252a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hAAztDZljDZcDHXs/FJ66HbHAcGWF4HBv2MU0X6E10h3ItW61J5BiasKcodImSx5chLKtcdUVvA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXATJ9X90E41J31\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1b80e1d75cfa202b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tCeEgHg8lDEcG8gFIA05ihde2/xlymZVTG2Mk8DtFC1wdxQl1/1bs/4k/DYPtUq4J6TNzhvV9gs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX3Z5XR04T8TRHD\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3e4fa44df4e0234f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"O9moiA0dhsKjpbRmN6IksCIoEMsuC0QJh9MeQTDJQ5jD/hINfi2KjnVXBhilvYGbRUxr3zjn3kM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXB6QZMWH0A7EFR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"80801451d9ce7504\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%7B%7C%7D~%7F?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ssSpIGu84gUB9VlWHZ/Ube5EDxNMKoPCdk+Z1GUieogtZZAfab8fNwOzJbSfZjnjxWGI8bF30jo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXAB7MG1HZXFBFW\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/backslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0lOrBS+gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ab559378a755e24a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gMWFd+RXqGfRz3ES0SP9+vgR+5EA5GUjNJeAqKJxq6lJVEHDFlcA6AaQUD9S2BkZsFGzO6gAr9M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJZP2EYDSACDSRP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b5bd1eca0b68bf72\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zeY27o4fZtvHV94K9FdqC1kJsshsF0IFbR7wUd40mpzedHT1yQW1foB5wBJk01ynow6hokFB4o0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJS3CSWWPKM17VJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"cd8d2e9a6c6a1d8a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2XtKRhm32r4UMDNPpz0RryznNS8alUqgT5gHMQG2ti3RnDXhP/pEFrA3ihsDte7RbVpE6ert4sg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJQSYS2RGVTZQNF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d6930d5dfb69cef2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5ixuLL3jo6WnQNOEEXAlLxA2SobUUxtRYzZeUnvgWkcg+gkKfvv/ps+nse8gCdHFRcQ81S3pOC4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJYHF345YPVTXA0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6bc259ae68f79d1d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kObrqAfO4+haEuMB7450dDPOm9Wf+9dfHQdwZHDl/RlUNiHAqdSMFGo5HNQiIqmUp+jswz1mQx8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJPZMZ074EXKNAJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjM5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"ca43c5d6c2a3eae7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nRWVP8mYk8tllzmA9FI3oksu/H/CFf27XQVN2oEM8cERd3YiGsgW7ATYV4n6LTtHFpsQpWaxiGU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJMJN7G26SN7YDK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ef05845957b21437\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kvtPJ2IgonYcW/ST+0fOJOojryl9ZnsMkxikiFcrGGqCt2dW27fXvDh2vIwNspwVs4lDDS5QBMM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJXNKN48YAQ2YGK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1e41a5889dc47b10\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"r+9dMpVyFzgXpqah7t8rv3CakbbQVQIBLgyn+V7DtPbjbngL+CYw+1ONYoRZMw3pwiTT5f6UbvM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJTYE8BHXP7Y8ND\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2cac86fd9b817c14\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7tCEpis+0/q1WGKGpry9n3VFsA2UKgxFqKsFAGCkWNxjy6zQd8tNmq/qFiGAbao39Pu3EdJChDQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJMMAD50MNFXX1M\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"13ba01124c80bf55\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%5Cbar%5Cbaz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QFmwt8xgUQrmBlMYP0tpYADh/gNaJwCsvykYH7WijkDMUoNHRbKpTmDNcUC8BXbwKl21L0WtNxg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJW0CV6VF60KGKB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/dotdotbackslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0qHHm9NAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5916f088547e4624\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yk2JBidSauaFC22B7Zb2SVxFnqM5w9aPVP81zkoUr/MvEPSY15F1L51h0AW1xzfOlqOxz2j8eaV9imonzkvpLprGBly69uJZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET31849DMY4KXQZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"dd2e39cc429b8b39\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tduaEDW9XoQqU8k2adOPBmXrqultSyA24IY311i6UtDWBskeGOkIwOlo+KPSBCh0mOCLhoTZxlVvyOYt9UMtWlLGaISvkaC2\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET90JHR8YVHGM8T\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e13b7f70e7309324\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qLNmUKv8bq26TJt3+kOaEzQ54UEfRStf7qWtKIi6kCpBcATul+Ypt0CSUr89dOaaGRRSTXqygZXrejcNrEgXTwweCBNcDbnM\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET82Y5H9VW9GDJY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5aa90c18adb7e7c0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AQwsflLALqztx2J0RU6laWwHQTDMPuYUiWdf52TgUkUvfbaQWkNPhiC5ynWNExcnIFnAmlUbUSbS+2pZlncw7H4xcwsnvcZg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NETD4RG9MABPPRG3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bc844befd5fdd23e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0Rhp0CcI9Vly5/j2tNSeOpkgDTxGhWfM3n7KyGZlIblSdqnexIDoPodO7ayMmNuUQB+rb8jcKLKd3xGb0UiUTswGXg9fgLHh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET2K9XVMWERB4ZE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQzLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"e1b312c45e7da3c5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZG3kYBeALTV7823zlNgFxoNf4yUqJfczfo3huBD+Bd5Ph7fNxKEEzpQPhKTIJGYDYUWSid2y3TBvdkIMteZ479Lg23j1WAHB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET8XFP92QSQNBNN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"bfc896f34db1dc3d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SFPP/EXbUhDTZjfhK/PQDuDt/pMFsaYEwrOoKqJhGw9a+Uub7/OtKDpq/B7EUAEjuP2lAUbNPw6hBcVIVFbHVCNX+r2c0SMF\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET2ZNAKRTCNPWF2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"88c2072ecc43839c\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vS5gKO+unlAfTZ9CsQv+SkoXVVMBgpnJww0pkCKY1lTJbF9hMehqlT9R3BPyD7OaHH0XvseP77EQrOq3FzhC9DgfoXht2rKZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTYFSMZ16T1G9G8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"169b498ff81577bf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EKhPlQZx7ft0/+t0BOmzmikJ17OC0gRd9n1hksGeSrNF5qudqRVGAB994Tu1IAKI2DLw1i84rc5JOtWxqM5cnamtb28/nr4S\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTH3FKBPZG8323W\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2c8fe9c459a0399e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:44 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JHl0kd+uGwY5HJr8LWsh1zbXYSzrCPlRu2stuT82R1EIgyWdRtsT7kcTrxGVVWL4DpKBk51zA7TQ+jx7ItAOtB4YrYgRf8Kk\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4RTND5FVTJQ1M040\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/dotdotslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0lHaFAuwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c61418d270693cbd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zzO9JbejgoR6gJZoi6mWtE0dLYQPVgJmWFGGqsGF3LnNCjx2ee09o9kCU15JrS3yYJxHz/DX8k4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VJE1D07161N39A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"02e30c911b5dbc0c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"JCUyFnHM4VtHe6rP8v9+6zm7+9sTNN+izcrFC2/OXWAd5DrgGpGug9uAIG+hiMZAVmkiXdNTF5s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VH1JKC32PDBQQN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"82b9c1f6b916c5fc\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"drk7PAUeHZ7WKCH+5boCnY315NGkMUBnKRmfPspzTPEmPE+bQ4FM7KVwHF5yVCmgFyWsbq1aobg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VVD3AJ79GAGTNK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3446304e34f93245\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nImJmNWxCOrocXXieuRIWRd4FvPUA8rpCOsVlk3gpM4V3LH17ciMxDFs4ocQuQqFNhE9B0Ctigk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VT8D01PVB14WVX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"e89df7c41daabb20\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys..__0x2f__foo%2F..__0x2f__bar%2F..__0x2f__..__0x2f__baz..__0x2f__\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Dp0V5SIrJemYSfYTlLLRwVFfcRNdVuPF1lJWWHgp1kRJRWCa8dWm/WxLR+21V65MP8BwHdbf6ns=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VGV762KSWBRN4J\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjM4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"656c1a22cf7aa8f9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UClS4xJlE78aqVajay25asUqNsrIvVqOTb/KwlUfaWFimB9QR0uTH88N72BUoHDTmFGRiP6Vs5c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VWJS4BVYCSXA85\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"1251c7d86d82268f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZAxLv4LvO6gGwUtQa2GMfImBMEu0GhyjfCYc4tDBAr6I/Yy8FaRiATgekHSLAo8PMKbGsudIEd0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VNE5F56EH9N5D9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a1205d4782bc22cd\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"P9kv8U5EQUHv9YgO+mDW+1u/eUNkKJel4tHcWPru4oFbgj21nQULcEWh75GCMg4fLHX68W0FHiE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VG2G86ZJTC3F1Q\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"716f81619ec51e37\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yOSGlBMb+tBwse8DCo0Ywrg1dNr4oaIHhfqLgrCMlUayjsfsIxeBLqc/Lvx02U34JsmGuabi7Io=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VG24DCR32760VM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"45b267982727ae8a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..__0x2f__foo/..__0x2f__bar/..__0x2f__..__0x2f__baz..__0x2f__?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:38 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kGU3R9mvKwhzexUDV87PjyVTNklVDeDFqTDRfLaKBCK2dIE0lni9YkEc/aEkeu3fPS20XzvGfMY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"G3VM2FNP552F656H\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/fwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0pOqpoPwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5f8a2439e29f3167\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DeN15JQ/sd1tmrDejHcRL203lPeoNrDNBiTL690ihQX8u3Cn9kS4mcGc2spdFxm0YR++2sFQ9rw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET7R8JW6MBN32N3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3a02bb9814a34f7d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"59OGLsDc6Kr5Poe07SCw/VdSBbOhZoalESd9DaG67qN3yJJ9+0ivml980ks0Xk/ufVThX1RZUdg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET4ETM8CR9N0G24\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"af9f639ac1f63945\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aCJcEg2zLAdAO/+1Fl4qM4bKHW1x6qCLmvTPQ6R4Nyx0n52ZqlHqLs+l/V+dK9LXiqhlTtguFBE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET1E4X03AVX6GJV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c17a138a0686ef4b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sskFSRNoS2MdxFZoxvJq1RTlPyDQke1hNr9kVtwHJ2yHho/Uq7cwgs9CFhf/TeQZ0BomHjoUm9Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NETEKN3JYGCT9M8A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"45efbff5c8506ba8\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TrfjQGz4NpduscUdCorW8CkPdpRJYhy0XZI22zWLaQ/3w/C0ukuX4CQs3HoSwhhllFqoH4ioWgU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NETFMEN67FTH0F69\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQzLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"605037aa95c5b3d8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XWqnxA5674YU7R9EV0EDJTA8MjklgsEp+HCBunWpmR6lvMjr2lxCUQM4gUuaWCfLcjy60YK7PgM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET7F6JQE0EXDSVK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6e97969855188f3a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ayNF2cjyXQQ+SXVAU721jHLTGIYTWQ1lrcvVvfUfXpOQuxT4qKLwpOj3JIJNEsdQmb+e+EF0h28=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET2J2W6YC314KBR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"db4fc35c4161a488\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"1hVnDptRzhnk0WSWG5SjGlXq3esid30mTp0PNluCwYCfRygsh0zGiWeXKXk63/7nRu+GmV+7uHg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET1R9WD4ZENA33Y\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"12a7d82d2c502f36\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TIjN96JWe9qjVzJrINSXk/F2m6gmBFsBldGYYbYmY2YZ5zrA6/lIx1HaumvM0oSr+6Xw2IfBOa8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET0FME6XGC2CF61\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1397ad4fd007ea88\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo/bar/baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:43 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZCcUXiDxq4iexHLZMQaCtB+1yJH0icsn7WCXr5a3pVR/FJg+CG40BD0Ldc3LoxzbJPrdjj+9WD8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"NET2S3P21N5QR2E7\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/non-UTF8_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0lHZG0uwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/quote.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0nHF5gVQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6e955c191fc52317\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SYBh8GbazUPUjskOIN/5bxdZCVF/zqRaJ9s8KPL1Ql/88azzCidrQaYwOhy11GakXjN10Q5SVpWmxkvejrLmOdz5EhBKBl7U\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFHSX1TE38CZHYG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"43a26e5bb5811f77\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ExbR5PbYEc2bbqEonZ7nmtQTvOaTYATnxh4Ynhprqe1h7WlHOxhpXVxr90sfxZtJ6F3N3ItnJl5f8qp3vLl8CaVmzdhkKFdN\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFYAXMTBSF5M55R\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d55777795ae8e4b8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oUEILPb/IfD2yMHoAUSoyy66vmZzTmHDndSYJyEJPNlBlkUMmJYlBGkGuv38dZLCc5YNo5I649RFeE50lWiNCTIVkpoierqI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFQ9YRD27NPA4EK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0b54e10420969b04\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5G8MaJajrKawN12yNBKwr79zDsi3v6Mm74V1obeyiUDP36fZPP6IkQZP8E7vuWeCmutY5FmopU97hx6byxCuAt7Lg3mDUbNM\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFSPDQ1DVS6W7W3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4c8700c3fe3a10e7\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%22bar%22baz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"X3DZJ75KzsDRcCDj8Y9oa9rEBm8WpNhBDkRwOb8GAmmDt60YCGT+KQahZllMamMIaeMLWOLZhwHMUOsB9TRmhm7WnMH1Y99N\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFWDEDAJYGEEQ36\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"9267023b9285eb34\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UPd44eTfIzPQVGGYd3ZfpZH73yNLVz2fEPgQzwHrliRNfDVWHoP17NIu14zVKJNGinTyfVfz3ORuxJRsbM/heeOlJyWHWffu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFXJ4XA2FC2WW5J\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"f6963e40c4e2bff9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/1JqdBmbdYR9FeyOEF14RXfDoN701fOcCBsktkHJe+mJPB9S6JfvQ03wniZKiuGD9VCK9dFrb+rC+qd1x+jYB6PtIdXQskAd\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFX57V9Z1G0TJQ9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7d514bad1a7e3746\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FAscZF0iXCo2VXgIvNYFzmB8oLNMZ4czh70bs87XW5RQpjJYAlVFCqSaO0XpnxliQpdQo/OgYAlqkb2jFcaYQmKQGgAoHMWj\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFKRJ3FYF8KA55Y\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4795ae45a2fc2e71\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0vmxuK9ijBHEzmbg4NLBq21s6ymp8IP4tTj6vYWIdQ76JZA95wXo/TXjY88PrLtZIpgA/pmBr5m0RnQxH92iQuQJXe/g+k5i\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFQQ8YH335DB9RH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"71bc764f9800d719\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%22bar%22baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vuza4gMXLFkW0x+YFtfeElw/jqqwg2f7VIIvJB4xoBI3WEGT7tuh0dXK/q2uWqU/FukVUGaI0ylBPzL6v4VRbMND/g40AMZg\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFZB2GFCW8GX52M\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/repeatedbackslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0mOrGw8gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"82affda67d37cf0e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cqupQwHreZZW1y14r4dQBXCnw8XcwDiFSvmfcpkytdIxk0dfLgYGWfuINAp3h9v75cGcMYLnX80=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFJ3QA4VEDEE8JP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"42ce7857f3371fd1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Nd2HDAXIWaWXFUrvMic4iGO9/gm+1ULj5kjDab6HpdrI+J6h0zS9mntjcPJjabE+LI02cEH3cso=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFWZ8266VS4JF1D\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"4104960757ad1d61\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xKsdXOEiQgiMMsoCteLUcpn/6fdnuwE4D8FMPzwBpO1vpy3Ij/E/GIp1mdOI7dbbPm7vdYCRNxg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFXC170Q4M36SFX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"20ca6600c0a09c73\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2dOH5YqnVYYqH1uiOPk56ksG/4FFFwMsikcE/Ia/28atShN9jl793W9NsnHK7Q0O1lPZjWcQ+Fw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFGF5P1EHG5EN5Z\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"96ce295c82acb3bd\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"f20S9c/b0MbUJyJbs8mItre+7lT19SJqY4OOPNyBXQJc7JICM8BGSTEImnqE/8aMD6FUvCGHmr4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFZ6CCEA26FCHDC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"3c9e1cc67302918e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xtIhEvza7jGFxqk3VkUdMfsbQv7uuGZvSK1LZ1xCFRIX3CakQWKRvhxntFt/amQ++blOW/3EMgg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFRV1CZW2E37SHR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"a9c7a230d14aab0c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Nz2EgxVkSwo0s/NyeE+TyYzaNqHd4thhfVryv9h8lElCNg8psRQ80GG7XaufY/2OPWnP6ohjUSY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFTM7QB844559JW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4189e3595074ace2\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"E6dJ2PlvBO6hMIQUIeuZjuRagu6C/oae+2D1wxQSQ8HI9cnAKt9e5wS47zG0+txsN26wV86okOg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFQAV1ESVAP8GB2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a5267a101d3d861f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5Z5pZVX9XQrMG3L7abU5+CawbK04w9xETmFBAaGrePLwqTL3WIlWP10BmbsGDStXuBiIC4EIr2s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFSA0HCWX0Z2SZ1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"94187d8e52c61120\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:40 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"r7q0FSCiH8YS7LQEadeSF/XT8lB3jVjGmjTFD9LyM6EmpjzTtefVTxVLIpzQMBWCgzSzMlCa8Fk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"ZVFZHW311KE85X0W\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/repeatedfwdslashes.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0sIV4ONQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7e9a7664e8f9db17\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UAdKVU3OMh2lyivqkM2H7Ynh9xROwqSr3Zg7gIR/Rn2mNVR2xTG1szckji89axcRTak5CrN+9vY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX366Q56NXSWEJY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8d00c5714d02b234\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rAfD5cHdw9vt7y41yHjGrb7Pc8r6YNgd5QJjAgspKmAegSgdZvHXVcHAEffgiZVJAwYp/r+5PuI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX4ZNP2HXDZBWTJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"725bac1b29260461\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6780wP/tbLAG+r3GPpzfeYg3QCCRarOd1AywkYuoVeHXZ1En63D9BKXXH4Anb6K6EzdkVjKutNA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX159RKXRE37VRV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"610ad06f9865fd73\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HIE+sN0asrxeBFFvYziq7CrZDlvejaIaYJQwVhhMQg5p6brFQgjmSZIZB/aoajwk15aTsbJRo7c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXFNPASR9TAQQHY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"5c269c0a42fe22c7\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"X7X5lHHim1dcKFO/yYlMKzXflq7eKWMBL833n1BKDlfz8PdC0hKyxr5eiWuhLUE818HLdhlO3wE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXFDPR09NRXPS8V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQ1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"6a73b9c5328c9aad\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9E7BoGEjJaiPEOpUS9UaZs9VcbB6aXpm9PIbAXaMQNYZvrmzwhJoJVsyveMFlUjbxAdvMW5XHPk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX0ZAG8ZES6YXQA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6c8589fe69bcf698\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SvsHqMNjqYr2q6pt7B16kvxxSPE+RtcjgsQ8uH2hajUF6duNgjlcnm6py4hiXg5JgT82ps0mXfY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXFZPQTH1BYMJGX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b4c6f02e7267b85b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EXYKbXnRHbzgmHl14ppLVBQ4aT5sd6eUUZEfbyqn/1/qFXjk4V+hlWdL/+iCS8Hhd+Wqkf4U/0Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FXCJ15RD5PT7R6F\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"77d91914814ac940\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:45 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nma5Mo/rYUo/9ftwVg3BXY9brV8+JbSAmchGaavdRkZoi0o/XLvVo8UyE611m0/34eZcyg3Q44w=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0FX020WFSSCJBB5G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bcd74bc9ac4e3bdb\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo//bar///baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nyVjRQq5/mA2J+WcNS8ZHvGhnzh45h7n4we1nvIH0LyybWftUBc5beU74Y6lVCOJWBAuXJ5YCVk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"PQM552K98M8P53P9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/spaces.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0mHoYEaQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"552b320159be89bb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DflPQ2nPMvK23BBFrT4VqZM30NaOcTBsC9uwI5k6xDORgYa4AOYxneMTvVVte4G5SRgZ8mlGpxI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJN16FEK29X4VH6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0640cea6569924a0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WnCJIFxJoTLo48qW5iZRlwajiNQ+U/y6PWI3ZIWPwEvODkp0ih/DGzTK8UgxC1E09sPB0mFi6vk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJR2YAW910J8JMC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"d98a4ae1c467b775\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"j1R5ng3+4dwvGbUO15FYo30M6q4OJkskkRzpZltyp+Cr/1+LFqwE+aC2v9mm0GMKuw5Su9r5c10=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJJTA472GCE7W7K\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"421a5c58ad57f066\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/w433VhmTKUyHw/j6Jr3Exf2A+/RtyFWg1dqNAArecpXuFSPdWL4aIOoZNCatHdY/erp2DgVwac=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJNX70Z9EDGMG23\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"6a0adc772354981d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keysfoo+bar+baz\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2hcfddd2c9jVo0M7EyiCY5arKdFyOIKBZ3FfZwnBFKkGZERJiQCdhKEyQeT7o2aiWIk9sHqw0jk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJTQGFMG4B861Q9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjM5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"448381f7d2ffb0b4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jIp7zBTQ7YSI+MctDyVGIApQExFI6fSa17nDJHxtT6kYNFKzO284fDsVKkjrMMpaJbsnU37pY84=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJNY8039ZHTKMFZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"ff4a52611c39b991\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CE9FnSpNNxbhQ4SQ9911h3MCbZYX1Ij7nOVtnVgsGpQDzUTkPeBWfmn2femmraBvTG5Rc+D10vs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJG2SCJYCRH2ZBA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"89752b5fa324481d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6dTQMCAmAqMZMUnVf74+FzjPUUu3dPyt5vUR7RN/f1Pe78X7QznnSbuPhO3ublLee/fe6tH8lII=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJX3Y5H86EKE4V2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1ae128b96504b182\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Hf6Y9PpEaUdwNGkIufb1E+vSeC1ICEkabxgaClg8YkZ7NYHIsxwZ9CsBmzVpXeSoPgAtF1UaQ2M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJVT4RRE9K7SB9P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"10bc770635c40035\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keysfoo%20bar%20baz?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:39 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nM1puEdgFGFRHUvCdRX7Yr4Hx3IGPP8OHUKQ0CrhMAq7N/AU147nfXbhRb0xZkOAUXMmNzLMRt4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JNJHMRRJ1MC91Y11\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/startwithdigit.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0nOyVLwgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"389d583dcdf46634\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Yf0At8S2hyZEHdI0K0n3mm/Asn2NFp4a4lM5y2cflPvjh4gnXjDSysHHhL+U8k7VwYKqUJglTYo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD81J13JB61X2Y1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0fd6b5c32afaf361\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SrVzCt522i2hEhbHNyvNJ/CYMOd9Z+9DihzvESknl0EeqNl7+O8iggqWhl9y1/yeSasijH28lNo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDB2RRX6DFCPDHX\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"af36e497c641cf90\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"s23i6Co0Fh1hLD6Q9atdnqxvuTpj/lQOB/t9EHrHGxZGtK+1onWZAT8EDbgc65+pF08jAyvBK1c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD1CNTTJT9C4EB1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c2152601eec7a0f9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Acr+XAPbw0ZIXKE1izuNmDLa+Ts93ZjLJdYr0CDRzRqARsdCEIAwpz30pDQ68856sH5rsILn8h0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD049KV05HGT6DR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"f8961d25454285b6\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys12345\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"p7QRLO58/pnkg5FFYghEQhSK+A94z47tr5hN5oDmGyCZAl0uaoTwtcLzcDlSCeYzEzgj3L/zS5M=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD38HE3YB02D8B5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQxLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"69ce33c013e13021\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VOgJMLJ7P4N2EjcyGSdQ/N5le/tpxqF5jGrDuhrEjmpYw/5LbMqEYteQXeywPd+49O48n8PYYnM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDAKKFP853NQT6A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"f72c21bd5eb8ce43\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YRNUVF8EgT60vSczHsoFUOy0sEJqVOBha2NpfVGpmChcbBH8TdfsgjwyEt8W62fl6JSsgyx+GdI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDEJ06KQAAHXY67\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"64f0363f0348f581\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aK8bkfNzw+rCX3Cnx0mM3gu1BySsH7+4PuQjrhwse9BlEDGSP/egFe9qI8LVmApIPRqRRzJByQQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD5N1DGJAB04PPA\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0e4a3f0a757c5947\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wGBg2sP2rqB4UtcQR1KIaUxQU/S5yXx7lGPsYAQ1xjpgVTHo3BbAMWQLcHIoSqZBRRRmVxn806g=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDC48JRZ6QZQP7Y\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"054ae70a29d2f9bc\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys12345?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jKxKT7uw0aTFvaD10qRJ0VnQpvAu9AyUY279dJKYt3FBh9sjXeLcJEM9AYxzvBcbODv/+f+n0uc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD00YPBDG5VH7PP\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestKeys/unicode.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0oHQ9qsQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7f92f8c1df63a36d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"F2EgNHUDlo8OkBUR8rvhUaU3dDvbXQEsmbG4RcG9cy3Py4EXbme6cfTh/G53rPHag3kW2uXcW+4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDB3PA44FG7SQH4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"40ec9a1ff3b1a62e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9dnOokJJRsJ3bKx1eAG61L7oJN/3hcqW0ZZrRDQ2cu4GTE8lhpIHGSBKApufhCNaPSMTibQnYpk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD486HS8PSQ89GR\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"c8c4295b8d6e1371\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8+WbFfzLqzF/iUcwIO8VDdWQZ7qgNN3g+NChnJ+DBb8yUJ9fOuwpV+GcIhz5l9HP5a6AbIw0Iog=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD14GYPQDHR9308\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a78cc732ae5da0c6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Q+JvkHtI8qGNQY5TXLl0zKqMIty6N9meFzfE0eoU9EfGjkyZjFyvhekSTzdmOtWH13b9yz3Yk8E=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDBDYA4NQMW0613\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"30c8e8f2040b54a5\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?x-id=CopyObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Copy-Source\": [\n            \"go-cloud-testing-2%2Fweird-keys%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BHU1oyFUDEWGlAgISqFxyDyfwVIZhKkFqbgyGHf4RqLwqA7HizuicJ8/fGtPegr1X6JzVe2XWS0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD3CCHA6W4RTWGF\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPENvcHlPYmplY3RSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI4OjQxLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4iNWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTIiPC9FVGFnPjxDaGVja3N1bUNSQzMyPk5oQ21oZz09PC9DaGVja3N1bUNSQzMyPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48L0NvcHlPYmplY3RSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"de6478d30bef2390\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pE8Pcr2tuZlEmkVZFbbKwSbigM3mBTkvtOlph4Jrpy4O/y6fTaGT98iJNR4MIt9ERQIdTD+zK2A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDEBKPR0EBN08M7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8=\"\n      }\n    },\n    {\n      \"ID\": \"f122a56d2c80181d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"G3lv9ykP8UCGD0EUNWJxxpQ050FwdQyhwzzIl+0Fn3qmPYEjyfE9qbrYgjA4xus5KdNRYuf0CLg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MDEQVKHMA1HEY2G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"57e880acf175c7f7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA-copy?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZDd7XOOKz36KOXKKplf/fG4hdqAZcp01ayj3+PqjSmlI2+njzIY/b31RqRY7bWDI0PWUirENqCw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD3WQ927A321ECG\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ffdec52d7a47e6ce\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QXpam48e4bysuTAbX93vSosbYCEMPCH8p9HeRFV197l3DrAhI8DulGfpNist/i+mOh75q1mbVxI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD8Y2BPDVZMDGNW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3a46e242ddebcfaf\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/weird-keys%E2%98%BA%E2%98%BA%E2%98%BA?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:41 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0LsI9+3kmXBF3m5I6HTVhnBkxqsnEK0vP1lnNb1XXwbrG+3iB5RBfa4wr4LzdILSIoEEi375g04=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MD4MQWNFXRN08T2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/PaginationConsistencyAfterDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0XEBn4fAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a5f70a80aa28064a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+uj1elhrYWUJD8+A0qxCe+nlyb/kiFAW74fecbDdYx8KmAvBCJ0wHk+T+UlRYaeiFovb3+731JiH7CO6sTpcdJ7pY3Mlg7X4\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RASQ5M6T350EXPQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"c23f0d2a9be6e8d7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"FtR1Rpofi7I1MfEsewfXbWLF5K5dS5yblsz+DJByjU7RvHU0p8on3KFoJT5Jql/ojtdpVaculR07kTziDyHHxHJVoE2GZgwO\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAR65YQTP44JYET\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjc6NTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"c33cac69793b3e0a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IytZ+vUu6mJO9rVP4x7aSuQ/KKQQhWAXGD+/QRsgCHgBtDA6jmSO5IJk50MS1pmgwagcjQE+OjljJcdrtNAPcRu2Kksks8NT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RATPBZ86ZDDF9WE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a719a1a1c4f8a18e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-1?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XhPTzR/Z9ajC0yjXbsfYEmYip8ljmuCTZxUDXDgYnYWHxOJVqI+s87nZLd3f+6HUyeTaSGoX68SpbXkzyjJ4hmo/JkN242kZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RASMT1EXHZN8WAT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"981f70ba4993b7b3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?marker=blob-for-list-1\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"n75qscC3p10Na+q4alGabqltP4gUrly8ECaPKfhtWni33mf6HDsgCvWenY0G2IOQ6ws9MFhL2Gwd/FZ68V0N1OXdo+/b/Uj+\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAJXXSNHPHFT6QP\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+YmxvYi1mb3ItbGlzdC0xPC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"96e8d5e59eaad7c3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-1?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7rD7/0nwXBKtSo2LoFhN7yuddshOEpkW1F5KmBEBfeHI1878gksjZ4aYKYlVEIiquLqnciMSO+WKUZN2gXG4agxP5ntvLq6K\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RASVBXDBT764HSK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/PaginationConsistencyAfterInsert.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WON3UfwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"12fa0922d0ce71e7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HM1V33FcJQdQoP4Z5Vdqs/Qjzb9VOEZmqYoBVdheHw3al86Df17tUwP7Gi9BmV/1wuGvmL5w0S0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAQ6KDF5F6Y63PY\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"dbef8630177dd0a7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cOhjM1jwwdjBkKhFTXv571RdNreKW9S/s+bB+0ZwtBKjQHihVMfbwccWnTlnwgWHq2zvOMuNWuI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAKACDFRG3T8X0V\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjc6NTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"c109a29170b7d558\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-0a?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cROsV61rE6mx9rPN4gYchBpW+gW29dGBJ5bVp7WYOVryZoe5h8aZIhztvlA/v0NwrB8wm7dIIGc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAPXKVD472EZG5N\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bc58e67b8e5a06fc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?marker=blob-for-list-1\\u0026max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XfrlUBG3YjmhJ4+cTckuV3/g+Mo9AVHSig6fiW3xQdPElmHY2/xd3taDtN71NTAnzX6kc6C54kM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAW1RK82JKKF9RH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+YmxvYi1mb3ItbGlzdC0xPC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"d89035b1cb0ab829\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-0a\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vdmr3rya1f2WNKhgC2g1A6wtGhJZPMdP4E3PR1c67tvhvtQAJ9c0sp2EqK0aDMq+rGoDo9PM75A=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAX18GQR6BCWE4E\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cd00d9dc08a91e23\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-list-0a?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"L1lD6IhxRV1Kbzfvr47u7OdiAFDE8iZMvk0Eu83QNUwZ9lMDC3W1SGFABfH8gP3OVX5O4UVirHw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAWEA9386GTKMZZ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/by_1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WGebBVgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fcf191e94a011bac\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iIXVPSijGnGGAFEPX1/8HsNlVklfBYRCckUCMXoW8OW+gWGVcrJUItyopyyoSfICtnEAJeP2NN2YJ2WQj4ZU3XalbxcRDv5x\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N992E219WHRG6XCD\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"9946b81a8656fbfe\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"88W924qi64OYHHGgYQrH2O60UOE+SvZu340Zf4+j9IDY8pbyjrFz6OKZI4uPcrMsgAQC7czxuiP5jrvukwYu5nDkT3EN0A0t\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99FNRXVFENAG9ZH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"47eb9b795870a086\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?marker=blob-for-list-0\\u0026max-keys=1\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XwbW9xgKP+dti2Svm/EG6vdNUGoBGQ4bw/Jn9hqjGDbS3Cb8xOMCstKPnNGcxKLfAFOrWh+jGSq+th7ndJnYNZczdtFq2lVe\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99DG7VQB1D2318F\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+YmxvYi1mb3ItbGlzdC0wPC9NYXJrZXI+PE1heEtleXM+MTwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"ea4e1b26effa99d8\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?marker=blob-for-list-1\\u0026max-keys=1\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3sM4x34+OJ3a1tRjNsrlmEDQpK1vo8uZE9yb310dGpSDRyK6NuZu0d+LBLFjuSvTHDQxPnkAPegJlLhska/nO7rFW71QMNiW\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99F19WGPQAGA3PQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+YmxvYi1mb3ItbGlzdC0xPC9NYXJrZXI+PE1heEtleXM+MTwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/by_2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WJuC3BQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c6ce6b73bdc17e45\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WL3p07ih4yD/wba8hmT3Y7vxXNH39+jqAJGgBvBoPApbCjsxSjvr6KLEHx0rNntZYDyk1O0/DTM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99DWP958KA67FR0\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"03a9a3d683130245\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Dsc+HiIYfuUAZGhr5nAgGUVWfLFvvLmL3R4xXHSYHgygzFQcng5I1RPPA33IBfEQMNUffzKPhLI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99CPNAFYF22NJAD\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+dHJ1ZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0wPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE1LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjc6NTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"b2242c210ee880d6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?marker=blob-for-list-1\\u0026max-keys=2\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"sRhxYlZ9iySUh+/7ZjE6+UyIpJD1skL7ltypqRfRsH1ODeE+yFKfvio0hMh1DeSk2Co++OI0444=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N9944X4YTMZ4S6A8\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+YmxvYi1mb3ItbGlzdC0xPC9NYXJrZXI+PE1heEtleXM+MjwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/by_3.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WMIDaZAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0785736a90a9cf32\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"P9SutrjEIAe3qwxcVziRDnkeIzslnvwmsQjU95bUWThZ4shb80xm//JkbKCUvBQsdoEMVx2mSBM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99DRHGXBHNE17N5\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"d0fef238256af632\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=3\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qUoZNooiBdd8s8/h40JGGSm47QvvOSkGPA4r+uMATG6DDVBQmRxFNncLieGbqE1yvKS+TDdo+Fw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99922YYV9JGKQ6P\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MzwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/exactly_1_object_due_to_prefix.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WCR4JvwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a560d9f5fdc251cb\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AaZ9WlVUGcb1CdJHkwVTZyRypC4IcyCRCn7af80YjLNNYTUa4BcpEYPJeURMAM8ebL2QDGTzShE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N99CCFRA9Z9KGYY1\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"5ad1d861ec76163f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list-1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rI3Zs98+nR3Nw/CQ4HTBROwcdIxjJqXH/ytCB2rsxU3hUj7OrDAQ20ULbZ0ah2YRDVFpRLM+FyI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N998PYN81TQKSSGH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdC0xPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/no_objects.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WAHcJIgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"939a7a5f9f0f809b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"c2DeWTNJQxN+ihGIm7rH/SDdjKsox7xfxcCEOZ5eARITbz+v+yW80Vo8xc+8MWeZTDHgtis+jWWQkSVsgWiq73IbMawuvAGD\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N9917T8PXZEEQDJK\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"4a8f0fc0ce8983a7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=no-objects-with-this-prefix\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"lS77zKr9+b92jV5yLZwFpFK4uPlrJQ9FZjXGqahhw7vpDiik68HXKyS7zUimG+yJu8NlYoi4HPRniqfNUoLCy9vTYJMoL5Gb\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N991ZY8NBMJGAEYK\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bm8tb2JqZWN0cy13aXRoLXRoaXMtcHJlZml4PC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestList/no_pagination.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0WEXaKOwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a495f9e813168961\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fIu58vTWexGOA5EzlUzPoPVAO+y6J7uXi1c1FpJx44NF/9SppkQaVCCK+8Wi+OzrAeMc2zvCHrpNiBH9Uvoq1G2K8JERH+On\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N999VSA2QJ41WXJH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"dc55ff268b43400d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-list\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:23 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iK58nX7r2VxVlmsSGOFbKmBT5v3fiAoFp952sOtEqQ5mR4vwXkXkJg/UpjloSEeF4RfiaIskJ6o5dV87qEGqqaeY5r7rmUXp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"N998RZFAPSB7E1MH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbGlzdDwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWxpc3QtMDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItbGlzdC0xPC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1saXN0LTI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTUuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestListDelimiters/abc.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0YNMT6rgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"214fc8fbf7eab1f5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"o4HADU+wiDqAe018qmpTgJh7xUKUx1maxuPxZ63wC5pSARAqAmgWlVJtW8/speOWerN+8cs7F14=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR16G71NE5KFY9F\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6MDAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"28e8df5e4d046e1e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fIzsf5EG6ZudXfen1Q5y3bBYLUvg5KATmA7R7FgzAK5wc7CL8evQguBVnlYIbx2yBrXBVkmKfow=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KXE1PBQJEZRKB7\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiY2MudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNkLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjZS50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6MDAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"1af06028f93cf144\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kmoyenrcZyoiqZ6COEl+5X0CBtXH0ssVLyn5YvGCseFCmsBG6RaJ4/Zcjt3UnQA4ApIUU6UDqrs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KH8F7RER44HWRS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PENvbW1vblByZWZpeGVzPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"08da6c314a4b349e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abcdir1abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HVf52GGSk+cUl1wmUEr2OYWSaUqIZFG/a2GvFENCSI3xAQwyGSGOXyFMN3zfrm9df1gfwzn24/0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KS7X7GRP6503HZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNhLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjYi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiY3N1YmRpcmFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"fa8b2f7830890907\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abcdir1abcsubdirabc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"soWG1mNBbdZD5rV5BMdJm46kxNv+1sr4/LPLKurcU6PCZjakr5O5h6/JGUeQDmSdnDT3VfgY+o8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KHEZYW7W0PXG7T\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjFhYmNzdWJkaXJhYmNjLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIxYWJjc3ViZGlyYWJjZC50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"8acadd7b9dc30c4c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abcdir2abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"A8qKsBK9pEGZWLCC6cHQ33SiMd7QQwbbQTPrkAdunNBLsGyAhQGNwM0c/RBy3N51zIu2RIOjQKY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KMGA1AAHFSBAN4\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmNkaXIyYWJjPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLWFiY2RpcjJhYmNlLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNi0wMy0xOVQxNToyODowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PENoZWNrc3VtQWxnb3JpdGhtPkNSQzMyPC9DaGVja3N1bUFsZ29yaXRobT48Q2hlY2tzdW1UeXBlPkZVTExfT0JKRUNUPC9DaGVja3N1bVR5cGU+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"71bbd24b4fb41b2f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CnehBzYrDxX/Jz9TApf7WWlS2Tc+uZDNijMLDhxG/EceSHAI0sMafra8sUVa7iVUPwlAGLslJyQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KTQZV94BSTQ6H2\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiYzwvTmV4dE1hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"58935df1796fe14f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026marker=blob-for-delimiters-abcdir1abc\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6v+XM7088hxZjtdgydef77c3Wxheul/+SgOHCOes1Cmnm9eafP7SevtxarSuSeReuUHdwA0KDhM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KR3Y6SSW23AMCS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiYzwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiYzwvTmV4dE1hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+YWJjPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"1e6280bc2aeff6c2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026marker=blob-for-delimiters-abcdir2abc\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SwkhietCbj47LrTkZN5qI7m/pyclUwgE84IWmIYu7dLnsGooJvoNf+38NIPY38zbbWe5rVYSXRo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KTG48CVK4MM167\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMmFiYzwvTWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"eceadf64e718fbdd\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-abcdir2abce.txt\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:00 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bXvlQoKr16qV/ATOgjDqmvrrqHWo1la975CC3XfRUjzEQg863m3fVB8eujEWBs/3nS2CsroKWp0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KVAAQPTZWNKCRD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4e5c13ff8e3b215e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-abcdir2abce.txt?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"GtLenlUc/OHqFD2ZaTFb+CeSo2DojXssKv5ebPCJnTcuu832kxwfT4bpYVZf9iDqTO3YN5CJJ7Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KW4515DVVSTDN1\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4de92d5343663f2e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=abc\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-abc\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VPGyQPZ9COH/c1yRc4xHomNHWJzenbrcc7vzK4MJIVrdUbcU0jnF+7433kDeQaLUB1XLT++0vLc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KX2M7EE29S2FJS\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1hYmM8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5hYmM8L0RlbGltaXRlcj48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTkuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtYWJjZGlyMWFiYzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"a3b6a844e1e0b994\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-abcdir2abce.txt?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:26 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bBmin8oXs45WVTPEcZPLvmO1zkqXjTIWyE+kJHRwMN/I+GC3GNnESY8aL1oS1NpiNMLkocK15HU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"A7KMNP01FCTAEZ7N\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestListDelimiters/backslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0YEpLLtAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2735b673da529c58\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hFIhAJpwUAdor9hhn21Ec5AYnEGqkwBoc9DtM/F29na6GbxkZhpANgiVi6k0Q88r/GmrJfLITOeKSvPHdjTwt+AVh73LrrCu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR34N0S80CBGNKF\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxhLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxiLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcc3ViZGlyXGQudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIyXGUudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"3ce136488bac51b2\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"t7Ug43hbBoK+//LUNdpL5lA6aiY2HWsqZ/EvIlRjUXzlYs5a3ahk8VvFcY2dP6Y6ZrDzM1HGMHyO6EYzux37dtsnfMRnGRQG\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR8VQGE6SX09MV2\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxhLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxiLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcc3ViZGlyXGQudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIyXGUudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"0ffe97cc8f4bbe1f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Jq9auZIBF6SRLIPVOCqvI7WG1UzSQnTqmtNsBkxAtbbv7pLqP3O1F/e7nIzHlPX5d0LwiUGe06zHCrc6YzrLC1njP5oAD1Z8\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MRAAXKNKQ6EDDMP\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+XDwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIyXDwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"08b6be712a32189f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5Cdir1%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"wAYwuqZQ6W+odk5HOjhEWVspqPUB1EfKr5UDuYd0bJg8A8Xp80hQiASBkiY7A4n2SP78rSjvg2JprCyVrz3Y0HkQRkd6OUgp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MRB84JHHTJ349KM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVw8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXGEudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXGIudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXHN1YmRpclw8L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"7d43c6eceff27e4a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5Cdir1%5Csubdir%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"y8I4L/I4Emuwk2bwGC5N7/6updBk3J/rU9fValX2iib99BmuB/JW8B6bKtoJ0KxERZEGa6h9H239NbD1f8m/f7MLIzD7pnbu\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR8V4WSG24R98BZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+XDwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMVxzdWJkaXJcYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcc3ViZGlyXGQudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjQxOjI3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"2cb907be78a9dc35\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5Cdir2%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"shz8moZPIRQC89hQDSZvjR/KJYk9lo18arlYeNPR6LwtoWza4jW/7oE/uN3lQ9jEBlEbZIeI1mTiveL0b/A0nm05nclHIB8u\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR80PBF765HJPJM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cZGlyMlw8L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIyXGUudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU5LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"7b3d5c9f8e5382fc\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"5Aa6teL+O4dFLjAR4sLIXwfaB2R+f2mulGeXFD7zKYlospO2Hyohrw/NE5I1viuIrHSc88GCe+bmeH1HWj3xpzJhKoVJHJi8\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR369S0V3EW1GW8\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXDwvTmV4dE1hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+XDwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXDwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"6afa28e768ac16fe\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026marker=blob-for-delimiters-%5Cdir1%5C\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VzKxOh1wazAcuDbMtN5jWRH8bQwIpS/+YF7fM71c88EdHdE/AzkG5Q9YTfcI/+jCvgf+hPeFiWur+UQFtqn0xV73aEBvfb78\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MRBSB4K3P6AJN0F\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIxXDwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjJcPC9OZXh0TWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjJcPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"d28fcab247fce296\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026marker=blob-for-delimiters-%5Cdir2%5C\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Q9neP6QpqM9eK6QZQzoxs76xYeg7rylv1OIA6huIfA4iy9ITovinC/s/eSOtRl2PDqYKeIUThI5r37soZMYmQ7jv+6Ghd18M\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MRFQGXNCJZX0YDD\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kZWxpbWl0ZXJzLVxkaXIyXDwvTWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj5cPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLVxmLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjo0MToyNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"70feaf4d39334e8c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-%5Cdir2%5Ce.txt\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:27:59 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AwGGkctayyU5gsm3qDuId1MThuJb4GAbWt0VhMRiBDtTZDDRiloBN5tynaX3GqUapKA97ePiI4eOt6qcs4qO31KQvwzepw19\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR7WVD4KVZV4DTG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"41be41367d26114f\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-%5Cdir2%5Ce.txt?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qtm4a+RXDRj7Op/V0q6fUSSdt1iXlEbCVSDgNfa7IZPf42kFfQsoBxcHXODWAor5CqPLhP6DfwBPoKzS+Z0+83L8173arv52\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR38CRN35MTXQTT\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fdbb499adbfe2b9c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%5C\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%5C\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eD32IW7T6OpV1Wzst4+Bj0/HIIH7gXMGsvpVPk2nj6Bx2gbgiDkZjfdGWm1VPfxJydHv9ZEfQFaCK4Eq8Z2gCRSDYPPYx8YB\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR5SEJET0AH5741\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy1cPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+XDwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy1cZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6NDE6MjcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtXGRpcjFcPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"b98d26f10695b2b3\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-%5Cdir2%5Ce.txt?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YgL3taMBwkcRT8uGzgNL0EtkMeme/VtqGUDmZO5ZUIXa/qvwk5DKO8P49jD7bz8JjvMRzIvv/z0ei72fAzTOsELGYRbdHFMX\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MRDX6XP6SGMVF0C\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestListDelimiters/fwdslash.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0XK8zLUgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"378b7bb1476ed3d3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"xTZ20IUPkinI2X/ikVWKjMjn7wf7Hn7qdRmCxUaTLzKGObrm78V8ytn4JjX0kpuPEdgxnrFIcXkiw+prZZljz7HC7sCwonr0\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAK3VN12BN3EPH7\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9hLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9iLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"d2cebd35c5b6c2ec\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"AAPaR+g8mcZUgrwSugRk6LgWtikVyMTmXL+UU0M2q3hmoTaylOc2qd7TgAFJXRcr2MPGzI97f6exWeGWpOOiKJnf977DpIn6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RARF7VN8HSGS91P\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9hLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9iLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"a4410267e45ebc98\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QplGN5hkhlYh/j0VQrbGHFpb+hfADcb+y470XprHH/ixfboJP7u3bn5fFXO90FkOSyU4eMdStUhLjb//d2apC2zMS4UB0CsI\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAKHZ33EQCPMDP4\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"7ef491230f91a977\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2Fdir1%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mfO8uPvdQeya+FMEiuvP39KLPlR8k1I43WVo57TnSlkTGs96+rAwm2s+o33p1nPBgMIYxiusWxUtoO3zR6MJk4pKxR84yPM4\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAY4W4WV28G1MSC\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS88L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2EudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL2IudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxL3N1YmRpci88L1ByZWZpeD48L0NvbW1vblByZWZpeGVzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"049d5c9b0c2033c5\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2Fdir1%2Fsubdir%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rKmHBlwuiRoG8GX56FQ2I40bNG3qciywZws67p2xrLGnPoAS3beJm571AkEvqc5xtzw8D3lfAv8NDSanEro3q7ueNmFi/WjF\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAPJBGF0D4YX9GB\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMS9zdWJkaXIvYy50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvc3ViZGlyL2QudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"f104f070b51d6ffd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2Fdir2%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"WGQkK2VXJEKpHBBF818YJL1tnwORupld/9HnBanMh1bcVSUDiMByPWvd7JAvfls7ul5BfrZJ9eMb9uMNn/7bFJtdNO5agn8k\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MREXA0YZ6KM8ARA\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vZGlyMi88L1ByZWZpeD48TWFya2VyPjwvTWFya2VyPjxNYXhLZXlzPjEwMDA8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyL2UudHh0PC9LZXk+PExhc3RNb2RpZmllZD4yMDI2LTAzLTE5VDE1OjI3OjU4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48Q2hlY2tzdW1BbGdvcml0aG0+Q1JDMzI8L0NoZWNrc3VtQWxnb3JpdGhtPjxDaGVja3N1bVR5cGU+RlVMTF9PQkpFQ1Q8L0NoZWNrc3VtVHlwZT48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"57625d6e6c3480be\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tBDO/VFZ0cU34sSuVOYivHz+9pNfS16tgPNkuUAbDBR9qFRg6IpvUnJCHI9Q6gSg1gxnB7OtNcf9uNjev6Qno1nb/Fc8ON/Q\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR23C37JWK5CHFX\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TmV4dE1hcmtlcj5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvTmV4dE1hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29tbW9uUHJlZml4ZXM+PFByZWZpeD5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvUHJlZml4PjwvQ29tbW9uUHJlZml4ZXM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"2cf74ace18824e4a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-delimiters-%2Fdir1%2F\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2x/WNZ4ZUNWvjiuvB8UTdRE5RsfS6mD1TUY25Z/Bz4Jt/CKfWI/QWraUklr1SjC6r5tt5u4idTsYDWpiLc+aWkXzSWJIFe3A\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR8NHCVYRHDNJM2\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIxLzwvTWFya2VyPjxOZXh0TWFya2VyPmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvPC9OZXh0TWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPnRydWU8L0lzVHJ1bmNhdGVkPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjIvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"2490178f5d3689e4\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026marker=blob-for-delimiters-%2Fdir2%2F\\u0026max-keys=1\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tPb4t/B0xT32mwTpaU2PRwz+sKuA0c7DbrJOSpIyhDaaWpxzcROty+04orGsjhftdlcXlhLjRr7rYa1gHsA74GFDVTXnnUY3\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR3WYYJKW2RF1VK\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj5ibG9iLWZvci1kZWxpbWl0ZXJzLS9kaXIyLzwvTWFya2VyPjxNYXhLZXlzPjE8L01heEtleXM+PERlbGltaXRlcj4vPC9EZWxpbWl0ZXI+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1kZWxpbWl0ZXJzLS9mLnR4dDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==\"\n      }\n    },\n    {\n      \"ID\": \"fe134f8311f0a952\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-/dir2/e.txt\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:27:58 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nD+eqxhK3oXgb2OctVl18Hg8nL6MzPa8KCm5KUC+yfZ3t1oQvip2jSIjwLpn7YWivmw84H17H7nCHIcngPM7kEVMDMbmOlc7\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR7KD4T2TKF2DJQ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"eb54af0724ea09e4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-/dir2/e.txt?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KoGii7h/Ryj/HH7ooNegGpfhmrhW5QST2Q1HTY9CN+jt0Ul0o+WQCd5R3xhYsQ5RfIRz5BqzCar7XtjqdPPh8EUCA1in7rzT\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MRF0N8ET7H47NNR\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"743c0dde46f2a78b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?delimiter=%2F\\u0026max-keys=1000\\u0026prefix=blob-for-delimiters-%2F\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hIWT4zXDyodroCbN9qOBpUvWmYcQRQzobH2Mp1H8Lc3AL/4MDycvKQtxaAV+NalCBTE6WRALJa9aBxNvMuqm4lINjWj77LVd\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MREFMWZ39ECYKYX\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItZGVsaW1pdGVycy0vPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxEZWxpbWl0ZXI+LzwvRGVsaW1pdGVyPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YmxvYi1mb3ItZGVsaW1pdGVycy0vZi50eHQ8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTguMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb21tb25QcmVmaXhlcz48UHJlZml4PmJsb2ItZm9yLWRlbGltaXRlcnMtL2RpcjEvPC9QcmVmaXg+PC9Db21tb25QcmVmaXhlcz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    },\n    {\n      \"ID\": \"c51883cbd48bd847\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-delimiters-/dir2/e.txt?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"g9llOzZobfp9kslLI4lG+Kje8Jsy/jR9SQgbhtnDacbbzQZJdKr88fyxZ4LLJuMwlUPvN6WZjDZJfcGrLtJ+njqDDJfNZ/Mc\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"9MR1N60RFBX4M6W0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestListWeirdKeys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0XIlhJwgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"41d759341e841342\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=list-weirdkeys-\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"2hXtG6JBSN8xq93bKJSSJpitia+pcbKdjMr3v3KHnQFnG4NNzTDmrKihnfS4kEmVZ3rx4SEr18Y=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAKHTSJ8YXG0SEG\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bGlzdC13ZWlyZGtleXMtPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtICEmcXVvdDsjJCUmYW1wOyZhcG9zOygpKissLS4vPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy0uLl9fMHgyZl9fZm9vLy4uX18weDJmX19iYXIvLi5fXzB4MmZfXy4uX18weDJmX19iYXouLl9fMHgyZl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy0uLl9fMHg1Y19fZm9vX18weDVjX18uLl9fMHg1Y19fYmFyX18weDVjX18uLl9fMHg1Y19fLi5fXzB4NWNfX2Jhei4uX18weDVjX188L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLS4uX18weDVjX19mb29fXzB4NWNfX19fMHg1Y19fYmFyX18weDVjX19fXzB4NWNfX19fMHg1Y19fYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy0xMjM0NTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtOjsmbHQ7PSZndDs/PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1APC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1bX18weDVjX19dXl88L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLV9fMHgwX19fXzB4MV9fX18weDJfX19fMHgzX19fXzB4NF9fX18weDVfX19fMHg2X19fXzB4N19fX18weDhfX19fMHg5X19fXzB4YV9fX18weGJfX19fMHhjX19fXzB4ZF9fX18weGVfX19fMHhmX188L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLV9fMHgxMF9fX18weDExX19fXzB4MTJfX19fMHgxM19fX18weDE0X19fXzB4MTVfX19fMHgxNl9fX18weDE3X19fXzB4MThfX19fMHgxOV9fX18weDFhX19fXzB4MWJfX19fMHgxY19fX18weDFkX19fXzB4MWVfX19fMHgxZl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1gPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1mb28gYmFyIGJhejwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vJnF1b3Q7YmFyJnF1b3Q7YmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1mb28vL2Jhci8vL2JhejwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozOTowMS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vL2Jhci9iYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6NDAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvb19fMHg1Y19fYmFyX18weDVjX19iYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLXt8fX5/PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy3imLrimLrimLo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"97b0e52f1707918f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=list-weirdkeys-\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:24 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dhhr3242v/KsQSQ418yl3/o4sL9VtRyrcPoeMwP5q2xTMKih9QkCz25uBU0fs83zG7RYu0lsRhY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"1RAN5S2M04BHNDJ9\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+bGlzdC13ZWlyZGtleXMtPC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xMDAwPC9NYXhLZXlzPjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtICEmcXVvdDsjJCUmYW1wOyZhcG9zOygpKissLS4vPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy0uLl9fMHgyZl9fZm9vLy4uX18weDJmX19iYXIvLi5fXzB4MmZfXy4uX18weDJmX19iYXouLl9fMHgyZl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy0uLl9fMHg1Y19fZm9vX18weDVjX18uLl9fMHg1Y19fYmFyX18weDVjX18uLl9fMHg1Y19fLi5fXzB4NWNfX2Jhei4uX18weDVjX188L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLS4uX18weDVjX19mb29fXzB4NWNfX19fMHg1Y19fYmFyX18weDVjX19fXzB4NWNfX19fMHg1Y19fYmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy0xMjM0NTwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxOC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtOjsmbHQ7PSZndDs/PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1APC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1bX18weDVjX19dXl88L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLV9fMHgwX19fXzB4MV9fX18weDJfX19fMHgzX19fXzB4NF9fX18weDVfX19fMHg2X19fXzB4N19fX18weDhfX19fMHg5X19fXzB4YV9fX18weGJfX19fMHhjX19fXzB4ZF9fX18weGVfX19fMHhmX188L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLV9fMHgxMF9fX18weDExX19fXzB4MTJfX19fMHgxM19fX18weDE0X19fXzB4MTVfX19fMHgxNl9fX18weDE3X19fXzB4MThfX19fMHgxOV9fX18weDFhX19fXzB4MWJfX19fMHgxY19fX18weDFkX19fXzB4MWVfX19fMHgxZl9fPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE4LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1gPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1mb28gYmFyIGJhejwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozODoxNy4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vJnF1b3Q7YmFyJnF1b3Q7YmF6PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy1mb28vL2Jhci8vL2JhejwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wOC0yMFQyMjozOTowMS4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7NWQ0MTQwMmFiYzRiMmE3NmI5NzE5ZDkxMTAxN2M1OTImcXVvdDs8L0VUYWc+PFNpemU+NTwvU2l6ZT48T3duZXI+PElEPmY0Mzc1YjU5YzBjZmY0OGI4ZWQ5OTAwMjJlOWYyNjY2YTQ1M2Q5NTlmMTNkNzcyYWY0YzE2MWNlOWUwNjRhMmI8L0lEPjwvT3duZXI+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PENvbnRlbnRzPjxLZXk+bGlzdC13ZWlyZGtleXMtZm9vL2Jhci9iYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6NDAuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLWZvb19fMHg1Y19fYmFyX18weDVjX19iYXo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5Pmxpc3Qtd2VpcmRrZXlzLXt8fX5/PC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTA4LTIwVDIyOjM4OjE3LjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDs1ZDQxNDAyYWJjNGIyYTc2Yjk3MTlkOTExMDE3YzU5MiZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48Q29udGVudHM+PEtleT5saXN0LXdlaXJka2V5cy3imLrimLrimLo8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDgtMjBUMjI6Mzg6MTcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMD5.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0kBSvkUQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"53eaad2723088416\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"az7p2FeUq6YZnEclo0umYBVAO/o8RVWKhLVqXoPWfa5zhLkWZZMvmpG8lyEYFgFosEWgRgkbD/8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2ZSME4TGE516RT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b31b7f09a1f68d7e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"Content-Md5\": [\n            \"afqrYmg1ApVVDefVh7wyPQ==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"7\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Nw0KZ29vZGJ5ZQ0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6RFkvWWRBPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"69faab6268350295550de7d587bc323d\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DY/YdA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"J9bd9Xlj1BSBozP+OoJeFm7vGWfimHbHZVr0KtsNFvUbb7ItNVOqrC+bqPEoJi3qYE1+cE7EnB8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2RCZT4YARGB64F\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6faf6a9b6b8dda0d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mkGJRPmcxVxUUVmAET783A16Uxxdykc4YVi0o7lQtW96hDrr/iGNg3o431gYW0MCOIHANGD85e0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2JY7YP67C2HJKT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b16479d102da391f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"7\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"69faab6268350295550de7d587bc323d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"KS/fy3s/rVqjJxOP1itjBPhNilqGcE+dorJ0tqnISa/PHgKtxYG1p3BXklhC46vf7n3lyRFvRl0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2YHZ1F0VZ49D28\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f7b0f1ecf324d821\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1000\\u0026prefix=blob-for-md5-\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"A1dX8uMiwB534QW8go8H1Wc7FL0hawyVO1bjC0dVejohhIVd1/DP9K6rOQ93Hn0lOyHAywwK7sE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2X7NY5JQ3BDQSZ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+YmxvYi1mb3ItbWQ1LTwvUHJlZml4PjxNYXJrZXI+PC9NYXJrZXI+PE1heEtleXM+MTAwMDwvTWF4S2V5cz48SXNUcnVuY2F0ZWQ+ZmFsc2U8L0lzVHJ1bmNhdGVkPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLW1kNS1hYWE8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6MzcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzVkNDE0MDJhYmM0YjJhNzZiOTcxOWQ5MTEwMTdjNTkyJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjU8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmJsb2ItZm9yLW1kNS1iYmI8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6MzcuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90OzY5ZmFhYjYyNjgzNTAyOTU1NTBkZTdkNTg3YmMzMjNkJnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjc8L1NpemU+PE93bmVyPjxJRD5mNDM3NWI1OWMwY2ZmNDhiOGVkOTkwMDIyZTlmMjY2NmE0NTNkOTU5ZjEzZDc3MmFmNGMxNjFjZTllMDY0YTJiPC9JRD48L093bmVyPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=\"\n      }\n    },\n    {\n      \"ID\": \"b693e5aa86fc0f78\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"7\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"69faab6268350295550de7d587bc323d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"M8EyqgJrhzCCYWUoZqNSmrq/ayVz517pN8WIKUGqP2tIRMrHHsgslz1BIJngvaRoC3tIdOFhRj0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2S43VYK5B6MBP6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c29fb1dc907edc45\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-bbb?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zRIEfx6UP7/N1AiGQXanw9NOJ+Ek/Z86AGtzk2RY7n59FWK3FoJiSzMQzSDwnVtgYwu/BRhgEEU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2PDNK1CTF8WSTY\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"37f8ea11639cf335\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Y6Osqpt7wR5wmM4DNLliDTgMCQILQ71QfzJt+5YGrWFqd3HJG28xKO1cLbwnMYkm5p70ihG3kDk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2T98MQMWVX3E44\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3587ca4a03e7884b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-md5-aaa?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BWyoyIJZRq/zIA7xAvVp08/FeHmPOJw0V7U9Ky+OZu7Jm+JcL1s+oqCRFH2X43s7ZXsteF2Xc6U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2YWX15AR6978N9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/duplicate_case-insensitive_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0jB4D/uwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/empty.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0iNOquIwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9582b0622ba2bf6e\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"tEbGQ5hWink/V9NjRb9xaNAXyC0pJqJvJe6ydZLuwBTVuKUtu6kUeYqRdr30lvfEhaQC4C0u4oE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF0JEY6BZW9BDAP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cc9d872f5a551875\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZBBq6eJXX3uMPf9bBRKBsa7K/irz6L69xHiQd7jO9BmS0xmnIERxo/hD8jO6zAoKsnaFtlT0q7U=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFCABYC4BZRTFNB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"30b8b7674585bb06\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iZj2xgSbBCwccyzuRwyzVo09Yi1Wwg46pjdKyudAFmqBllXMhpzzam/BHufrXdzKZ35MpHCd+JY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JRBXFZSQDRJK2Z\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"66daef679dbf6e4e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vmOpbyCYUEe/yOnVPzovToEX/aq1V0OwhVEnmibEMFBPiw5gNL1/JkGOyj33sEI+00uWZ/VR0LQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JTGWV3G75DQSFG\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0jB3M1VwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/non-utf8_metadata_key.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0kBRJEqwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/non-utf8_metadata_value.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0kBSDIuQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/valid_metadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0jB4q54wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e5fdbe75f0acfd57\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Amz-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Amz-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"L5m8426JaE2OhHsyGN+LwrzPZnwU6kQl7mXYOS/Gh0jeR8LCX2dCc+9CXUNHvcQMSVc/Qa1GQ72vOwle9YQgu0wlcL8EaLcX\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JVX0Z3MG52YQG3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"81690fc7f80cf080\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ao+rYwlgOIpX2ZDodwevMkOT0vxGoERFjwRlogul6kSjuIR0cqS7cZdkPBt4/AInfuwH42Bq25AlijdKOIqCyZUllMIr9Qcr\"\n          ],\n          \"X-Amz-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Amz-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Amz-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JH6HM2KSQC34KP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4a45b46cdbf6693b\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"B23Jn/OQDXHt9STVmrjYQtbiG/mDMYU4kJz1Z0falMNXz4brcnA113T6KZ/3brBn39dG+HFdxUfpzTz770je3GAJqY/JFFi+\"\n          ],\n          \"X-Amz-Meta-Key_a\": [\n            \"value-a\"\n          ],\n          \"X-Amz-Meta-Key_b\": [\n            \"value-b\"\n          ],\n          \"X-Amz-Meta-Key_c\": [\n            \"vAlUe-c\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JNN4ZX765K90XG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b5c366507e3dcf60\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EJE5slIJTubdoPZSolD0f4LRGHb7oWbnuTTyNkbJBGDr/iW3f5IR31C53eQN9q/8207w9odWFEwrhhLS5Ek2wN/R37vCyIwM\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JPEWC3MPBYWZ3W\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/valid_metadata_with_content_type.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0jI9XpugAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0b2467194a569e6f\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"IQK2oRYDQUXSzR6Sg08+zEJD5rVgWBm71lhAf71bX2BhIDB8PTICRr5/6GhlsfyFlPLSoG4zH63tt7K7kLWfLWAcPZdAWBdD\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JR68R9ERYR7CVD\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b8187daede55ce30\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OgyLDIw2n3TtNcjne/ahWy+90kAqh9HhZVt997MjzSg9zuxFLJ5NyWJgXN4ZacWQcOFH425HGsQpSLBboq1JzKhqQqlDmPX4\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JVAPD9DCWHBS43\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"59cc8939844f3797\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"TycYzUQBzQCO15fpFfzZbZC3GljVOKPEr3o3X+H38fBy0OGHLlvAmJOWRPcbmutd/9v5beYSFNYsnlibfArq2LoIkp8EIo2B\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JY2BQRRDABANV3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e42fa1bd9a297f1b\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"BrifymH/nLnKjnOeiGVBN8/QSKTFj2d3sxLu9jc6G0sOcpOdLFLQD5/mnfjEwHVxmhh56ZP9qnqXL0Xs+Nr5JjM4M5JAKLbf\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JGAFEVER2T6462\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/valid_metadata_with_empty_body.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0jFfIYxgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"09fadaef7bb161f7\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DYUHxa1bq5nSuhg9TL7B4z0RFkIfse0/XxO5AP3O1zr1F7pkTf02T+nwkhoo3mBCUWYjcnHqgWLXhJBaa3eTrrUjTTeT7CPx\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JHWYQQE46GQ4Z1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1f4f5a171e9488cf\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ov98fBC03mNzWNIYd74pLv73BWa7rHIbHZSzXJyiNS2dc8CZA/cJcqO9K7an7w/+bfzX/+oC9OnAja+tKCuJ7SnszKQaqvPz\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JZ4J99FNTGWCMG\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a818601a548504c8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vrhr99rJxZl6DP6eza2tYlhVouw2Qcy380i0nVibdZFTXgjGKT9vihT9WXpi/lzUctYNvlggSB/CsD5wdBqZhaklTKs0Tceo\"\n          ],\n          \"X-Amz-Meta-Foo\": [\n            \"bar\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JQ5B8XJNTG8F7N\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b764e47feee4be53\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"A8o4IKUuJA3SrcGNKy7O+1Wu45G/ZPpOXsI4UGEfD/Hc8UI8vvu7iuikbD+vEFrXWDiwhkWWFYVpA1MaG4IyjHBD1Cg7xzbl\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JX3AKF96MYJBS8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestMetadata/weird_metadata_keys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0jMbErFAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e890432c4147560c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"Content-Md5\": [\n            \"XUFAKrxLKna5cZ2REBfFkg==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"5\"\n          ],\n          \"X-Amz-Meta-%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Amz-Meta-%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Amz-Meta-%20%21%22%23$%25\\u0026%27%28%29%2a+%2c-.%2f\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Amz-Meta-%5b%5c%5d%5e_\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Meta-%60\": [\n            \"%60\"\n          ],\n          \"X-Amz-Meta-%7b%7c%7d~%7f\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Meta-%e2%98%ba%e2%98%ba%e2%98%ba\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Meta-..%2ffoo%2f..%2fbar%2f..%2f..%2fbaz..%2f\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c%5cbar%5c%5c%5cbaz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c..%5cbar%5c..%5c..%5cbaz..%5c\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Meta-12345\": [\n            \"12345\"\n          ],\n          \"X-Amz-Meta-Foo%20bar%20baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Amz-Meta-Foo%22bar%22baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Amz-Meta-Foo%2f%2fbar%2f%2f%2fbaz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%2fbar%2fbaz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%5cbar%5cbaz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Meta-__0x3a__%3b%3c__0x3d__%3e%3f\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Amz-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"NQ0KaGVsbG8NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk5oQ21oZz09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"NhCmhg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YxWHSLMzOIRBfYyh/AHZ9iXH4X6ykQzxvuDTDqhsRp9bv9NB+z+tTmmvnF8V0tSrPuG41K3lLso=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JRHWDNFD6W4Z33\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1558d9e284414cce\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ZRfh06DMtYQPPWl74bB3lU37OoXe4cP8rUP31h8HgsTWduSHsmNXwBhCAGypBtmOc/+6E4FhdGk=\"\n          ],\n          \"X-Amz-Meta-%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Amz-Meta-%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Amz-Meta-%20%21%22%23$%25\\u0026%27%28%29%2a+%2c-.%2f\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Amz-Meta-%5b%5c%5d%5e_\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Meta-%60\": [\n            \"%60\"\n          ],\n          \"X-Amz-Meta-%7b%7c%7d~%7f\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Meta-%e2%98%ba%e2%98%ba%e2%98%ba\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Meta-..%2ffoo%2f..%2fbar%2f..%2f..%2fbaz..%2f\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c%5cbar%5c%5c%5cbaz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c..%5cbar%5c..%5c..%5cbaz..%5c\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Meta-12345\": [\n            \"12345\"\n          ],\n          \"X-Amz-Meta-Foo%20bar%20baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Amz-Meta-Foo%22bar%22baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Amz-Meta-Foo%2f%2fbar%2f%2f%2fbaz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%2fbar%2fbaz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%5cbar%5cbaz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Meta-__0x3a__%3b%3c__0x3d__%3e%3f\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Amz-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Q3JWMCGNAR3AAS2T\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0cbcd12b5b7abd59\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5d41402abc4b2a76b9719d911017c592\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:36 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fXOvBYQlir2HMZMXzUCmmx8CeI49mA57IP0fcpkEAxz5/JG0kiJWPk5sBmSw1AxWh80PtvRJy3c=\"\n          ],\n          \"X-Amz-Meta-%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f\": [\n            \"%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F\"\n          ],\n          \"X-Amz-Meta-%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f\": [\n            \"%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F\"\n          ],\n          \"X-Amz-Meta-%20%21%22%23$%25\\u0026%27%28%29%2a+%2c-.%2f\": [\n            \"%20%21%22%23$%25\\u0026%27%28%29%2A+%2C-.%2F\"\n          ],\n          \"X-Amz-Meta-%5b%5c%5d%5e_\": [\n            \"%5B%5C%5D%5E_\"\n          ],\n          \"X-Amz-Meta-%60\": [\n            \"%60\"\n          ],\n          \"X-Amz-Meta-%7b%7c%7d~%7f\": [\n            \"%7B%7C%7D~%7F\"\n          ],\n          \"X-Amz-Meta-%e2%98%ba%e2%98%ba%e2%98%ba\": [\n            \"%E2%98%BA%E2%98%BA%E2%98%BA\"\n          ],\n          \"X-Amz-Meta-..%2ffoo%2f..%2fbar%2f..%2f..%2fbaz..%2f\": [\n            \"..%2Ffoo%2F..%2Fbar%2F..%2F..%2Fbaz..%2F\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c%5cbar%5c%5c%5cbaz\": [\n            \"..%5Cfoo%5C%5Cbar%5C%5C%5Cbaz\"\n          ],\n          \"X-Amz-Meta-..%5cfoo%5c..%5cbar%5c..%5c..%5cbaz..%5c\": [\n            \"..%5Cfoo%5C..%5Cbar%5C..%5C..%5Cbaz..%5C\"\n          ],\n          \"X-Amz-Meta-12345\": [\n            \"12345\"\n          ],\n          \"X-Amz-Meta-Foo%20bar%20baz\": [\n            \"foo%20bar%20baz\"\n          ],\n          \"X-Amz-Meta-Foo%22bar%22baz\": [\n            \"foo%22bar%22baz\"\n          ],\n          \"X-Amz-Meta-Foo%2f%2fbar%2f%2f%2fbaz\": [\n            \"foo%2F%2Fbar%2F%2F%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%2fbar%2fbaz\": [\n            \"foo%2Fbar%2Fbaz\"\n          ],\n          \"X-Amz-Meta-Foo%5cbar%5cbaz\": [\n            \"foo%5Cbar%5Cbaz\"\n          ],\n          \"X-Amz-Meta-__0x3a__%3b%3c__0x3d__%3e%3f\": [\n            \":%3B%3C=%3E%3F\"\n          ],\n          \"X-Amz-Meta-__0x40__\": [\n            \"@\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2PXA8W2NRTR6DE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"6535e221ef23bae7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-metadata?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:37 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"iOu6CT1cf5oca+IyPldFUOufWY+Ca5nLD+U13RT9/Pbf/EfVgfAGMmx2Mzv/4dggBeerDatiw8Y=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"8V2PQ5CQ3GY43791\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestNonexistentBucket.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0VMFsWNwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"72c98808950b4711\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cdk-bucket-does-not-exist.s3.us-west-1.amazonaws.com/?max-keys=1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:21 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"+UxN47HfrfA3rtMhSa+58epZWOPdWaNAFJYfYsIySa1q5KHL/fjTBGMccgqo114N1f4yx3dhMNY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEBCDNGEZT3GT8QN\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEJ1Y2tldDwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGJ1Y2tldCBkb2VzIG5vdCBleGlzdDwvTWVzc2FnZT48QnVja2V0TmFtZT5nby1jZGstYnVja2V0LWRvZXMtbm90LWV4aXN0PC9CdWNrZXROYW1lPjxSZXF1ZXN0SWQ+SkVCQ0ROR0VaVDNHVDhRTjwvUmVxdWVzdElkPjxIb3N0SWQ+K1V4TjQ3SGZyZkEzcnRNaFNhKzU4ZXBaV09QZFdhTkFGSllmWXNJeVNhMXE1S0hML2ZqVEJHTWNjZ3FvMTE0TjFmNHl4M2RoTU5ZPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"a65aaaf980492e7f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/?max-keys=1\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:22 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Bucket-Region\": [\n            \"us-west-1\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EnlE3lIX0ghY8Hdp7eVVYqiMLQiHeZCn20+rtQet0lxU7Sik99JE41xpmyUiKlSfV4E+8Th7eyM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"JEB8K5E8PXSSAADE\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Z28tY2xvdWQtdGVzdGluZy0yPC9OYW1lPjxQcmVmaXg+PC9QcmVmaXg+PE1hcmtlcj48L01hcmtlcj48TWF4S2V5cz4xPC9NYXhLZXlzPjxJc1RydW5jYXRlZD50cnVlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5ibG9iLWZvci1jb3B5aW5nLWRlc3Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjYtMDMtMTlUMTU6Mjg6MTEuMDAwWjwvTGFzdE1vZGlmaWVkPjxFVGFnPiZxdW90O2IxMGE4ZGIxNjRlMDc1NDEwNWI3YTk5YmU3MmUzZmU1JnF1b3Q7PC9FVGFnPjxDaGVja3N1bUFsZ29yaXRobT5DUkMzMjwvQ2hlY2tzdW1BbGdvcml0aG0+PENoZWNrc3VtVHlwZT5GVUxMX09CSkVDVDwvQ2hlY2tzdW1UeXBlPjxTaXplPjExPC9TaXplPjxPd25lcj48SUQ+ZjQzNzViNTljMGNmZjQ4YjhlZDk5MDAyMmU5ZjI2NjZhNDUzZDk1OWYxM2Q3NzJhZjRjMTYxY2U5ZTA2NGEyYjwvSUQ+PC9Pd25lcj48U3RvcmFnZUNsYXNzPlNUQU5EQVJEPC9TdG9yYWdlQ2xhc3M+PC9Db250ZW50cz48L0xpc3RCdWNrZXRSZXN1bHQ+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/length_0_read.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0aKoQOHgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7339d242625d5887\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"fdx36OI5thWQn8Fz6W+/XJv+4VUJ3nUkhbtGLdexsD42cUH5y8OhGDbLwDsxUiddVLeURGcC44g=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PSNYB8WHNC0DYM\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"22ab3d529c292916\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=0-0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 0-0/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"PDaxHoErtB54gDoiAoZnvn9xGSR0Wc3oAKYhHPHReV7zdxZiyICtzVXUwHiC/5hOWK8COgSJwPY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PPQSZVR1WVG7SC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YQ==\"\n      }\n    },\n    {\n      \"ID\": \"8eae30145092dd32\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=0-0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 0-0/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LdJA3ZosRluB/Z57oks5eZgq09uhtYAYk9eGigTiZbfLah+MCgprqxo/w74Vrox5foHLwl0z3cs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PHS638VASG2180\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YQ==\"\n      }\n    },\n    {\n      \"ID\": \"79fd2d6252675f0c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mZY5tOLGvE/MT6wEfq1WIGxIvFfUQs+fcBLvGpctyuPhDDeOsJlrcNFBNYunJdixsZrY2BCJ8wY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PSD5FHMFHW4MCY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"014c97b7f04735e7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DsIHw1lCHQAg64G3rUfwZFQ12WTQij+Zzpr9Vh4/LoLTfToxbqULKB2ldJWs3sX724Yx6jXz62g=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PZ41J4YZQ2J7JQ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/negative_offset_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0aKnUNzgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/read_a_part_in_middle.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0bGUu+XwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5aad781fe5098d73\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rabKwaHJj8xmmLSxFJHTjFtDECwjr/vg84Kj6rkyKwDipTY6hLfxpf9T2UsWjvWxqvtKtWb7Bp0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4XQW779ACQ74F1\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d040d12bb49f0039\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"VtzmQI4q3tmehfW4R7W4lGajpdVkZsKXVbpD3CJHzL8V1hBRFWEtbhmhiUNV13HQO0vdzuRxYJU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4YZMN2B810VY9E\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"671ceb92e13f86dd\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zymj6/NjvIEmPpLpBmWFyKQP9pvgbD0nnAe6ErpK54fTGFtsh4j5+hHjBj6jD+SdU6SpgLJxKN8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4QHE75F3JZP0YJ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm8=\"\n      }\n    },\n    {\n      \"ID\": \"bd424f94418e654e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=14-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"D6Gf4I5At2Ytz7evOuqzBOezVqzMVGcxtrREfVsqwygk97U8ccApPOaben/ga1AeCjnu93t+m3o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4GT6WMTR24X5V7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"8a576cd34c495e2f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=14-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"1\"\n          ],\n          \"Content-Range\": [\n            \"bytes 14-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"oQbhrY5hs0k79x4otqUBUUM1e7N7VAEiHftZPAygE+vqiKHk3XjMB27v8EYJb7eW0dgylesJAA8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4MJTFPVXBEKK51\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"bw==\"\n      }\n    },\n    {\n      \"ID\": \"6163a6482192d122\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=12-14\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"3\"\n          ],\n          \"Content-Range\": [\n            \"bytes 12-14/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ghI6Xo+Bra3QtnpPEIYNPCgRLtGgm42PiZ41iEXdkDclYBb4zdEhwTCVWIHaPTQRC3jpqV2KvIk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4JFRN7R0CP9ZBA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"bW5v\"\n      }\n    },\n    {\n      \"ID\": \"01fe55e00b04f411\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0G6x0pykznIzLn/ku3DV/rk1tqLJlBihELhYESz9JfdXi+z8H6I0s5Ruro7qzH/VSyc3TXva264=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4Z6MQ5Q7A33H4W\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"56be9b1d26db185e\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"yE44/RXBD2jdi5BRf80bA1AEvejNvto+xSgd35FiVSvLTB5FbJhL3w/QI9SL0rIgPm0VRarEG6s=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4JRHH6S91FVSBE\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/read_from_positive_offset_to_end.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0bAH8oKQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7b12cd9815ed1b07\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QZ+X7iICmqFIFceNdlBv7jPg3eHlQTbaflzj8ujeB2nA3GEgOaUN5wnfLT7XoFoxGC191wRh5BU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4R00TAJPB6KMAB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"eeb923b5ee46e45f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/HPQla8s/9cbH9YP5bWlwaHar27T3zPhAI5clFSawnF9CCxLiu3Bg4oLrc6X3gdBGxamVX8bm5o=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4GESPNRFPB7Q95\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"89e97135fd34b5e7\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=10-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"17\"\n          ],\n          \"Content-Range\": [\n            \"bytes 10-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Ce0joVhA8oIGcswefGk1tkn9tMs+36xjVuyIAIFIp5uAi6zflfLN5W030eJFlDRSdWvLWlVK/yo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4Q98G98MMBDQNS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"a2xtbm9wcXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"1bc553dce245d96a\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=22-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hg/urUf4FZs94LCCn756cX5T98/xU7N2zoUtwP/dDd1Zlp++aKh0k2c350g3TimtaVtv7MXh8cs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4G4JX616HCMMR4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"7e9b68d0d58be5db\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=22-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"5\"\n          ],\n          \"Content-Range\": [\n            \"bytes 22-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"8BaaG6glktVJATjWuxdHZq0oMITEwDlqjAAqUTBpblWVhX+tyy2qbDk6XFVRNeizqjf6SHx0JM0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4YB81X1JEVS2CT\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"c0f73fddc1d7a5ce\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=16-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Range\": [\n            \"bytes 16-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6YMYwee6Ibdu7PvmIEaz83fSMRu8XpmsDAhBi7+UPwNHToRu+gQBGwDxBpiSQoG6yoLaRvVQMSU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4YMCPTTEJR6E8G\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cXVyc3R1dnd4eXo=\"\n      }\n    },\n    {\n      \"ID\": \"4dbb85594cae2fd7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DHkwnoPcaRG1wYFnhk2SsAroOXTg1we8+lAwLgeXt/uaDjL2okLKPBW/q3P/D6nJzOq/ycPBP10=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4PXXJV4SHPC3T2\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e049e04b744b12f4\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ac0VMMIZma9MZVE/E48KXdazly9x5Jrqch9B4aKiB6dvkW4KWuptdJBeL9yDBvlfeE7NiFEH1wg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4MEETBJ6V4888T\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/read_in_full.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0bMRz+PAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c5817740dca021bc\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"menh2t51CgnEkBQZWSGOrDB4pOR0a6hjxQAC064j/4dtGTSpQYYynlpp+yMsrYZJ0P0h/+vtuQk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4TVXCN4ZGJZWZS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a9294781ab69fa23\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7J0teKSzu3EJ1YCAkNx90BxB5mkOyoRJKp4KqSAUkIveieTOQIVMX+m+A4DfgnqIZbcLIgqiavM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4RQ7B823MD0906\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"7a18ced93e11200e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"4IRU0B7wodogIbNpVKcfbeOvHo+HnTYJXVHcpAMI6OyGR1qtXQowRPFAqKn1+k3IsPRKe7aukuE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"KP4YNQYR1BBRKVV8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"1c0fbc887d6d4795\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"LTncSFqdiEjLq4ckef3fr6CnOeOEWvtbf9Sr14nBUQh9H/QmHSufhm3TUoZxDsZKyxo79oRJvvE=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C49RD5N6THWFG7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"6b3d1672e5ceef9e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"eBL9Z6RItRUfQhGney6WcJ4clX7QMU4Zks67WIvr9Spd06I+jJQi1MYeSKoI3kmdPK/nrrTHQpI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CC3SZNN4YHBQPY\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"d441259877f01773\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=9-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"I47CQXtTqEtlE/lunul8Zvod33KG6fHsmC7KQIhhu8afLvnFwqF+Zk/dWNvkwlQwgB6Y09kgcQY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CB6EPVSD2XVPMV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"663b7a8eca75e9ee\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:28 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hggj2xlvydi23bqVoSc9L7fSkxNafFUpid/luM6rAcc85dMCet1B8oMjUWlNLkS2vBdEppZuN/0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C31189HKYWG1JP\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"883677f11a548388\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"idRbbLCz3OTskOO5rkVv3m0Kf8CDFFKc1xQquHmdC+OF/XdPVpcNyK40jmK1FEn1QkxshJXbjrs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C4P8NSBSMY53RE\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/read_in_full_with_negative_length_not_-1.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0cDdIOwwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1fb11d05541d6d75\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"T1LFe04M7v7inRA09B9n0fKChHg7GnBerGoaVqxJU251h7hD3DekT56c1hY++FXoj3/aIhGjRsk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C356N3YQ38M2J5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"77a0a0943b7c4ee3\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"qRezLr4kOQQvwvSn7e9lE367OWAoZzeEgPofY1/PKN+prXsknbQYtDqOvEmSsC6cF6oi6cZrCHo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C1QNVQ0D9Z8YPV\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"18ad881612c7f1d9\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"CsyT7IOOAShzhGwf3bUidHn4ou0kuYOW5NHKOdErdQAjIAhr7acpSI9R6m8fZsT5GvKJTleapfo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CFJZ0NP7TDCR3K\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"YWJjZGVmZ2hpamtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"6d94aa9d90f0515d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/wp75O21t6KBYox4a+Q36q1DrCna8oqfEbJDV+9ON+FmHKSh63ahz69Spz4aMf0IqOqLALJevFc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C94QK5ECWEJQ8W\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"d1d3a4fc5b9406fa\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=18-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"9\"\n          ],\n          \"Content-Range\": [\n            \"bytes 18-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zFHDsLDS2Ni5gqvq2zvcm46bykZNvJGJYldVJHzZO+AgCXj8UqZhxlfXmjMYqSLf9vS5omBg4wk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C9SKPPJZS15BX7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"e6492e8884e86156\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Range\": [\n            \"bytes=9-\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 206,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"18\"\n          ],\n          \"Content-Range\": [\n            \"bytes 9-26/27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"p2/BBjEPg6tBr968OPg3k3yOoR63BUWAnqEljqNeaZa4Q0obMCItd4SCIoHXWhYzSk0C1d4uhDc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22C74ZA42WXECCXW\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"amtsbW5vcHF1cnN0dXZ3eHl6\"\n      }\n    },\n    {\n      \"ID\": \"3a2a99a8fa609895\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EuwTt/WBRv8ulMH7T5MDeC/+q+WeVyTCTkB2KqIh/0LT4YVFQd9RTcazvMtkp5cDdp0OqviT/DM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CFDKERTJ0TTTJ6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ff0a19a22ef3f581\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"f2cuxiDjnQqfHwtNEGjcwGoFfkIHvzQTCaiCSWWuWC1F6ilEDsRzx9CGKY79mRos6iykuMlSDQ8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"22CB2DYE2F54W30J\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestRead/read_of_nonexistent_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0aFJRfUQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6698af1f1a48977a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"Content-Md5\": [\n            \"PflsWr6X8pZ9OAEIcAMKXw==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"27\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MWINCmFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5eg0KMA0KeC1hbXotY2hlY2tzdW0tY3JjMzI6UnlQZzVRPT0NCg0K\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"RyPg5Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"/U9BH0VRdiwJz6pFjU1iY2ulK25Zeg0XE2jiQn0Ep6KMHV3yb10BQbQTypLNk75ZbcxtiTblGhk=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PQ60BCRG4DQ7XA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"65d22df1acbff19c\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/key-does-not-exist?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:25 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"RYkgMyV6dUxJTXUHSJjhmVE13hZB7hSDG5EsESfdXYk2ETKEWNB0Vrt9AlNJmT+tfkpsT4QXzNI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PVFWHM99RXW1NQ\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5rZXktZG9lcy1ub3QtZXhpc3Q8L0tleT48UmVxdWVzdElkPlk5UFZGV0hNOTlSWFcxTlE8L1JlcXVlc3RJZD48SG9zdElkPlJZa2dNeVY2ZFV4SlRYVUhTSmpobVZFMTNoWkI3aFNERzVFc0VTZmRYWWsyRVRLRVdOQjBWcnQ5QWxOSm1UK3Rma3BzVDRRWHpOST08L0hvc3RJZD48L0Vycm9yPg==\"\n      }\n    },\n    {\n      \"ID\": \"d40f1b62bfccc52d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3df96c5abe97f2967d38010870030a5f\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jL5Ac2pV7C96L+mqoWK35xqf3PBYUU9veASYNbEd9xD0dKyfJvvCPTXQLybKbWF3YTlPLMkdUxw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PZG5W7J17H6EHA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"91be0158cf778c2d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:27 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"GHLQur45ac7uiElWnz0oNfgDCS8DOJvAh+l0rregPkwsGHbgsRwkyslq09HhN3xIpvqQddBlJR0=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"Y9PJV7SG7V31PGEM\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestSignedURL.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0uJID6FgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ceffe01fe232ea8c\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mR6Ad0L2BK6ovyhPAeA3BqJ5129myyGHViHYzUxuZ3C+HS1KgoF2yvrQwF10KbpYv4Q2sm6nopA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RM0YWBPHJ5VSTM\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4NDZaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKOWZiZmU1NjZmNzc2ZjE3NzY2MWUzNzg2ZTlkMzY2YzA0YmU2ODg4M2FjOTI3MzE4YjgwZDk5YmMzNDA0NTZiZDwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD5lNmYwMzZjZTQ2ODU0M2FiZDMyNmMwZTRlMjA5OWJkZDNmZTE1ZDg1MWY1MTg2M2ZmNjhmNWIwZGVjZDA2ZTg4PC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzQgMzYgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgMzkgNjYgNjIgNjYgNjUgMzUgMzYgMzYgNjYgMzcgMzcgMzYgNjYgMzEgMzcgMzcgMzYgMzYgMzEgNjUgMzMgMzcgMzggMzYgNjUgMzkgNjQgMzMgMzYgMzYgNjMgMzAgMzQgNjIgNjUgMzYgMzggMzggMzggMzMgNjEgNjMgMzkgMzIgMzcgMzMgMzEgMzggNjIgMzggMzAgNjQgMzkgMzkgNjIgNjMgMzMgMzQgMzAgMzQgMzUgMzYgNjIgNjQ8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PlBVVAovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ2hlY2tzdW0tTW9kZT1FTkFCTEVEJmFtcDtYLUFtei1DcmVkZW50aWFsPUFLSUFXVVdFVVNQVUxZWDNCTDNNJTJGMjAyNjAzMTklMkZ1cy13ZXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZhbXA7WC1BbXotRGF0ZT0yMDI2MDMxOVQxNTI4NDZaJmFtcDtYLUFtei1FeHBpcmVzPTM2MDAmYW1wO1gtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhbXA7eC1pZD1HZXRPYmplY3QKaG9zdDpnby1jbG91ZC10ZXN0aW5nLTIuczMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20KCmhvc3QKVU5TSUdORUQtUEFZTE9BRDwvQ2Fub25pY2FsUmVxdWVzdD48Q2Fub25pY2FsUmVxdWVzdEJ5dGVzPjUwIDU1IDU0IDBhIDJmIDYyIDZjIDZmIDYyIDJkIDY2IDZmIDcyIDJkIDczIDY5IDY3IDZlIDY5IDZlIDY3IDBhIDU4IDJkIDQxIDZkIDdhIDJkIDQxIDZjIDY3IDZmIDcyIDY5IDc0IDY4IDZkIDNkIDQxIDU3IDUzIDM0IDJkIDQ4IDRkIDQxIDQzIDJkIDUzIDQ4IDQxIDMyIDM1IDM2IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDY4IDY1IDYzIDZiIDczIDc1IDZkIDJkIDRkIDZmIDY0IDY1IDNkIDQ1IDRlIDQxIDQyIDRjIDQ1IDQ0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDcyIDY1IDY0IDY1IDZlIDc0IDY5IDYxIDZjIDNkIDQxIDRiIDQ5IDQxIDU3IDU1IDU3IDQ1IDU1IDUzIDUwIDU1IDRjIDU5IDU4IDMzIDQyIDRjIDMzIDRkIDI1IDMyIDQ2IDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDI1IDMyIDQ2IDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDI1IDMyIDQ2IDczIDMzIDI1IDMyIDQ2IDYxIDc3IDczIDM0IDVmIDcyIDY1IDcxIDc1IDY1IDczIDc0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ0IDYxIDc0IDY1IDNkIDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDU0IDMxIDM1IDMyIDM4IDM0IDM2IDVhIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ1IDc4IDcwIDY5IDcyIDY1IDczIDNkIDMzIDM2IDMwIDMwIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDUzIDY5IDY3IDZlIDY1IDY0IDQ4IDY1IDYxIDY0IDY1IDcyIDczIDNkIDY4IDZmIDczIDc0IDI2IDc4IDJkIDY5IDY0IDNkIDQ3IDY1IDc0IDRmIDYyIDZhIDY1IDYzIDc0IDBhIDY4IDZmIDczIDc0IDNhIDY3IDZmIDJkIDYzIDZjIDZmIDc1IDY0IDJkIDc0IDY1IDczIDc0IDY5IDZlIDY3IDJkIDMyIDJlIDczIDMzIDJlIDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDJlIDYxIDZkIDYxIDdhIDZmIDZlIDYxIDc3IDczIDJlIDYzIDZmIDZkIDBhIDBhIDY4IDZmIDczIDc0IDBhIDU1IDRlIDUzIDQ5IDQ3IDRlIDQ1IDQ0IDJkIDUwIDQxIDU5IDRjIDRmIDQxIDQ0PC9DYW5vbmljYWxSZXF1ZXN0Qnl0ZXM+PFJlcXVlc3RJZD5IOFJNMFlXQlBISjVWU1RNPC9SZXF1ZXN0SWQ+PEhvc3RJZD5tUjZBZDBMMkJLNm92eWhQQWVBM0JxSjUxMjlteXlHSFZpSFl6VXh1WjNDK0hTMUtnb0YyeXZyUXdGMTBLYnBZdjRRMnNtNm5vcEE9PC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"baef9af875f7d65d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"aGVsbG8gd29ybGQ=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc64nvme\": [\n            \"jSnVw/bqjr4=\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"27EzUdmnMoiBv9NZZ3YBdFp04RnFTKAVxIn+zNOqdJoBPva8UeiYQytwiKTEc3GCdQA/UAQGn2k=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RNCK53P1XZ01N8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"68c4f19cc291ac58\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"lIyR3Bcx1hl0zr+F0cBdyssA1jZP40b6G9cbtQ/OH3pD6ZkYgGn7+bDFpaPcDLUnkbSbwvt0jwA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RRR1MY40XYAHTR\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4NDZaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKZGFjMGI4NDBhZDc4YTI3MDcxMzVmY2RkYjVhZDY5OGNhZjgyMDkwZGI3NzVlMzI5MTQ0NzgyNzNmMGM3YzA3MDwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD4zNTQ2ODE2NzgxZmZkYzEzOGViZTQ1ZjRhNjAwMDg2OGFiM2I1MzE1ZDM0NDYyMjYyYTI2ZGZkNjFhZmNiNmFmPC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzQgMzYgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgNjQgNjEgNjMgMzAgNjIgMzggMzQgMzAgNjEgNjQgMzcgMzggNjEgMzIgMzcgMzAgMzcgMzEgMzMgMzUgNjYgNjMgNjQgNjQgNjIgMzUgNjEgNjQgMzYgMzkgMzggNjMgNjEgNjYgMzggMzIgMzAgMzkgMzAgNjQgNjIgMzcgMzcgMzUgNjUgMzMgMzIgMzkgMzEgMzQgMzQgMzcgMzggMzIgMzcgMzMgNjYgMzAgNjMgMzcgNjMgMzAgMzcgMzA8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PkdFVAovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ3JlZGVudGlhbD1BS0lBV1VXRVVTUFVMWVgzQkwzTSUyRjIwMjYwMzE5JTJGdXMtd2VzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmYW1wO1gtQW16LURhdGU9MjAyNjAzMTlUMTUyODQ2WiZhbXA7WC1BbXotRXhwaXJlcz0zNjAwJmFtcDtYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYW1wO3gtaWQ9UHV0T2JqZWN0Cmhvc3Q6Z28tY2xvdWQtdGVzdGluZy0yLnMzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tCgpob3N0ClVOU0lHTkVELVBBWUxPQUQ8L0Nhbm9uaWNhbFJlcXVlc3Q+PENhbm9uaWNhbFJlcXVlc3RCeXRlcz40NyA0NSA1NCAwYSAyZiA2MiA2YyA2ZiA2MiAyZCA2NiA2ZiA3MiAyZCA3MyA2OSA2NyA2ZSA2OSA2ZSA2NyAwYSA1OCAyZCA0MSA2ZCA3YSAyZCA0MSA2YyA2NyA2ZiA3MiA2OSA3NCA2OCA2ZCAzZCA0MSA1NyA1MyAzNCAyZCA0OCA0ZCA0MSA0MyAyZCA1MyA0OCA0MSAzMiAzNSAzNiAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyAzZCA0MSA0YiA0OSA0MSA1NyA1NSA1NyA0NSA1NSA1MyA1MCA1NSA0YyA1OSA1OCAzMyA0MiA0YyAzMyA0ZCAyNSAzMiA0NiAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSAyNSAzMiA0NiA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyNSAzMiA0NiA3MyAzMyAyNSAzMiA0NiA2MSA3NyA3MyAzNCA1ZiA3MiA2NSA3MSA3NSA2NSA3MyA3NCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NCA2MSA3NCA2NSAzZCAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSA1NCAzMSAzNSAzMiAzOCAzNCAzNiA1YSAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NSA3OCA3MCA2OSA3MiA2NSA3MyAzZCAzMyAzNiAzMCAzMCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA1MyA2OSA2NyA2ZSA2NSA2NCA0OCA2NSA2MSA2NCA2NSA3MiA3MyAzZCA2OCA2ZiA3MyA3NCAyNiA3OCAyZCA2OSA2NCAzZCA1MCA3NSA3NCA0ZiA2MiA2YSA2NSA2MyA3NCAwYSA2OCA2ZiA3MyA3NCAzYSA2NyA2ZiAyZCA2MyA2YyA2ZiA3NSA2NCAyZCA3NCA2NSA3MyA3NCA2OSA2ZSA2NyAyZCAzMiAyZSA3MyAzMyAyZSA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyZSA2MSA2ZCA2MSA3YSA2ZiA2ZSA2MSA3NyA3MyAyZSA2MyA2ZiA2ZCAwYSAwYSA2OCA2ZiA3MyA3NCAwYSA1NSA0ZSA1MyA0OSA0NyA0ZSA0NSA0NCAyZCA1MCA0MSA1OSA0YyA0ZiA0MSA0NDwvQ2Fub25pY2FsUmVxdWVzdEJ5dGVzPjxSZXF1ZXN0SWQ+SDhSUlIxTVk0MFhZQUhUUjwvUmVxdWVzdElkPjxIb3N0SWQ+bEl5UjNCY3gxaGwwenIrRjBjQmR5c3NBMWpaUDQwYjZHOWNidFEvT0gzcEQ2WmtZZ0duNytiREZwYVBjRExVbmtiU2J3dnQwandBPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"e21b3f992491c98f\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"a8/+19PcwFp0J25o7qSmZhCE9E6wgjN+t5MAwLfJOYM3c125+6lUov4ZbY5o+J5uNhmo8XS3R1c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RK0NBXQ1TPSN2N\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkFjY2Vzc0RlbmllZDwvQ29kZT48TWVzc2FnZT5BY2Nlc3MgRGVuaWVkPC9NZXNzYWdlPjxSZXF1ZXN0SWQ+SDhSSzBOQlhRMVRQU04yTjwvUmVxdWVzdElkPjxIb3N0SWQ+YTgvKzE5UGN3RnAwSjI1bzdxU21aaENFOUU2d2dqTit0NU1Bd0xmSk9ZTTNjMTI1KzZsVW92NFpiWTVvK0o1dU5obW84WFMzUjFjPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    },\n    {\n      \"ID\": \"1d9443d1a492cf9b\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"binary/octet-stream\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:47 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QSHCxJFUtWWnjjk1XFQOqPQnmjJgJxUCTa71lvbuT/7vEGgcVvKvvBNv/QKIhBWqK1UriUfDXeM=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RZ35V0E63VWFCK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"38dced70cbd3e43a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Checksum-Mode=ENABLED\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Qzad6o51g/TOjK4J+/KIKGXTy8cO51eOvjlNEj6dQruED+KQN5r+E0f6O71Oh3Rhf+f3uH09qEo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RHBJ7Z58FV5FEG\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4NDZaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKOTFhMDE5YjAyYmJkMTRiNmU2NzA2ZGQ1OTRlODc4MTQxYjE3YzA5YjUzZDc4NmQ1ZjI3ZjIyYjhiODI3MzkxODwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD5lNmYwMzZjZTQ2ODU0M2FiZDMyNmMwZTRlMjA5OWJkZDNmZTE1ZDg1MWY1MTg2M2ZmNjhmNWIwZGVjZDA2ZTg4PC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzQgMzYgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgMzkgMzEgNjEgMzAgMzEgMzkgNjIgMzAgMzIgNjIgNjIgNjQgMzEgMzQgNjIgMzYgNjUgMzYgMzcgMzAgMzYgNjQgNjQgMzUgMzkgMzQgNjUgMzggMzcgMzggMzEgMzQgMzEgNjIgMzEgMzcgNjMgMzAgMzkgNjIgMzUgMzMgNjQgMzcgMzggMzYgNjQgMzUgNjYgMzIgMzcgNjYgMzIgMzIgNjIgMzggNjIgMzggMzIgMzcgMzMgMzkgMzEgMzg8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PkRFTEVURQovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ2hlY2tzdW0tTW9kZT1FTkFCTEVEJmFtcDtYLUFtei1DcmVkZW50aWFsPUFLSUFXVVdFVVNQVUxZWDNCTDNNJTJGMjAyNjAzMTklMkZ1cy13ZXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZhbXA7WC1BbXotRGF0ZT0yMDI2MDMxOVQxNTI4NDZaJmFtcDtYLUFtei1FeHBpcmVzPTM2MDAmYW1wO1gtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhbXA7eC1pZD1HZXRPYmplY3QKaG9zdDpnby1jbG91ZC10ZXN0aW5nLTIuczMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20KCmhvc3QKVU5TSUdORUQtUEFZTE9BRDwvQ2Fub25pY2FsUmVxdWVzdD48Q2Fub25pY2FsUmVxdWVzdEJ5dGVzPjQ0IDQ1IDRjIDQ1IDU0IDQ1IDBhIDJmIDYyIDZjIDZmIDYyIDJkIDY2IDZmIDcyIDJkIDczIDY5IDY3IDZlIDY5IDZlIDY3IDBhIDU4IDJkIDQxIDZkIDdhIDJkIDQxIDZjIDY3IDZmIDcyIDY5IDc0IDY4IDZkIDNkIDQxIDU3IDUzIDM0IDJkIDQ4IDRkIDQxIDQzIDJkIDUzIDQ4IDQxIDMyIDM1IDM2IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDY4IDY1IDYzIDZiIDczIDc1IDZkIDJkIDRkIDZmIDY0IDY1IDNkIDQ1IDRlIDQxIDQyIDRjIDQ1IDQ0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQzIDcyIDY1IDY0IDY1IDZlIDc0IDY5IDYxIDZjIDNkIDQxIDRiIDQ5IDQxIDU3IDU1IDU3IDQ1IDU1IDUzIDUwIDU1IDRjIDU5IDU4IDMzIDQyIDRjIDMzIDRkIDI1IDMyIDQ2IDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDI1IDMyIDQ2IDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDI1IDMyIDQ2IDczIDMzIDI1IDMyIDQ2IDYxIDc3IDczIDM0IDVmIDcyIDY1IDcxIDc1IDY1IDczIDc0IDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ0IDYxIDc0IDY1IDNkIDMyIDMwIDMyIDM2IDMwIDMzIDMxIDM5IDU0IDMxIDM1IDMyIDM4IDM0IDM2IDVhIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDQ1IDc4IDcwIDY5IDcyIDY1IDczIDNkIDMzIDM2IDMwIDMwIDI2IDU4IDJkIDQxIDZkIDdhIDJkIDUzIDY5IDY3IDZlIDY1IDY0IDQ4IDY1IDYxIDY0IDY1IDcyIDczIDNkIDY4IDZmIDczIDc0IDI2IDc4IDJkIDY5IDY0IDNkIDQ3IDY1IDc0IDRmIDYyIDZhIDY1IDYzIDc0IDBhIDY4IDZmIDczIDc0IDNhIDY3IDZmIDJkIDYzIDZjIDZmIDc1IDY0IDJkIDc0IDY1IDczIDc0IDY5IDZlIDY3IDJkIDMyIDJlIDczIDMzIDJlIDc1IDczIDJkIDc3IDY1IDczIDc0IDJkIDMxIDJlIDYxIDZkIDYxIDdhIDZmIDZlIDYxIDc3IDczIDJlIDYzIDZmIDZkIDBhIDBhIDY4IDZmIDczIDc0IDBhIDU1IDRlIDUzIDQ5IDQ3IDRlIDQ1IDQ0IDJkIDUwIDQxIDU5IDRjIDRmIDQxIDQ0PC9DYW5vbmljYWxSZXF1ZXN0Qnl0ZXM+PFJlcXVlc3RJZD5IOFJIQko3WjU4RlY1RkVHPC9SZXF1ZXN0SWQ+PEhvc3RJZD5RemFkNm81MWcvVE9qSzRKKy9LSUtHWFR5OGNPNTFlT3ZqbE5FajZkUXJ1RUQrS1FONXIrRTBmNk83MU9oM1JoZitmM3VIMDlxRW89PC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    },\n    {\n      \"ID\": \"9d89ec7cf6e52bb7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-signing?X-Amz-Algorithm=AWS4-HMAC-SHA256\\u0026X-Amz-Date=CLEARED\\u0026X-Amz-Expires=3600\\u0026X-Amz-SignedHeaders=host\\u0026x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 403,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:46 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"cVRD8/0gReUy/PeLF1JWnPgVUWVIOJABY9IZLnfOphLyz7JREYEGw4YOjiywPb7VcTMHHJl7b0g=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"H8RZRDKENV44BEPP\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPlNpZ25hdHVyZURvZXNOb3RNYXRjaDwvQ29kZT48TWVzc2FnZT5UaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZC4gQ2hlY2sgeW91ciBrZXkgYW5kIHNpZ25pbmcgbWV0aG9kLjwvTWVzc2FnZT48QVdTQWNjZXNzS2V5SWQ+QUtJQVdVV0VVU1BVTFlYM0JMM008L0FXU0FjY2Vzc0tleUlkPjxTdHJpbmdUb1NpZ24+QVdTNC1ITUFDLVNIQTI1NgoyMDI2MDMxOVQxNTI4NDZaCjIwMjYwMzE5L3VzLXdlc3QtMS9zMy9hd3M0X3JlcXVlc3QKOGUxNDNkYjNlZmQwNmMyMWZmYjc2MmRhZWY5MWNhODAyZGY2YTFjYjU4MmQzMTQxMmFmMjg2ZTY4NzI3YmRjYjwvU3RyaW5nVG9TaWduPjxTaWduYXR1cmVQcm92aWRlZD4zNTQ2ODE2NzgxZmZkYzEzOGViZTQ1ZjRhNjAwMDg2OGFiM2I1MzE1ZDM0NDYyMjYyYTI2ZGZkNjFhZmNiNmFmPC9TaWduYXR1cmVQcm92aWRlZD48U3RyaW5nVG9TaWduQnl0ZXM+NDEgNTcgNTMgMzQgMmQgNDggNGQgNDEgNDMgMmQgNTMgNDggNDEgMzIgMzUgMzYgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgNTQgMzEgMzUgMzIgMzggMzQgMzYgNWEgMGEgMzIgMzAgMzIgMzYgMzAgMzMgMzEgMzkgMmYgNzUgNzMgMmQgNzcgNjUgNzMgNzQgMmQgMzEgMmYgNzMgMzMgMmYgNjEgNzcgNzMgMzQgNWYgNzIgNjUgNzEgNzUgNjUgNzMgNzQgMGEgMzggNjUgMzEgMzQgMzMgNjQgNjIgMzMgNjUgNjYgNjQgMzAgMzYgNjMgMzIgMzEgNjYgNjYgNjIgMzcgMzYgMzIgNjQgNjEgNjUgNjYgMzkgMzEgNjMgNjEgMzggMzAgMzIgNjQgNjYgMzYgNjEgMzEgNjMgNjIgMzUgMzggMzIgNjQgMzMgMzEgMzQgMzEgMzIgNjEgNjYgMzIgMzggMzYgNjUgMzYgMzggMzcgMzIgMzcgNjIgNjQgNjMgNjI8L1N0cmluZ1RvU2lnbkJ5dGVzPjxDYW5vbmljYWxSZXF1ZXN0PkRFTEVURQovYmxvYi1mb3Itc2lnbmluZwpYLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZhbXA7WC1BbXotQ3JlZGVudGlhbD1BS0lBV1VXRVVTUFVMWVgzQkwzTSUyRjIwMjYwMzE5JTJGdXMtd2VzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmYW1wO1gtQW16LURhdGU9MjAyNjAzMTlUMTUyODQ2WiZhbXA7WC1BbXotRXhwaXJlcz0zNjAwJmFtcDtYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYW1wO3gtaWQ9UHV0T2JqZWN0Cmhvc3Q6Z28tY2xvdWQtdGVzdGluZy0yLnMzLnVzLXdlc3QtMS5hbWF6b25hd3MuY29tCgpob3N0ClVOU0lHTkVELVBBWUxPQUQ8L0Nhbm9uaWNhbFJlcXVlc3Q+PENhbm9uaWNhbFJlcXVlc3RCeXRlcz40NCA0NSA0YyA0NSA1NCA0NSAwYSAyZiA2MiA2YyA2ZiA2MiAyZCA2NiA2ZiA3MiAyZCA3MyA2OSA2NyA2ZSA2OSA2ZSA2NyAwYSA1OCAyZCA0MSA2ZCA3YSAyZCA0MSA2YyA2NyA2ZiA3MiA2OSA3NCA2OCA2ZCAzZCA0MSA1NyA1MyAzNCAyZCA0OCA0ZCA0MSA0MyAyZCA1MyA0OCA0MSAzMiAzNSAzNiAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyAzZCA0MSA0YiA0OSA0MSA1NyA1NSA1NyA0NSA1NSA1MyA1MCA1NSA0YyA1OSA1OCAzMyA0MiA0YyAzMyA0ZCAyNSAzMiA0NiAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSAyNSAzMiA0NiA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyNSAzMiA0NiA3MyAzMyAyNSAzMiA0NiA2MSA3NyA3MyAzNCA1ZiA3MiA2NSA3MSA3NSA2NSA3MyA3NCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NCA2MSA3NCA2NSAzZCAzMiAzMCAzMiAzNiAzMCAzMyAzMSAzOSA1NCAzMSAzNSAzMiAzOCAzNCAzNiA1YSAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA0NSA3OCA3MCA2OSA3MiA2NSA3MyAzZCAzMyAzNiAzMCAzMCAyNiA1OCAyZCA0MSA2ZCA3YSAyZCA1MyA2OSA2NyA2ZSA2NSA2NCA0OCA2NSA2MSA2NCA2NSA3MiA3MyAzZCA2OCA2ZiA3MyA3NCAyNiA3OCAyZCA2OSA2NCAzZCA1MCA3NSA3NCA0ZiA2MiA2YSA2NSA2MyA3NCAwYSA2OCA2ZiA3MyA3NCAzYSA2NyA2ZiAyZCA2MyA2YyA2ZiA3NSA2NCAyZCA3NCA2NSA3MyA3NCA2OSA2ZSA2NyAyZCAzMiAyZSA3MyAzMyAyZSA3NSA3MyAyZCA3NyA2NSA3MyA3NCAyZCAzMSAyZSA2MSA2ZCA2MSA3YSA2ZiA2ZSA2MSA3NyA3MyAyZSA2MyA2ZiA2ZCAwYSAwYSA2OCA2ZiA3MyA3NCAwYSA1NSA0ZSA1MyA0OSA0NyA0ZSA0NSA0NCAyZCA1MCA0MSA1OSA0YyA0ZiA0MSA0NDwvQ2Fub25pY2FsUmVxdWVzdEJ5dGVzPjxSZXF1ZXN0SWQ+SDhSWlJES0VOVjQ0QkVQUDwvUmVxdWVzdElkPjxIb3N0SWQ+Y1ZSRDgvMGdSZVV5L1BlTEYxSlduUGdWVVdWSU9KQUJZOUlaTG5mT3BoTHl6N0pSRVlFR3c0WU9qaXl3UGI3VmNUTUhISmw3YjBnPTwvSG9zdElkPjwvRXJyb3I+\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestUploadDownload.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0iIUGywAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"174ba01ce14df6d0\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zmHflKo4yL3iMgdKIXq0+wOE0wFYSe7btFmVSSeJmr8oP+hREz+lYiVyHZvhQ09SbFbF0K0ORDYAWb90CnFvAfKTe5aF5db8\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF50PJ3ZN3QHGY9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2b7efce59ac524d1\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"x23wYqew2GxU9wXm/7KFJ0+CDTMRh1mz7qaXy/CUVVegGWlJ4i5c/l8qknPgBoSLhknwO+khMOhTGqSi5Jlq/rF7Ry2BnEiP\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFBGRHFGKFC2GR9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"dXAgYW5kIGRvd24=\"\n      }\n    },\n    {\n      \"ID\": \"88f915e9f7b85f27\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"G3VTPtWoaf9vOuAzbQwzIA==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text\",\n        \"BodyParts\": [\n          \"Yg0KdXAgYW5kIGRvd24NCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOk9KM3lsQT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"OJ3ylA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Lkb+ig5Q2W3BaiUwlebqC58LW2fXbPdbPWVuZZOQSSNHDZBRp5fZzeRJxJGYMslnrB5tEvvO7JTRPoqzdnla0GV+eUD+VC/o\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFFDS5ZA6NJFJS9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3ed03f494c4f4cd6\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"1b75533ed5a869ff6f3ae0336d0c3320\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"UxaPpkKwwv3hEnIJQm8Z143FDzdHn2WsE64FghBHydybmrhvyDdVSqHfXUZ5gGFzEt5216flZfhIaIvTtReyJy+O3aYtsI6G\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFCJAM1H1YYTP2A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a7b0c38fe5a58088\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:35 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gZb+Tc3FhB7OO0fXgRk9DVohIAuare5RgEwzsvIr7qP2RiyNnqSG8xihRmoYAmcmIjOHw1zc6O54Ess8+bTeD6RPKTYygtul\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVF4469SVZ8EPB8C\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fbca228af713a7a7\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-upload-download\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:34 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"GYoDXPIr9GHEKnlQMqRexSuYA4rG5iNSfTI0Lmsu5iEfA3bBP0twOFvYTWHv5is3XQKP5SfNGw8Uy3bm6X7WBxWNp+IX9OmZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"FVFEWYPQFNMMGX8S\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/ContentType_is_discovered_if_not_provided.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0dKEENcwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"db41352dd673b26a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"6398\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/html\",\n        \"BodyParts\": [\n          \"MThkMg0KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+DQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjplQ01DcWc9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"uJXkaaoFSWjV9BVxBlGZ9JCLh+B7RYs84g3S7rf6uSjH99InQws/e9gQYRinBdU2iPvlJYEP3wI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0WJCA1ST5D7RWK\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"65127174285f0133\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0yU97wfIRWFwbXgeU/jWwyfWZNPYi0dWGgNd/IHxNkWVQgNzjshPblZ8b8+PDX376be8IuM0Qbc=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0HHH4KE87C8Q7A\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"21017789b19d6740\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Bzv4p0wm1WhaMZghJMio4UBqHgNKDrqmPMJZOyB8lzs74mUKVP9hN3+feE00VX+uHwbhy4hI3Ow=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0M5163GA99CAKZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1142ed403cf85d2a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"text/html; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ItVgBlStvf2elNXX6DMkS8XX0MmFTm9kbzlvFnr9vU4jBfCGXXQHTXmeaY37BW8VBN01HOBpeJU=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0GMH9XVTPFF8XC\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f090e112fb0d2091\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"nnzmVxjA8G+22uVBGKECKeNJudOwX8UBNV8CBxgW4NgDNR0NBjO6A+rUPW4dNwTTTV1xXSfVvR4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0GT9ME1CF11KMB\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/ContentType_is_left_empty_if_not_provided_and_DisableContentTypeDetection_is_true.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0dORbqFAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"129d318eb0bf28e5\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"6398\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"MThkMg0KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+DQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjplQ01DcWc9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"SDbgVP63V+P8urKEnNrX6pSiTpLN1lzx9k/VE4vQ3kI5ssAKr7K+ofjxaL56Tm81hPSnLdz8tww=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R40BF4EMPT5A0E9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"058fe0d5ae48d178\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Q9/EUOa7m1LlEkg5M1Phfg8z65gpXZ/OmZaHcONpbyFW+c8I5jygDDTmZDxuwsYjyX/TvLdlKbs=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R4FS57HRH3B1FVN\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"cd3d2d52f8651c0f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"kOsDrdTU6qBi+HWOflNAOxJFbA6KxfwZDHwvf4boHg8h4a0VL6TVbpvNzn69gN/e8ttxozeTpxI=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R46PZJFF5D9CMJA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5d6bfcb15f0112f5\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"3HxR8GHLB/4dCetKY4+QrKayQqedqsC5Erq9G6yLJP7LM9pmhWMB1bFHeB/v/Y4IdksmWcHSKDQ=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R49PT148FFYEE6B\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/Content_md5_did_not_match,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0eNyD6IwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4bdf65bf65fb1d11\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"58\"\n          ],\n          \"Content-Md5\": [\n            \"dH9B/ScP7BuCvgMMwc1IAQ==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"16\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTANCmV4aXN0aW5nIGNvbnRlbnQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkl1VXExUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"IuUq1Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EmzF1M7kegDNK3BmWCHKdpWHjAIUaYLdzncIjxCJ6Taql58p4TwH4aO4U9r435pQprzItDgQzl8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R470TKDS3PWHRFZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b4aaef8235876658\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"IuUq1Q==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"zvCc0GO4ytlk5inrKGY8DO9NlCr7oGMIjN9fqzBwXpL8xvKGDmQKR0wztShyPM+NhAKVdMg0NCY=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS79CD37SM4VP5V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"ZXhpc3RpbmcgY29udGVudA==\"\n      }\n    },\n    {\n      \"ID\": \"9837259398b1315c\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"16\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"747f41fd270fec1b82be030cc1cd4801\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"7qPagQyhCBR/ee7gqu509nMHjiA0QfelT1jaB7UlFC/3xF8mWNVppqy+VWk3w4K7Oruvcqm1lv8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS6KKF9FM91J0Q5\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"85567678f3215b68\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"HY8ALjVd1iTaxTMUx7oNMOfBTGLiSmu0JQazeit7NXIrcAGu07yRbL+RWJi+gwfNdgPBxt941oo=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS511KB3CGM21CH\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/Content_md5_did_not_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0eMNfSIgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"36b6be2685c7d02d\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"9KEtVwL//pXhKBts0jgdylr/NGWEhrRcoxZD0zsIe+NGEvV8I2zTF5lGhf7MUZJS5+LaUNbcm18=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R4F3EPE577137AH\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1yZWFkaW5nPC9LZXk+PFJlcXVlc3RJZD4wUjRGM0VQRTU3NzEzN0FIPC9SZXF1ZXN0SWQ+PEhvc3RJZD45S0V0VndMLy9wWGhLQnRzMGpnZHlsci9OR1dFaHJSY294WkQwenNJZStOR0V2VjhJMnpURjVsR2hmN01VWkpTNStMYVVOYmNtMTg9PC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/Content_md5_match.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0eId1kIwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3ff9680be4486137\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"52\"\n          ],\n          \"Content-Md5\": [\n            \"XrY7u+Ae7tCTyyK7j1rNww==\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"11\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"Yg0KaGVsbG8gd29ybGQNCjANCngtYW16LWNoZWNrc3VtLWNyYzMyOkRVb1JoUT09DQoNCg==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"d7ahMAtC+WqVLyxc6WG8bXpilD4LU2m494PjvLsUCkwK/w82hdxTxJhKN35aGHPvLn32ij0RthUv6tLZxIgsQi99Av5Biq72\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R4F2AMZ7V64F4VE\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1764215c7be954f6\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"DUoRhQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"39gbHE4Num/hXImbgWBJSSH0wW7mf/ajqdnzZ7h/t6RRsYwSPJXXMBl/goNE89fWXMchN+AlZlsYs8X1sU3wDuUa2/X53Rcp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R446VEHH7FDD0NA\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"aGVsbG8gd29ybGQ=\"\n      }\n    },\n    {\n      \"ID\": \"8d3d767bb9eb702f\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"11\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"5eb63bbbe01eeed093cb22bb8f5acdc3\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"a0aeY/aFCCbAS7Iw9MrlKS2NaM55mqpbmeSWPHuZ9WIhZUL+m+DN9eummNBMVYZ/nsK4f8p5IlZiCC91Q4MHc+bhTvJptVYl\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R40DC4W9CV0JTJ0\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f6121178df37878d\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"Y1LGUY6pdbsf5nt0OG1okyiutQ2DXIRpv3sX6ezbIEIng0SX32Ldcmm17lCVi3qpz5wH3A55QrvGEsas4VEa1n3UOqWSgp7Q\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R470WDSXV6BB9VX\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/a_large_jpg_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0fGLfWBwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0acadbc383e9a16d\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"38474\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"38430\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"image/jpeg\",\n        \"BodyParts\": [\n          \"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9HsyyadINQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//ZDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjo4RGhML0E9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"t27qguywbU79ckUDAfbAM8elQr0FTtMd1iQKhPdXb2797Hm6LosuzeNXZSH9kAX8BabtjGdmGz4=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TSD7VVJ3J9BM67V\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"01377cdd32416524\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"jTAQhaH9mFoLVSjJPoVpIN7k0ch6yWSdokwJ09OtLtX6NaKC5PkmnlmWRSQLrVB+FdMw4DYKa4Q=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS3J5THRD8NB8CH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"529ea37350e771ab\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"mLWCMa2EK2FSz6IpndT8TDGnIfoXXBToHh8KHax5+Sk+Fx00O7xTrw08lYUkdCO2kofHLjPqYfg=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS36HJEGSBDCZXS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d16e4c48d852beca\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"W00YAfZywZAZBbxLL3+YLvegrk/FY8tTBP+owHjIgC0iMp5iY0cjk2VIb0vTRdtkAmdtsiKWflw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TSCF6R1MJGJ7SH6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2f5b41662f9b7e00\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"vC6Aio9v/aZ4KfC/IcbHXgeBxy9kaENBB2XKZxkRwNm/dlFdF5nVMk8+WhZ7JhimiJFP6pkRuBw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS7FVJS75EETQA6\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/a_large_jpg_file_written_in_two_chunks_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0fK3ratgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c14c450d33703f79\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"38474\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"38430\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"image/jpeg\",\n        \"BodyParts\": [\n          \"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9HsyyadINQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//ZDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjo4RGhML0E9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"6H2/vc9nTTL+8yZPpm+y9ZUrD1pOake35cEd3mVRhg0iRUWhZSwUekUIUBeVPO1c06dhLN2Qr32kL8W5/wADLfh6m9RkrNxd\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS4GXEWD0H6QDRZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c30dcefadee091bf\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"8DhL/A==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"m/8cV+leLtRC4VR8854UbHJizcVgpl2ha7nbPTDNAxPqsyitMuvruqng7FDDDTJVmMkjYvC1J4aVL3iK5wiLJmT3xbIBMDMJ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS20CE452NCNB2X\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"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NQu4GCulv823Pv06iufTwprfjG5W58Q3MogJ3LaoNqICOAMEg/jXTaP8OdL0rGyEO3AJZF6D6D9a7K3sY4YgqggAYHtQBmaJ4fs9MiAgt40AGMquDW6IxwMUJGFGOcVJQA3aDTsUUUAFFFFABRRRQAUhGaWigBoQA5Ap1FFABRRRQAUCiigAooooAKKKKAAdKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqOsI0mlXMaruLRsuMZ6j0q9TZF3IRQB5N8MtV8m1n06RGSWGZsfJtDDPXpivSJNSMcO5oyD7mvHPElmngbxu+pmCeSyuvmHlE4Ru4wBirt/wCNZvEMS6X4dtrl5Z12POQcRDHp60Ac5I7+Lvi7LeQITHbuqAhdwwvGa+h7ddsCA9QK4b4f+B/+Ecs/MnObmU7nAOQDXfAYFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAIRmloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBpUHtVdrRCc4HtVqigCi+nwsclAe4JFQvpFs64aFDnrkVpkUY6UAYf/COaeIti2cIUnLARjBP/wCupl0S0QkLbxjPXCjmtbAoxzQBSWxiRQAg4wOlWBbopGB0qUCloAjVMAVJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSY96AFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpf6baanavbXcKSwv95WHWqml+HNM0hStlaxxAnJ2jqa1qKAAADoKKKKACiiigAooooAKKKKACiiigAooooAKKTNLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRQKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKO9FGOaACiiigAopAR0zzS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGc0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIeKKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKQnkCiigBaKKKACiiigAooooAKKKKACiiigAooooA//Z\"\n      }\n    },\n    {\n      \"ID\": \"b09b93971b4dad01\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"j8/6eR8BvvalLcCz/qphLaOZ0987YuEKrLQgUD1v+rPAk2V9+8gW73lqeVbDEof74x2r8MdLM7xxJccRCiGX+p+HGFxrplkX\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS8Q9HQ347PRSM7\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9ff4606e26af6e2a\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"38430\"\n          ],\n          \"Content-Type\": [\n            \"image/jpeg\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"62d43fa20e70bfa1fdb22510d1c060d2\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"DmcZ93ptktvqSX0ZJEcut3g0n8Xz4E3/wBKsLRWkRv0cgskmhlfvCuZ36FTnYMT7ah7ODt5EjHcXrVsN4TvFvxTzVe8nX6wD\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS7SXYK5RYCTSQ9\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3cf2a97fca65ad48\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:33 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"XuCjvoF5/Gfw/thhUymv+5RbWXyPTk10XVjYgcft8/5AU+vHQdagqHEuaKstbOO/uzDyG1Jz5Gd1Q/dfpuidstxyxlvVJbCZ\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"R94X10G6PBKNCCGZ\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/a_small_text_file_gets_a_ContentType.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0fCacQ2gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f1828ffc14b960eb\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"62\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"20\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          \"MTQNClRoaXMgaXMgYSB0ZXh0IGZpbGUuDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpzUURpRVE9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"sQDiEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hRoJ8akCHFn0IdRu20A1lbiR/jp60QSbQvuOGuBfFn7PWEXXJwhCfS3sMRE03Bd/UQ31PAV+0ibhQ8yuFKsSxAarPP5VM58r\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TSE5BGVNCCDSC59\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"24d41b0455c7ab9e\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"sQDiEQ==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"dvpqiB3YgL+6eJB2t2reXr8364SUR2/ZSxdnKLAD4fE8ZCjhYd0jO0QWVU/mgRidxMq6n3rcwZm4VEPCDbO4aNb3zSDmH8cw\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TS71RFX00MAADAS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"VGhpcyBpcyBhIHRleHQgZmlsZS4=\"\n      }\n    },\n    {\n      \"ID\": \"7b008ed833432c57\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"N3nI+ci6QTxZapHIY2c0KDkLROeSmYB2vBjCKHWKa2AeUncqyVX+Bo6rjkSHh0I23uZLpu1/zTk6b9mwcg44sqIzAC+zohDW\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TSEE5EYJ6W44P2H\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"98c6979d85d38701\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"20\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"3f3309312cc3264a1389b2d263dece8d\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"ekucX+e2f7Tp6AmFfEo6AG0FdchbMr8DQgHIuWsFZ9Xs1lwZEsU/2YmiwsczkPTHysBVNv991ChktDUCVerd5UceL/B5ujMp\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TSC9ZYY1H43GYYZ\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"84f16053418a3ee8\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:32 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"bhyzuwL4npBdlgNtAetZ8fB1GR1ELVGQFUnAS9Ud3d1yat9WuX7Lq70nleCslrcqvadimxDvX1DckhJxwgrqZGhjr4vd36L/\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"4TSA65E6SZ1SHDGD\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/invalid_ContentType_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0dIg+FGgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d7182a9892b5d023\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Type\": [\n            \"application/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:29 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"pqEL7FhOYdmKOtMNdA2LTjrlhkRV/VZJujoRL9D+xUxtBWkN0zBALcSz4lnpAobLPzzayDy2edw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0PFDTPN82WQXT9\"\n          ]\n        },\n        \"Body\": \"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPk5vU3VjaEtleTwvQ29kZT48TWVzc2FnZT5UaGUgc3BlY2lmaWVkIGtleSBkb2VzIG5vdCBleGlzdC48L01lc3NhZ2U+PEtleT5ibG9iLWZvci1yZWFkaW5nPC9LZXk+PFJlcXVlc3RJZD5EUDBQRkRUUE44MldRWFQ5PC9SZXF1ZXN0SWQ+PEhvc3RJZD5wcUVMN0ZoT1lkbUtPdE1OZEEyTFRqcmxoa1JWL1ZaSnVqb1JMOUQreFV4dEJXa04wekJBTGNTejRsbnBBb2JMUHp6YXlEeTJlZHc9PC9Ib3N0SWQ+PC9FcnJvcj4=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/no_write_then_close_results_in_empty_blob,_blob_existed.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0dFIfa5AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5326bf58d7bb393a\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"UNSIGNED-PAYLOAD\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hmSJ4LbboUPZhgu9YBSKIW90A5DZ9hF8QIIn7atY4TmeBLFAZN+2LQGRn0amSjrzjuOueI5cqpdmuEtDLImseevfyFxoxqL6\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0N9RC2Y3JY1732\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1fe6693cb270dbd0\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"aZG7EHXhvwXZOqGz0BRUdo8KDssrv+tkQJj8HDbDBaj4jbNHPOU8ACy4EfOpvb3NbHFQGNh1lBe0mTkoCKTDDlTS+vXa6nbK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0MMW5E49BZMQW4\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ec35bf717bfa41f8\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"YapDKqUi9J4wmKmZ8vsOCJLeVr/aOTqrY8W29PxY13zQF95HLMXZ5Le+x6T3cdX1vxhrFzfamsNsfSUTzahj/QiP0DeemLJh\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0ZZHNXXM4Y6066\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1f744b2fae61d7d7\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"hGKLqVavcBodDc7VQRnlBRj4WJtM9s06WoIJCwrDP1lFRj8bDf1n421tCX83GthkwRcK0WdKg5cn48/sKQDKx5EvLwIx38JK\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0ZHRF4MP0HWWRA\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/no_write_then_close_results_in_empty_blob.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0dB5ItxQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f317c2b248144515\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"UNSIGNED-PAYLOAD\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"text/plain\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"NWv5D5owQW7f0bM24eCimsfboXcssdP94+ExMOr8GVhk13AX0SZT78g1EFltA1rJT7q1LDbh/X8=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0QVW1Y8QVSPBH6\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"3ce7ab387c639e40\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"AAAAAA==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"OyePdrMCEhVAV38sLmoRtr//3F6703+brZ9HcTZ0f6vDpNXnON0bEdX5ba8DbyZQMuEeUy8ruqA=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0GYVVKZSXS9K9P\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"804a06c1173fb5d9\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"text/plain; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"d41d8cd98f00b204e9800998ecf8427e\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"0w90/mtyL1zIBEKkff8fwMpG6OCxCAx7z/gpVjZ3rAq+l0ynVKDQyuEvyqYxKMc5tExUnGA202c=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0KWJ8CBDMQRBFH\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"643f9309eba8c130\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:30 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"gEU9IaRENeKdgxNuJOnA/Mmga+l0Si9iY7BZPrnAJN8mEO+C74adHy+Lh+xhak4thKxXe5TuZDw=\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"DP0GDAAAF9W4AXE8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/write_to_empty_key_fails.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0dB28S0QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestConformanceUsingLegacyList/TestWrite/write_with_explicit_ContentType_overrides_discovery.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0eC9MzygAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"aa3c1ff88bf44bd8\",\n      \"Request\": {\n        \"Method\": \"PUT\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=PutObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Encoding\": [\n            \"aws-chunked\"\n          ],\n          \"Content-Length\": [\n            \"6398\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"STREAMING-UNSIGNED-PAYLOAD-TRAILER\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Decoded-Content-Length\": [\n            \"6354\"\n          ],\n          \"X-Amz-Trailer\": [\n            \"x-amz-checksum-crc32\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"MThkMg0KPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+DQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjplQ01DcWc9PQ0KDQo=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"C33fNMK7z7wFOOo2IvPiLMWFtJ/LgJ4OQAaHAFLu+hVUvWhLywh9MEOoZKGGFD7sf+SBSmTnpTHvs5Q8fOn/puJKvNJp/enE\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R45RECMTEXY2RC8\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fc853a36c6b16f46\",\n      \"Request\": {\n        \"Method\": \"GET\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=GetObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Checksum-Mode\": [\n            \"ENABLED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Checksum-Crc32\": [\n            \"eCMCqg==\"\n          ],\n          \"X-Amz-Checksum-Type\": [\n            \"FULL_OBJECT\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"EoFENcBcec6dcXxC9mq+XbfDiRGEBRKcVtSF1B5+IM7ADQYQV7a9XGc4EyNBNL5ZYRHIjxW2HYiXsk0zCPmE7NmyB2oHChK/\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R445RQBYEE5V4BB\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"PCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0iZW4iPgo8aGVhZCBwcm9maWxlPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iPgogIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgPGxpbmsgaHJlZj0iLy0vYm9vdHN0cmFwLm1pbi5jc3M/dj04YmVjMWJiYTNlMjNlY2JhMjJjZmZiMTk3YTJkNDQwYWY0MTBiMTVkIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIGhyZWY9Ii8tL3NpdGUuY3NzP3Y9N2Q4MWY0MTA0Yzg5ZGJlMzc2MzQ1ZjZiZmUzZTYyYjRlNDBkM2QwNiIgcmVsPSJzdHlsZXNoZWV0Ij4KICA8dGl0bGU+R29Eb2M8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5Pgo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQiIHJvbGU9Im5hdmlnYXRpb24iPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBjbGFzcz0ibmF2YmFyLWhlYWRlciI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUiIGRhdGEtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS10YXJnZXQ9Ii5uYXZiYXItY29sbGFwc2UiPgogICAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+VG9nZ2xlIG5hdmlnYXRpb248L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CiAgICA8L2J1dHRvbj4KICAgIDxhIGNsYXNzPSJuYXZiYXItYnJhbmQiIGhyZWY9Ii8iPjxzdHJvbmc+R29Eb2M8L3N0cm9uZz48L2E+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIj4KICAgIDx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYiPgogICAgICAgIDxsaSBjbGFzcz0iYWN0aXZlIj48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgPC91bD4KICAgIDxmb3JtIGNsYXNzPSJuYXZiYXItbmF2IG5hdmJhci1mb3JtIG5hdmJhci1yaWdodCIgaWQ9Ingtc2VhcmNoIiBhY3Rpb249Ii8iIHJvbGU9InNlYXJjaCI+PGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJ4LXNlYXJjaC1xdWVyeSIgdHlwZT0idGV4dCIgbmFtZT0icSIgcGxhY2Vob2xkZXI9IlNlYXJjaCI+PC9mb3JtPgogIDwvZGl2Pgo8L2Rpdj4KPC9uYXY+CjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgCjxkaXYgY2xhc3M9Imp1bWJvdHJvbiI+CiAgICA8aDI+U2VhcmNoIGZvciBHbyBQYWNrYWdlczwvaDI+CiAgICAKICA8Zm9ybT4KICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InEiIGF1dG9mb2N1cz0iYXV0b2ZvY3VzIiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvciBwYWNrYWdlIGJ5IGltcG9ydCBwYXRoIG9yIGtleXdvcmQuIiB0eXBlPSJ0ZXh0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJzdWJtaXQiPkdvITwvYnV0dG9uPgogICAgICA8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Zvcm0+Cgo8L2Rpdj4KCjxwPkdvRG9jIGhvc3RzIGRvY3VtZW50YXRpb24gZm9yIDxhIGhyZWY9Imh0dHA6Ly9nb2xhbmcub3JnLyI+R288L2E+IHBhY2thZ2VzCm9uIEJpdGJ1Y2tldCwgR2l0SHViLCBHb29nbGUgUHJvamVjdCBIb3N0aW5nIGFuZCBMYXVuY2hwYWQuICBSZWFkIHRoZSA8YQogIGhyZWY9Ii8tL2Fib3V0Ij5BYm91dCBQYWdlPC9hPiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgYWRkaW5nIHBhY2thZ2VzIHRvIEdvRG9jCmFuZCBtb3JlLgoKPGRpdiBjbGFzcz0icm93Ij4KICA8ZGl2IGNsYXNzPSJjb2wtc20tNiI+CiAgICAKICAgICAgPGg0PlBvcHVsYXIgUGFja2FnZXM8L2g0PgogICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1nby9hd3MiPmdpdGh1Yi5jb20vYXdzL2F3cy1zZGstZ28vYXdzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9kZ3JpamFsdmEvand0LWdvIj5naXRodWIuY29tL2RncmlqYWx2YS9qd3QtZ288L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dpbi1nb25pYy9naW4iPmdpdGh1Yi5jb20vZ2luLWdvbmljL2dpbjwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXMiPmdpdGh1Yi5jb20vZ28tcmVkaXMvcmVkaXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2dvLXNxbC1kcml2ZXIvbXlzcWwiPmdpdGh1Yi5jb20vZ28tc3FsLWRyaXZlci9teXNxbDwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3Byb3RvIj5naXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wcm90bzwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29tb2R1bGUvcmVkaWdvL3JlZGlzIj5naXRodWIuY29tL2dvbW9kdWxlL3JlZGlnby9yZWRpczwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQiPmdpdGh1Yi5jb20vZ29yaWxsYS93ZWJzb2NrZXQ8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltIj5naXRodWIuY29tL2h5cGVybGVkZ2VyL2ZhYnJpYy9jb3JlL2NoYWluY29kZS9zaGltPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9qaW56aHUvZ29ybSI+Z2l0aHViLmNvbS9qaW56aHUvZ29ybTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vbGliL3BxIj5naXRodWIuY29tL2xpYi9wcTwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcGtnL2Vycm9ycyI+Z2l0aHViLmNvbS9wa2cvZXJyb3JzPC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1cyI+Z2l0aHViLmNvbS9wcm9tZXRoZXVzL2NsaWVudF9nb2xhbmcvcHJvbWV0aGV1czwvYT48bGk+PGEgaHJlZj0iL2dpdGh1Yi5jb20vcm9iZmlnL2Nyb24iPmdpdGh1Yi5jb20vcm9iZmlnL2Nyb248L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3NpcnVwc2VuL2xvZ3J1cyI+Z2l0aHViLmNvbS9zaXJ1cHNlbi9sb2dydXM8L2E+PGxpPjxhIGhyZWY9Ii9naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0Ij5naXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0PC9hPjxsaT48YSBocmVmPSIvZ2l0aHViLmNvbS91bml4cGlja2xlL2thaG9vdC1oYWNrIj5naXRodWIuY29tL3VuaXhwaWNrbGUva2Fob290LWhhY2s8L2E+PGxpPjxhIGhyZWY9Ii9nby51YmVyLm9yZy96YXAiPmdvLnViZXIub3JnL3phcDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9jcnlwdG8vc3NoIj5nb2xhbmcub3JnL3gvY3J5cHRvL3NzaDwvYT48bGk+PGEgaHJlZj0iL2dvbGFuZy5vcmcveC9uZXQvY29udGV4dCI+Z29sYW5nLm9yZy94L25ldC9jb250ZXh0PC9hPjxsaT48YSBocmVmPSIvZ29sYW5nLm9yZy94L29hdXRoMiI+Z29sYW5nLm9yZy94L29hdXRoMjwvYT48bGk+PGEgaHJlZj0iL2dvb2dsZS5nb2xhbmcub3JnL2dycGMiPmdvb2dsZS5nb2xhbmcub3JnL2dycGM8L2E+PGxpPjxhIGhyZWY9Ii9nb3BrZy5pbi9tZ28udjIiPmdvcGtnLmluL21nby52MjwvYT48bGk+PGEgaHJlZj0iL2dvcGtnLmluL3lhbWwudjIiPmdvcGtnLmluL3lhbWwudjI8L2E+PGxpPjxhIGhyZWY9Ii9sYWJpeC5vcmcvdjIvbWdvIj5sYWJpeC5vcmcvdjIvbWdvPC9hPgogICAgICA8L3VsPgogICAgCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sLXNtLTYiPgogICAgPGg0Pk1vcmUgUGFja2FnZXM8L2g0PgogICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIj4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL2dvIj5HbyBTdGFuZGFyZCBQYWNrYWdlczwvYT4KICAgICAgPGxpPjxhIGhyZWY9Ii8tL3N1YnJlcG8iPkdvIFN1Yi1yZXBvc2l0b3J5IFBhY2thZ2VzPC9hPgogICAgICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9nb2xhbmcub3JnL3dpa2kvUHJvamVjdHMiPlByb2plY3RzIEAgZ28td2lraTwvYT4KICAgICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJmFtcDtxPWxhbmd1YWdlJTNBZ28mYW1wO3M9c3RhcnMmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5Nb3N0IHN0YXJzPC9hPiwgCiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlYXJjaD9vPWRlc2MmYW1wO3E9bGFuZ3VhZ2UlM0FnbyZhbXA7cz1mb3JrcyZhbXA7dHlwZT1SZXBvc2l0b3JpZXMiPm1vc3QgZm9ya3M8L2E+LCAKICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2VhcmNoP289ZGVzYyZhbXA7cT1sYW5ndWFnZSUzQWdvJmFtcDtzPXVwZGF0ZWQmYW1wO3R5cGU9UmVwb3NpdG9yaWVzIj5yZWNlbnRseSB1cGRhdGVkPC9hPiBvbiBHaXRIdWIKICAgIDwvdWw+CiAgPC9kaXY+CjwvZGl2PgoKCjwvZGl2Pgo8ZGl2IGlkPSJ4LWZvb3RlciIgY2xhc3M9ImNsZWFyZml4Ij4KICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nZGRvL2lzc3VlcyI+V2Vic2l0ZSBJc3N1ZXM8L2E+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1tdXRlZCI+fDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dvbGFuZy5vcmcvIj5HbyBMYW5ndWFnZTwvYT4KICAgIDxzcGFuIGNsYXNzPSJwdWxsLXJpZ2h0Ij48YSBocmVmPSIjIj5CYWNrIHRvIHRvcDwvYT48L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ieC1zaG9ydGN1dHMiIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIj4KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyI+CiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvYnV0dG9uPgogICAgICAgICAgPGg0IGNsYXNzPSJtb2RhbC10aXRsZSI+S2V5Ym9hcmQgc2hvcnRjdXRzPC9oND4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4/PC9iPjwvdGQ+PHRkPiA6IFRoaXMgbWVudTwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj4vPC9iPjwvdGQ+PHRkPiA6IFNlYXJjaCBzaXRlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5mPC9iPjwvdGQ+PHRkPiA6IEp1bXAgdG8gaWRlbnRpZmllcjwvdGQ+PC90cj4KICAgICAgICAgIDx0cj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmc8L2I+PC90ZD48dGQ+IDogR28gdG8gdG9wIG9mIHBhZ2U8L3RkPjwvdHI+CiAgICAgICAgICA8dHI+PHRkIGFsaWduPSJyaWdodCI+PGI+ZzwvYj4gdGhlbiA8Yj5iPC9iPjwvdGQ+PHRkPiA6IEdvIHRvIGVuZCBvZiBwYWdlPC90ZD48L3RyPgogICAgICAgICAgPHRyIGNsYXNzPSJ0ZXh0LW11dGVkIj48dGQgYWxpZ249InJpZ2h0Ij48Yj5nPC9iPiB0aGVuIDxiPmk8L2I+PC90ZD48dGQ+IDogR28gdG8gaW5kZXg8L3RkPjwvdHI+CiAgICAgICAgICA8dHIgY2xhc3M9InRleHQtbXV0ZWQiPjx0ZCBhbGlnbj0icmlnaHQiPjxiPmc8L2I+IHRoZW4gPGI+ZTwvYj48L3RkPjx0ZD4gOiBHbyB0byBleGFtcGxlczwvdGQ+PC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Ii8tL2pxdWVyeS0yLjAuMy5taW4uanM/dj1mYmY5Yzc3ZDBjNGUzYzM0YTQ4NTk4MGMxZTUzMTZiNjIxMjE2MGM4Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL2Jvb3RzdHJhcC5taW4uanM/dj01YWRhN2MxMDNmYzFkZWFiYzkyNWNjMWZkYmJiNmU0NTFjMjFmYzcwIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii8tL3NpdGUuanM/dj0zNzFkZTczMWMxOGQ5MWM0OTlkOTBiMWFiMGJmMzllY2Y2NmQ2Y2Y3Ij48L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+\"\n      }\n    },\n    {\n      \"ID\": \"f7ae4a04c8e15618\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"rRfgZLcglv08Foy2n2Iw5sU10iBfo4Ht3IeGeMZOd2rfdcw5utLaKhk/SpjS20nIeN08DIhv693xmOIIXLKdq+x6ms79oaA4\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R45FDJ2CPJDB4F3\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fa1213ddcf16c95d\",\n      \"Request\": {\n        \"Method\": \"HEAD\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Accept-Ranges\": [\n            \"bytes\"\n          ],\n          \"Content-Length\": [\n            \"6354\"\n          ],\n          \"Content-Type\": [\n            \"application/json\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Etag\": [\n            \"\\\"0f6a7c9ff3d3d770b8f7fa19c2ae19d0\\\"\"\n          ],\n          \"Last-Modified\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"J44kjrgTA+7UlQG3WqKYbyZGN4ZNs7s3ev+Bk99OzsDIbkTcrl2NMoAU0iR8F2fxAB8XXI9s0dA9eC5CORa+1RqsxpsOxkmC\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R4FXC029BWYKYDS\"\n          ],\n          \"X-Amz-Server-Side-Encryption\": [\n            \"AES256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c1ece5fa4580017a\",\n      \"Request\": {\n        \"Method\": \"DELETE\",\n        \"URL\": \"https://go-cloud-testing-2.s3.us-west-1.amazonaws.com/blob-for-reading?x-id=DeleteObject\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Content-Sha256\": [\n            \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          null\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 204,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:28:31 GMT\"\n          ],\n          \"Server\": [\n            \"AmazonS3\"\n          ],\n          \"X-Amz-Id-2\": [\n            \"QZuYkhR+NKhylqdix4IsG+zTJv6K1svia3L1kWgyKwsf/rCZoaGIE9DOBPnCPCszb8LEBuNTNWu+Me0JramRCSOhHF/iZPBR\"\n          ],\n          \"X-Amz-Request-Id\": [\n            \"0R48VJTW5Q5FQBT4\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestOpenBucket/empty_bucket_name_results_in_error.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0wDiZvowAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestOpenBucket/empty_bucket_name_results_in_error_V2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7fe2/sO5bkMQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestOpenBucket/success.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg0wDjU7LgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/s3blob/testdata/TestOpenBucket/success_V2.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7fe2/tABc27wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "blob/wrapped_bucket_test.go",
    "content": "package blob_test\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/fileblob\"\n)\n\nfunc TestPrefixedBucket(t *testing.T) {\n\tdir := t.TempDir()\n\n\tbucket, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tconst contents = \"contents\"\n\tctx := context.Background()\n\tif err := bucket.WriteAll(ctx, \"foo/bar/baz.txt\", []byte(contents), nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\twrapped := blob.PrefixedBucket(bucket, \"foo/bar/\")\n\tdefer wrapped.Close()\n\n\tgot, err := wrapped.ReadAll(ctx, \"baz.txt\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif string(got) != contents {\n\t\tt.Errorf(\"got %q want %q\", string(got), contents)\n\t}\n}\n\nfunc TestSingleKeyBucket(t *testing.T) {\n\tdir := t.TempDir()\n\n\tbucket, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tconst contents = \"contents\"\n\tctx := context.Background()\n\tif err := bucket.WriteAll(ctx, \"foo/bar.txt\", []byte(contents), nil); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tdirpath := filepath.ToSlash(dir)\n\tif os.PathSeparator != '/' && !strings.HasPrefix(dirpath, \"/\") {\n\t\tdirpath = \"/\" + dirpath\n\t}\n\n\twrapped, err := blob.OpenBucket(ctx, \"file://\"+dirpath+\"?key=foo/bar.txt\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer wrapped.Close()\n\tgot, err := wrapped.ReadAll(ctx, \"\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif string(got) != contents {\n\t\tt.Errorf(\"got %q want %q\", string(got), contents)\n\t}\n}\n"
  },
  {
    "path": "contrib/upgrade-dependency.sh",
    "content": "#!/usr/bin/env bash\n\n# Upgrade a dependency across all dependent submodules.\n#\n# Usage:\n# \t./contrib/upgrade-dependency.sh github.com/foo/bar\n#\n# Requires ripgrep.\n\nif [[ -z \"$1\" ]]; then\n\techo \"Usage: ./contrib/upgrade-dependency.sh github.com/foo/bar\"\n\texit 1\nfi\n\nif [[ -z \"$(which rg)\" ]]; then\n\techo \"This script requires ripgrep. Please visit https://github.com/BurntSushi/ripgrep to learn how to install this utility.\"\n\texit 1\nfi\n\nset -euo pipefail\n\nDEPENDENCY=\"$1\"\nprintf \"%s\\n\" \"Upgrading \\\"$DEPENDENCY\\\".\"\n\nROOT=\"$(git rev-parse --show-toplevel)\"\n\nGO_MOD_FILES=$(rg -l \"$DEPENDENCY\" | grep \"go.mod\")\nprintf \"%s\\n\" \"Module files to adjust: ${GO_MOD_FILES//$'\\n'/, }.\"\n\nfor f in ${GO_MOD_FILES}; do\n\tMODULE_PATH=\"$(dirname \"$f\")\"\n\tprintf \"%s\\n\" \"Upgrading \\\"$DEPENDENCY\\\" in \\\"$MODULE_PATH\\\".\"\n\n\tset -x\n\tcd \"$MODULE_PATH\"\n\tgo get -u \"$DEPENDENCY\" \n\tgo mod tidy \n\tcd \"$ROOT\"\n\tset +x\ndone\n"
  },
  {
    "path": "doc.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/*\nPackage cloud contains a library and tools for open cloud development in Go.\n\nThe Go Cloud Development Kit (Go CDK) allows application developers to\nseamlessly deploy cloud applications on any combination of cloud providers.\nIt does this by providing stable, idiomatic interfaces for common uses like\nstorage and databases. Think `database/sql` for cloud products.\n\nAt the core of the Go CDK are common \"portable types\", implemented on top of\nservice-specific drivers for supported cloud services. For example,\nobjects of the blob.Bucket portable type can be created using\ngcsblob.OpenBucket, s3blob.OpenBucket, or any other Go CDK driver. Then, the\nblob.Bucket can be used throughout your application without worrying about the\nunderlying implementation.\n\nThe Go CDK works well with a code generator called Wire\n(https://github.com/google/wire/blob/master/README.md). It creates\nhuman-readable code that only imports the cloud SDKs for drivers you use. This\nallows the Go CDK to grow to support any number of cloud services, without\nincreasing compile times or binary sizes, and avoiding any side effects from\n`init()` functions.\n\nFor non-reference documentation, see https://gocloud.dev/\n\n# URLs\n\nSee https://gocloud.dev/concepts/urls/ for a discussion of URLs in the Go CDK.\n\n# As\n\nSee https://gocloud.dev/concepts/as/ for a discussion of how to write\nservice-specific code with the Go CDK.\n*/\npackage cloud // import \"gocloud.dev\"\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/benchmark_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"testing\"\n\n\tawsv2cfg \"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression\"\n\t\"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\tdyn2Types \"github.com/aws/aws-sdk-go-v2/service/dynamodb/types\"\n)\n\nvar benchmarkTableName = collectionName3\n\nfunc BenchmarkPutVSTransact(b *testing.B) {\n\t// This benchmark compares two ways to replace N items and retrieve their previous values.\n\t// The first way makes N calls to PutItem with ReturnValues set to ALL_OLD.\n\t// The second way calls BatchGetItem followed by TransactWriteItem.\n\t//\n\t// The results show that separate PutItems are faster for up to two items.\n\tcfg, err := awsv2cfg.LoadDefaultConfig(context.Background())\n\tif err != nil {\n\t\tb.Fatal(\"Error initializing aws session for benchmark: \", err)\n\t}\n\tdb := dynamodb.NewFromConfig(cfg)\n\n\tfor nItems := 1; nItems <= 5; nItems++ {\n\t\tb.Run(fmt.Sprintf(\"%d-Items\", nItems), func(b *testing.B) {\n\t\t\tvar items []map[string]dyn2Types.AttributeValue\n\t\t\tfor i := 0; i < nItems; i++ {\n\t\t\t\titems = append(items, map[string]dyn2Types.AttributeValue{\n\t\t\t\t\t\"name\": &dyn2Types.AttributeValueMemberS{Value: fmt.Sprintf(\"pt-vs-transact-%d\", i)},\n\t\t\t\t\t\"x\":    &dyn2Types.AttributeValueMemberN{Value: strconv.Itoa(i)},\n\t\t\t\t\t\"rev\":  &dyn2Types.AttributeValueMemberN{Value: \"1\"},\n\t\t\t\t})\n\t\t\t}\n\t\t\tfor _, item := range items {\n\t\t\t\t_, err := db.PutItem(context.Background(), &dynamodb.PutItemInput{\n\t\t\t\t\tTableName: &benchmarkTableName,\n\t\t\t\t\tItem:      item,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\tb.Fatal(err)\n\t\t\t\t}\n\t\t\t}\n\t\t\tb.Run(\"PutItem\", func(b *testing.B) {\n\t\t\t\tfor n := 0; n < b.N; n++ {\n\t\t\t\t\tputItems(b, db, items)\n\t\t\t\t}\n\t\t\t})\n\t\t\tb.Run(\"TransactWrite\", func(b *testing.B) {\n\t\t\t\tfor n := 0; n < b.N; n++ {\n\t\t\t\t\tbatchGetTransactWrite(b, db, items)\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n}\n\nfunc putItems(b *testing.B, db *dynamodb.Client, items []map[string]dyn2Types.AttributeValue) {\n\tb.Helper()\n\n\tfor i, item := range items {\n\t\titem[\"x\"] = &dyn2Types.AttributeValueMemberN{Value: strconv.Itoa(i + 1)}\n\t\tin := &dynamodb.PutItemInput{\n\t\t\tTableName:    &benchmarkTableName,\n\t\t\tItem:         item,\n\t\t\tReturnValues: dyn2Types.ReturnValueAllOld,\n\t\t}\n\t\tce, err := expression.NewBuilder().\n\t\t\tWithCondition(expression.Name(\"rev\").Equal(expression.Value(1))).\n\t\t\tBuild()\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t\tin.ExpressionAttributeNames = ce.Names()\n\t\tin.ExpressionAttributeValues = ce.Values()\n\t\tin.ConditionExpression = ce.Condition()\n\t\tout, err := db.PutItem(context.Background(), in)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t\tif got, want := len(out.Attributes), 3; got != want {\n\t\t\tb.Fatalf(\"got %d attributes, want %d\", got, want)\n\t\t}\n\t}\n}\n\nfunc batchGetTransactWrite(b *testing.B, db *dynamodb.Client, items []map[string]dyn2Types.AttributeValue) {\n\tb.Helper()\n\n\tkeys := make([]map[string]dyn2Types.AttributeValue, len(items))\n\ttws := make([]dyn2Types.TransactWriteItem, len(items))\n\tfor i, item := range items {\n\t\tkeys[i] = map[string]dyn2Types.AttributeValue{\"name\": items[i][\"name\"]}\n\t\titem[\"x\"] = &dyn2Types.AttributeValueMemberN{Value: strconv.Itoa(i + 2)}\n\t\tput := &dyn2Types.Put{TableName: &benchmarkTableName, Item: items[i]}\n\t\tce, err := expression.NewBuilder().\n\t\t\tWithCondition(expression.Name(\"rev\").Equal(expression.Value(1))).\n\t\t\tBuild()\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t\tput.ExpressionAttributeNames = ce.Names()\n\t\tput.ExpressionAttributeValues = ce.Values()\n\t\tput.ConditionExpression = ce.Condition()\n\t\ttws[i] = dyn2Types.TransactWriteItem{Put: put}\n\t}\n\t_, err := db.BatchGetItem(context.Background(), &dynamodb.BatchGetItemInput{\n\t\tRequestItems: map[string]dyn2Types.KeysAndAttributes{\n\t\t\tbenchmarkTableName: {Keys: keys},\n\t\t},\n\t})\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\t_, err = db.TransactWriteItems(context.Background(), &dynamodb.TransactWriteItemsInput{TransactItems: tws})\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/codec.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"time\"\n\n\tdyn2Types \"github.com/aws/aws-sdk-go-v2/service/dynamodb/types\"\n\t\"gocloud.dev/docstore/driver\"\n)\n\nvar nullValue = &dyn2Types.AttributeValueMemberNULL{Value: true}\n\ntype encoder struct {\n\tav dyn2Types.AttributeValue\n}\n\nfunc (e *encoder) EncodeNil()        { e.av = nullValue }\nfunc (e *encoder) EncodeBool(x bool) { e.av = &dyn2Types.AttributeValueMemberBOOL{Value: x} }\nfunc (e *encoder) EncodeInt(x int64) {\n\te.av = &dyn2Types.AttributeValueMemberN{Value: strconv.FormatInt(x, 10)}\n}\nfunc (e *encoder) EncodeUint(x uint64) {\n\te.av = &dyn2Types.AttributeValueMemberN{Value: strconv.FormatUint(x, 10)}\n}\nfunc (e *encoder) EncodeBytes(x []byte)  { e.av = &dyn2Types.AttributeValueMemberB{Value: x} }\nfunc (e *encoder) EncodeFloat(x float64) { e.av = encodeFloat(x) }\n\nfunc (e *encoder) ListIndex(int) { panic(\"impossible\") }\nfunc (e *encoder) MapKey(string) { panic(\"impossible\") }\n\nfunc (e *encoder) EncodeString(x string) {\n\tif len(x) == 0 {\n\t\te.av = nullValue\n\t} else {\n\t\te.av = &dyn2Types.AttributeValueMemberS{Value: x}\n\t}\n}\n\nfunc (e *encoder) EncodeComplex(x complex128) {\n\te.av = &dyn2Types.AttributeValueMemberL{Value: []dyn2Types.AttributeValue{encodeFloat(real(x)), encodeFloat(imag(x))}}\n}\n\nfunc (e *encoder) EncodeList(n int) driver.Encoder {\n\ts := make([]dyn2Types.AttributeValue, n)\n\te.av = &dyn2Types.AttributeValueMemberL{Value: s}\n\treturn &listEncoder{s: s}\n}\n\nfunc (e *encoder) EncodeMap(n int) driver.Encoder {\n\tm := make(map[string]dyn2Types.AttributeValue, n)\n\te.av = &dyn2Types.AttributeValueMemberM{Value: m}\n\treturn &mapEncoder{m: m}\n}\n\nvar typeOfGoTime = reflect.TypeFor[time.Time]()\n\n// EncodeSpecial encodes time.Time specially.\nfunc (e *encoder) EncodeSpecial(v reflect.Value) (bool, error) {\n\tswitch v.Type() {\n\tcase typeOfGoTime:\n\t\tts := v.Interface().(time.Time).Format(time.RFC3339Nano)\n\t\te.EncodeString(ts)\n\tdefault:\n\t\treturn false, nil\n\t}\n\treturn true, nil\n}\n\ntype listEncoder struct {\n\ts []dyn2Types.AttributeValue\n\tencoder\n}\n\nfunc (e *listEncoder) ListIndex(i int) { e.s[i] = e.av }\n\ntype mapEncoder struct {\n\tm map[string]dyn2Types.AttributeValue\n\tencoder\n}\n\nfunc (e *mapEncoder) MapKey(k string) { e.m[k] = e.av }\n\nfunc encodeDoc(doc driver.Document) (dyn2Types.AttributeValue, error) {\n\tvar e encoder\n\tif err := doc.Encode(&e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.av, nil\n}\n\n// Encode the key fields of the given document into a map AttributeValue.\n// pkey and skey are the names of the partition key field and the sort key field.\n// pkey must always be non-empty, but skey may be empty if the collection has no sort key.\nfunc encodeDocKeyFields(doc driver.Document, pkey, skey string) (*dyn2Types.AttributeValueMemberM, error) {\n\tm := map[string]dyn2Types.AttributeValue{}\n\n\tset := func(fieldName string) error {\n\t\tfieldVal, err := doc.GetField(fieldName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tattrVal, err := encodeValue(fieldVal)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm[fieldName] = attrVal\n\t\treturn nil\n\t}\n\n\tif err := set(pkey); err != nil {\n\t\treturn nil, err\n\t}\n\tif skey != \"\" {\n\t\tif err := set(skey); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &dyn2Types.AttributeValueMemberM{Value: m}, nil\n}\n\nfunc encodeValue(v any) (dyn2Types.AttributeValue, error) {\n\tvar e encoder\n\tif err := driver.Encode(reflect.ValueOf(v), &e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.av, nil\n}\n\nfunc encodeFloat(f float64) dyn2Types.AttributeValue {\n\treturn &dyn2Types.AttributeValueMemberN{Value: strconv.FormatFloat(f, 'f', -1, 64)}\n}\n\n////////////////////////////////////////////////////////////////\n\nfunc decodeDoc(item dyn2Types.AttributeValue, doc driver.Document) error {\n\treturn doc.Decode(decoder{av: item})\n}\n\ntype decoder struct {\n\tav dyn2Types.AttributeValue\n}\n\nfunc (d decoder) String() string {\n\tif s, ok := d.av.(fmt.Stringer); ok {\n\t\treturn s.String()\n\t}\n\treturn fmt.Sprint(d.av)\n}\n\nfunc (d decoder) AsBool() (bool, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberBOOL)\n\tif !ok {\n\t\treturn false, false\n\t}\n\treturn i.Value, true\n}\n\nfunc (d decoder) AsNull() bool {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberNULL)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn i.Value\n}\n\nfunc (d decoder) AsString() (string, bool) {\n\t// Empty string is represented by NULL.\n\t_, ok := d.av.(*dyn2Types.AttributeValueMemberNULL)\n\tif ok {\n\t\treturn \"\", true\n\t}\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberS)\n\tif !ok {\n\t\treturn \"\", false\n\t}\n\treturn i.Value, true\n}\n\nfunc (d decoder) AsInt() (int64, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberN)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tv, err := strconv.ParseInt(i.Value, 10, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn v, true\n}\n\nfunc (d decoder) AsUint() (uint64, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberN)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tv, err := strconv.ParseUint(i.Value, 10, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn v, true\n}\n\nfunc (d decoder) AsFloat() (float64, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberN)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tv, err := strconv.ParseFloat(i.Value, 64)\n\tif err != nil {\n\t\treturn 0, false\n\t}\n\treturn v, true\n}\n\nfunc (d decoder) AsComplex() (complex128, bool) {\n\tiface, ok := d.av.(*dyn2Types.AttributeValueMemberL)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\tif len(iface.Value) != 2 {\n\t\treturn 0, false\n\t}\n\tr, ok := decoder{iface.Value[0]}.AsFloat()\n\tif !ok {\n\t\treturn 0, false\n\t}\n\ti, ok := decoder{iface.Value[1]}.AsFloat()\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn complex(r, i), true\n}\n\nfunc (d decoder) AsBytes() ([]byte, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberB)\n\tif !ok {\n\t\treturn nil, false\n\t}\n\treturn i.Value, true\n}\n\nfunc (d decoder) ListLen() (int, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberL)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn len(i.Value), true\n}\n\nfunc (d decoder) DecodeList(f func(i int, vd driver.Decoder) bool) {\n\tiface, ok := d.av.(*dyn2Types.AttributeValueMemberL)\n\tif !ok {\n\t\t// V1 behavior treated this as indistinct from an empty list,\n\t\t// which this return replicates.\n\t\t// Should this be explicitly handled in some way?\n\t\treturn\n\t}\n\tfor i, el := range iface.Value {\n\t\tif !f(i, decoder{el}) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (d decoder) MapLen() (int, bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberM)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn len(i.Value), true\n}\n\nfunc (d decoder) DecodeMap(f func(key string, vd driver.Decoder, exactMatch bool) bool) {\n\ti, ok := d.av.(*dyn2Types.AttributeValueMemberM)\n\tif !ok {\n\t\t// V1 behavior treated this as indistinct from an empty map,\n\t\t// which this return replicates.\n\t\t// Should this be explicitly handled in some way?\n\t\treturn\n\t}\n\tfor k, av := range i.Value {\n\t\tif !f(k, decoder{av}, true) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (d decoder) AsInterface() (any, error) {\n\treturn toGoValue(d.av)\n}\n\nfunc toGoValue(av dyn2Types.AttributeValue) (any, error) {\n\tswitch v := av.(type) {\n\tcase *dyn2Types.AttributeValueMemberNULL:\n\t\treturn nil, nil\n\tcase *dyn2Types.AttributeValueMemberBOOL:\n\t\treturn v.Value, nil\n\tcase *dyn2Types.AttributeValueMemberN:\n\t\tf, err := strconv.ParseFloat(v.Value, 64)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ti := int64(f)\n\t\tif float64(i) == f {\n\t\t\treturn i, nil\n\t\t}\n\t\tu := uint64(f)\n\t\tif float64(u) == f {\n\t\t\treturn u, nil\n\t\t}\n\t\treturn f, nil\n\n\tcase *dyn2Types.AttributeValueMemberB:\n\t\treturn v.Value, nil\n\tcase *dyn2Types.AttributeValueMemberS:\n\t\treturn v.Value, nil\n\n\tcase *dyn2Types.AttributeValueMemberL:\n\t\ts := make([]any, len(v.Value))\n\t\tfor i, v := range v.Value {\n\t\t\tx, err := toGoValue(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ts[i] = x\n\t\t}\n\t\treturn s, nil\n\n\tcase *dyn2Types.AttributeValueMemberM:\n\t\tm := make(map[string]any, len(v.Value))\n\t\tfor k, v := range v.Value {\n\t\t\tx, err := toGoValue(v)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tm[k] = x\n\t\t}\n\t\treturn m, nil\n\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"awsdynamodb: AttributeValue %s not supported\", av)\n\t}\n}\n\nfunc (d decoder) AsSpecial(v reflect.Value) (bool, any, error) {\n\tunsupportedTypes := `unsupported type, the docstore driver for DynamoDB does\n\tnot decode DynamoDB set types, such as string set, number set and binary set`\n\tswitch d.av.(type) {\n\tcase *dyn2Types.AttributeValueMemberSS:\n\t\treturn true, nil, errors.New(unsupportedTypes)\n\tcase *dyn2Types.AttributeValueMemberNS:\n\t\treturn true, nil, errors.New(unsupportedTypes)\n\tcase *dyn2Types.AttributeValueMemberBS:\n\t\treturn true, nil, errors.New(unsupportedTypes)\n\t}\n\n\tswitch v.Type() {\n\tcase typeOfGoTime:\n\t\ti, ok := d.av.(*dyn2Types.AttributeValueMemberS)\n\t\tif !ok {\n\t\t\treturn false, nil, errors.New(\"expected string field for time.Time\")\n\t\t}\n\t\tt, err := time.Parse(time.RFC3339Nano, i.Value)\n\t\treturn true, t, err\n\t}\n\treturn false, nil, nil\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/codec_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\tdynattr \"github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue\"\n\tdyn2Types \"github.com/aws/aws-sdk-go-v2/service/dynamodb/types\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n)\n\nvar compareIgnoreAttributeUnexported = cmpopts.IgnoreUnexported(\n\tdyn2Types.AttributeValueMemberB{},\n\tdyn2Types.AttributeValueMemberBOOL{},\n\tdyn2Types.AttributeValueMemberBS{},\n\tdyn2Types.AttributeValueMemberL{},\n\tdyn2Types.AttributeValueMemberM{},\n\tdyn2Types.AttributeValueMemberN{},\n\tdyn2Types.AttributeValueMemberNS{},\n\tdyn2Types.AttributeValueMemberNULL{},\n\tdyn2Types.AttributeValueMemberS{},\n\tdyn2Types.AttributeValueMemberSS{},\n)\n\nfunc TestEncodeValue(t *testing.T) {\n\tavn := func(s string) dyn2Types.AttributeValue { return &dyn2Types.AttributeValueMemberN{Value: s} }\n\tavl := func(avs ...dyn2Types.AttributeValue) dyn2Types.AttributeValue {\n\t\treturn &dyn2Types.AttributeValueMemberL{Value: avs}\n\t}\n\n\tvar seven int32 = 7\n\tvar nullptr *int\n\n\tfor _, test := range []struct {\n\t\tin   any\n\t\twant dyn2Types.AttributeValue\n\t}{\n\t\t// null\n\t\t{nil, nullValue},\n\t\t{nullptr, nullValue},\n\t\t// number\n\t\t{0, avn(\"0\")},\n\t\t{uint64(999), avn(\"999\")},\n\t\t{3.5, avn(\"3.5\")},\n\t\t{seven, avn(\"7\")},\n\t\t{&seven, avn(\"7\")},\n\t\t// string\n\t\t{\"\", nullValue},\n\t\t{\"x\", &dyn2Types.AttributeValueMemberS{Value: \"x\"}},\n\t\t{\"abc123\", &dyn2Types.AttributeValueMemberS{Value: \"abc123\"}},\n\t\t{\"abc 123\", &dyn2Types.AttributeValueMemberS{Value: \"abc 123\"}},\n\t\t// bool\n\t\t{true, &dyn2Types.AttributeValueMemberBOOL{Value: true}},\n\t\t{false, &dyn2Types.AttributeValueMemberBOOL{Value: false}},\n\t\t// list\n\t\t{[]int(nil), nullValue},\n\t\t{[]int{}, &dyn2Types.AttributeValueMemberL{Value: []dyn2Types.AttributeValue{}}},\n\t\t{[]int{1, 2}, avl(avn(\"1\"), avn(\"2\"))},\n\t\t{[...]int{1, 2}, avl(avn(\"1\"), avn(\"2\"))},\n\t\t{[]any{nil, false}, avl(nullValue, &dyn2Types.AttributeValueMemberBOOL{Value: false})},\n\t\t// map\n\t\t{map[string]int(nil), nullValue},\n\t\t{map[string]int{}, &dyn2Types.AttributeValueMemberM{Value: map[string]dyn2Types.AttributeValue{}}},\n\t\t{\n\t\t\tmap[string]int{\"a\": 1, \"b\": 2},\n\t\t\t&dyn2Types.AttributeValueMemberM{Value: map[string]dyn2Types.AttributeValue{\n\t\t\t\t\"a\": avn(\"1\"),\n\t\t\t\t\"b\": avn(\"2\"),\n\t\t\t}},\n\t\t},\n\t} {\n\t\tvar e encoder\n\t\tif err := driver.Encode(reflect.ValueOf(test.in), &e); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot := e.av\n\t\tif !cmp.Equal(got, test.want, compareIgnoreAttributeUnexported) {\n\t\t\tt.Errorf(\"%#v: got %#v, want %#v\", test.in, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestDecodeValue(t *testing.T) {\n\tavn := func(s string) dyn2Types.AttributeValue { return &dyn2Types.AttributeValueMemberN{Value: s} }\n\tavl := func(vals ...dyn2Types.AttributeValue) dyn2Types.AttributeValue {\n\t\treturn &dyn2Types.AttributeValueMemberL{Value: vals}\n\t}\n\n\tfor _, test := range []struct {\n\t\tin   dyn2Types.AttributeValue\n\t\twant any\n\t}{\n\t\t// null\n\t\t// {nullValue, nil}, // cant reflect new, how best to test?\n\t\t// bool\n\t\t{&dyn2Types.AttributeValueMemberBOOL{Value: false}, false},\n\t\t{&dyn2Types.AttributeValueMemberBOOL{Value: true}, true},\n\t\t// string\n\t\t{&dyn2Types.AttributeValueMemberS{Value: \"x\"}, \"x\"},\n\t\t// int64\n\t\t{avn(\"7\"), int64(7)},\n\t\t{avn(\"-7\"), int64(-7)},\n\t\t{avn(\"0\"), int64(0)},\n\t\t// uint64\n\t\t{avn(\"7\"), uint64(7)},\n\t\t{avn(\"0\"), uint64(0)},\n\t\t// float64\n\t\t{avn(\"7\"), float64(7)},\n\t\t{avn(\"0\"), float64(0)},\n\t\t{avn(\"3.1415\"), float64(3.1415)},\n\t\t// []byte\n\t\t{&dyn2Types.AttributeValueMemberB{Value: []byte(`123`)}, []byte(`123`)},\n\t\t// List\n\t\t{avl(avn(\"12\"), avn(\"37\")), []int64{12, 37}},\n\t\t{avl(avn(\"12\"), avn(\"37\")), []uint64{12, 37}},\n\t\t{avl(avn(\"12.8\"), avn(\"37.1\")), []float64{12.8, 37.1}},\n\t\t// Map\n\t\t{\n\t\t\t&dyn2Types.AttributeValueMemberM{Value: map[string]dyn2Types.AttributeValue{}},\n\t\t\tmap[string]int{},\n\t\t},\n\t\t{\n\t\t\t&dyn2Types.AttributeValueMemberM{Value: map[string]dyn2Types.AttributeValue{\"a\": avn(\"1\"), \"b\": avn(\"2\")}},\n\t\t\tmap[string]int{\"a\": 1, \"b\": 2},\n\t\t},\n\t} {\n\t\tvar (\n\t\t\ttarget = reflect.New(reflect.TypeOf(test.want))\n\t\t)\n\n\t\tdec := decoder{av: test.in}\n\t\tif err := driver.Decode(target.Elem(), dec); err != nil {\n\t\t\tt.Errorf(\" error decoding value %#v, got error: %#v\", test.in, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif !cmp.Equal(target.Elem().Interface(), test.want, compareIgnoreAttributeUnexported) {\n\t\t\tt.Errorf(\" %#v: got %#v, want %#v\", test.in, target.Elem().Interface(), test.want)\n\t\t}\n\t}\n}\n\nfunc TestDecodeErrorOnUnsupported(t *testing.T) {\n\tfor _, tc := range []struct {\n\t\tin  dyn2Types.AttributeValue\n\t\tout any\n\t}{\n\t\t{&dyn2Types.AttributeValueMemberSS{Value: []string{\"foo\", \"bar\"}}, []string{}},\n\t\t{&dyn2Types.AttributeValueMemberNS{Value: []string{\"1.1\", \"-2.2\", \"3.3\"}}, []float64{}},\n\t\t{&dyn2Types.AttributeValueMemberBS{Value: [][]byte{{4}, {5}, {6}}}, [][]byte{}},\n\t} {\n\t\td := decoder{av: tc.in}\n\t\tif err := driver.Decode(reflect.ValueOf(tc.out), &d); err == nil {\n\t\t\tt.Error(\"got nil error, want unsupported error\")\n\t\t}\n\t}\n}\n\ntype codecTester struct{}\n\nfunc (ct *codecTester) UnsupportedTypes() []drivertest.UnsupportedType {\n\treturn []drivertest.UnsupportedType{drivertest.BinarySet}\n}\n\nfunc (ct *codecTester) NativeEncode(obj any) (any, error) {\n\treturn dynattr.Marshal(obj)\n}\n\nfunc (ct *codecTester) NativeDecode(value, dest any) error {\n\treturn dynattr.Unmarshal(value.(dyn2Types.AttributeValue), dest)\n}\n\nfunc (ct *codecTester) DocstoreEncode(obj any) (any, error) {\n\treturn encodeDoc(drivertest.MustDocument(obj))\n}\n\nfunc (ct *codecTester) DocstoreDecode(value, dest any) error {\n\treturn decodeDoc(value.(dyn2Types.AttributeValue), drivertest.MustDocument(dest))\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/create_tables.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Creates the DynamoDB tables needed for tests.\n#\n# If a table already exists, this script will fail. To re-create the table, run\n#   aws dynamodb delete-table --table-name ...\n# and wait until the deletion completes.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\n# except we want to keep going if there is a failure.\nset -uxo pipefail\n\n# The docstore-test-1 table has a single partition key called \"name\".\n\n\naws dynamodb create-table \\\n  --region us-east-2 \\\n  --table-name docstore-test-1 \\\n  --attribute-definitions AttributeName=name,AttributeType=S \\\n  --key-schema AttributeName=name,KeyType=HASH \\\n  --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5\n\n\n# The docstore-test-2 table has both a partition and a sort key, and two indexes.\n\naws dynamodb create-table \\\n  --region us-east-2 \\\n  --table-name docstore-test-2 \\\n  --attribute-definitions \\\n        AttributeName=Game,AttributeType=S \\\n        AttributeName=Player,AttributeType=S \\\n        AttributeName=Score,AttributeType=N \\\n        AttributeName=Time,AttributeType=S \\\n  --key-schema AttributeName=Game,KeyType=HASH AttributeName=Player,KeyType=RANGE \\\n  --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \\\n  --local-secondary-indexes \\\n  'IndexName=local,KeySchema=[{AttributeName=Game,KeyType=HASH},{AttributeName=Score,KeyType=RANGE}],Projection={ProjectionType=ALL}' \\\n  --global-secondary-indexes \\\n  'IndexName=global,KeySchema=[{AttributeName=Player,KeyType=HASH},{AttributeName=Time,KeyType=RANGE}],Projection={ProjectionType=ALL},ProvisionedThroughput={ReadCapacityUnits=5,WriteCapacityUnits=5}'\n\n\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/dynamo.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awsdynamodb provides a docstore implementation backed by Amazon\n// DynamoDB.\n// Use OpenCollection to construct a *docstore.Collection.\n//\n// # URLs\n//\n// For docstore.OpenCollection, awsdynamodb registers for the scheme\n// \"dynamodb\". The default URL opener will use an AWS session with the default\n// credentials and configuration; see\n// https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/configure-gosdk.html for more details.\n// To customize the URL opener, or for more details on the URL format, see\n// URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// awsdynamodb exposes the following types for As:\n//   - Collection.As: *dynamodb.DynamoDB\n//   - ActionList.BeforeDo: *dynamodb.BatchGetItemInput or *dynamodb.PutItemInput or *dynamodb.DeleteItemInput\n//     or *dynamodb.UpdateItemInput\n//   - Query.BeforeQuery: *dynamodb.QueryInput or *dynamodb.ScanInput\n//   - DocumentIterator: *dynamodb.QueryOutput or *dynamodb.ScanOutput\n//   - ErrorAs: smithy.OperationError\npackage awsdynamodb\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression\"\n\tdyn \"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\tdyn2Types \"github.com/aws/aws-sdk-go-v2/service/dynamodb/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\twire.Struct(new(URLOpener)),\n)\n\ntype collection struct {\n\tdb           *dyn.Client\n\ttable        string // DynamoDB table name\n\tpartitionKey string\n\tsortKey      string\n\tdescription  *dyn2Types.TableDescription\n\topts         *Options\n}\n\n// FallbackFunc is a function for executing queries that cannot be run by the built-in\n// awsdynamodb logic. See Options.RunQueryFunc for details.\ntype FallbackFunc func(context.Context, *driver.Query, RunQueryFunc) (driver.DocumentIterator, error)\n\n// Options holds various options.\ntype Options struct {\n\t// If false, queries that can only be executed by scanning the entire table\n\t// return an error instead (with the exception of a query with no filters).\n\tAllowScans bool\n\n\t// The name of the field holding the document revision.\n\t// Defaults to docstore.DefaultRevisionField.\n\tRevisionField string\n\n\t// If set, call this function on queries that we cannot execute at all (for\n\t// example, a query with an OrderBy clause that lacks an equality filter on a\n\t// partition key). The function should execute the query however it wishes, and\n\t// return an iterator over the results. It can use the RunQueryFunc passed as its\n\t// third argument to have the DynamoDB driver run a query, for instance a\n\t// modified version of the original query.\n\t//\n\t// If RunQueryFallback is nil, queries that cannot be executed will fail with a\n\t// error that has code Unimplemented.\n\tRunQueryFallback FallbackFunc\n\n\t// The maximum number of concurrent goroutines started for a single call to\n\t// ActionList.Do. If less than 1, there is no limit.\n\tMaxOutstandingActionRPCs int\n\n\t// If true, a strongly consistent read is used whenever possible, including\n\t// get, query, scan, etc.; default to false, where an eventually consistent\n\t// read is used.\n\t//\n\t// Not all read operations support this mode however, such as querying against\n\t// a global secondary index, the operation will return an InvalidArgument error\n\t// in such case, please check the official DynamoDB documentation for more\n\t// details.\n\t//\n\t// The native client for DynamoDB uses this option in a per-action basis, if\n\t// you need the flexibility to run both modes on the same collection, create\n\t// two collections with different mode.\n\tConsistentRead bool\n}\n\n// RunQueryFunc is the type of the function passed to RunQueryFallback.\ntype RunQueryFunc func(context.Context, *driver.Query) (driver.DocumentIterator, error)\n\n// OpenCollection creates a *docstore.Collection representing a DynamoDB collection.\nfunc OpenCollection(db *dyn.Client, tableName, partitionKey, sortKey string, opts *Options) (*docstore.Collection, error) {\n\tc, err := newCollection(db, tableName, partitionKey, sortKey, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(c), nil\n}\n\nfunc newCollection(db *dyn.Client, tableName, partitionKey, sortKey string, opts *Options) (*collection, error) {\n\tout, err := db.DescribeTable(context.Background(), &dyn.DescribeTableInput{TableName: &tableName})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif opts.RevisionField == \"\" {\n\t\topts.RevisionField = docstore.DefaultRevisionField\n\t}\n\treturn &collection{\n\t\tdb:           db,\n\t\ttable:        tableName,\n\t\tpartitionKey: partitionKey,\n\t\tsortKey:      sortKey,\n\t\tdescription:  out.Table,\n\t\topts:         opts,\n\t}, nil\n}\n\n// Key returns a two-element array with the partition key and sort key, if any.\nfunc (c *collection) Key(doc driver.Document) (any, error) {\n\tpkey, err := doc.GetField(c.partitionKey)\n\tif err != nil || pkey == nil || driver.IsEmptyValue(reflect.ValueOf(pkey)) {\n\t\treturn nil, nil // missing key is not an error\n\t}\n\tkeys := [2]any{pkey}\n\tif c.sortKey != \"\" {\n\t\tkeys[1], _ = doc.GetField(c.sortKey) // ignore error since keys[1] is nil in that case\n\t}\n\treturn keys, nil\n}\n\nfunc (c *collection) RevisionField() string { return c.opts.RevisionField }\n\nfunc (c *collection) RunActions(ctx context.Context, actions []*driver.Action, opts *driver.RunActionsOptions) driver.ActionListError {\n\terrs := make([]error, len(actions))\n\tbeforeGets, gets, writes, writesTx, afterGets := driver.GroupActions(actions)\n\tc.runGets(ctx, beforeGets, errs, opts)\n\tch := make(chan struct{})\n\tch2 := make(chan struct{})\n\tgo func() { defer close(ch); c.runWrites(ctx, writes, errs, opts) }()\n\tgo func() { defer close(ch2); c.transactWrite(ctx, writesTx, errs, opts) }()\n\tc.runGets(ctx, gets, errs, opts)\n\t<-ch\n\t<-ch2\n\tc.runGets(ctx, afterGets, errs, opts)\n\treturn driver.NewActionListError(errs)\n}\n\nfunc (c *collection) runGets(ctx context.Context, actions []*driver.Action, errs []error, opts *driver.RunActionsOptions) {\n\tconst batchSize = 100\n\tt := driver.NewThrottle(c.opts.MaxOutstandingActionRPCs)\n\tfor _, group := range driver.GroupByFieldPath(actions) {\n\t\tn := len(group) / batchSize\n\t\tfor i := range n {\n\t\t\tt.Acquire()\n\t\t\tgo func(group []*driver.Action) {\n\t\t\t\tdefer t.Release()\n\t\t\t\tc.batchGet(ctx, group, errs, opts, batchSize*i, batchSize*(i+1)-1)\n\t\t\t}(group)\n\t\t}\n\t\tif n*batchSize < len(group) {\n\t\t\tt.Acquire()\n\t\t\tgo func(group []*driver.Action) {\n\t\t\t\tdefer t.Release()\n\t\t\t\tc.batchGet(ctx, group, errs, opts, batchSize*n, len(group)-1)\n\t\t\t}(group)\n\t\t}\n\t}\n\tt.Wait()\n}\n\nfunc (c *collection) batchGet(ctx context.Context, gets []*driver.Action, errs []error, opts *driver.RunActionsOptions, start, end int) {\n\t// errors need to be mapped to the actions' indices.\n\tsetErr := func(err error) {\n\t\tfor i := start; i <= end; i++ {\n\t\t\terrs[gets[i].Index] = err\n\t\t}\n\t}\n\n\tkeys := make([]map[string]dyn2Types.AttributeValue, 0, end-start+1)\n\tfor i := start; i <= end; i++ {\n\t\tav, err := encodeDocKeyFields(gets[i].Doc, c.partitionKey, c.sortKey)\n\t\tif err != nil {\n\t\t\terrs[gets[i].Index] = err\n\t\t}\n\n\t\tkeys = append(keys, av.Value)\n\t}\n\tka := dyn2Types.KeysAndAttributes{\n\t\tKeys:           keys,\n\t\tConsistentRead: aws.Bool(c.opts.ConsistentRead),\n\t}\n\tif len(gets[start].FieldPaths) != 0 {\n\t\t// We need to add the key fields if the user doesn't include them. The\n\t\t// BatchGet API doesn't return them otherwise.\n\t\tvar hasP, hasS bool\n\t\tvar nbs []expression.NameBuilder\n\t\tfor _, fp := range gets[start].FieldPaths {\n\t\t\tp := strings.Join(fp, \".\")\n\t\t\tnbs = append(nbs, expression.Name(p))\n\t\t\tif p == c.partitionKey {\n\t\t\t\thasP = true\n\t\t\t} else if p == c.sortKey {\n\t\t\t\thasS = true\n\t\t\t}\n\t\t}\n\t\tif !hasP {\n\t\t\tnbs = append(nbs, expression.Name(c.partitionKey))\n\t\t}\n\t\tif c.sortKey != \"\" && !hasS {\n\t\t\tnbs = append(nbs, expression.Name(c.sortKey))\n\t\t}\n\t\texpr, err := expression.NewBuilder().\n\t\t\tWithProjection(expression.AddNames(expression.ProjectionBuilder{}, nbs...)).\n\t\t\tBuild()\n\t\tif err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t}\n\t\tka.ProjectionExpression = expr.Projection()\n\t\tka.ExpressionAttributeNames = expr.Names()\n\t}\n\tin := &dyn.BatchGetItemInput{RequestItems: map[string]dyn2Types.KeysAndAttributes{c.table: ka}}\n\tif opts.BeforeDo != nil {\n\t\tif err := opts.BeforeDo(driver.AsFunc(in)); err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t}\n\t}\n\tout, err := c.db.BatchGetItem(ctx, in)\n\tif err != nil {\n\t\tsetErr(err)\n\t\treturn\n\t}\n\tfound := make([]bool, end-start+1)\n\tam := mapActionIndices(gets, start, end)\n\tfor _, item := range out.Responses[c.table] {\n\t\tif item != nil {\n\t\t\tkey := map[string]any{c.partitionKey: nil}\n\t\t\tif c.sortKey != \"\" {\n\t\t\t\tkey[c.sortKey] = nil\n\t\t\t}\n\t\t\tkeysOnly, err := driver.NewDocument(key)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\terr = decodeDoc(&dyn2Types.AttributeValueMemberM{Value: item}, keysOnly)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdecKey, err := c.Key(keysOnly)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ti := am[decKey]\n\t\t\terrs[gets[i].Index] = decodeDoc(&dyn2Types.AttributeValueMemberM{Value: item}, gets[i].Doc)\n\t\t\tfound[i-start] = true\n\t\t}\n\t}\n\tfor delta, f := range found {\n\t\tif !f {\n\t\t\terrs[gets[start+delta].Index] = gcerr.Newf(gcerr.NotFound, nil, \"item %v not found\", gets[start+delta].Doc)\n\t\t}\n\t}\n}\n\nfunc mapActionIndices(actions []*driver.Action, start, end int) map[any]int {\n\tm := make(map[any]int)\n\tfor i := start; i <= end; i++ {\n\t\tm[actions[i].Key] = i\n\t}\n\treturn m\n}\n\n// runWrites executes all the writes as separate RPCs, concurrently.\nfunc (c *collection) runWrites(ctx context.Context, writes []*driver.Action, errs []error, opts *driver.RunActionsOptions) {\n\tvar ops []*writeOp\n\tfor _, w := range writes {\n\t\top, err := c.newWriteOp(w, opts)\n\t\tif err != nil {\n\t\t\terrs[w.Index] = err\n\t\t} else {\n\t\t\tops = append(ops, op)\n\t\t}\n\t}\n\n\tt := driver.NewThrottle(c.opts.MaxOutstandingActionRPCs)\n\tfor _, op := range ops {\n\t\tt.Acquire()\n\t\tgo func() {\n\t\t\tdefer t.Release()\n\t\t\terr := op.run(ctx)\n\t\t\ta := op.action\n\t\t\tif err != nil {\n\t\t\t\terrs[a.Index] = err\n\t\t\t} else {\n\t\t\t\terrs[a.Index] = c.onSuccess(op)\n\t\t\t}\n\t\t}()\n\t}\n\tt.Wait()\n}\n\n// A writeOp describes a single write to DynamoDB. The write can be executed\n// on its own, or included as part of a transaction.\ntype writeOp struct {\n\taction          *driver.Action\n\twriteItem       dyn2Types.TransactWriteItem // for inclusion in a transaction\n\tnewPartitionKey string                      // for a Create on a document without a partition key\n\tnewRevision     string\n\trun             func(context.Context) error // run as a single RPC\n}\n\nfunc (c *collection) newWriteOp(a *driver.Action, opts *driver.RunActionsOptions) (*writeOp, error) {\n\tswitch a.Kind {\n\tcase driver.Create, driver.Replace, driver.Put:\n\t\treturn c.newPut(a, opts)\n\tcase driver.Update:\n\t\treturn c.newUpdate(a, opts)\n\tcase driver.Delete:\n\t\treturn c.newDelete(a, opts)\n\tdefault:\n\t\tpanic(\"bad write kind\")\n\t}\n}\n\nfunc (c *collection) newPut(a *driver.Action, opts *driver.RunActionsOptions) (*writeOp, error) {\n\tav, err := encodeDoc(a.Doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tavm, ok := av.(*dyn2Types.AttributeValueMemberM)\n\tif !ok {\n\t\t// should never happen, but handle\n\t\treturn nil, fmt.Errorf(\"unable to put document, unable to encode to map\")\n\t}\n\tmf := c.missingKeyField(avm.Value)\n\tif a.Kind != driver.Create && mf != \"\" {\n\t\treturn nil, fmt.Errorf(\"missing key field %q\", mf)\n\t}\n\tvar newPartitionKey string\n\tif mf == c.partitionKey {\n\t\tnewPartitionKey = driver.UniqueString()\n\t\tavm.Value[c.partitionKey] = &dyn2Types.AttributeValueMemberS{Value: newPartitionKey}\n\t}\n\tif c.sortKey != \"\" && mf == c.sortKey {\n\t\t// It doesn't make sense to generate a random sort key.\n\t\treturn nil, fmt.Errorf(\"missing sort key %q\", c.sortKey)\n\t}\n\tvar rev string\n\tif a.Doc.HasField(c.opts.RevisionField) {\n\t\trev = driver.UniqueString()\n\t\tif avm.Value[c.opts.RevisionField], err = encodeValue(rev); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tdput := &dyn2Types.Put{\n\t\tTableName: &c.table,\n\t\tItem:      avm.Value,\n\t}\n\tcb, err := c.precondition(a)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif cb != nil {\n\t\tce, err := expression.NewBuilder().WithCondition(*cb).Build()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdput.ExpressionAttributeNames = ce.Names()\n\t\tdput.ExpressionAttributeValues = ce.Values()\n\t\tdput.ConditionExpression = ce.Condition()\n\t}\n\treturn &writeOp{\n\t\taction:          a,\n\t\twriteItem:       dyn2Types.TransactWriteItem{Put: dput},\n\t\tnewPartitionKey: newPartitionKey,\n\t\tnewRevision:     rev,\n\t\trun: func(ctx context.Context) error {\n\t\t\treturn c.runPut(ctx, dput, a, opts)\n\t\t},\n\t}, nil\n}\n\nfunc (c *collection) runPut(ctx context.Context, dput *dyn2Types.Put, a *driver.Action, opts *driver.RunActionsOptions) error {\n\tin := &dyn.PutItemInput{\n\t\tTableName:                 dput.TableName,\n\t\tItem:                      dput.Item,\n\t\tConditionExpression:       dput.ConditionExpression,\n\t\tExpressionAttributeNames:  dput.ExpressionAttributeNames,\n\t\tExpressionAttributeValues: dput.ExpressionAttributeValues,\n\t}\n\tif opts.BeforeDo != nil {\n\t\tif err := opts.BeforeDo(driver.AsFunc(in)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err := c.db.PutItem(ctx, in)\n\tvar ccf *dyn2Types.ConditionalCheckFailedException\n\tif errors.As(err, &ccf) {\n\t\tif a.Kind == driver.Create {\n\t\t\terr = gcerr.Newf(gcerr.AlreadyExists, err, \"document already exists\")\n\t\t}\n\t\tif rev, _ := a.Doc.GetField(c.opts.RevisionField); rev == nil && a.Kind == driver.Replace {\n\t\t\terr = gcerr.Newf(gcerr.NotFound, nil, \"document not found\")\n\t\t}\n\t}\n\treturn err\n}\n\nfunc (c *collection) newDelete(a *driver.Action, opts *driver.RunActionsOptions) (*writeOp, error) {\n\tav, err := encodeDocKeyFields(a.Doc, c.partitionKey, c.sortKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdel := &dyn2Types.Delete{\n\t\tTableName: &c.table,\n\t\tKey:       av.Value,\n\t}\n\tcb, err := c.precondition(a)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif cb != nil {\n\t\tce, err := expression.NewBuilder().WithCondition(*cb).Build()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdel.ExpressionAttributeNames = ce.Names()\n\t\tdel.ExpressionAttributeValues = ce.Values()\n\t\tdel.ConditionExpression = ce.Condition()\n\t}\n\treturn &writeOp{\n\t\taction:    a,\n\t\twriteItem: dyn2Types.TransactWriteItem{Delete: del},\n\t\trun: func(ctx context.Context) error {\n\t\t\tin := &dyn.DeleteItemInput{\n\t\t\t\tTableName:                 del.TableName,\n\t\t\t\tKey:                       del.Key,\n\t\t\t\tConditionExpression:       del.ConditionExpression,\n\t\t\t\tExpressionAttributeNames:  del.ExpressionAttributeNames,\n\t\t\t\tExpressionAttributeValues: del.ExpressionAttributeValues,\n\t\t\t}\n\t\t\tif opts.BeforeDo != nil {\n\t\t\t\tif err := opts.BeforeDo(driver.AsFunc(in)); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\t_, err := c.db.DeleteItem(ctx, in)\n\t\t\treturn err\n\t\t},\n\t}, nil\n}\n\nfunc (c *collection) newUpdate(a *driver.Action, opts *driver.RunActionsOptions) (*writeOp, error) {\n\tav, err := encodeDocKeyFields(a.Doc, c.partitionKey, c.sortKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar ub expression.UpdateBuilder\n\tfor _, m := range a.Mods {\n\t\t// TODO(shantuo): check for invalid field paths\n\t\tfp := expression.Name(strings.Join(m.FieldPath, \".\"))\n\t\tif inc, ok := m.Value.(driver.IncOp); ok {\n\t\t\tub = ub.Add(fp, expression.Value(inc.Amount))\n\t\t} else if m.Value == nil {\n\t\t\tub = ub.Remove(fp)\n\t\t} else {\n\t\t\tub = ub.Set(fp, expression.Value(m.Value))\n\t\t}\n\t}\n\tvar rev string\n\tif a.Doc.HasField(c.opts.RevisionField) {\n\t\trev = driver.UniqueString()\n\t\tub = ub.Set(expression.Name(c.opts.RevisionField), expression.Value(rev))\n\t}\n\tcb, err := c.precondition(a)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tce, err := expression.NewBuilder().WithCondition(*cb).WithUpdate(ub).Build()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tup := &dyn2Types.Update{\n\t\tTableName:                 &c.table,\n\t\tKey:                       av.Value,\n\t\tConditionExpression:       ce.Condition(),\n\t\tUpdateExpression:          ce.Update(),\n\t\tExpressionAttributeNames:  ce.Names(),\n\t\tExpressionAttributeValues: ce.Values(),\n\t}\n\treturn &writeOp{\n\t\taction:      a,\n\t\twriteItem:   dyn2Types.TransactWriteItem{Update: up},\n\t\tnewRevision: rev,\n\t\trun: func(ctx context.Context) error {\n\t\t\tin := &dyn.UpdateItemInput{\n\t\t\t\tTableName:                 up.TableName,\n\t\t\t\tKey:                       up.Key,\n\t\t\t\tConditionExpression:       up.ConditionExpression,\n\t\t\t\tUpdateExpression:          up.UpdateExpression,\n\t\t\t\tExpressionAttributeNames:  up.ExpressionAttributeNames,\n\t\t\t\tExpressionAttributeValues: up.ExpressionAttributeValues,\n\t\t\t}\n\t\t\tif opts.BeforeDo != nil {\n\t\t\t\tif err := opts.BeforeDo(driver.AsFunc(in)); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\t_, err := c.db.UpdateItem(ctx, in)\n\t\t\treturn err\n\t\t},\n\t}, nil\n}\n\n// Handle the effects of successful execution.\nfunc (c *collection) onSuccess(op *writeOp) error {\n\t// Set the new partition key (if any) and the new revision into the user's document.\n\tif op.newPartitionKey != \"\" {\n\t\t_ = op.action.Doc.SetField(c.partitionKey, op.newPartitionKey) // cannot fail\n\t}\n\tif op.newRevision != \"\" {\n\t\treturn op.action.Doc.SetField(c.opts.RevisionField, op.newRevision)\n\t}\n\treturn nil\n}\n\nfunc (c *collection) missingKeyField(m map[string]dyn2Types.AttributeValue) string {\n\tv, ok := m[c.partitionKey]\n\tif !ok {\n\t\treturn c.partitionKey\n\t}\n\tif n, ok := v.(*dyn2Types.AttributeValueMemberNULL); ok && n.Value {\n\t\treturn c.partitionKey\n\t}\n\n\tif c.sortKey != \"\" {\n\t\tv, ok := m[c.sortKey]\n\t\tif !ok {\n\t\t\treturn c.sortKey\n\t\t}\n\t\tif n, ok := v.(*dyn2Types.AttributeValueMemberNULL); ok && n.Value {\n\t\t\treturn c.sortKey\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\n// Construct the precondition for the action.\nfunc (c *collection) precondition(a *driver.Action) (*expression.ConditionBuilder, error) {\n\tswitch a.Kind {\n\tcase driver.Create:\n\t\t// Precondition: the document doesn't already exist. (Precisely: the partitionKey\n\t\t// field is not on the document.)\n\t\tc := expression.AttributeNotExists(expression.Name(c.partitionKey))\n\t\treturn &c, nil\n\tcase driver.Replace, driver.Update:\n\t\t// Precondition: the revision matches, or if there is no revision, then\n\t\t// the document exists.\n\t\tcb, err := revisionPrecondition(a.Doc, c.opts.RevisionField)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif cb == nil {\n\t\t\tc := expression.AttributeExists(expression.Name(c.partitionKey))\n\t\t\tcb = &c\n\t\t}\n\t\treturn cb, nil\n\tcase driver.Put, driver.Delete:\n\t\t// Precondition: the revision matches, if any.\n\t\treturn revisionPrecondition(a.Doc, c.opts.RevisionField)\n\tcase driver.Get:\n\t\t// No preconditions on a Get.\n\t\treturn nil, nil\n\tdefault:\n\t\tpanic(\"bad action kind\")\n\t}\n}\n\n// revisionPrecondition returns a DynamoDB expression that asserts that the\n// stored document's revision matches the revision of doc.\nfunc revisionPrecondition(doc driver.Document, revField string) (*expression.ConditionBuilder, error) {\n\tv, err := doc.GetField(revField)\n\tif err != nil { // field not present\n\t\treturn nil, nil\n\t}\n\tif v == nil { // field is present, but nil\n\t\treturn nil, nil\n\t}\n\trev, ok := v.(string)\n\tif !ok {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil,\n\t\t\t\"%s field contains wrong type: got %T, want string\",\n\t\t\trevField, v)\n\t}\n\tif rev == \"\" {\n\t\treturn nil, nil\n\t}\n\t// Value encodes rev to an attribute value.\n\tcb := expression.Name(revField).Equal(expression.Value(rev))\n\treturn &cb, nil\n}\n\n// transactWrite executes the write actions atomically: either they all succeed or they all fail together.\nfunc (c *collection) transactWrite(ctx context.Context, actions []*driver.Action, errs []error, opts *driver.RunActionsOptions) {\n\tif len(actions) == 0 {\n\t\treturn\n\t}\n\t// all actions will fail atomically even if a single action fails\n\tsetErr := func(err error) {\n\t\tfor _, a := range actions {\n\t\t\terrs[a.Index] = err\n\t\t}\n\t}\n\n\ttws := make([]dyn2Types.TransactWriteItem, 0, len(actions))\n\tvar ops []*writeOp\n\tfor _, w := range actions {\n\t\top, err := c.newWriteOp(w, opts)\n\t\tif err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t} else {\n\t\t\tops = append(ops, op)\n\t\t\ttws = append(tws, op.writeItem)\n\t\t}\n\t}\n\n\tin := &dyn.TransactWriteItemsInput{\n\t\tClientRequestToken: aws.String(driver.UniqueString()),\n\t\tTransactItems:      tws,\n\t}\n\n\tif opts.BeforeDo != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(**dyn.TransactWriteItemsInput)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = in\n\t\t\treturn true\n\t\t}\n\t\tif err := opts.BeforeDo(asFunc); err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t}\n\t}\n\tif _, err := c.db.TransactWriteItems(ctx, in); err != nil {\n\t\tsetErr(err)\n\t\treturn\n\t}\n\tfor _, op := range ops {\n\t\terrs[op.action.Index] = c.onSuccess(op)\n\t}\n}\n\n// RevisionToBytes implements driver.RevisionToBytes.\nfunc (c *collection) RevisionToBytes(rev any) ([]byte, error) {\n\ts, ok := rev.(string)\n\tif !ok {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"revision %v of type %[1]T is not a string\", rev)\n\t}\n\treturn []byte(s), nil\n}\n\n// BytesToRevision implements driver.BytesToRevision.\nfunc (c *collection) BytesToRevision(b []byte) (any, error) {\n\treturn string(b), nil\n}\n\nfunc (c *collection) As(i any) bool {\n\tp, ok := i.(**dyn.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = c.db\n\treturn true\n}\n\n// ErrorAs implements driver.Collection.ErrorAs.\nfunc (c *collection) ErrorAs(err error, i any) bool {\n\te, ok := err.(*smithy.OperationError)\n\tif !ok {\n\t\treturn false\n\t}\n\tp, ok := i.(*smithy.OperationError)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = *e\n\treturn true\n}\n\nfunc (c *collection) ErrorCode(err error) gcerrors.ErrorCode {\n\n\tvar (\n\t\tconditionalCheckFailedException          *dyn2Types.ConditionalCheckFailedException\n\t\tidempotentParameterMismatchException     *dyn2Types.IdempotentParameterMismatchException\n\t\tinternalServerError                      *dyn2Types.InternalServerError\n\t\titemCollectionSizeLimitExceededException *dyn2Types.ItemCollectionSizeLimitExceededException\n\t\tprovisionedThroughputExceededException   *dyn2Types.ProvisionedThroughputExceededException\n\t\trequestLimitExceeded                     *dyn2Types.RequestLimitExceeded\n\t\tresourceNotFoundException                *dyn2Types.ResourceNotFoundException\n\t\ttransactionCanceledException             *dyn2Types.TransactionCanceledException\n\t\ttransactionConflictException             *dyn2Types.TransactionConflictException\n\t\ttransactionInProgressException           *dyn2Types.TransactionInProgressException\n\t)\n\n\tswitch {\n\tcase errors.As(err, &conditionalCheckFailedException):\n\t\treturn gcerrors.FailedPrecondition\n\tcase errors.As(err, &idempotentParameterMismatchException):\n\t\treturn gcerrors.InvalidArgument\n\tcase errors.As(err, &internalServerError):\n\t\treturn gcerrors.Internal\n\tcase errors.As(err, &itemCollectionSizeLimitExceededException):\n\t\treturn gcerrors.ResourceExhausted\n\tcase errors.As(err, &provisionedThroughputExceededException):\n\t\treturn gcerrors.ResourceExhausted\n\tcase errors.As(err, &requestLimitExceeded):\n\t\treturn gcerrors.ResourceExhausted\n\tcase errors.As(err, &resourceNotFoundException):\n\t\treturn gcerrors.NotFound\n\tcase errors.As(err, &transactionCanceledException):\n\t\treturn gcerrors.FailedPrecondition\n\tcase errors.As(err, &transactionConflictException):\n\t\treturn gcerrors.Internal\n\tcase errors.As(err, &transactionInProgressException):\n\t\treturn gcerrors.InvalidArgument\n\t}\n\n\tfor k, errCode := range errorCodeMap {\n\t\tif strings.Contains(err.Error(), k) {\n\t\t\treturn errCode\n\t\t}\n\t}\n\n\treturn gcerrors.Unknown\n}\n\nvar errorCodeMap = map[string]gcerrors.ErrorCode{\n\t// handled by type above\n\t// \"ConditionalCheckFailedException\":          gcerrors.FailedPrecondition,\n\t// \"IdempotentParameterMismatchException\":     gcerrors.InvalidArgument,\n\t// \"InternalServerErrorException\":             gcerrors.Internal,\n\t// \"ItemCollectionSizeLimitExceededException\": gcerrors.ResourceExhausted,\n\t// \"ProvisionedThroughputExceededException\":   gcerrors.ResourceExhausted,\n\t// \"RequestLimitExceededException\":            gcerrors.ResourceExhausted,\n\t// \"ResourceNotFoundException\":                gcerrors.NotFound,\n\t// \"TransactionCanceledException\":             gcerrors.FailedPrecondition,\n\t// \"TransactionConflictException\":             gcerrors.Internal,\n\t// \"TransactionInProgressException\":           gcerrors.InvalidArgument,\n\n\t// V2 doesn't have a type for this, inspect message instead\n\t\"ValidationException\": gcerrors.InvalidArgument,\n}\n\n// Close implements driver.Collection.Close.\nfunc (c *collection) Close() error { return nil }\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/dynamo_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\tdyn \"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\t\"github.com/aws/smithy-go\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\n// To create the tables and indexes needed for these tests, run create_tables.sh in\n// this directory.\n//\n// The docstore-test-2 table is set up to work with queries on the drivertest.HighScore\n// struct like so:\n//   table:        \"Game\" partition key, \"Player\" sort key\n//   local index:  \"Game\" partition key, \"Score\" sort key\n//   global index: \"Player\" partition key, \"Time\" sort key\n// The conformance test queries should exercise all of these.\n//\n// The docstore-test-3 table is used for running benchmarks only. To eliminate\n// the effect of dynamo auto-scaling, run:\n// aws dynamodb update-table --table-name docstore-test-3 \\\n//   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=1000\n// Don't forget to change it back when done benchmarking.\n\nconst (\n\tregion          = \"us-east-2\"\n\tcollectionName1 = \"docstore-test-1\"\n\tcollectionName2 = \"docstore-test-2\"\n\tcollectionName3 = \"docstore-test-3\" // for benchmark\n)\n\ntype harness struct {\n\tsess   aws.Config\n\tcloser func()\n}\n\nfunc (h *harness) SupportsAtomicWrites() bool {\n\treturn true\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\t// Many POST requests for DynamoDB are JSON maps, and they come in randomized\n\t// key order, so strict matching doesn't work. We disable it and count on ordering\n\t// and header matching.\n\tscrubBody := true\n\tsess, _, done, state := setup.NewAWSv2Config(ctx, t, region, scrubBody)\n\tdrivertest.MakeUniqueStringDeterministicForTesting(state)\n\treturn &harness{sess: sess, closer: done}, nil\n}\n\nfunc (*harness) BeforeDoTypes() []any {\n\treturn []any{\n\t\t&dyn.BatchGetItemInput{}, &dyn.TransactWriteItemsInput{},\n\t\t&dyn.PutItemInput{}, &dyn.DeleteItemInput{}, &dyn.UpdateItemInput{},\n\t}\n}\n\nfunc (*harness) BeforeQueryTypes() []any {\n\treturn []any{&dyn.QueryInput{}, &dyn.ScanInput{}}\n}\n\nfunc (*harness) RevisionsEqual(rev1, rev2 any) bool {\n\treturn rev1 == rev2\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) MakeCollection(_ context.Context, kind drivertest.CollectionKind) (driver.Collection, error) {\n\tswitch kind {\n\tcase drivertest.SingleKey, drivertest.NoRev:\n\t\treturn newCollection(dyn.NewFromConfig(h.sess), collectionName1, drivertest.KeyField, \"\", &Options{\n\t\t\tAllowScans:     true,\n\t\t\tConsistentRead: true,\n\t\t})\n\tcase drivertest.TwoKey:\n\t\t// For query test we don't use strong consistency mode since some tests are\n\t\t// running on global secondary index and it doesn't support ConsistentRead.\n\t\treturn newCollection(dyn.NewFromConfig(h.sess), collectionName2, \"Game\", \"Player\", &Options{\n\t\t\tAllowScans:       true,\n\t\t\tRunQueryFallback: InMemorySortFallback(func() any { return new(drivertest.HighScore) }),\n\t\t})\n\tcase drivertest.AltRev:\n\t\treturn newCollection(dyn.NewFromConfig(h.sess), collectionName1, drivertest.KeyField, \"\",\n\t\t\t&Options{\n\t\t\t\tAllowScans:     true,\n\t\t\t\tRevisionField:  drivertest.AlternateRevisionField,\n\t\t\t\tConsistentRead: true,\n\t\t\t})\n\tdefault:\n\t\tpanic(\"bad kind\")\n\t}\n}\n\nfunc collectHighScores(ctx context.Context, iter driver.DocumentIterator) ([]*drivertest.HighScore, error) {\n\tvar hs []*drivertest.HighScore\n\tfor {\n\t\tvar h drivertest.HighScore\n\t\tdoc := drivertest.MustDocument(&h)\n\t\terr := iter.Next(ctx, doc)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\ths = append(hs, &h)\n\t}\n\treturn hs, nil\n}\n\ntype highScoreSliceIterator struct {\n\ths   []*drivertest.HighScore\n\tnext int\n}\n\nfunc (it *highScoreSliceIterator) Next(ctx context.Context, doc driver.Document) error {\n\tif it.next >= len(it.hs) {\n\t\treturn io.EOF\n\t}\n\tdest, ok := doc.Origin.(*drivertest.HighScore)\n\tif !ok {\n\t\treturn fmt.Errorf(\"doc is %T, not HighScore\", doc.Origin)\n\t}\n\t*dest = *it.hs[it.next]\n\tit.next++\n\treturn nil\n}\n\nfunc (*highScoreSliceIterator) Stop()       {}\nfunc (*highScoreSliceIterator) As(any) bool { return false }\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) CollectionCheck(coll *docstore.Collection) error {\n\tvar db *dyn.Client\n\tif !coll.As(&db) {\n\t\treturn errors.New(\"Collection.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) QueryCheck(it *docstore.DocumentIterator) error {\n\tvar so *dyn.ScanOutput\n\tvar qo *dyn.QueryOutput\n\tif !it.As(&so) && !it.As(&qo) {\n\t\treturn errors.New(\"DocumentIterator.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyAs) ErrorCheck(k *docstore.Collection, err error) error {\n\tvar e smithy.OperationError\n\tif !k.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Collection.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\nfunc TestConformance(t *testing.T) {\n\t// Note: when running -record repeatedly in a short time period, change the argument\n\t// in the call below to generate unique transaction tokens.\n\tdrivertest.MakeUniqueStringDeterministicForTesting(1)\n\tdrivertest.RunConformanceTests(t, newHarness, &codecTester{}, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc BenchmarkConformance(b *testing.B) {\n\tcfg, err := config.LoadDefaultConfig(context.Background(), config.WithRegion(region))\n\tif err != nil {\n\t\tb.Fatal(\"Error loading AWS config for benchmark: \", err)\n\t}\n\tcoll, err := newCollection(dyn.NewFromConfig(cfg), collectionName3, drivertest.KeyField, \"\", &Options{AllowScans: true})\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, docstore.NewCollection(coll))\n}\n\n// awsdynamodb-specific tests.\n\nfunc TestQueryErrors(t *testing.T) {\n\t// Verify that bad queries return the right errors.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdc, err := h.MakeCollection(ctx, drivertest.TwoKey)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcoll := docstore.NewCollection(dc)\n\tdefer coll.Close()\n\n\t// Here we are comparing a key field with the wrong type. DynamoDB cares about this\n\t// because even though it's a document store and hence schemaless, the key fields\n\t// do have a schema (that is, they have known, fixed types).\n\titer := coll.Query().Where(\"Game\", \"=\", 1).Get(ctx)\n\tdefer iter.Stop()\n\terr = iter.Next(ctx, &h)\n\tif c := gcerrors.Code(err); c != gcerrors.InvalidArgument {\n\t\tt.Errorf(\"got %v (code %s, type %T), want InvalidArgument\", err, c, err)\n\t}\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\t\"gocloud.dev/docstore\"\n\tawsdynamodb \"gocloud.dev/docstore/awsdynamodb/v2\"\n)\n\nfunc ExampleOpenCollection() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\tcfg, err := config.LoadDefaultConfig(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tcoll, err := awsdynamodb.OpenCollection(\n\t\tdynamodb.NewFromConfig(cfg), \"docstore-test\", \"partitionKeyField\", \"\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n\nfunc Example_openCollectionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/docstore/awsdynamodb\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// docstore.OpenCollection creates a *docstore.Collection from a URL.\n\tcoll, err := docstore.OpenCollection(ctx, \"dynamodb://my-table?partition_key=name\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/query.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression\"\n\tdyn \"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\tdyn2Types \"github.com/aws/aws-sdk-go-v2/service/dynamodb/types\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// TODO: support parallel scans (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.ParallelScan)\n\n// TODO(jba): support an empty item slice returned from an RPC: \"A Query operation can\n// return an empty result set and a LastEvaluatedKey if all the items read for the\n// page of results are filtered out.\"\n\ntype avmap = map[string]dyn2Types.AttributeValue\n\nfunc (c *collection) RunGetQuery(ctx context.Context, q *driver.Query) (driver.DocumentIterator, error) {\n\tqr, err := c.planQuery(q)\n\tif err != nil {\n\t\tif gcerrors.Code(err) == gcerrors.Unimplemented && c.opts.RunQueryFallback != nil {\n\t\t\treturn c.opts.RunQueryFallback(ctx, q, c.RunGetQuery)\n\t\t}\n\t\treturn nil, err\n\t}\n\tif err := c.checkPlan(qr); err != nil {\n\t\treturn nil, err\n\t}\n\tit := &documentIterator{\n\t\tqr:     qr,\n\t\toffset: q.Offset,\n\t\tlimit:  q.Limit,\n\t\tcount:  0, // manually count limit since dynamodb uses \"limit\" as scan limit before filtering\n\t}\n\tit.items, it.last, it.asFunc, err = it.qr.run(ctx, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn it, nil\n}\n\nfunc (c *collection) checkPlan(qr *queryRunner) error {\n\tif qr.scanIn != nil && qr.scanIn.FilterExpression != nil && !c.opts.AllowScans {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"query requires a table scan; set Options.AllowScans to true to enable\")\n\t}\n\treturn nil\n}\n\nfunc (c *collection) planQuery(q *driver.Query) (*queryRunner, error) {\n\tvar cb expression.Builder\n\tcbUsed := false // It's an error to build an empty Builder.\n\t// Set up the projection expression.\n\tif len(q.FieldPaths) > 0 {\n\t\tvar pb expression.ProjectionBuilder\n\t\thasFields := map[string]bool{}\n\t\tfor _, fp := range q.FieldPaths {\n\t\t\tif len(fp) == 1 {\n\t\t\t\thasFields[fp[0]] = true\n\t\t\t}\n\t\t\tpb = pb.AddNames(expression.Name(strings.Join(fp, \".\")))\n\t\t}\n\t\t// Always include the keys.\n\t\tfor _, f := range []string{c.partitionKey, c.sortKey} {\n\t\t\tif f != \"\" && !hasFields[f] {\n\t\t\t\tpb = pb.AddNames(expression.Name(f))\n\t\t\t\tq.FieldPaths = append(q.FieldPaths, []string{f})\n\t\t\t}\n\t\t}\n\t\tcb = cb.WithProjection(pb)\n\t\tcbUsed = true\n\t}\n\n\t// Find the best thing to query (table or index).\n\tindexName, pkey, skey := c.bestQueryable(q)\n\tif indexName == nil && pkey == \"\" {\n\t\t// No query can be done: fall back to scanning.\n\t\tif q.OrderByField != \"\" {\n\t\t\t// Scans are unordered, so we can't run this query.\n\t\t\t// TODO(jba): If the user specifies all the partition keys, and there is a global\n\t\t\t// secondary index whose sort key is the order-by field, then we can query that index\n\t\t\t// for every value of the partition key and merge the results.\n\t\t\t// TODO(jba): If the query has a reasonable limit N, then we can run a scan and keep\n\t\t\t// the top N documents in memory.\n\t\t\treturn nil, gcerr.Newf(gcerr.Unimplemented, nil, \"query requires a table scan, but has an ordering requirement; add an index or provide Options.RunQueryFallback\")\n\t\t}\n\t\tif len(q.Filters) > 0 {\n\t\t\tcb = cb.WithFilter(filtersToConditionBuilder(q.Filters))\n\t\t\tcbUsed = true\n\t\t}\n\t\tin := &dyn.ScanInput{\n\t\t\tTableName:      &c.table,\n\t\t\tConsistentRead: aws.Bool(c.opts.ConsistentRead),\n\t\t}\n\t\tif cbUsed {\n\t\t\tce, err := cb.Build()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tin.ExpressionAttributeNames = ce.Names()\n\t\t\tin.ExpressionAttributeValues = ce.Values()\n\t\t\tin.FilterExpression = ce.Filter()\n\t\t\tin.ProjectionExpression = ce.Projection()\n\t\t}\n\t\treturn &queryRunner{c: c, scanIn: in, beforeRun: q.BeforeQuery}, nil\n\t}\n\n\t// Do a query.\n\tcb = processFilters(cb, q.Filters, pkey, skey)\n\tce, err := cb.Build()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tqIn := &dyn.QueryInput{\n\t\tTableName:                 &c.table,\n\t\tIndexName:                 indexName,\n\t\tExpressionAttributeNames:  ce.Names(),\n\t\tExpressionAttributeValues: ce.Values(),\n\t\tKeyConditionExpression:    ce.KeyCondition(),\n\t\tFilterExpression:          ce.Filter(),\n\t\tProjectionExpression:      ce.Projection(),\n\t\tConsistentRead:            aws.Bool(c.opts.ConsistentRead),\n\t}\n\tif q.OrderByField != \"\" && !q.OrderAscending {\n\t\tqIn.ScanIndexForward = &q.OrderAscending\n\t}\n\treturn &queryRunner{\n\t\tc:         c,\n\t\tqueryIn:   qIn,\n\t\tbeforeRun: q.BeforeQuery,\n\t}, nil\n}\n\n// Return the best choice of queryable (table or index) for this query.\n// How to interpret the return values:\n// - If indexName is nil but pkey is not empty, then use the table.\n// - If all return values are zero, no query will work: do a scan.\nfunc (c *collection) bestQueryable(q *driver.Query) (indexName *string, pkey, skey string) {\n\t// If the query has an \"=\" filter on the table's partition key, look at the table\n\t// and local indexes.\n\tif hasEqualityFilter(q, c.partitionKey) {\n\t\t// If the table has a sort key that's in the query, and the ordering\n\t\t// constraint works with the sort key, use the table.\n\t\t// (Query results are always ordered by sort key.)\n\t\tif hasFilter(q, c.sortKey) && orderingConsistent(q, c.sortKey) {\n\t\t\treturn nil, c.partitionKey, c.sortKey\n\t\t}\n\t\t// Look at local indexes. They all have the same partition key as the base table.\n\t\t// If one has a sort key in the query, use it.\n\t\tfor _, li := range c.description.LocalSecondaryIndexes {\n\t\t\tpkey, skey := keyAttributes(li.KeySchema)\n\t\t\tif hasFilter(q, skey) && localFieldsIncluded(q, li) && orderingConsistent(q, skey) {\n\t\t\t\treturn li.IndexName, pkey, skey\n\t\t\t}\n\t\t}\n\t}\n\t// Consider the global indexes: if one has a matching partition and sort key, and\n\t// the projected fields of the index include those of the query, use it.\n\tfor _, gi := range c.description.GlobalSecondaryIndexes {\n\t\tpkey, skey := keyAttributes(gi.KeySchema)\n\t\tif skey == \"\" {\n\t\t\tcontinue // We'll visit global indexes without a sort key later.\n\t\t}\n\t\tif hasEqualityFilter(q, pkey) && hasFilter(q, skey) && c.globalFieldsIncluded(q, gi) && orderingConsistent(q, skey) {\n\t\t\treturn gi.IndexName, pkey, skey\n\t\t}\n\t}\n\t// There are no matches for both partition and sort key. Now consider matches on partition key only.\n\t// That will still be better than a scan.\n\t// First, check the table itself.\n\tif hasEqualityFilter(q, c.partitionKey) && orderingConsistent(q, c.sortKey) {\n\t\treturn nil, c.partitionKey, c.sortKey\n\t}\n\t// No point checking local indexes: they have the same partition key as the table.\n\t// Check the global indexes.\n\tfor _, gi := range c.description.GlobalSecondaryIndexes {\n\t\tpkey, skey := keyAttributes(gi.KeySchema)\n\t\tif hasEqualityFilter(q, pkey) && c.globalFieldsIncluded(q, gi) && orderingConsistent(q, skey) {\n\t\t\treturn gi.IndexName, pkey, skey\n\t\t}\n\t}\n\t// We cannot do a query.\n\t// TODO: return the reason why we couldn't. At a minimum, distinguish failure due to keys\n\t// from failure due to projection (i.e. a global index had the right partition and sort key,\n\t// but didn't project the necessary fields).\n\treturn nil, \"\", \"\"\n}\n\n// localFieldsIncluded reports whether a local index supports all the selected fields\n// of a query. Since DynamoDB will read explicitly provided fields from the table if\n// they are not projected into the index, the only case where a local index cannot\n// be used is when the query wants all the fields, and the index projection is not ALL.\n// See https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LSI.html#LSI.Projections.\nfunc localFieldsIncluded(q *driver.Query, li dyn2Types.LocalSecondaryIndexDescription) bool {\n\treturn len(q.FieldPaths) > 0 || li.Projection.ProjectionType == dyn2Types.ProjectionTypeAll\n}\n\n// orderingConsistent reports whether the ordering constraint is consistent with the sort key field.\n// That is, either there is no OrderBy clause, or the clause specifies the sort field.\nfunc orderingConsistent(q *driver.Query, sortField string) bool {\n\treturn q.OrderByField == \"\" || q.OrderByField == sortField\n}\n\n// globalFieldsIncluded reports whether the fields selected by the query are\n// projected into (that is, contained directly in) the global index. We need this\n// check before using the index, because if a global index doesn't have all the\n// desired fields, then a separate RPC for each returned item would be necessary to\n// retrieve those fields, and we'd rather scan than do that.\nfunc (c *collection) globalFieldsIncluded(q *driver.Query, gi dyn2Types.GlobalSecondaryIndexDescription) bool {\n\tproj := gi.Projection\n\tif proj.ProjectionType == dyn2Types.ProjectionTypeAll {\n\t\t// The index has all the fields of the table: we're good.\n\t\treturn true\n\t}\n\tif len(q.FieldPaths) == 0 {\n\t\t// The query wants all the fields of the table, but we can't be sure that the\n\t\t// index has them.\n\t\treturn false\n\t}\n\t// The table's keys and the index's keys are always in the index.\n\tpkey, skey := keyAttributes(gi.KeySchema)\n\tindexFields := map[string]bool{c.partitionKey: true, pkey: true}\n\tif c.sortKey != \"\" {\n\t\tindexFields[c.sortKey] = true\n\t}\n\tif skey != \"\" {\n\t\tindexFields[skey] = true\n\t}\n\tfor _, nka := range proj.NonKeyAttributes {\n\t\tindexFields[nka] = true\n\t}\n\t// Every field path in the query must be in the index.\n\tfor _, fp := range q.FieldPaths {\n\t\tif !indexFields[strings.Join(fp, \".\")] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Extract the names of the partition and sort key attributes from the schema of a\n// table or index.\nfunc keyAttributes(ks []dyn2Types.KeySchemaElement) (pkey, skey string) {\n\tfor _, k := range ks {\n\t\tswitch k.KeyType {\n\t\tcase dyn2Types.KeyTypeHash:\n\t\t\tpkey = *k.AttributeName\n\t\tcase dyn2Types.KeyTypeRange:\n\t\t\tskey = *k.AttributeName\n\t\tdefault:\n\t\t\tpanic(\"bad key type: \" + k.KeyType)\n\t\t}\n\t}\n\treturn pkey, skey\n}\n\n// Reports whether q has a filter that mentions the top-level field.\nfunc hasFilter(q *driver.Query, field string) bool {\n\tif field == \"\" {\n\t\treturn false\n\t}\n\tfor _, f := range q.Filters {\n\t\tif driver.FieldPathEqualsField(f.FieldPath, field) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// Reports whether q has a filter that checks if the top-level field is equal to something.\nfunc hasEqualityFilter(q *driver.Query, field string) bool {\n\tfor _, f := range q.Filters {\n\t\tif f.Op == driver.EqualOp && driver.FieldPathEqualsField(f.FieldPath, field) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype queryRunner struct {\n\tc         *collection\n\tscanIn    *dyn.ScanInput\n\tqueryIn   *dyn.QueryInput\n\tbeforeRun func(asFunc func(i any) bool) error\n}\n\nfunc (qr *queryRunner) run(ctx context.Context, startAfter avmap) (items []avmap, last avmap, asFunc func(i any) bool, err error) {\n\tif qr.scanIn != nil {\n\t\tqr.scanIn.ExclusiveStartKey = startAfter\n\t\tif qr.beforeRun != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tp, ok := i.(**dyn.ScanInput)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t*p = qr.scanIn\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif err := qr.beforeRun(asFunc); err != nil {\n\t\t\t\treturn nil, nil, nil, err\n\t\t\t}\n\t\t}\n\t\tout, err := qr.c.db.Scan(ctx, qr.scanIn)\n\t\tif err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t\treturn out.Items, out.LastEvaluatedKey,\n\t\t\tfunc(i any) bool {\n\t\t\t\tp, ok := i.(**dyn.ScanOutput)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t*p = out\n\t\t\t\treturn true\n\t\t\t}, nil\n\t}\n\tqr.queryIn.ExclusiveStartKey = startAfter\n\tif qr.beforeRun != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tp, ok := i.(**dyn.QueryInput)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = qr.queryIn\n\t\t\treturn true\n\t\t}\n\t\tif err := qr.beforeRun(asFunc); err != nil {\n\t\t\treturn nil, nil, nil, err\n\t\t}\n\t}\n\tout, err := qr.c.db.Query(ctx, qr.queryIn)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\treturn out.Items, out.LastEvaluatedKey,\n\t\tfunc(i any) bool {\n\t\t\tp, ok := i.(**dyn.QueryOutput)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = out\n\t\t\treturn true\n\t\t}, nil\n}\n\nfunc processFilters(cb expression.Builder, fs []driver.Filter, pkey, skey string) expression.Builder {\n\tvar kbs []expression.KeyConditionBuilder\n\tvar cfs []driver.Filter\n\tfor _, f := range fs {\n\t\tif kb, ok := toKeyCondition(f, pkey, skey); ok {\n\t\t\tkbs = append(kbs, kb)\n\t\t\tcontinue\n\t\t}\n\t\tcfs = append(cfs, f)\n\t}\n\tkeyBuilder := kbs[0]\n\tfor i := 1; i < len(kbs); i++ {\n\t\tkeyBuilder = keyBuilder.And(kbs[i])\n\t}\n\tcb = cb.WithKeyCondition(keyBuilder)\n\tif len(cfs) > 0 {\n\t\tcb = cb.WithFilter(filtersToConditionBuilder(cfs))\n\t}\n\treturn cb\n}\n\nfunc filtersToConditionBuilder(fs []driver.Filter) expression.ConditionBuilder {\n\tif len(fs) == 0 {\n\t\tpanic(\"no filters\")\n\t}\n\tvar cb expression.ConditionBuilder\n\tcb = toFilter(fs[0])\n\tfor _, f := range fs[1:] {\n\t\tcb = cb.And(toFilter(f))\n\t}\n\treturn cb\n}\n\nfunc toKeyCondition(f driver.Filter, pkey, skey string) (expression.KeyConditionBuilder, bool) {\n\tkp := strings.Join(f.FieldPath, \".\")\n\tif kp == pkey || kp == skey {\n\t\tkey := expression.Key(kp)\n\t\tval := expression.Value(f.Value)\n\t\tswitch f.Op {\n\t\tcase \"<\":\n\t\t\treturn expression.KeyLessThan(key, val), true\n\t\tcase \"<=\":\n\t\t\treturn expression.KeyLessThanEqual(key, val), true\n\t\tcase driver.EqualOp:\n\t\t\treturn expression.KeyEqual(key, val), true\n\t\tcase \">=\":\n\t\t\treturn expression.KeyGreaterThanEqual(key, val), true\n\t\tcase \">\":\n\t\t\treturn expression.KeyGreaterThan(key, val), true\n\t\tdefault:\n\t\t\tpanic(fmt.Sprint(\"invalid filter operation:\", f.Op))\n\t\t}\n\t}\n\treturn expression.KeyConditionBuilder{}, false\n}\n\nfunc toFilter(f driver.Filter) expression.ConditionBuilder {\n\tname := expression.Name(strings.Join(f.FieldPath, \".\"))\n\tval := expression.Value(f.Value)\n\tswitch f.Op {\n\tcase \"<\":\n\t\treturn expression.LessThan(name, val)\n\tcase \"<=\":\n\t\treturn expression.LessThanEqual(name, val)\n\tcase driver.EqualOp:\n\t\treturn expression.Equal(name, val)\n\tcase \">=\":\n\t\treturn expression.GreaterThanEqual(name, val)\n\tcase \">\":\n\t\treturn expression.GreaterThan(name, val)\n\tcase \"in\":\n\t\treturn toInCondition(f)\n\tcase \"not-in\":\n\t\treturn expression.Not(toInCondition(f))\n\tdefault:\n\t\tpanic(fmt.Sprint(\"invalid filter operation:\", f.Op))\n\t}\n}\n\nfunc toInCondition(f driver.Filter) expression.ConditionBuilder {\n\tname := expression.Name(strings.Join(f.FieldPath, \".\"))\n\tvslice := reflect.ValueOf(f.Value)\n\tright := expression.Value(vslice.Index(0).Interface())\n\tother := make([]expression.OperandBuilder, vslice.Len()-1)\n\tfor i := 1; i < vslice.Len(); i++ {\n\t\tother[i-1] = expression.Value(vslice.Index(i).Interface())\n\t}\n\treturn expression.In(name, right, other...)\n}\n\ntype documentIterator struct {\n\tqr     *queryRunner                          // the query runner\n\titems  []map[string]dyn2Types.AttributeValue // items from the last query\n\tcurr   int                                   // index of the current item in items\n\toffset int                                   // number of items to skip\n\tlimit  int                                   // number of items to return\n\tcount  int                                   // number of items returned\n\tlast   map[string]dyn2Types.AttributeValue   // lastEvaluatedKey from the last query\n\tasFunc func(i any) bool                      // for As\n}\n\nfunc (it *documentIterator) Next(ctx context.Context, doc driver.Document) error {\n\t// Skip the first 'n' documents where 'n' is the offset.\n\tfor it.count < it.offset {\n\t\tif err := it.next(ctx, doc, false); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn it.next(ctx, doc, true)\n}\n\nfunc (it *documentIterator) next(ctx context.Context, doc driver.Document, decode bool) error {\n\t// Only start counting towards the limit after the offset has been reached.\n\tif it.limit > 0 && it.count >= it.offset+it.limit {\n\t\treturn io.EOF\n\t}\n\t// it.items can be empty after a call to it.qr.run, but unless it.last is nil there may be more items.\n\tfor it.curr >= len(it.items) {\n\t\t// Make a new query request at the end of this page.\n\t\tif it.last == nil {\n\t\t\treturn io.EOF\n\t\t}\n\t\tvar err error\n\t\tit.items, it.last, it.asFunc, err = it.qr.run(ctx, it.last)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tit.curr = 0\n\t}\n\tif decode {\n\t\tif err := decodeDoc(&dyn2Types.AttributeValueMemberM{Value: it.items[it.curr]}, doc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tit.curr++\n\tit.count++\n\treturn nil\n}\n\nfunc (it *documentIterator) Stop() {\n\tit.items = nil\n\tit.last = nil\n}\n\nfunc (it *documentIterator) As(i any) bool {\n\treturn it.asFunc(i)\n}\n\nfunc (c *collection) QueryPlan(q *driver.Query) (string, error) {\n\tqr, err := c.planQuery(q)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn qr.queryPlan(), nil\n}\n\nfunc (qr *queryRunner) queryPlan() string {\n\tif qr.scanIn != nil {\n\t\treturn \"Scan\"\n\t}\n\tif qr.queryIn.IndexName != nil {\n\t\treturn fmt.Sprintf(\"Index: %q\", *qr.queryIn.IndexName)\n\t}\n\treturn \"Table\"\n}\n\n// InMemorySortFallback returns a query fallback function for Options.RunQueryFallback.\n// The function accepts a query with an OrderBy clause. It runs the query without that clause,\n// reading all documents into memory, then sorts the documents according to the OrderBy clause.\n//\n// Only string, numeric, time and binary ([]byte) fields can be sorted.\n//\n// createDocument should create an empty document to be passed to DocumentIterator.Next.\n// The DocumentIterator returned by the FallbackFunc will also expect the same type of document.\n// If nil, then a map[string]interface{} will be used.\nfunc InMemorySortFallback(createDocument func() any) FallbackFunc {\n\tif createDocument == nil {\n\t\tcreateDocument = func() any { return map[string]any{} }\n\t}\n\treturn func(ctx context.Context, q *driver.Query, run RunQueryFunc) (driver.DocumentIterator, error) {\n\t\tif q.OrderByField == \"\" {\n\t\t\treturn nil, errors.New(\"InMemorySortFallback expects an OrderBy query\")\n\t\t}\n\t\t// Run the query without the OrderBy.\n\t\torderByField := q.OrderByField\n\t\tq.OrderByField = \"\"\n\t\titer, err := run(ctx, q)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer iter.Stop()\n\t\t// Collect the results into a slice.\n\t\tvar docs []driver.Document\n\t\tfor {\n\t\t\tdoc, err := driver.NewDocument(createDocument())\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\terr = iter.Next(ctx, doc)\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tdocs = append(docs, doc)\n\t\t}\n\t\t// Sort the documents.\n\t\t// OrderByField is a single field, not a field path.\n\t\t// First, put the field values in another slice, so we can\n\t\t// return on error.\n\t\tsortValues := make([]any, len(docs))\n\t\tfor i, doc := range docs {\n\t\t\tv, err := doc.GetField(orderByField)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tsortValues[i] = v\n\t\t}\n\t\tsort.Sort(docsForSorting{docs, sortValues, q.OrderAscending})\n\t\treturn &sliceIterator{docs: docs}, nil\n\t}\n}\n\ntype docsForSorting struct {\n\tdocs      []driver.Document\n\tvals      []any\n\tascending bool\n}\n\nfunc (d docsForSorting) Len() int { return len(d.docs) }\n\nfunc (d docsForSorting) Swap(i, j int) {\n\td.docs[i], d.docs[j] = d.docs[j], d.docs[i]\n\td.vals[i], d.vals[j] = d.vals[j], d.vals[i]\n}\n\nfunc (d docsForSorting) Less(i, j int) bool {\n\tc := compare(d.vals[i], d.vals[j])\n\tif d.ascending {\n\t\treturn c < 0\n\t}\n\treturn c > 0\n}\n\n// compare returns -1 if v1 < v2, 0 if v1 == v2 and 1 if v1 > v2.\n//\n// Arbitrarily decide that strings < times < []byte < numbers.\n// TODO(jba): find and use the actual sort order that DynamoDB uses.\nfunc compare(v1, v2 any) int {\n\tswitch v1 := v1.(type) {\n\tcase string:\n\t\tif v2, ok := v2.(string); ok {\n\t\t\treturn strings.Compare(v1, v2)\n\t\t}\n\t\treturn -1\n\n\tcase time.Time:\n\t\tif v2, ok := v2.(time.Time); ok {\n\t\t\treturn driver.CompareTimes(v1, v2)\n\t\t}\n\t\tif _, ok := v2.(string); ok {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\n\tcase []byte:\n\t\tif v2, ok := v2.([]byte); ok {\n\t\t\treturn bytes.Compare(v1, v2)\n\t\t}\n\t\tif _, ok := v2.(string); ok {\n\t\t\treturn 1\n\t\t}\n\t\tif _, ok := v2.(time.Time); ok {\n\t\t\treturn 1\n\t\t}\n\t\treturn -1\n\n\tdefault:\n\t\tcmp, err := driver.CompareNumbers(v1, v2)\n\t\tif err != nil {\n\t\t\treturn -1\n\t\t}\n\t\treturn cmp\n\t}\n}\n\ntype sliceIterator struct {\n\tdocs []driver.Document\n\tnext int\n}\n\nfunc (it *sliceIterator) Next(ctx context.Context, doc driver.Document) error {\n\tif it.next >= len(it.docs) {\n\t\treturn io.EOF\n\t}\n\tit.next++\n\treturn copyTopLevel(doc, it.docs[it.next-1])\n}\n\n// Copy the top-level fields of src into dest.\nfunc copyTopLevel(dest, src driver.Document) error {\n\tfor _, f := range src.FieldNames() {\n\t\tv, err := src.GetField(f)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := dest.SetField(f, v); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (*sliceIterator) Stop()       {}\nfunc (*sliceIterator) As(any) bool { return false }\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/query_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\tdyn \"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\tdyn2Types \"github.com/aws/aws-sdk-go-v2/service/dynamodb/types\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n)\n\nfunc TestPlanQuery(t *testing.T) {\n\tc := &collection{\n\t\ttable:        \"T\",\n\t\tpartitionKey: \"tableP\",\n\t\tdescription:  &dyn2Types.TableDescription{},\n\t\topts:         &Options{AllowScans: true, RevisionField: \"rev\"},\n\t}\n\n\t// Build an ExpressionAttributeNames map with the given names.\n\teans := func(names ...string) map[string]string {\n\t\tm := map[string]string{}\n\t\tfor i, n := range names {\n\t\t\tm[fmt.Sprintf(\"#%d\", i)] = n\n\t\t}\n\t\treturn m\n\t}\n\n\t// Build an ExpressionAttributeValues map. Filter values are always the number 1\n\t// and the keys are always :0, :1, ..., so we only need to know how many entries.\n\teavs := func(n int) map[string]dyn2Types.AttributeValue {\n\t\tif n == 0 {\n\t\t\treturn nil\n\t\t}\n\t\tone := &dyn2Types.AttributeValueMemberN{Value: \"1\"}\n\t\tm := map[string]dyn2Types.AttributeValue{}\n\t\tfor i := range n {\n\t\t\tm[fmt.Sprintf(\":%d\", i)] = one\n\t\t}\n\t\treturn m\n\t}\n\n\t// Ignores the ConsistentRead field from both QueryInput and ScanInput.\n\topts := []cmp.Option{\n\t\tcmpopts.IgnoreFields(dyn.ScanInput{}, \"ConsistentRead\"),\n\t\tcmpopts.IgnoreFields(dyn.QueryInput{}, \"ConsistentRead\"),\n\t\tcmpopts.IgnoreUnexported(dyn.ScanInput{}),\n\t\tcmpopts.IgnoreUnexported(dyn.QueryInput{}),\n\t\tcompareIgnoreAttributeUnexported,\n\t}\n\n\tfor _, test := range []struct {\n\t\tdesc string\n\t\t// In all cases, the table has a partition key called \"tableP\".\n\t\ttableSortKey            string   // if non-empty, the table sort key\n\t\tlocalIndexSortKey       string   // if non-empty, there is a local index with this sort key\n\t\tlocalIndexFields        []string // the fields projected into the local index\n\t\tglobalIndexPartitionKey string   // if non-empty, there is a global index with this partition key\n\t\tglobalIndexSortKey      string   // if non-empty, the global index  has this sort key\n\t\tglobalIndexFields       []string // the fields projected into the global index\n\t\tquery                   *driver.Query\n\t\twant                    any // either a ScanInput or a QueryInput\n\t\twantPlan                string\n\t}{\n\t\t{\n\t\t\tdesc: \"empty query\",\n\t\t\t// A query with no filters requires a scan.\n\t\t\tquery:    &driver.Query{},\n\t\t\twant:     &dyn.ScanInput{TableName: &c.table},\n\t\t\twantPlan: \"Scan\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition field\",\n\t\t\t// A filter that compares the table's partition key for equality is the minimum\n\t\t\t// requirement for querying the table.\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{{[]string{\"tableP\"}, \"=\", 1}}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tKeyConditionExpression:    aws.String(\"#0 = :0\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"tableP\"),\n\t\t\t\tExpressionAttributeValues: eavs(1),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition field (sort key)\",\n\t\t\t// Same as above, but the table has a sort key; shouldn't make a difference.\n\t\t\ttableSortKey: \"tableS\",\n\t\t\tquery:        &driver.Query{Filters: []driver.Filter{{[]string{\"tableP\"}, \"=\", 1}}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tKeyConditionExpression:    aws.String(\"#0 = :0\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"tableP\"),\n\t\t\t\tExpressionAttributeValues: eavs(1),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on other field\",\n\t\t\t// This query has an equality filter, but not on the table's partition key.\n\t\t\t// Since there are no matching indexes, we must scan.\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{{[]string{\"other\"}, \"=\", 1}}},\n\t\t\twant: &dyn.ScanInput{\n\t\t\t\tFilterExpression:          aws.String(\"#0 = :0\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"other\"),\n\t\t\t\tExpressionAttributeValues: eavs(1),\n\t\t\t},\n\t\t\twantPlan: \"Scan\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"non-equality filter on table partition field\",\n\t\t\t// If the query doesn't have an equality filter on the partition key, and there\n\t\t\t// are no indexes, we must scan. The filter becomes a FilterExpression, evaluated\n\t\t\t// on the backend.\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{{[]string{\"tableP\"}, \">\", 1}}},\n\t\t\twant: &dyn.ScanInput{\n\t\t\t\tFilterExpression:          aws.String(\"#0 > :0\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"tableP\"),\n\t\t\t\tExpressionAttributeValues: eavs(1),\n\t\t\t},\n\t\t\twantPlan: \"Scan\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on partition, filter on other\",\n\t\t\t// The equality filter on the table's partition key lets us query the table.\n\t\t\t// The other filter is used in the filter expression.\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"other\"}, \"<=\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tKeyConditionExpression:    aws.String(\"#1 = :1\"),\n\t\t\t\tFilterExpression:          aws.String(\"#0 <= :0\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"other\", \"tableP\"),\n\t\t\t\tExpressionAttributeValues: eavs(2),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on partition, filter on sort\",\n\t\t\t// If the table has a sort key and the query has a filter on it as well\n\t\t\t// as an equality filter on the table's partition key, we can query the\n\t\t\t// table.\n\t\t\ttableSortKey: \"tableS\",\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"tableS\"}, \"<=\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tKeyConditionExpression:    aws.String(\"(#0 = :0) AND (#1 <= :1)\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"tableP\", \"tableS\"),\n\t\t\t\tExpressionAttributeValues: eavs(2),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filter on local index sort\",\n\t\t\t// The equality filter on the table's partition key allows us to query\n\t\t\t// the table, but there is a better choice: a local index with a sort key\n\t\t\t// that is mentioned in the query.\n\t\t\tlocalIndexSortKey: \"localS\",\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"localS\"}, \"<=\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                aws.String(\"local\"),\n\t\t\t\tKeyConditionExpression:   aws.String(\"(#0 = :0) AND (#1 <= :1)\"),\n\t\t\t\tExpressionAttributeNames: eans(\"tableP\", \"localS\"),\n\t\t\t},\n\t\t\twantPlan: `Index: \"local\"`,\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filter on local index sort, bad projection\",\n\t\t\t// The equality filter on the table's partition key allows us to query\n\t\t\t// the table. There seems to be a better choice: a local index with a sort key\n\t\t\t// that is mentioned in the query. But the query wants the entire document,\n\t\t\t// and the local index only has some fields.\n\t\t\tlocalIndexSortKey: \"localS\",\n\t\t\tlocalIndexFields:  []string{}, // keys only\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"localS\"}, \"<=\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tKeyConditionExpression:   aws.String(\"#1 = :1\"),\n\t\t\t\tFilterExpression:         aws.String(\"#0 <= :0\"),\n\t\t\t\tExpressionAttributeNames: eans(\"localS\", \"tableP\"),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filter on local index sort, good projection\",\n\t\t\t// Same as above, but now the query no longer asks for all fields, so\n\t\t\t// we will only read the requested fields from the table.\n\t\t\tlocalIndexSortKey: \"localS\",\n\t\t\tlocalIndexFields:  []string{}, // keys only\n\t\t\tquery: &driver.Query{\n\t\t\t\tFieldPaths: [][]string{{\"tableP\"}, {\"localS\"}},\n\t\t\t\tFilters: []driver.Filter{\n\t\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t\t{[]string{\"localS\"}, \"<=\", 1},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                 aws.String(\"local\"),\n\t\t\t\tKeyConditionExpression:    aws.String(\"(#0 = :0) AND (#1 <= :1)\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"tableP\", \"localS\"),\n\t\t\t\tExpressionAttributeValues: eavs(2),\n\t\t\t\tProjectionExpression:      aws.String(\"#0, #1\"),\n\t\t\t},\n\t\t\twantPlan: `Index: \"local\"`,\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filters on local index and table sort\",\n\t\t\t// Given the choice of querying the table or a local index, prefer the table.\n\t\t\ttableSortKey:      \"tableS\",\n\t\t\tlocalIndexSortKey: \"localS\",\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"localS\"}, \"<=\", 1},\n\t\t\t\t{[]string{\"tableS\"}, \">\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                nil,\n\t\t\t\tKeyConditionExpression:   aws.String(\"(#1 = :1) AND (#2 > :2)\"),\n\t\t\t\tFilterExpression:         aws.String(\"#0 <= :0\"),\n\t\t\t\tExpressionAttributeNames: eans(\"localS\", \"tableP\", \"tableS\"),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on other field with index\",\n\t\t\t// The query is the same as in \"equality filter on other field,\" but now there\n\t\t\t// is a global index with that field as partition key, so we can query it.\n\t\t\tglobalIndexPartitionKey: \"other\",\n\t\t\tquery:                   &driver.Query{Filters: []driver.Filter{{[]string{\"other\"}, \"=\", 1}}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                aws.String(\"global\"),\n\t\t\t\tKeyConditionExpression:   aws.String(\"#0 = :0\"),\n\t\t\t\tExpressionAttributeNames: eans(\"other\"),\n\t\t\t},\n\t\t\twantPlan: `Index: \"global\"`,\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filter on global index sort\",\n\t\t\t// The equality filter on the table's partition key allows us to query\n\t\t\t// the table, but there is a better choice: a global index with the same\n\t\t\t// partition key and a sort key that is mentioned in the query.\n\t\t\t// (In these tests, the global index has all the fields of the table by default.)\n\t\t\tglobalIndexPartitionKey: \"tableP\",\n\t\t\tglobalIndexSortKey:      \"globalS\",\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"globalS\"}, \"<=\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                aws.String(\"global\"),\n\t\t\t\tKeyConditionExpression:   aws.String(\"(#0 = :0) AND (#1 <= :1)\"),\n\t\t\t\tExpressionAttributeNames: eans(\"tableP\", \"globalS\"),\n\t\t\t},\n\t\t\twantPlan: `Index: \"global\"`,\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filter on global index sort, bad projection\",\n\t\t\t// Although there is a global index that matches the filters best, it doesn't\n\t\t\t// have the necessary fields. So we query against the table.\n\t\t\t// The query does not specify FilterPaths, so it retrieves the entire document.\n\t\t\t// globalIndexFields explicitly lists the fields that the global index has.\n\t\t\t// Since the global index does not have all the document fields, it can't be used.\n\t\t\tglobalIndexPartitionKey: \"tableP\",\n\t\t\tglobalIndexSortKey:      \"globalS\",\n\t\t\tglobalIndexFields:       []string{\"other\"},\n\t\t\tquery: &driver.Query{Filters: []driver.Filter{\n\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t{[]string{\"globalS\"}, \"<=\", 1},\n\t\t\t}},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                nil,\n\t\t\t\tKeyConditionExpression:   aws.String(\"#1 = :1\"),\n\t\t\t\tFilterExpression:         aws.String(\"#0 <= :0\"),\n\t\t\t\tExpressionAttributeNames: eans(\"globalS\", \"tableP\"),\n\t\t\t},\n\t\t\twantPlan: \"Table\",\n\t\t},\n\t\t{\n\t\t\tdesc: \"equality filter on table partition, filter on global index sort, good projection\",\n\t\t\t// The global index matches the filters best and has the necessary\n\t\t\t// fields. So we query against it.\n\t\t\tglobalIndexPartitionKey: \"tableP\",\n\t\t\tglobalIndexSortKey:      \"globalS\",\n\t\t\tglobalIndexFields:       []string{\"other\", \"rev\"},\n\t\t\tquery: &driver.Query{\n\t\t\t\tFieldPaths: [][]string{{\"other\"}},\n\t\t\t\tFilters: []driver.Filter{\n\t\t\t\t\t{[]string{\"tableP\"}, \"=\", 1},\n\t\t\t\t\t{[]string{\"globalS\"}, \"<=\", 1},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: &dyn.QueryInput{\n\t\t\t\tIndexName:                 aws.String(\"global\"),\n\t\t\t\tKeyConditionExpression:    aws.String(\"(#0 = :0) AND (#1 <= :1)\"),\n\t\t\t\tProjectionExpression:      aws.String(\"#2, #0\"),\n\t\t\t\tExpressionAttributeNames:  eans(\"tableP\", \"globalS\", \"other\"),\n\t\t\t\tExpressionAttributeValues: eavs(2),\n\t\t\t},\n\t\t\twantPlan: `Index: \"global\"`,\n\t\t},\n\t} {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tc.sortKey = test.tableSortKey\n\t\t\tif test.localIndexSortKey == \"\" {\n\t\t\t\tc.description.LocalSecondaryIndexes = nil\n\t\t\t} else {\n\t\t\t\tc.description.LocalSecondaryIndexes = []dyn2Types.LocalSecondaryIndexDescription{\n\t\t\t\t\t{\n\t\t\t\t\t\tIndexName:  aws.String(\"local\"),\n\t\t\t\t\t\tKeySchema:  keySchema(\"tableP\", test.localIndexSortKey),\n\t\t\t\t\t\tProjection: indexProjection(test.localIndexFields),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t\t\tif test.globalIndexPartitionKey == \"\" {\n\t\t\t\tc.description.GlobalSecondaryIndexes = nil\n\t\t\t} else {\n\t\t\t\tc.description.GlobalSecondaryIndexes = []dyn2Types.GlobalSecondaryIndexDescription{\n\t\t\t\t\t{\n\t\t\t\t\t\tIndexName:  aws.String(\"global\"),\n\t\t\t\t\t\tKeySchema:  keySchema(test.globalIndexPartitionKey, test.globalIndexSortKey),\n\t\t\t\t\t\tProjection: indexProjection(test.globalIndexFields),\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}\n\t\t\tgotRunner, err := c.planQuery(test.query)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tvar got any\n\t\t\tswitch tw := test.want.(type) {\n\t\t\tcase *dyn.ScanInput:\n\t\t\t\tgot = gotRunner.scanIn\n\t\t\t\ttw.TableName = &c.table\n\t\t\t\tif tw.ExpressionAttributeValues == nil {\n\t\t\t\t\ttw.ExpressionAttributeValues = eavs(len(tw.ExpressionAttributeNames))\n\t\t\t\t}\n\t\t\tcase *dyn.QueryInput:\n\t\t\t\tgot = gotRunner.queryIn\n\t\t\t\ttw.TableName = &c.table\n\t\t\t\tif tw.ExpressionAttributeValues == nil {\n\t\t\t\t\ttw.ExpressionAttributeValues = eavs(len(tw.ExpressionAttributeNames))\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tt.Fatalf(\"bad type for test.want: %T\", test.want)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, test.want, opts...); diff != \"\" {\n\t\t\t\tt.Error(\"input:\\n\", diff)\n\t\t\t}\n\t\t\tgotPlan := gotRunner.queryPlan()\n\t\t\tif diff := cmp.Diff(gotPlan, test.wantPlan); diff != \"\" {\n\t\t\t\tt.Error(\"plan:\\n\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestQueryNoScans(t *testing.T) {\n\tc := &collection{\n\t\ttable:        \"T\",\n\t\tpartitionKey: \"tableP\",\n\t\tdescription:  &dyn2Types.TableDescription{},\n\t\topts:         &Options{AllowScans: false},\n\t}\n\n\tfor _, test := range []struct {\n\t\tq       *driver.Query\n\t\twantErr bool\n\t}{\n\t\t{&driver.Query{}, false},\n\t\t{&driver.Query{Filters: []driver.Filter{{[]string{\"other\"}, \"=\", 1}}}, true},\n\t} {\n\t\tqr, err := c.planQuery(test.q)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"%v: %v\", test.q, err)\n\t\t}\n\t\terr = c.checkPlan(qr)\n\t\tif test.wantErr {\n\t\t\tif err == nil || !strings.Contains(err.Error(), \"AllowScans\") {\n\t\t\t\tt.Errorf(\"%v: got %v, want an error that mentions the AllowScans option\", test.q, err)\n\t\t\t}\n\t\t} else if err != nil {\n\t\t\tt.Errorf(\"%v: got %v, want nil\", test.q, err)\n\t\t}\n\t}\n}\n\n// Make a key schema from the names of the partition and sort keys.\nfunc keySchema(pkey, skey string) []dyn2Types.KeySchemaElement {\n\treturn []dyn2Types.KeySchemaElement{\n\t\t{AttributeName: &pkey, KeyType: dyn2Types.KeyTypeHash},\n\t\t{AttributeName: &skey, KeyType: dyn2Types.KeyTypeRange},\n\t}\n}\n\nfunc indexProjection(fields []string) *dyn2Types.Projection {\n\tvar ptype dyn2Types.ProjectionType\n\tswitch {\n\tcase fields == nil:\n\t\tptype = dyn2Types.ProjectionTypeAll\n\tcase len(fields) == 0:\n\t\tptype = dyn2Types.ProjectionTypeKeysOnly\n\tdefault:\n\t\tptype = dyn2Types.ProjectionTypeInclude\n\t}\n\tproj := &dyn2Types.Projection{ProjectionType: ptype}\n\tfor _, f := range fields {\n\t\tproj.NonKeyAttributes = append(proj.NonKeyAttributes, f)\n\t}\n\treturn proj\n}\n\nfunc TestGlobalFieldsIncluded(t *testing.T) {\n\tc := &collection{partitionKey: \"tableP\", sortKey: \"tableS\"}\n\tgi := dyn2Types.GlobalSecondaryIndexDescription{\n\t\tKeySchema: keySchema(\"globalP\", \"globalS\"),\n\t}\n\tfor _, test := range []struct {\n\t\tdesc         string\n\t\tqueryFields  []string\n\t\twantKeysOnly bool // when the projection includes only table and index keys\n\t\twantInclude  bool // when the projection includes fields \"f\" and \"g\".\n\t}{\n\t\t{\n\t\t\tdesc:         \"all\",\n\t\t\tqueryFields:  nil,\n\t\t\twantKeysOnly: false,\n\t\t\twantInclude:  false,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"key fields\",\n\t\t\tqueryFields:  []string{\"tableS\", \"globalP\"},\n\t\t\twantKeysOnly: true,\n\t\t\twantInclude:  true,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"included fields\",\n\t\t\tqueryFields:  []string{\"f\", \"g\"},\n\t\t\twantKeysOnly: false,\n\t\t\twantInclude:  true,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"included and key fields\",\n\t\t\tqueryFields:  []string{\"f\", \"g\", \"tableP\", \"globalS\"},\n\t\t\twantKeysOnly: false,\n\t\t\twantInclude:  true,\n\t\t},\n\t\t{\n\t\t\tdesc:         \"not included field\",\n\t\t\tqueryFields:  []string{\"f\", \"g\", \"h\"},\n\t\t\twantKeysOnly: false,\n\t\t\twantInclude:  false,\n\t\t},\n\t} {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tvar fps [][]string\n\t\t\tfor _, qf := range test.queryFields {\n\t\t\t\tfps = append(fps, strings.Split(qf, \".\"))\n\t\t\t}\n\t\t\tq := &driver.Query{FieldPaths: fps}\n\t\t\tfor _, p := range []struct {\n\t\t\t\tname string\n\t\t\t\tproj *dyn2Types.Projection\n\t\t\t\twant bool\n\t\t\t}{\n\t\t\t\t{\"ALL\", indexProjection(nil), true},\n\t\t\t\t{\"KEYS_ONLY\", indexProjection([]string{}), test.wantKeysOnly},\n\t\t\t\t{\"INCLUDE\", indexProjection([]string{\"f\", \"g\"}), test.wantInclude},\n\t\t\t} {\n\t\t\t\tt.Run(p.name, func(t *testing.T) {\n\t\t\t\t\tgi.Projection = p.proj\n\t\t\t\t\tgot := c.globalFieldsIncluded(q, gi)\n\t\t\t\t\tif got != p.want {\n\t\t\t\t\t\tt.Errorf(\"got %t, want %t\", got, p.want)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCompare(t *testing.T) {\n\ttm := time.Now()\n\tfor _, test := range []struct {\n\t\ta, b any\n\t\twant int\n\t}{\n\t\t{1, 1, 0},\n\t\t{1, 2, -1},\n\t\t{2, 1, 1},\n\t\t{1.5, 2, -1},\n\t\t{2.5, 2.1, 1},\n\t\t{3.8, 3.8, 0},\n\t\t{\"x\", \"x\", 0},\n\t\t{\"x\", \"xx\", -1},\n\t\t{\"x\", \"a\", 1},\n\t\t{tm, tm, 0},\n\t\t{tm, tm.Add(1), -1},\n\t\t{tm, tm.Add(-1), 1},\n\t\t{[]byte(\"x\"), []byte(\"x\"), 0},\n\t\t{[]byte(\"x\"), []byte(\"xx\"), -1},\n\t\t{[]byte(\"x\"), []byte(\"a\"), 1},\n\t} {\n\t\tgot := compare(test.a, test.b)\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"compare(%v, %v) = %d, want %d\", test.a, test.b, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestCopyTopLevel(t *testing.T) {\n\ttype E struct{ C int }\n\ttype S struct {\n\t\tA int\n\t\tB int\n\t\tE\n\t}\n\n\ts := &S{A: 1, B: 2, E: E{C: 3}}\n\tm := map[string]any{\"A\": 1, \"B\": 2, \"C\": 3}\n\tfor _, test := range []struct {\n\t\tdest, src any\n\t\twant      any\n\t}{\n\t\t{\n\t\t\tdest: map[string]any{},\n\t\t\tsrc:  m,\n\t\t\twant: m,\n\t\t},\n\t\t{\n\t\t\tdest: &S{},\n\t\t\tsrc:  s,\n\t\t\twant: s,\n\t\t},\n\t\t{\n\t\t\tdest: map[string]any{},\n\t\t\tsrc:  s,\n\t\t\twant: m,\n\t\t},\n\t\t{\n\t\t\tdest: &S{},\n\t\t\tsrc:  m,\n\t\t\twant: s,\n\t\t},\n\t} {\n\t\tdest := drivertest.MustDocument(test.dest)\n\t\tsrc := drivertest.MustDocument(test.src)\n\t\tif err := copyTopLevel(dest, src); err != nil {\n\t\t\tt.Fatalf(\"src=%+v: %v\", test.src, err)\n\t\t}\n\t\tif !cmp.Equal(test.dest, test.want) {\n\t\t\tt.Errorf(\"src=%+v: got %v, want %v\", test.src, test.dest, test.want)\n\t\t}\n\t}\n}\n\nfunc Test_documentIterator_Next(t *testing.T) {\n\ttype fields struct {\n\t\tqr     *queryRunner\n\t\titems  []map[string]dyn2Types.AttributeValue\n\t\tcurr   int\n\t\toffset int\n\t\tlimit  int\n\t\tcount  int\n\t\tlast   map[string]dyn2Types.AttributeValue\n\t\tasFunc func(i any) bool\n\t}\n\ttype args struct {\n\t\tctx context.Context\n\t\tdoc driver.Document\n\t}\n\ttests := []struct {\n\t\tname    string\n\t\tfields  fields\n\t\targs    args\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname: \"nextWithNoDecodeError\",\n\t\t\tfields: fields{\n\t\t\t\tqr: &queryRunner{},\n\t\t\t\titems: []map[string]dyn2Types.AttributeValue{\n\t\t\t\t\t{\"key\": &dyn2Types.AttributeValueMemberM{Value: map[string]dyn2Types.AttributeValue{\"key\": &dyn2Types.AttributeValueMemberS{Value: \"value\"}}}},\n\t\t\t\t},\n\t\t\t\tcurr:   0,\n\t\t\t\toffset: 0,\n\t\t\t\tlimit:  0,\n\t\t\t\tcount:  0,\n\t\t\t\tlast:   map[string]dyn2Types.AttributeValue{},\n\t\t\t},\n\t\t\targs: args{\n\t\t\t\tctx: context.Background(),\n\t\t\t\tdoc: drivertest.MustDocument(map[string]any{}),\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"nextWithDecodeError\",\n\t\t\tfields: fields{\n\t\t\t\tqr: &queryRunner{},\n\t\t\t\titems: []map[string]dyn2Types.AttributeValue{\n\t\t\t\t\t{\"key\": nil}, // set M to nil to trigger decode error\n\t\t\t\t},\n\t\t\t\tcurr:   0,\n\t\t\t\toffset: 0,\n\t\t\t\tlimit:  0,\n\t\t\t\tcount:  0,\n\t\t\t\tlast:   map[string]dyn2Types.AttributeValue{},\n\t\t\t},\n\t\t\targs: args{\n\t\t\t\tctx: context.Background(),\n\t\t\t\tdoc: drivertest.MustDocument(map[string]any{}),\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"nextWhereCurrIsGreaterThanOrEqualToItemsAndLastIsNotNil\",\n\t\t\tfields: fields{\n\t\t\t\tqr: &queryRunner{\n\t\t\t\t\tscanIn: &dyn.ScanInput{},\n\t\t\t\t\t// hack to return error from run\n\t\t\t\t\tbeforeRun: func(asFunc func(i any) bool) error { return errors.New(\"invalid\") },\n\t\t\t\t},\n\t\t\t\titems:  []map[string]dyn2Types.AttributeValue{{\"key\": &dyn2Types.AttributeValueMemberM{Value: map[string]dyn2Types.AttributeValue{\"key\": &dyn2Types.AttributeValueMemberS{Value: \"value\"}}}}},\n\t\t\t\tcurr:   1,\n\t\t\t\toffset: 0,\n\t\t\t\tlimit:  0,\n\t\t\t\tcount:  0,\n\t\t\t\tlast:   map[string]dyn2Types.AttributeValue{\"key\": &dyn2Types.AttributeValueMemberS{Value: \"value\"}},\n\t\t\t},\n\t\t\targs: args{\n\t\t\t\tctx: context.Background(),\n\t\t\t\tdoc: drivertest.MustDocument(map[string]any{}),\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t}\n\tfor i, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tit := &documentIterator{\n\t\t\t\tqr:     tt.fields.qr,\n\t\t\t\titems:  tt.fields.items,\n\t\t\t\tcurr:   tt.fields.curr,\n\t\t\t\toffset: tt.fields.offset,\n\t\t\t\tlimit:  tt.fields.limit,\n\t\t\t\tcount:  tt.fields.count,\n\t\t\t\tlast:   tt.fields.last,\n\t\t\t\tasFunc: tt.fields.asFunc,\n\t\t\t}\n\t\t\tif err := it.Next(tt.args.ctx, tt.args.doc); (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"documentIterator.Next() test=%v(%v) error = %v, wantErr %v\", i+1, tt.name, err, tt.wantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/ActionsOnStructNoRev.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5cMPjAXAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"753d399f9c478d1c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CD4DO2BGMIDSGDFBAQI3SU4BKRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"6b639f06176cecf0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1689561753\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B8TIFH31PEALPU3UTMH7G9LAE7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RTZXJpYWxpemVSZXZpc2lvbiJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI2YTBmM2U4ZS01OWFiLTRlZDYtODg1Zi04ZTUxZDZiYmY2OWIifSwieCI6eyJOIjoiMSJ9fV0sIlNjYW5uZWRDb3VudCI6MX0=\"\n      }\n    },\n    {\n      \"ID\": \"831f2ad592cefd63\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"241\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5RLP9PGUM21FEABTMC5ONVO01VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e034137e19ce9f35\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TGA5RJN3I3AE2CJ8F08PL3RJ5VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"589e26dac0321c3e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"177\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5ELRRQTTJLH2GI7VII3EFKRI97VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"751bea3964a33f16\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"133\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"148\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1437423900\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TT439C85UT576TTNV47Q595OC3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJJIjp7Ik4iOiIwIn0sIm5hbWUiOnsiUyI6InB1dGFuZHVwZGF0ZSJ9fSx7IkkiOnsiTiI6IjAifSwibmFtZSI6eyJTIjoiY3JlYXRlYW5kcmVwbGFjZSJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"4c57d184757810ee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H849DB3VFV7G60PACBNLQEM5AFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fa326e6271882d74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"G9KSQOAH2JAJPVKD8RRSHK238RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5ff3c62246985f2e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"148\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1494456817\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RVBEH1GE1VQ9EDE92EJBHK2NINVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJJIjp7Ik4iOiIxIn0sIm5hbWUiOnsiUyI6InB1dGFuZHVwZGF0ZSJ9fSx7IkkiOnsiTiI6IjAifSwibmFtZSI6eyJTIjoiY3JlYXRlYW5kcmVwbGFjZSJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/ActionsWithCompositeID.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5dH2CMhwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9cbbf22326ea570b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1609\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"298093499\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PI258HS7I3RLA41UAMP1LBM1TRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIkF0dHJpYnV0ZVR5cGUiOiJTIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJBdHRyaWJ1dGVUeXBlIjoiTiJ9LHsiQXR0cmlidXRlTmFtZSI6IlRpbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwODA2OTVFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkdsb2JhbFNlY29uZGFyeUluZGV4ZXMiOlt7IkluZGV4QXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMi9pbmRleC9nbG9iYWwiLCJJbmRleE5hbWUiOiJnbG9iYWwiLCJJbmRleFNpemVCeXRlcyI6MTE4LCJJbmRleFN0YXR1cyI6IkFDVElWRSIsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiUGxheWVyIiwiS2V5VHlwZSI6IkhBU0gifSx7IkF0dHJpYnV0ZU5hbWUiOiJUaW1lIiwiS2V5VHlwZSI6IlJBTkdFIn1dLCJQcm9qZWN0aW9uIjp7IlByb2plY3Rpb25UeXBlIjoiQUxMIn0sIlByb3Zpc2lvbmVkVGhyb3VnaHB1dCI6eyJOdW1iZXJPZkRlY3JlYXNlc1RvZGF5IjowLCJSZWFkQ2FwYWNpdHlVbml0cyI6NSwiV3JpdGVDYXBhY2l0eVVuaXRzIjo1fSwiV2FybVRocm91Z2hwdXQiOnsiUmVhZFVuaXRzUGVyU2Vjb25kIjo1LCJTdGF0dXMiOiJBQ1RJVkUiLCJXcml0ZVVuaXRzUGVyU2Vjb25kIjo1fX1dLCJJdGVtQ291bnQiOjEsIktleVNjaGVtYSI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJLZXlUeXBlIjoiSEFTSCJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIktleVR5cGUiOiJSQU5HRSJ9XSwiTG9jYWxTZWNvbmRhcnlJbmRleGVzIjpbeyJJbmRleEFybiI6ImFybjphd3M6ZHluYW1vZGI6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3Njp0YWJsZS9kb2NzdG9yZS10ZXN0LTIvaW5kZXgvbG9jYWwiLCJJbmRleE5hbWUiOiJsb2NhbCIsIkluZGV4U2l6ZUJ5dGVzIjoxMTgsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiR2FtZSIsIktleVR5cGUiOiJIQVNIIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJLZXlUeXBlIjoiUkFOR0UifV0sIlByb2plY3Rpb24iOnsiUHJvamVjdGlvblR5cGUiOiJBTEwifX1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMiIsIlRhYmxlSWQiOiIwZDRmOTk4My1kOGE5LTRhZjEtYTY0NC05YmE3M2NlMGYyMjciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTIiLCJUYWJsZVNpemVCeXRlcyI6MTE4LCJUYWJsZVN0YXR1cyI6IkFDVElWRSIsIldhcm1UaHJvdWdocHV0Ijp7IlJlYWRVbml0c1BlclNlY29uZCI6NSwiU3RhdHVzIjoiQUNUSVZFIiwiV3JpdGVVbml0c1BlclNlY29uZCI6NX19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"1d3295500d2da029\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"235\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"277620058\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I9LENFQ36181MIGFVT4IH4HU8VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTI1VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6InN0ZXBoIn0sIlNjb3JlIjp7Ik4iOiIyNCJ9LCJHYW1lIjp7IlMiOiJEYXlzIEdvbmUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiNGY4YTcyMTYtOGYwOS00NjVjLThiYjItMDhjOTQxYmFlYmFmIn19XSwiU2Nhbm5lZENvdW50IjoxfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3347c5668f602d5f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6QOGP04EEF4N49B7PHHLL46VG3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"56a14cbf7ef39f9a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"352\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2041333382\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T3F7943FRKJJVLLPK0FEO8RF8VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uLmNvcmFsLnZhbGlkYXRlI1ZhbGlkYXRpb25FeGNlcHRpb24iLCJtZXNzYWdlIjoiT25lIG9yIG1vcmUgcGFyYW1ldGVyIHZhbHVlcyB3ZXJlIGludmFsaWQ6IFR5cGUgbWlzbWF0Y2ggZm9yIGtleSBQbGF5ZXIgZXhwZWN0ZWQ6IFMgYWN0dWFsOiBOVUxMIn0=\"\n      }\n    },\n    {\n      \"ID\": \"26acec69c8f0db3e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"235\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M9DP5QJ1VSBMJQ0S0RIF568PGBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6337d8bb713aa271\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"244\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CUI66GPOSIT70GU4RUT53R043NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"32cbaccfa1b5ce2b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4IQ56V7ONQ1SMMAN7ILLJTI96FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c81651c51d50c3a8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3T0334PCCD4P8PQS6O4M440DL7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8789dc39215bb9c5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"244\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"C6RCPPVP46ALEEE351SKKP874NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a9ab50e1ee97f953\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"238\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:49 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AUVPO78IUJ8OETUD6QNS2202K7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5602395e37c64523\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SS7KK5D7HPT6QJF0TKNI3HE7LNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c6dc3d044907170e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TBMDRMFDM7VB3NNQDH3ANDH9U3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cdd7b252516ea312\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"504\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1667\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3464261393\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"208PBEMO9B1E7OUCFCLD4GSQ2NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0yIjpbeyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjExMSJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImUyZjI0MmU2LTQ4MTktNGY4NS1hODJiLTFkNzY1Zjk3NWJiNiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6dHJ1ZX0sIlRpbWUiOnsiUyI6IjIwMTktMDQtMThUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiIxOTAifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJlZTA2ZWQzYi1iNjVjLTQzZjItODUyMy0wNTdhY2U3OTRmZjMifSwiUGxheWVyIjp7IlMiOiJtZWwifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wMi0wMVQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiOWQ0MTI5NDktNmJjNS00NjU4LWExMTctNTYxYTM2MDc0NmU5In0sIlBsYXllciI6eyJTIjoiYW5keSJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiNjAifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJjMDEzYWQ3YS05NzJiLTRmYmQtYTUyNC00M2U0ZDQyNGZlOWEifSwiUGxheWVyIjp7IlMiOiJtZWwifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wMy0xM1QwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjQ5In0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiY2JiOTZmNmMtZjIwNS00Y2QwLTlhMzctZGQ3Y2E3OTdjYjZiIn0sIlBsYXllciI6eyJTIjoicGF0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiIzMyJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjY4NTgzMmUwLTMzNGItNGEwMi05OTgwLWFmY2NiN2ExYTJmYiJ9LCJQbGF5ZXIiOnsiUyI6ImZyYW4ifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wMy0yMFQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjMzIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODllM2FiYjMtYTg5NC00OWUyLTg2YjYtMGQyMjQ4MWEwMWJjIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6dHJ1ZX0sIlRpbWUiOnsiUyI6IjIwMTktMDQtMDFUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiIxMjAifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI4YzVhNjU2Yy01ODRkLTQ5ZTMtYTVkNy1mMDViYzgzMTFlNDYifSwiUGxheWVyIjp7IlMiOiJwYXQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/As/verify_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5iOU/VUwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"873e8cb92b5b086a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1609\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"298093499\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9D9KQTR6J9EA9G1R518U5R7BI7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIkF0dHJpYnV0ZVR5cGUiOiJTIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJBdHRyaWJ1dGVUeXBlIjoiTiJ9LHsiQXR0cmlidXRlTmFtZSI6IlRpbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwODA2OTVFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkdsb2JhbFNlY29uZGFyeUluZGV4ZXMiOlt7IkluZGV4QXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMi9pbmRleC9nbG9iYWwiLCJJbmRleE5hbWUiOiJnbG9iYWwiLCJJbmRleFNpemVCeXRlcyI6MTE4LCJJbmRleFN0YXR1cyI6IkFDVElWRSIsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiUGxheWVyIiwiS2V5VHlwZSI6IkhBU0gifSx7IkF0dHJpYnV0ZU5hbWUiOiJUaW1lIiwiS2V5VHlwZSI6IlJBTkdFIn1dLCJQcm9qZWN0aW9uIjp7IlByb2plY3Rpb25UeXBlIjoiQUxMIn0sIlByb3Zpc2lvbmVkVGhyb3VnaHB1dCI6eyJOdW1iZXJPZkRlY3JlYXNlc1RvZGF5IjowLCJSZWFkQ2FwYWNpdHlVbml0cyI6NSwiV3JpdGVDYXBhY2l0eVVuaXRzIjo1fSwiV2FybVRocm91Z2hwdXQiOnsiUmVhZFVuaXRzUGVyU2Vjb25kIjo1LCJTdGF0dXMiOiJBQ1RJVkUiLCJXcml0ZVVuaXRzUGVyU2Vjb25kIjo1fX1dLCJJdGVtQ291bnQiOjEsIktleVNjaGVtYSI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJLZXlUeXBlIjoiSEFTSCJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIktleVR5cGUiOiJSQU5HRSJ9XSwiTG9jYWxTZWNvbmRhcnlJbmRleGVzIjpbeyJJbmRleEFybiI6ImFybjphd3M6ZHluYW1vZGI6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3Njp0YWJsZS9kb2NzdG9yZS10ZXN0LTIvaW5kZXgvbG9jYWwiLCJJbmRleE5hbWUiOiJsb2NhbCIsIkluZGV4U2l6ZUJ5dGVzIjoxMTgsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiR2FtZSIsIktleVR5cGUiOiJIQVNIIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJLZXlUeXBlIjoiUkFOR0UifV0sIlByb2plY3Rpb24iOnsiUHJvamVjdGlvblR5cGUiOiJBTEwifX1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMiIsIlRhYmxlSWQiOiIwZDRmOTk4My1kOGE5LTRhZjEtYTY0NC05YmE3M2NlMGYyMjciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTIiLCJUYWJsZVNpemVCeXRlcyI6MTE4LCJUYWJsZVN0YXR1cyI6IkFDVElWRSIsIldhcm1UaHJvdWdocHV0Ijp7IlJlYWRVbml0c1BlclNlY29uZCI6NSwiU3RhdHVzIjoiQUNUSVZFIiwiV3JpdGVVbml0c1BlclNlY29uZCI6NX19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"579eb6be8ab9eb31\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"F2Q83UBHOR9U5HG9GQKHF5740BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"80eaa98e3909e84e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"260\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HVG691T88NFM9MMS3G0NFSPIVNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c208ea6b4bf425aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0LHGST3UBVGUCKGFTR1KB4B003VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7c6a1fafb4210e97\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"261\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3PM0PNOV8Q7SE7VLNTH71VV2OVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3be082c555b8fb02\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"261\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I9I20B1TRBLP8AABRPIIGHKGTBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d9d19042c29fd1cf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"260\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GC67NADNN520GD18LG73K26JFFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"523fd7074062e34b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"254\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6QRS6712SAL0RNOQE46I4B9C67VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6dc5623df3543e6b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I6GCB2RDUTNNUAFGHRQMSGJNRBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fef9fc3f94f08d00\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T4I88J30SJR4KODURLHLI8CRMJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"02a6222c0c2f1faa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VNHSFO16NJ30IJ1ENTUCUJ9RKVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"cfce12c6a4df51c1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7E65ARNIJG2N77B9RN10JLU9BJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"e491183d47196bcf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"326\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ID3BDNUF16SK9BKEPOL4A553M7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"75f3c41a6d79556f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"326\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3LOVR02S6I5S8VR6SI2OUHANPRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/As/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5jL2llZgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c6eac505a50c1ad4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1609\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:55 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"298093499\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"63QSN6PUHOCHMVA177T0BFN113VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIkF0dHJpYnV0ZVR5cGUiOiJTIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJBdHRyaWJ1dGVUeXBlIjoiTiJ9LHsiQXR0cmlidXRlTmFtZSI6IlRpbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwODA2OTVFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkdsb2JhbFNlY29uZGFyeUluZGV4ZXMiOlt7IkluZGV4QXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMi9pbmRleC9nbG9iYWwiLCJJbmRleE5hbWUiOiJnbG9iYWwiLCJJbmRleFNpemVCeXRlcyI6MTE4LCJJbmRleFN0YXR1cyI6IkFDVElWRSIsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiUGxheWVyIiwiS2V5VHlwZSI6IkhBU0gifSx7IkF0dHJpYnV0ZU5hbWUiOiJUaW1lIiwiS2V5VHlwZSI6IlJBTkdFIn1dLCJQcm9qZWN0aW9uIjp7IlByb2plY3Rpb25UeXBlIjoiQUxMIn0sIlByb3Zpc2lvbmVkVGhyb3VnaHB1dCI6eyJOdW1iZXJPZkRlY3JlYXNlc1RvZGF5IjowLCJSZWFkQ2FwYWNpdHlVbml0cyI6NSwiV3JpdGVDYXBhY2l0eVVuaXRzIjo1fSwiV2FybVRocm91Z2hwdXQiOnsiUmVhZFVuaXRzUGVyU2Vjb25kIjo1LCJTdGF0dXMiOiJBQ1RJVkUiLCJXcml0ZVVuaXRzUGVyU2Vjb25kIjo1fX1dLCJJdGVtQ291bnQiOjEsIktleVNjaGVtYSI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJLZXlUeXBlIjoiSEFTSCJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIktleVR5cGUiOiJSQU5HRSJ9XSwiTG9jYWxTZWNvbmRhcnlJbmRleGVzIjpbeyJJbmRleEFybiI6ImFybjphd3M6ZHluYW1vZGI6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3Njp0YWJsZS9kb2NzdG9yZS10ZXN0LTIvaW5kZXgvbG9jYWwiLCJJbmRleE5hbWUiOiJsb2NhbCIsIkluZGV4U2l6ZUJ5dGVzIjoxMTgsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiR2FtZSIsIktleVR5cGUiOiJIQVNIIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJLZXlUeXBlIjoiUkFOR0UifV0sIlByb2plY3Rpb24iOnsiUHJvamVjdGlvblR5cGUiOiJBTEwifX1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMiIsIlRhYmxlSWQiOiIwZDRmOTk4My1kOGE5LTRhZjEtYTY0NC05YmE3M2NlMGYyMjciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTIiLCJUYWJsZVNpemVCeXRlcyI6MTE4LCJUYWJsZVN0YXR1cyI6IkFDVElWRSIsIldhcm1UaHJvdWdocHV0Ijp7IlJlYWRVbml0c1BlclNlY29uZCI6NSwiU3RhdHVzIjoiQUNUSVZFIiwiV3JpdGVVbml0c1BlclNlY29uZCI6NX19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"134e692f6dbad9ed\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"235\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2313410729\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GS6N6VFOP9NAC832GNU5P44ETNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTI1VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6InN0ZXBoIn0sIlNjb3JlIjp7Ik4iOiIyNCJ9LCJHYW1lIjp7IlMiOiJEYXlzIEdvbmUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiM2I0YTNlYjQtODI4MC00Mjk5LThiNWEtODQ2YTI1MzYyZjI4In19XSwiU2Nhbm5lZENvdW50IjoxfQ==\"\n      }\n    },\n    {\n      \"ID\": \"28011276d39aadd6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DIMQT0SS9D6PE5IBTVCDV41E5RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"21687709c0e23be7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NBI63D2IPL8UHJ04CIA614GVOVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"363906ce391aa082\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EHPPHNDIJ0TM72N74KNDKPRN47VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"2273746534e044c5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"326\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"747CNFG6TK50NBCEG6TFQPTVL3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"df16818ec81b3b14\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"326\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PH70HR6VLALIPFUGCJGLMIP047VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/AtomicWrites.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5BMVhvdAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"52897ae9a1122928\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EE9GGR45HP1RK1KTHVFDK2MJKBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"772e590a59b37b4a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"951\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2510641524\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DA5FHTNB4NFH30C5FDH7R8D977VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7IkIiOnsiQk9PTCI6dHJ1ZX0sIlN0Ijp7Ik5VTEwiOnRydWV9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7IlMiOiI0MmYxZjY5Ni0yNTM0LTRiZTgtODg3OC1lZmVkNzE3NTFjNTcifSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdENyZWF0ZVN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fSx7Im5hbWUiOnsiUyI6InRlc3RDcmVhdGVNYXAifSwiRXRhZyI6eyJTIjoiNWVhZDQxMDgtOWNiOC00YmE1LWExYzItNjNkMTQzOGZlODU2In0sImIiOnsiQk9PTCI6dHJ1ZX19LHsiRXRhZyI6eyJTIjoiMDkwYjAxYjUtOTIwOC00YWRlLTk4YWItZjkwMDZhYTE4ZjNjIn0sIm5hbWUiOnsiUyI6ImMxOGRmNDEzLTYyMzMtNGU1MS1hZDg4LTkzZWJjZmRjMzI1NCJ9LCJiIjp7IkJPT0wiOnRydWV9fSx7IkIiOnsiQk9PTCI6dHJ1ZX0sIlN0Ijp7Ik5VTEwiOnRydWV9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7IlMiOiIwOWRiZTM3Ny0yMzg2LTQzYzktYmEwNi02NjgwYjRjYTI1NzQifSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoiY2ZhZDUzM2MtZDJjNy00ZjEzLTg4NDgtYTE5NTg0NzNlZmY4In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19LHsiQiI6eyJCT09MIjp0cnVlfSwiU3QiOnsiTlVMTCI6dHJ1ZX0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiUyI6ImMyMDYyZDI3LWJlMWYtNDZmZC05ZTc2LTk3Njk0YjUxYzMzMCJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiIzMWNjZGU2YS0xZTFiLTRiN2UtYWE0Ni04ZjRmOTIyZjVhNTUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfX1dLCJTY2FubmVkQ291bnQiOjV9\"\n      }\n    },\n    {\n      \"ID\": \"61fbd92cd80fc8c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DIKS2DI1LTREK8F8S238M766LJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4e7589b8910bda2e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4MSKRJPOI6E1R33O2MCUC08ANNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"34e5b6f18de165dc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RBLDOMKR3BP0SEF3NJBHINQVRFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3327e57a92edfca3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9HDHURD0TV88KNTL3NFSLR88GJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"252f2340397d5b6c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FMPC0TRN442ECC92R44TVI26KVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"422148d5903fff49\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NUI1419BKFLVH2A3KURVEKOGQVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"55ac689d26edf0ec\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AC36MUOF4JNPQ01VTH9MMPTVANVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"92a86a1140d55361\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QDKH5UB8JG33OBOIACSBLNKJTBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5d540e46f1dbfba5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EIJQ5LB7QNNH32K0PC249TEHJNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ab3f54659f67ff55\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KQEKFJN26FCCA494MFRKITIIKJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6ee00e56c60169cb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2JM1RRRKAM5VP6BJVVR059C793VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e76fbc1fcb79ffca\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PESA7GAVQ2R1689OLG95OIL4NVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0554d5dd53398317\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"98VNJO5TR85DNRGDF7T519H0JVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8d026322d3b8fd70\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HE8U8J3VTJ1MAH59IA280M7R4NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"63760f9b09f6888c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"237\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LVO4O94T202IUM4KQ5CJ0AT8A7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8bf88582919c7ea9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"395\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3192331083\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"K9709N3E45KD98S5651J9PIR1NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI3MDMzZmM0MC03NTA3LTRiYzAtYjFjMC04MTIyMmMwMzk0ZjYifSwicyI6eyJTIjoiNCJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXMzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjRhNGRmZmZlLTZiN2ItNDExOC05YjMzLTQxYzQxNDRmMGZlMiJ9LCJzIjp7IlMiOiIzIn19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMjJlMzA5NTctYjExOS00ZjBhLTkyYjgtN2EyOTRmYmVlMTM3In0sInMiOnsiUyI6IjUifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"0298a253a8661ab8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"237\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VH0EQDUC6DPR9HNQO7437BH2BBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d017d305ce98aa28\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1183\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.TransactWriteItems\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"35FJ645LSJLET48TV21PMIMIU7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"175fb4a7388fab2e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"237\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RDOBBON900RCVSUQ1999QREVMBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"495c90e93d808d02\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2981132607\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NIBCBTKFL37HT10V99JFQE8BG7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJmNzY3ZTdlYi01MzQ1LTQzMjEtYTM0Ny1hYzQ1ODdiMGNmZGYifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczYifSwicyI6eyJTIjoiNjYifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"60c99364c5993756\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2197386901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TLFAVGJCV5QCDRB645BSHOBQHNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJjNGI5YTYyYy1mYzZjLTQ2ZDktOGM3Yi1mYTIyNWEwMTU4YmIifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczcifSwicyI6eyJTIjoiNzcifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"b07ee46289ef205f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1394891772\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6IRSFPQC8B3FEV2SO49VSF42ABVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI2NjU1MWI0NS1jZWY2LTRmYzEtYTY1OS1jYTQzODcxZDJjYzQifSwicyI6eyJTIjoiODgifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczgifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"be126c32f85d8ebd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0T2HI7HH0TMDV93GRDQHS5G9NJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"f991b4ab442cd2ae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"719\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"715888603\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UFAC0K8DV6BFBJUC4A2Q2E86C7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NiwiSXRlbXMiOlt7IkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjY2NTUxYjQ1LWNlZjYtNGZjMS1hNjU5LWNhNDM4NzFkMmNjNCJ9LCJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzOCJ9LCJzIjp7IlMiOiI4OCJ9fSx7IkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImM0YjlhNjJjLWZjNmMtNDZkOS04YzdiLWZhMjI1YTAxNThiYiJ9LCJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNyJ9LCJzIjp7IlMiOiI3NyJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjcwMzNmYzQwLTc1MDctNGJjMC1iMWMwLTgxMjIyYzAzOTRmNiJ9LCJzIjp7IlMiOiI0In19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMjJlMzA5NTctYjExOS00ZjBhLTkyYjgtN2EyOTRmYmVlMTM3In0sInMiOnsiUyI6IjUifX0seyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzMyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI0YTRkZmZmZS02YjdiLTQxMTgtOWIzMy00MWM0MTQ0ZjBmZTIifSwicyI6eyJTIjoiMyJ9fSx7IkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImY3NjdlN2ViLTUzNDUtNDMyMS1hMzQ3LWFjNDU4N2IwY2ZkZiJ9LCJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNiJ9LCJzIjp7IlMiOiI2NiJ9fV0sIlNjYW5uZWRDb3VudCI6Nn0=\"\n      }\n    },\n    {\n      \"ID\": \"31e2b33c406c5e82\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QN97LVPAE4MJEJLSVNML4QQBCFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ecbd5a915ab9103d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OI727N77509RK34MNF7UTBJ2V7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"40f55b1c389a4182\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B48I3AG38PQ90SHQBFPTCT4LTRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bbf678e759ff24ff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"957GH3FKQRC1RF00E119FN7GUVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b067e6e9b3ad91b9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M4F2B8DIIBURJTCFMM759A8NBVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d7fe57869bb1c16b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7QAOI5D8CKU71MQH0869FJDGBFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e1537be35852280d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JOQDTDDCT8Q51F4856BAMLHHCBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f42930d283edc9f7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H89S0V062C1FVLHU6JTJ0QBC4RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2090f2338517ebc2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H9S8GO2A81DEE0R89B18SASG8JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"17a69731dcc3595d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5OQGGQG4L33CPPFNU66VKN6G3JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bfed3e0ae19e5453\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"07JUC6E901K5JK75KBK1TOLMNBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"94b899fef29d1ad0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0DB2EE8DMFGNA5B894JNS4HUPFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ce29bd7eb378c5c1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3CEPGFSS84EPN6LQ14LNA4QTOJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c17baef5ad691c46\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"J0IVM128HIE26AC7I0CS29511NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"943773fbd0404b57\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0UHR5K19RBRKC9RQ0EJQATNGHFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"01f1571a655e6bbc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"359\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4018404801\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HF45K77O1KQDVLF2VOA6RVTRTRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNSJ9LCJFdGFnIjp7IlMiOiIyYmY0ZTZjNC1mYzlmLTQyMmQtODAxMi0wOTI3MjYyNWI0YzEifSwicyI6eyJTIjoiNSJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXMzIn0sIkV0YWciOnsiUyI6IjRiZjAxYzVkLWI5NTctNGNhOC04MjYyLTY4ZTk3MWI4NmJmNiJ9LCJzIjp7IlMiOiIzIn19LHsiRXRhZyI6eyJTIjoiN2YwODdiOGUtNjE5YS00MzMwLTk5ZWMtZjJkM2UwMDA1OGM1In0sIm5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM0In0sInMiOnsiUyI6IjQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"5f0afcfc12143de3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"10QDBH9SNENQ606374566839C3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4432cad6cbd1590d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8J79I5U6STC0MRGLR0SG1UOQDBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1b53ab46fb00ab62\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M09LT0N15N3175COGFT5AJ92Q7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"28f6b3e61b6c9d58\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1147\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.TransactWriteItems\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5HJ0T697BSFQNCNNPBL4OCD80RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3b4b908e405f7f46\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"158\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3988198299\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NS6CV587TG4P7G6VMJNIEQRMKFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJkODQ2M2VkNS05OWNmLTQwNzMtOGM5MC0wMDIzNDBkNGYwMGMifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczYifSwicyI6eyJTIjoiNjYifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"932e5c178a4aa53b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"158\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2318731546\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5L8TVVFTED38MRD1SHKHIPBTUVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNyJ9LCJFdGFnIjp7IlMiOiIxNTljNTcxYi03ODkyLTRmOWEtYmEyNC1hNTdlNTU3MWIwZjIifSwicyI6eyJTIjoiNzcifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"4759efd164263190\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"158\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:23 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2439273515\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GK588URJDKAV3L1VPE9RHTBBSBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJzIjp7IlMiOiI4OCJ9LCJFdGFnIjp7IlMiOiJiMWE0NGUxOC03MzE1LTRhYzgtOGM1OS04MGVmNjY4ZDM3OGYifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczgifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/AtomicWritesFail.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5EBMqE3QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f678798d5c35dd13\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EU6B5F8LKN7SD6GFHIF58PU9IRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"6ef30997f1005285\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"647\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2662735603\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7H6NPFIO0LR3RD2CNFEPJ1NMEJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NiwiSXRlbXMiOlt7IkV0YWciOnsiUyI6ImIxYTQ0ZTE4LTczMTUtNGFjOC04YzU5LTgwZWY2NjhkMzc4ZiJ9LCJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzOCJ9LCJzIjp7IlMiOiI4OCJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM3In0sIkV0YWciOnsiUyI6IjE1OWM1NzFiLTc4OTItNGY5YS1iYTI0LWE1N2U1NTcxYjBmMiJ9LCJzIjp7IlMiOiI3NyJ9fSx7IkV0YWciOnsiUyI6IjdmMDg3YjhlLTYxOWEtNDMzMC05OWVjLWYyZDNlMDAwNThjNSJ9LCJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNCJ9LCJzIjp7IlMiOiI0In19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczUifSwiRXRhZyI6eyJTIjoiMmJmNGU2YzQtZmM5Zi00MjJkLTgwMTItMDkyNzI2MjViNGMxIn0sInMiOnsiUyI6IjUifX0seyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzMyJ9LCJFdGFnIjp7IlMiOiI0YmYwMWM1ZC1iOTU3LTRjYTgtODI2Mi02OGU5NzFiODZiZjYifSwicyI6eyJTIjoiMyJ9fSx7IkV0YWciOnsiUyI6ImQ4NDYzZWQ1LTk5Y2YtNDA3My04YzkwLTAwMjM0MGQ0ZjAwYyJ9LCJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNiJ9LCJzIjp7IlMiOiI2NiJ9fV0sIlNjYW5uZWRDb3VudCI6Nn0=\"\n      }\n    },\n    {\n      \"ID\": \"e3755cacf848127a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JB3S0ODATHSDOBIFG3868FB2VFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5e7af10d4d217bcb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EGNQ3G5995SCP72JBSV5LH9327VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"15526b2c95ce9de1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2IP8ADDGFTQOSOFUQGQ628PR5VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"403074f002b614c6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"13V8M0RVJA6EO2T34KFLMR47OBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8730c59878f63bc0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NNPRBBPVVUJANPEAU60S5GMTDNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3eb94d552daf7f9a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RISR1RP2QQBU505ETTIKVS6IPFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1a30ef9d69782e18\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AUQO4NQ78OU90L3U0EG60CAPVBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"364261e212b44e14\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"31TUR5RL175SAU19QH11K606QRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"90890c84a0dc4344\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"D0A2CGT2S783FDHSL496J0R5DBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"00dbbfa8b435c768\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0D9TE7LFPAMOQNTJI26J15UGAVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"449a948a01335b46\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"02E26EN9V4KD8G6A6F30G8B4H7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"46b494a2ec4b0900\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RN7BJEUFKJRMPFOHPBNR12G5A3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b43d0632ae9daf41\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RBROOVPJA9GBCIOQSROHAAUABRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"31503e5a866515e5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B7T7VJ3P9FF43VFI9EKEOOGE1JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e7356f5179b6fe6f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"395\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:24 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2863734082\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"STH1FA1J5HD08BVL82DS4UECQ7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNSJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyMzYwMWQ2ZS1jZTVmLTQ0M2QtYjAxYy03N2YzNTExMmI2ZjgifSwicyI6eyJTIjoiNSJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjBjNDk4Mzc4LWUzNGQtNDEzNy04ZDRhLWQwYjBiNWQ1Y2I4ZSJ9LCJzIjp7IlMiOiI0In19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTBjOTVkNTgtY2M4ZS00NDRmLTk2YzctMTAzYzdlZWVlM2Y1In0sInMiOnsiUyI6IjMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"43401216315ae5d8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1159\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.TransactWriteItems\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"334\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2597991568\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8ATFI6GQ481K3UCIIM0P4KA4RVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNUcmFuc2FjdGlvbkNhbmNlbGVkRXhjZXB0aW9uIiwiQ2FuY2VsbGF0aW9uUmVhc29ucyI6W3siQ29kZSI6Ik5vbmUifSx7IkNvZGUiOiJOb25lIn0seyJDb2RlIjoiQ29uZGl0aW9uYWxDaGVja0ZhaWxlZCIsIk1lc3NhZ2UiOiJUaGUgY29uZGl0aW9uYWwgcmVxdWVzdCBmYWlsZWQifV0sIk1lc3NhZ2UiOiJUcmFuc2FjdGlvbiBjYW5jZWxsZWQsIHBsZWFzZSByZWZlciBjYW5jZWxsYXRpb24gcmVhc29ucyBmb3Igc3BlY2lmaWMgcmVhc29ucyBbTm9uZSwgTm9uZSwgQ29uZGl0aW9uYWxDaGVja0ZhaWxlZF0ifQ==\"\n      }\n    },\n    {\n      \"ID\": \"d6fad06b4db871c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"237\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CDBD9UGHKS9T1S4FBTP46ECD9JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"75b3d7a20f2b5920\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"237\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PBPQE37GU5Q977458GLHD9O1TJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"49cb3bb9185cd763\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"237\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AD5FFERLD8UU6S90BGMVNSU2L3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bc3a7d5f0e28cdeb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1204259765\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O83VA0AN8U5PDRH2VOFVPD32HVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNiJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIxNWE3YTdhMi01ZTk2LTQ0Y2ItOWJmNC0zZGFmZmIwYzg1ZTEifSwicyI6eyJTIjoiNiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"f4515ff4e3060834\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"328980544\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MGU1JJQUNMKKUT5H44TUIBDKERVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJzIjp7IlMiOiI3In0sIm5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM3In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjQ5MGM3N2RjLWQ3NGQtNDExYS1hZWIxLTdmNzAyM2Q0OTlkMSJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"af55f6f1fc7363e9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8S16660C2TERBL0UHC6US0KR63VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"8aa7f8e184c6890a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"603\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1413983119\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SLGCDCFKLU0D303QCBDI1GEEUBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM3In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjQ5MGM3N2RjLWQ3NGQtNDExYS1hZWIxLTdmNzAyM2Q0OTlkMSJ9LCJzIjp7IlMiOiI3In19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczQifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMGM0OTgzNzgtZTM0ZC00MTM3LThkNGEtZDBiMGI1ZDVjYjhlIn0sInMiOnsiUyI6IjQifX0seyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNSJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyMzYwMWQ2ZS1jZTVmLTQ0M2QtYjAxYy03N2YzNTExMmI2ZjgifSwicyI6eyJTIjoiNSJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXMzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImUwYzk1ZDU4LWNjOGUtNDQ0Zi05NmM3LTEwM2M3ZWVlZTNmNSJ9LCJzIjp7IlMiOiIzIn19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMTVhN2E3YTItNWU5Ni00NGNiLTliZjQtM2RhZmZiMGM4NWUxIn0sInMiOnsiUyI6IjYifX1dLCJTY2FubmVkQ291bnQiOjV9\"\n      }\n    },\n    {\n      \"ID\": \"84454e4f080e75d6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1FEPCJ5GNGFARFL0E2KCDT6JARVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cdce89fc17a606ef\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OHNOR8TTNVPRRMU9VNG9PD19TNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d7a733c0eac3b404\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P5FRMSJA3LSEVGKP1POOHPDR73VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f6d1c297e12114d4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PBKTG82AQF9OFQT2MAV62KPC2FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cc851ba319e86ea4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U5MGVGOTTMP2IQ3BPN9PG2IFQJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1d59b0c3b45bea8e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CD4A80389BMRKJRI3GJ3NKU2PJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6345f9e34e4b365f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JNTE16ET9DPNR1FR2MFU56HISBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9eca7007c4abfe77\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1I5U71EAQDRK7H14L9VL6N0QDNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ac78b473f04cec96\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SQR26LIPTUORD6O4FV2M9F3AIBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f8e593ee2379043d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1V9MSFQ6V0E7G91FT525NHT7AVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ada673fbe71d0e19\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ECET9T7P3R4VTK16G8291R6P6FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7f01e2f3cd1c3dd4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VBL5268K8H0T3VHJ874TKA5J27VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"90bab56bfe74d7c0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SK6DUUV42QPGU7CN8K9JVOMRH7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"52218ef71a6878f0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4KHHLQSPK8L3LM291Q3MP1DTSNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"26677fa289512fe6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"359\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4131564618\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GBDQVNB5DL5I9UG1DASDEQ4VOBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0QXRvbWljV3JpdGVzNCJ9LCJFdGFnIjp7IlMiOiJlOGVjNjBiYS01MWI4LTRjOTUtODIxNy0yMTYyZGQyNzBlMWEifSwicyI6eyJTIjoiNCJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXMzIn0sIkV0YWciOnsiUyI6IjlkZWI3NDE2LWFiMTQtNGFkNC1iYTYyLTJhODc0YzQwN2Y2OSJ9LCJzIjp7IlMiOiIzIn19LHsiRXRhZyI6eyJTIjoiNzYyY2RhZWYtZmMzYi00MTdkLTlhMDItYWNhMmJjZjhlYTMyIn0sIm5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM1In0sInMiOnsiUyI6IjUifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"9296139596fe0010\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QEAA8IJQKOE9VLHMR39QATLGHFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a6754e21aa1508aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.TransactWriteItems\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"334\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2597991568\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B204ENGJLPUU100FNE2JQ3E26JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNUcmFuc2FjdGlvbkNhbmNlbGVkRXhjZXB0aW9uIiwiQ2FuY2VsbGF0aW9uUmVhc29ucyI6W3siQ29kZSI6Ik5vbmUifSx7IkNvZGUiOiJOb25lIn0seyJDb2RlIjoiQ29uZGl0aW9uYWxDaGVja0ZhaWxlZCIsIk1lc3NhZ2UiOiJUaGUgY29uZGl0aW9uYWwgcmVxdWVzdCBmYWlsZWQifV0sIk1lc3NhZ2UiOiJUcmFuc2FjdGlvbiBjYW5jZWxsZWQsIHBsZWFzZSByZWZlciBjYW5jZWxsYXRpb24gcmVhc29ucyBmb3Igc3BlY2lmaWMgcmVhc29ucyBbTm9uZSwgTm9uZSwgQ29uZGl0aW9uYWxDaGVja0ZhaWxlZF0ifQ==\"\n      }\n    },\n    {\n      \"ID\": \"dd6ab1666c45e154\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"225\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T2FA0B17HC1IAQJFBOGG8IE3URVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e9966ca9a559bf3e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"157\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1409494987\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AE1R5UCKOK7FU163UK4AVC5IINVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiI3ODUzZGY5OC1lMDFjLTQ2NTMtYjU2Mi01NjNjNjU4NjM4NmUifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczYifSwicyI6eyJTIjoiNiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"62cb3af552c7cefd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"157\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"670681397\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JENHNR8P1SOK4MSU42PI4A7AHNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJzIjp7IlMiOiI3In0sIm5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM3In0sIkV0YWciOnsiUyI6ImUzYWUwYjQ2LTFjMzgtNGI1OC04YjEwLWI2MjVmM2YwMTBhZCJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/BeforeDo.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5hNLSZIAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1e1d4f67263f52e5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TP3GBRCSBIH0UIOT9E38JM3SEJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"dbaf677d3a092a49\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"J6H23V8O6EP41GKFIGCDCRJAARVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"6840035adabbfe7c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"159\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A4CF6FTCTA3RTIK1PCA2VUF9SBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"42e1e0cc4bb9f3c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0JJUQN821FE837JBFJVNQ34UQFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1ae65e1ff0233f55\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QQHFD1BQF8N7CRMCJDQFRJSCDJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7e32dc149dcdffa5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"J277J578TUMI7185OK1K5BV6IRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9e6a9a98196b3918\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3495001968\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UEP4O4HBI8FF7S8US8LUMDF3FRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJhIjp7Ik4iOiIxIn0sIm5hbWUiOnsiUyI6InRlc3RCZWZvcmVEbyJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"d335a01869d5fa81\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"67\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PNCQ5AAIQJGTEQA1E7I6N2AT5VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/BeforeQuery.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5iJDOmPQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"46c5b1baa4aca03d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KONPGJMNR302QLQTJUB20KKPBFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"639cd1f02766911e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4KFJ2PN36CNACDBICF90CONTMJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"36625b6a217a6a7d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:54 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2J860IMC3URN5QBUOBK7LHSV4JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Create.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg4/Erb5UgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fa59a73180f40592\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:19 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CDC6154RB1VPU7FM8TID133RNFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"932b0697c40d40ca\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:19 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3413411624\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"43P0J8HB5D9BLPU78L93GN2EAVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MCwiSXRlbXMiOltdLCJTY2FubmVkQ291bnQiOjB9\"\n      }\n    },\n    {\n      \"ID\": \"642b171f590282cc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:19 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IB7LMME5FQS7T8CQBCA85E57RFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1248fe83145642e1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2026506556\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JGCE83BIDC44HSOILVH4A9VAMNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0Q3JlYXRlTWFwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImY4NTZlZjkyLWI0YWUtNGNiYS05MGExLTBhZjM2Y2VmMmRiYiJ9LCJiIjp7IkJPT0wiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"6917535c25906a50\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"224\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6LNDG2T7H46A35UK6LNL8IP8QFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"eff26fa3c8fddc65\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"265\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KKPEQGTL2UIKMPVPSSOGJGU877VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c0447457e4f3e81d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1511552246\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NGBF7O9EGE843RMPLJG665CB8JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiI1NWZmNGQxZC03YTBiLTQyNDctYWYyZC03NzAzNGE0NzQ4M2EifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTJiMDM3MTctNjk4Mi00NTNhLWFlYjMtZWI0YjBjMmE3MzBjIn0sImIiOnsiQk9PTCI6dHJ1ZX19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"b80383e9a147f7b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KBDIHUHPNF0PNTO4UHDPFRIDSFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b682b90a9414fc27\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"272\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2160058582\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"85HD409A8JISALNKCNCFCNHU73VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdENyZWF0ZVN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI4MDNlZDlmYy00YmQ0LTQ4ZDktYWQ0MS0yZTY2YTNlMWFhNzMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"1e40d04d8994035e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"365\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DO6U8FQQPD13ICH5DE8DDDQUR7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"880aeceab2682cf7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3912119637\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FH21R8GA2K1TO7VK6UFOKKSHT3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoiYmE5M2I0MjItMjE2ZC00MzY3LWI1YTctYmJhY2QxM2EzZWNiIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjI0ZTM0MDhhLTgxYzgtNDA1Ny1iMTVmLTQ0OTM5NjljMmY1MyJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"33ba224e1bf28b20\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"365\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"R9V4FI5IRMDV6IT6LQPPUV68RRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a3758570355d1951\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3326581663\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CK7HECK8RSAB697AT3JRP4Q6S3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoiMGMwOTYyNWEtZjc1NC00Y2IxLTlmNDctNDY0NThjNjM0YTM2In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImRjM2U2MzRmLWU1MTMtNGFkYS05NjIwLTUyMmM0MmE5N2QxNCJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"032e81aa185ff6a8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AUTIBFMKL0M1L3E0UHD3H5LQGFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"505092375256adb3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"975\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"499635053\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U4UT54SHHSJ4MFVQTJSPR0SCS7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7IkIiOnsiQk9PTCI6dHJ1ZX0sIlN0Ijp7Ik5VTEwiOnRydWV9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0Q3JlYXRlU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjgwM2VkOWZjLTRiZDQtNDhkOS1hZDQxLTJlNjZhM2UxYWE3MyJ9fSx7IkIiOnsiQk9PTCI6dHJ1ZX0sIlN0Ijp7Ik5VTEwiOnRydWV9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJiYTkzYjQyMi0yMTZkLTQzNjctYjVhNy1iYmFjZDEzYTNlY2IifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMjRlMzQwOGEtODFjOC00MDU3LWIxNWYtNDQ5Mzk2OWMyZjUzIn19LHsiQiI6eyJCT09MIjp0cnVlfSwiU3QiOnsiTlVMTCI6dHJ1ZX0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6IjBjMDk2MjVhLWY3NTQtNGNiMS05ZjQ3LTQ2NDU4YzYzNGEzNiJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkYzNlNjM0Zi1lNTEzLTRhZGEtOTYyMC01MjJjNDJhOTdkMTQifX0seyJuYW1lIjp7IlMiOiJ0ZXN0Q3JlYXRlTWFwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImY4NTZlZjkyLWI0YWUtNGNiYS05MGExLTBhZjM2Y2VmMmRiYiJ9LCJiIjp7IkJPT0wiOnRydWV9fSx7Im5hbWUiOnsiUyI6IjU1ZmY0ZDFkLTdhMGItNDI0Ny1hZjJkLTc3MDM0YTQ3NDgzYSJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJlMmIwMzcxNy02OTgyLTQ1M2EtYWViMy1lYjRiMGMyYTczMGMifSwiYiI6eyJCT09MIjp0cnVlfX1dLCJTY2FubmVkQ291bnQiOjV9\"\n      }\n    },\n    {\n      \"ID\": \"b94c2e3f41b30a06\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8KA3F3SFF7N5KEMQ3RC67I545FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7f22f87b9794089d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T1ULSK2I6IBEV6481GB95LPUG3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b4fd355e19439a72\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:20 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6TAS3CKRFHR1G4PK611027J4GRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ef449a29232c619e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3UBH45V0JBK2MEDAT0CNOC6TFVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a68c46b5bed44da1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MDOHSLF9FLNRPG51263D8S1VARVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f73bf0807ef72b54\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"230\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AUVK38IPCN5DVDHIO6V0ROABLFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0b84cead5d79e4ee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"157\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"56146547\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ROR1HJC0B3S8O26R33PV03PRI7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0Q3JlYXRlTWFwIn0sIkV0YWciOnsiUyI6IjVlYWQ0MTA4LTljYjgtNGJhNS1hMWMyLTYzZDE0MzhmZTg1NiJ9LCJiIjp7IkJPT0wiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"36ca1161218fd64b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"212\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"S6CG5CQOHQ7LTMNQPCIA1HCQ03VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"872c8bc7f1b61d8d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"F2GLH7NIJN94DR8KO3P51GOG4NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3611c452c08e5eb0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"180\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3848711806\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A6V3BBG70UM4FJJ1CTL6QGB2L7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiIwOTBiMDFiNS05MjA4LTRhZGUtOThhYi1mOTAwNmFhMThmM2MifSwibmFtZSI6eyJTIjoiYzE4ZGY0MTMtNjIzMy00ZTUxLWFkODgtOTNlYmNmZGMzMjU0In0sImIiOnsiQk9PTCI6dHJ1ZX19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"20ec3a8f82746094\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TRJ8M49ODCCPPSJRSKF0MUKJ9VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a050517c2ba16f6b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"272\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3237927692\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6K7BH1QAUGF63SG6MKSL0O4UEVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiNDJmMWY2OTYtMjUzNC00YmU4LTg4NzgtZWZlZDcxNzUxYzU3In0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RDcmVhdGVTdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"8b4b7dd5327fdc24\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"365\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7NUFA9RMD4FV1TSSRSH6NP16ONVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"aceb13b33bafb412\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1509441268\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KH5RDKK5KHVEGK209FRRRLO65RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiMDlkYmUzNzctMjM4Ni00M2M5LWJhMDYtNjY4MGI0Y2EyNTc0In0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6ImNmYWQ1MzNjLWQyYzctNGYxMy04ODQ4LWExOTU4NDczZWZmOCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"7b5dd02d4ec789cb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"365\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DHUHOIN8H9O94DMAO9UIKPK3PNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5dd153c0fd3fb5fc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2765757098\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7SH12E5DBE2QGQFCDTB1B8G1E3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiYzIwNjJkMjctYmUxZi00NmZkLTllNzYtOTc2OTRiNTFjMzMwIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6IjMxY2NkZTZhLTFlMWItNGI3ZS1hYTQ2LThmNGY5MjJmNWE1NSJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Data.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5VLcTZoAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"91d9a6195471ceaf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TBOB3OTC2O0DP2VJRN377Q2CUNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"34237c0b8497590b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1393\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3803944647\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VSRDDISEJ4861AKN1SNBAPR4GNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoic3RyIn0sIlUiOnsiTiI6IjQifSwiRiI6eyJOIjoiMC41In0sIkV0YWciOnsiUyI6ImU5NGI0NzQ2LTEwZmYtNGQ2NS05MWYxLTk0NjBmZGZlMGE1MSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlU3RydWN0In19LHsiRXRhZyI6eyJTIjoiYTA0ZTM3Y2MtN2RkNy00ZjZkLWEzYjAtMjA5ZTVhZTI1ZDg0In0sIm5hbWUiOnsiUyI6InRlc3RSZXZpc2lvbk1hcCJ9LCJzIjp7IlMiOiJjIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJzdHIifSwiVSI6eyJOIjoiNCJ9LCJGIjp7Ik4iOiIwIn0sIkV0YWciOnsiUyI6ImRlNzA5OTFlLTcwYzQtNDRkOS05MWJiLWJhMDRiY2Y4NmU4ZiJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlU3RydWN0V3J0In19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJzdCJ9LCJVIjp7Ik4iOiI0In0sIkYiOnsiTiI6IjAuNSJ9LCJJIjp7Ik4iOiIxIn0sIkV0YWciOnsiUyI6ImQ0ODZjNjk1LTBiNzYtNDk4OS05NWQ3LWFkYzBlMjliYWRjYSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlU3RydWN0SW5jIn19LHsiYSI6eyJTIjoiQSJ9LCJpIjp7Ik4iOiIzLjUifSwiRXRhZyI6eyJTIjoiZTZjYWEzOGItZTA0ZS00NzQ0LWE5MjItOGJmMWM2MmI1MjdjIn0sIm0iOnsiTiI6IjMifSwibiI6eyJOIjoiMi41In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXBJbmMifX0seyJhIjp7IlMiOiJYIn0sIkV0YWciOnsiUyI6ImZlZWRjNzI0LWJkZTMtNDdjOS1iOGNmLTk2ODgwOWNlZDQzYiJ9LCJjIjp7IlMiOiJDIn0sIm0iOnsiTiI6IjMifSwibiI6eyJOIjoiMi41In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXAifX0seyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwicyI6eyJTIjoiYyJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7IlMiOiJjNzhiOTcyZS0zOWVhLTQxNjgtOTc0NS1hZTZlYTM2ODIzZDEifSwiTSI6eyJOVUxMIjp0cnVlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In19LHsiYSI6eyJTIjoiWCJ9LCJFdGFnIjp7IlMiOiI0Yzk5M2VhMy0wOGQxLTQxNzUtYmI0Mi0xMDdlMDkwNzZjZmEifSwibSI6eyJOIjoiMyJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlTWFwV3J0In19XSwiU2Nhbm5lZENvdW50Ijo4fQ==\"\n      }\n    },\n    {\n      \"ID\": \"ada77c79271d77ee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DHMKSELGQCMVIBCBFT0OVS8NN7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f56f6655159f54e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O6JURQDO90HQB5NAIJIIL6MHRJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8098b849ceb7abee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5JGVBH4LJSER45BGAPHICEDOCVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"83bbfb31111eaa80\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A3EI46I9DF9HLO01DGQRJOFGS7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"726632d6d09e4ef7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1HGGH04C5I6FMNFJQUVQ6NLHU3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"89f878fb4539e101\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I5SQ3JDG06RNNIHJJJCCJFCVVFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"468fa9190cd8eddb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DSJTHDP2HF9IIV0BKCMKCP5RNJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bc4898945f64a59d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HUQAN4DUUCJKH2SADEL4V5KVPBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5626d498dc6f9af2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GQJO84F2N9G74J6DK9STP29MP3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"31600099c3c39690\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3054047241\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O00G65GMSHNHSJ15IFLMRKPQSNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6Ii0xIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"d61313487cf463ae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"34SSIQM0KJSAS3CP9MLAFFJP73VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1529010637d3f623\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3121808892\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"44CFU0FEMGI5VPQ1OCV4OK9PJ3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6Ii04In19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"25426850effefe79\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GTOSG8MKDJ6O2ICE695MVL83BBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5a79cf19d1c3f962\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2455135972\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T583LNQRH406I1GPTQTBS4E9E7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6Ii0xNiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"2048829bfbd2d7f4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HE4L2E8D1DU6FTRD9RIV3HM57BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bfd09f21ea0df83b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1385046232\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LCENVH5E2TRC1M5PJT7G3063IJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6Ii0zMiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"90b547b2b5c39f02\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"E7BEJQB963GJ1FMF2TGJ1JQHDBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7f567f207933d499\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1666946403\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QGS8KRVJOAR630KSSOQA4FB7F7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6Ii02NCJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"8dffcfdf8b307a74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"80\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DRVPB30T6N4D9K14CRDAEAD6MFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"dbb6c3b8ab8258fc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"98\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2670645296\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PNFHFGMND9II0J4SFD2H35NIENVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6IjEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"4cb9179acab3bd21\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"80\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3KG1ML8GP8H5U06ACHNF9569LJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0b57347869a8263e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"98\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2469709253\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NEQRIB1R40SMDJJ33ONH5S6F83VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6IjgifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"9d350948f9cb6984\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CMVUMTKEFS5BIPK22NOF9PI7OJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e9d0b5ac6a15eba4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3447376172\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"V22QL19LVQEO2RBLO4O63COE67VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6IjE2In19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"2f7942be05dc16cd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4R63IAMU5EEARPGNTPNMRFO6KBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2fcacb4b87ea664a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"228757264\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"J3L6R4MN8EPD8PT1N1IL1R6LTBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6IjMyIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"6b8d30ae5090c7dc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EDU36BSMT5KTRCA4BUJOHCMA8JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"213a19455620589a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1014446763\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A60PERL8VA4U8JSIMRK3S91BIFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6IjY0In19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"3e930f4d0f856877\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VGHIH8C3PCH35HMTLTNS2G9PGFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"489a11b1d978de6f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2334279914\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JKO85UJ8F21U6I04SA7GQE6S53VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiTiI6IjMuNSJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"9620cd6999c183de\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"83\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OPFDNLD0HEF8REMP2TP317NUAJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ef051eff8e265b90\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"101\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"129752700\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"S3VA1FDFFO0IB2IS2K57JK4NQFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0RGF0YSJ9LCJ2YWwiOnsiQiI6IkFBRUMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Delete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5ONqHNVQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f3be7a0ad084dbdd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GVS3A55GOUU2FFR70AP127K3DJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"b8d1ad90c4aa8255\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1139\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2146937234\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"COKNVS57BANRATHDBSFG44HOSJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7ImkiOnsiTiI6Ijk1In0sIkV0YWciOnsiUyI6ImJlMGQyNDMzLTUyMzItNGZlYy1iZDk2LWQ4NDk5MmFmMTg1OSJ9LCJzIjp7IlMiOiJhIHN0cmluZyJ9LCJtIjp7Ik0iOnsiYSI6eyJTIjoib25lIn0sImIiOnsiUyI6InR3byJ9fX0sIm5hbWUiOnsiUyI6InRlc3RHZXRNYXBGUCJ9LCJmIjp7Ik4iOiIzMi4zIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJhIHN0cmluZyJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjMyLjMifSwiSSI6eyJOIjoiOTUifSwiRXRhZyI6eyJTIjoiOTU4Zjc5NjktZGM4OS00ZjMxLWI1MjktMTE1NGM2MmFhMDA2In0sIk0iOnsiTSI6eyJhIjp7IlMiOiJvbmUifSwiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldFN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSBzdHJpbmcifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIzMi4zIn0sIkkiOnsiTiI6Ijk1In0sIkV0YWciOnsiUyI6IjM0ZmUyYzVmLWQzY2YtNDM0MS1iZjFjLTM3M2JlMmI4OTc0OCJ9LCJNIjp7Ik0iOnsiYSI6eyJTIjoib25lIn0sImIiOnsiUyI6InR3byJ9fX0sIm5hbWUiOnsiUyI6InRlc3RHZXRTdHJ1Y3RXQyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fSx7ImkiOnsiTiI6Ijk1In0sIkV0YWciOnsiUyI6ImY3NDk4NDRmLTAyMDMtNDY0NS1iYTViLWMyOWY2YTlhZjdiYSJ9LCJzIjp7IlMiOiJhIHN0cmluZyJ9LCJtIjp7Ik0iOnsiYSI6eyJTIjoib25lIn0sImIiOnsiUyI6InR3byJ9fX0sIm5hbWUiOnsiUyI6InRlc3RHZXRNYXAifSwiZiI6eyJOIjoiMzIuMyJ9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSBzdHJpbmcifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIzMi4zIn0sIkkiOnsiTiI6Ijk1In0sIkV0YWciOnsiUyI6ImNmM2IzN2ZhLWI1NDYtNGY2Zi05MTUxLTZjOTk0NzZjZWE1ZSJ9LCJNIjp7Ik0iOnsiYSI6eyJTIjoib25lIn0sImIiOnsiUyI6InR3byJ9fX0sIm5hbWUiOnsiUyI6InRlc3RHZXRTdHJ1Y3RGUCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV0sIlNjYW5uZWRDb3VudCI6NX0=\"\n      }\n    },\n    {\n      \"ID\": \"594add21a6b542b8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IEP7RHVAS0GNAIC69R05DSFA9JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c341e50d0d3c1e5b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"67\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ATKBA0EORMPIBCBTMGDR61HF9BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"af19f1651a1138d9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TOGSUP435FLMHO9I7TAPADUF3JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9859a41e568f12e7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UV4BBQ0ISCMVT3U4CEBJ0QE65RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"60ac04f42dec5d1f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AGJLQR0C1SS7DK7AID1S30H167VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fe3e33ac1dbc4582\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"133\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1O88575N5ATVL981SMGRBE0CD7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f8f73558b4e4c33d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"233\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P6KRMIAER1S1GCR230K9EM0RHRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3544d1628745b481\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I1ATQ7KHD6F4LLD9AU8VRHG76NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"254711bfaf8b1938\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"151\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9QET8PC6J3NA97B09GPV1N658NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e830c3ba90d2d374\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"233\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RLMK6VNB6VJU98LEU46C1QUU1BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"91e75abaec8f60c6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"255\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:35 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A98N0LHSSCJ6R7J3G2K4SETRQFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8b76bb5177baeb70\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"236\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9A8IUCFP33JHR3F5J75PC7ES93VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4bde8649cebf46de\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RU7VUPM4BRKTOU6BMFIOFHB8SBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"a05a46710dd51c8c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"254\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UQ47C4SET9K87ILD47U46MEH83VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"121d477f87b820c2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"236\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PUBN5O12GBD4E0BQ8EA3T5FP4FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"dd738d8d6a31b8a9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"67\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BK6P53BKAEQ4IBTCM0EG4CHBPJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a19029f2653ddb07\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A1E658P00IP19TGMCIJ3JA990BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"decc0a1d3051e2fb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"367\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"540518252\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9JONF7RS9KN3A9Q24NN52357OJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3REZWxldGVNYXAifSwiYiI6eyJCT09MIjp0cnVlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMGI3Yjk1NjctN2FiNC00NGI1LWFjZmItZDFmZmRmMjJmY2VmIn19LHsiQiI6eyJCT09MIjp0cnVlfSwiU3QiOnsiTlVMTCI6dHJ1ZX0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3REZWxldGVTdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMGIyYTc4NmQtNzg1NS00MDVmLTg0ZjktYjZkZGQ2OTQ5OWU4In19XSwiU2Nhbm5lZENvdW50IjoyfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ec8352b0e42272b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"N5RI02DNNKRUI3TF0EK55SCVPJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"19b9e883423fa7b5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LEAIPDQJTJGUU619M2VT2KOU1FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"61f4562bd1fe0cd6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"121\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"48BUBAS78VAU51C3N1VMTD85CNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b6a56693bfea8ecd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"221\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0RKJS0I03TQ8E3SVQK81FB0MPBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8f9bc0c589bcdf6a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4EV0J2N3FAT2HV7JS8CIFFMA17VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"046ad86a84e5ee74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"139\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HVJ6079DUKB3QSVQ56VOV74N2VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0ddf15134a171a01\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"221\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GE71B4LV5VFGKRJTIT6QE2MUIBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"5dcee72fe5dbcb11\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"255\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O77O4KC7EBBAN92VH04FSR73K7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2ede07b147ebaa2c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"224\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ON1MNV17590IC1VVQOEE6AAC4RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"41495072024fd219\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BGHLE3Q6V4IJ3NQ3MD5R1HEHHFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"d80af00e3a35353f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"254\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FR2FUS2EUBS2GMR67VVQ7ROGFVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"87ba4b8a2a163908\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"224\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IK1NDS2FLDORI8LCJSPUCE139BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"d66c440066b70cdc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"67\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SPF2KSF0FSMH0AI24O4PENDGHJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/ExampleInDoc.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5hAtoolAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cb20e4d94841e2d1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TLCQPQ8EPJSLAO249B1ISPLO1VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"5354f6f482859b86\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"130\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2772784065\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SI8L2L3QK5MM29MK4OI3O0911VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7IkkiOnsiTiI6IjEifSwibmFtZSI6eyJTIjoicHV0YW5kdXBkYXRlIn19LHsiSSI6eyJOIjoiMCJ9LCJuYW1lIjp7IlMiOiJjcmVhdGVhbmRyZXBsYWNlIn19XSwiU2Nhbm5lZENvdW50IjoyfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0e14dd74962de63d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I1Q1RD7NS1OTFDS759NLQ9QBL7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2bbd9be649c57cd8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"67\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HI9ENVCSQJ176CL3ORQAS0V2C7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"177b0ac5391c12eb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"185\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4LO1DCC7G9RJ53UDOFE4VP5GTRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bfcc5f4de61cb37c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"282\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HBK1HA3VP6H6GJBI5C20T6S8JNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b1ca8e4e0aa16747\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"147\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"356\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"704779417\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NPMAD4E2LBQ61DLUCCN9DJ5JQFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJwdWJfeWVhcnMiOnsiTCI6W3siTiI6IjE5NjcifSx7Ik4iOiIxOTczIn1dfSwibmFtZSI6eyJTIjoiVGhlIE1hc3RlciBhbmQgTWFyZ2FyaXRhIn0sImF1dGhvciI6eyJNIjp7Ikxhc3QiOnsiUyI6IkJ1bGdha292In0sIkZpcnN0Ijp7IlMiOiJNaWtoYWlsIn19fX0seyJwdWJfeWVhcnMiOnsiTCI6W3siTiI6IjE5NjgifSx7Ik4iOiIxOTg3In1dfSwibmFtZSI6eyJTIjoiVGhlIEhlYXJ0IG9mIGEgRG9nIn0sImF1dGhvciI6eyJNIjp7Ikxhc3QiOnsiUyI6IkJ1bGdha292In0sIkZpcnN0Ijp7IlMiOiJNaWtoYWlsIn19fX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"91f54b235a28665a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"338\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2286982984\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5ME8HBH9MJ354EMKA16FKCLI43VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7InB1Yl95ZWFycyI6eyJMIjpbeyJOIjoiMTk2OCJ9LHsiTiI6IjE5ODcifV19LCJuYW1lIjp7IlMiOiJUaGUgSGVhcnQgb2YgYSBEb2cifSwiYXV0aG9yIjp7Ik0iOnsiTGFzdCI6eyJTIjoiQnVsZ2Frb3YifSwiRmlyc3QiOnsiUyI6Ik1pa2hhaWwifX19fSx7InB1Yl95ZWFycyI6eyJMIjpbeyJOIjoiMTk2NyJ9LHsiTiI6IjE5NzMifV19LCJuYW1lIjp7IlMiOiJUaGUgTWFzdGVyIGFuZCBNYXJnYXJpdGEifSwiYXV0aG9yIjp7Ik0iOnsiTGFzdCI6eyJTIjoiQnVsZ2Frb3YifSwiRmlyc3QiOnsiUyI6Ik1pa2hhaWwifX19fV0sIlNjYW5uZWRDb3VudCI6Mn0=\"\n      }\n    },\n    {\n      \"ID\": \"d0d973fa70dc86d8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P4RKEDST1T9QUHDTS39V6H829VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d23a192dd34a1ca1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"79\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2PUIHT9EH1RHCBRC4ROCMGE32JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Get.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5MIO46RAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4039759f598bf73f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FTLD9SDRVDJ58I1UL90VQM2GGJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"075d50e7833afbf7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"664\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2923777292\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HPSQF0CAO2BE3U58E9A9J45PGBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7IkV0YWciOnsiUyI6ImUyMjJjOTI2LTRjYmQtNDMwOC1iNDc2LTY3YjkxNjIyYTM5ZiJ9LCJuYW1lIjp7IlMiOiJ0ZXN0UmVwbGFjZU1hcCJ9LCJzIjp7IlMiOiJiIn19LHsibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uTWFwIn0sIkV0YWciOnsiUyI6ImNiZDgyMTBkLWVhMGItNDA3OS1iMTFjLTg1YTlkNzFiZmRmZiJ9LCJzIjp7IlMiOiJhIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJiIn0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiUyI6IjAyMGNjMzg1LTljOTMtNDFlZi1iOTUzLTFjMDUyYmEzZGNjMSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0UmVwbGFjZVN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7IlMiOiI0OGQxYThmZC00NWU1LTQ2M2MtOTNkOC04NWI1MDFmYjY0NmIifSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19XSwiU2Nhbm5lZENvdW50Ijo0fQ==\"\n      }\n    },\n    {\n      \"ID\": \"02a35c7208d5b871\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M4J2SEG2BFH3V1DKUCL84HDSQBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2f7983b4ff2b7775\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NTJA49QUOT5FT92Q86IROC6RGJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"60b0112086b67629\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3NAFUIODPQUUALPT3SE2KA9DVFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8f8745788c474ee9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"Q9FMON8P93KM011G2MM2SUIGQJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cddfc659336a16ff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"227\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DQBALSI2P2P45KEIVGEC68ERBNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8665dae76d84c8c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"245\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1497641603\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KMR0TANDAD42KR5RQ6PJ01PIGBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJpIjp7Ik4iOiI5NSJ9LCJzIjp7IlMiOiJhIHN0cmluZyJ9LCJtIjp7Ik0iOnsiYSI6eyJTIjoib25lIn0sImIiOnsiUyI6InR3byJ9fX0sIm5hbWUiOnsiUyI6InRlc3RHZXRNYXAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjRiZWJlZjEtOWM3NC00OWYwLTg4MWMtNGY3ODFhMzUzOWZiIn0sImYiOnsiTiI6IjMyLjMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"04d22949802dec83\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"285\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AO0TR6GPKPK1AS09ONG82CCVK3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e25dc3a0ee480ce2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"790745304\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O842SCNJ00HMLM7505IUGSQ6VVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEgc3RyaW5nIn0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMzIuMyJ9LCJJIjp7Ik4iOiI5NSJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik0iOnsiYSI6eyJTIjoib25lIn0sImIiOnsiUyI6InR3byJ9fX0sIm5hbWUiOnsiUyI6InRlc3RHZXRTdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZmIyNjE4YjQtOTNiZi00NDFmLWExY2UtZjJiYzFkYzM0ODFmIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"98d2cbb4cf49c1d4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"229\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QP4RNSM22LVVPR4JM835TT9LOJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"caa0537bf2cf202b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4095829345\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6U78HV8MCJ85SUCMHVA68F09I7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJmMWJjYTNjMS02M2I5LTQ2NGMtYWVlMS0wN2JmOGRiMDEzNWIifSwiZiI6eyJOIjoiMzIuMyJ9LCJtIjp7Ik0iOnsiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldE1hcEZQIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"6c95fba341d158b3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"287\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"D4QQ7H67SN01P558KRDVJKR75BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"45b9b872aa930612\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"238\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"203\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1881215191\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EM5LNIC33U5DG8BBK04FI7TMCNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIzZDYyNDgyYS1lNjA3LTRmYTMtOWIwZi1lY2UzMWJiODJmNzQifSwiTSI6eyJNIjp7ImEiOnsiUyI6Im9uZSJ9fX0sIlN0Ijp7IlMiOiJhIHN0cmluZyJ9LCJuYW1lIjp7IlMiOiJ0ZXN0R2V0U3RydWN0RlAifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"2b510ef93d35942f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"287\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PPQM3RNE5NRDSQ6PGLAC41T2HRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2b4b9897bc49cc80\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"210\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2845408016\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"64TUQPB1TK5CB57TIANLCKDUNNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0R2V0U3RydWN0V0MifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"6c88f1a945742fad\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"01Q0HG47IVEL69M71F26HKTV97VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"fc74793625a0b456\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AOAMOFL526H10TND7HLIA9QP03VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"ab67ddaff37412b3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1163\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2248801167\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"J6VA38MUSDME0QNGU5AS3KD4CVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7ImkiOnsiTiI6Ijk1In0sInMiOnsiUyI6ImEgc3RyaW5nIn0sIm0iOnsiTSI6eyJhIjp7IlMiOiJvbmUifSwiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldE1hcEZQIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImYxYmNhM2MxLTYzYjktNDY0Yy1hZWUxLTA3YmY4ZGIwMTM1YiJ9LCJmIjp7Ik4iOiIzMi4zIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJhIHN0cmluZyJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjMyLjMifSwiSSI6eyJOIjoiOTUifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJNIjp7ImEiOnsiUyI6Im9uZSJ9LCJiIjp7IlMiOiJ0d28ifX19LCJuYW1lIjp7IlMiOiJ0ZXN0R2V0U3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImZiMjYxOGI0LTkzYmYtNDQxZi1hMWNlLWYyYmMxZGMzNDgxZiJ9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSBzdHJpbmcifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIzMi4zIn0sIkkiOnsiTiI6Ijk1In0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTSI6eyJhIjp7IlMiOiJvbmUifSwiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldFN0cnVjdFdDIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjgyZDJjMzNmLTBmODYtNDE0NS04YmQyLThlMWI0YjdhZjlmMCJ9fSx7ImkiOnsiTiI6Ijk1In0sInMiOnsiUyI6ImEgc3RyaW5nIn0sIm0iOnsiTSI6eyJhIjp7IlMiOiJvbmUifSwiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldE1hcCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJmNGJlYmVmMS05Yzc0LTQ5ZjAtODgxYy00Zjc4MWEzNTM5ZmIifSwiZiI6eyJOIjoiMzIuMyJ9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSBzdHJpbmcifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIzMi4zIn0sIkkiOnsiTiI6Ijk1In0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTSI6eyJhIjp7IlMiOiJvbmUifSwiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldFN0cnVjdEZQIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjNkNjI0ODJhLWU2MDctNGZhMy05YjBmLWVjZTMxYmI4MmY3NCJ9fV0sIlNjYW5uZWRDb3VudCI6NX0=\"\n      }\n    },\n    {\n      \"ID\": \"f36e79316cb45207\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"444RPP51JKG02MBC05SCP6JJ23VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5c5ce0f122aaaaa8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"N71THINQIGF7NV4NLDJ5T1B8VJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"58bbf75fd7ae5d1b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2OL4SU64NTNF5NG33755FKJBOVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5958d9610f4d51f8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"67\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:33 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"34CAIRUD7BBH1A2P7TSG6HVG2VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a553bd80af3a112b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AGQHSF2UH6FMBIV8ILS7C8LHRNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0c4a5d1aa9c3cf73\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"215\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8NI3075844VSK46G4OV8QQ454FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a6830d5d3d01eeac\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"233\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"435471445\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8D37CNK3PU9RE1RRN4BCEMKHGBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJpIjp7Ik4iOiI5NSJ9LCJFdGFnIjp7IlMiOiJmNzQ5ODQ0Zi0wMjAzLTQ2NDUtYmE1Yi1jMjlmNmE5YWY3YmEifSwicyI6eyJTIjoiYSBzdHJpbmcifSwibSI6eyJNIjp7ImEiOnsiUyI6Im9uZSJ9LCJiIjp7IlMiOiJ0d28ifX19LCJuYW1lIjp7IlMiOiJ0ZXN0R2V0TWFwIn0sImYiOnsiTiI6IjMyLjMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"4cc0065f5a1d93e7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"285\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GICM5ECS05DFM5UK5C3A5I4B6BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bd7f4f526a2ee694\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"303\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1655920843\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MJM4N5K80T4H91PS8UKB2TTLJ7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEgc3RyaW5nIn0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMzIuMyJ9LCJJIjp7Ik4iOiI5NSJ9LCJFdGFnIjp7IlMiOiI5NThmNzk2OS1kYzg5LTRmMzEtYjUyOS0xMTU0YzYyYWEwMDYifSwiTSI6eyJNIjp7ImEiOnsiUyI6Im9uZSJ9LCJiIjp7IlMiOiJ0d28ifX19LCJuYW1lIjp7IlMiOiJ0ZXN0R2V0U3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"59f0f5c0dbcc9b46\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"217\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O4MMP0GUA3RMVFNH2NV4V4M6M7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1a08625b5b48b6ea\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"222\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3237943276\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"C4R8MCCDRD1ASU2HBMMCVSNOPNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJiZTBkMjQzMy01MjMyLTRmZWMtYmQ5Ni1kODQ5OTJhZjE4NTkifSwiZiI6eyJOIjoiMzIuMyJ9LCJtIjp7Ik0iOnsiYiI6eyJTIjoidHdvIn19fSwibmFtZSI6eyJTIjoidGVzdEdldE1hcEZQIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"c0900181266758b4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"287\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A6C6G6M2LS8L6FF8FS2531FQMRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bb7dfc539d160deb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"226\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"191\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1521370912\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UT2E84R9B9I604JLO7S9QRU8Q3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJjZjNiMzdmYS1iNTQ2LTRmNmYtOTE1MS02Yzk5NDc2Y2VhNWUifSwiTSI6eyJNIjp7ImEiOnsiUyI6Im9uZSJ9fX0sIlN0Ijp7IlMiOiJhIHN0cmluZyJ9LCJuYW1lIjp7IlMiOiJ0ZXN0R2V0U3RydWN0RlAifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"a5a9b8a39cdc5543\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"287\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GACBN81U91KA74HUHUEMRD4K57VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0277d516961ea9e2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"210\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2845408016\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2EAF17SQ5NFHB55SPO3I8CIRERVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0R2V0U3RydWN0V0MifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"acbfcb27fc9a4f2d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:34 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TKRVLOKDDJ3BUSRB22BAS6MJBBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/GetQuery.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5eDy18HgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2789f4a0b190ea5b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1609\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"298093499\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2B49R92DU1HVLQR0K0EMN4RG0RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIkF0dHJpYnV0ZVR5cGUiOiJTIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJBdHRyaWJ1dGVUeXBlIjoiTiJ9LHsiQXR0cmlidXRlTmFtZSI6IlRpbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwODA2OTVFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkdsb2JhbFNlY29uZGFyeUluZGV4ZXMiOlt7IkluZGV4QXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMi9pbmRleC9nbG9iYWwiLCJJbmRleE5hbWUiOiJnbG9iYWwiLCJJbmRleFNpemVCeXRlcyI6MTE4LCJJbmRleFN0YXR1cyI6IkFDVElWRSIsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiUGxheWVyIiwiS2V5VHlwZSI6IkhBU0gifSx7IkF0dHJpYnV0ZU5hbWUiOiJUaW1lIiwiS2V5VHlwZSI6IlJBTkdFIn1dLCJQcm9qZWN0aW9uIjp7IlByb2plY3Rpb25UeXBlIjoiQUxMIn0sIlByb3Zpc2lvbmVkVGhyb3VnaHB1dCI6eyJOdW1iZXJPZkRlY3JlYXNlc1RvZGF5IjowLCJSZWFkQ2FwYWNpdHlVbml0cyI6NSwiV3JpdGVDYXBhY2l0eVVuaXRzIjo1fSwiV2FybVRocm91Z2hwdXQiOnsiUmVhZFVuaXRzUGVyU2Vjb25kIjo1LCJTdGF0dXMiOiJBQ1RJVkUiLCJXcml0ZVVuaXRzUGVyU2Vjb25kIjo1fX1dLCJJdGVtQ291bnQiOjEsIktleVNjaGVtYSI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJLZXlUeXBlIjoiSEFTSCJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIktleVR5cGUiOiJSQU5HRSJ9XSwiTG9jYWxTZWNvbmRhcnlJbmRleGVzIjpbeyJJbmRleEFybiI6ImFybjphd3M6ZHluYW1vZGI6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3Njp0YWJsZS9kb2NzdG9yZS10ZXN0LTIvaW5kZXgvbG9jYWwiLCJJbmRleE5hbWUiOiJsb2NhbCIsIkluZGV4U2l6ZUJ5dGVzIjoxMTgsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiR2FtZSIsIktleVR5cGUiOiJIQVNIIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJLZXlUeXBlIjoiUkFOR0UifV0sIlByb2plY3Rpb24iOnsiUHJvamVjdGlvblR5cGUiOiJBTEwifX1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMiIsIlRhYmxlSWQiOiIwZDRmOTk4My1kOGE5LTRhZjEtYTY0NC05YmE3M2NlMGYyMjciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTIiLCJUYWJsZVNpemVCeXRlcyI6MTE4LCJUYWJsZVN0YXR1cyI6IkFDVElWRSIsIldhcm1UaHJvdWdocHV0Ijp7IlJlYWRVbml0c1BlclNlY29uZCI6NSwiU3RhdHVzIjoiQUNUSVZFIiwiV3JpdGVVbml0c1BlclNlY29uZCI6NX19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"58482e063d05bf04\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2784120019\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"503K4PDBK907S6MIFTGHKJ0AL3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTJmMjQyZTYtNDgxOS00Zjg1LWE4MmItMWQ3NjVmOTc1YmI2In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI4OWUzYWJiMy1hODk0LTQ5ZTItODZiNi0wZDIyNDgxYTAxYmMifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZWUwNmVkM2ItYjY1Yy00M2YyLTg1MjMtMDU3YWNlNzk0ZmYzIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjhjNWE2NTZjLTU4NGQtNDllMy1hNWQ3LWYwNWJjODMxMWU0NiJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiOWQ0MTI5NDktNmJjNS00NjU4LWExMTctNTYxYTM2MDc0NmU5In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI2ODU4MzJlMC0zMzRiLTRhMDItOTk4MC1hZmNjYjdhMWEyZmIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiYzAxM2FkN2EtOTcyYi00ZmJkLWE1MjQtNDNlNGQ0MjRmZTlhIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImNiYjk2ZjZjLWYyMDUtNGNkMC05YTM3LWRkN2NhNzk3Y2I2YiJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"bfa6cdc4e1dadf9e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"260\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OTUD1HD8JS2NA13836TD4TJGIVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"488ce5a7ccb0568c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QEO4RBHDDMK3MGEVNONM11N2VFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"db18e5a87acc5ff8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0F60DJEF3QNA4DQREKLAH73E2FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d86bd08fb2003402\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"261\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1LUNPCHP80KI805T5AURARUHJFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a5deeea32d46f1ae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"254\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2555OM3VVU8IP19BHQHAURTMHRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"55220892e4079400\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"260\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5QPGCHIGAV2DBGUUBB9PIEI98JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e6e1d60a3ac2b18d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4KAOCUHI5FF7BLLJS11LK3GU4RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"dc750acd78c5256c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"261\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"D313IQV3GL8O9EK5JI32TB9C2JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1b73ffae98780814\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"235\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3TA49BEUUQJO7HQJ2BIN8VU9JBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8b95d47984002619\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"238\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7AUDN92G0HR8DH4D4J2MMO28U7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2b3602183d0a950b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NJ4740TNEO5JD8P3TD067TT7AJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3225c0531e8c0ff0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"244\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"64N2UQVCKRKBTEL46H2VDTMD5BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"31581fe3d4a85e7f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"F69UUTUVK42Q47CJVR45MJF4QFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ea0b3c25040446df\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"244\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MP99KVB27VM93Q12F894I2239NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a428152df6a2842f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IV9JH2IJ0068772M9F6IQND2L3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8a6ea78f6b2c5f90\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DJ2BLCPMNC98C5SDSVPPV5ENGRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d0afb03c2fb1db06\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:50 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OE37F52NPTQNL0IC2251N33NEVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"84e886faf9196e66\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"184\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"827\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"860481882\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OB58IIJVTTBL28C1UJ4GLVLQCBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In0sIlBsYXllciI6eyJTIjoiYmlsbGllIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiIzMyJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjJkZDZlZDQ0LTgzMTctNDkyMS1iZGI0LTA5MzRhMDgxZGNkMiJ9LCJQbGF5ZXIiOnsiUyI6ImZyYW4ifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn0sIlBsYXllciI6eyJTIjoibWVsIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9fV0sIlNjYW5uZWRDb3VudCI6NH0=\"\n      }\n    },\n    {\n      \"ID\": \"c8eaca8515b9e708\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"172\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"630\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3761128761\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AOH1IC0U52Q6APEVELGLU3UBGVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xOFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjE5MCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImQ2YmVmOGY0LTVkMzEtNDdlYS04YTg0LThjYWRkODY3ZDZmZCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6dHJ1ZX0sIlRpbWUiOnsiUyI6IjIwMTktMDQtMDFUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiIxMjAifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJlYjcxZTJiYy1jZTQxLTRlMWItYWIwOC02YzU1ZWYwZDU2MDgifX1dLCJTY2FubmVkQ291bnQiOjh9\"\n      }\n    },\n    {\n      \"ID\": \"8cdafd3b54f721a5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"203\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"238\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2372657991\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"G1KMUGRAGU6KNIVGE3GUJ4GSVBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IlRpbWUiOnsiUyI6IjIwMTktMDQtMTBUMDA6MDA6MDBaIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiU2NvcmUiOnsiTiI6IjExMSJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19XSwiU2Nhbm5lZENvdW50IjoxfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d111ede4b7441771\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"241\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"244\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2573443467\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"C5DTKPOTCB40B13NB0TKA20JARVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiODEifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJmNDVkNGFjYi1mYzE0LTRkOGQtOThjZS03OWU1Y2Y0N2QxNWQifSwiUGxheWVyIjp7IlMiOiJhbmR5In19XSwiU2Nhbm5lZENvdW50IjoxfQ==\"\n      }\n    },\n    {\n      \"ID\": \"431139b32027344d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"64767550\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1A4T11078MPCEK3DJEL5C4UCABVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiU2NvcmUiOnsiTiI6IjQ5In0sIlBsYXllciI6eyJTIjoicGF0In0sIldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5ODc0OGFmNy01ZjFiLTRhNjQtYmVjOS03ZmMwZjFiZjc0MjEifSwiVGltZSI6eyJTIjoiMjAxOS0wMy0xM1QwMDowMDowMFoifX1dLCJTY2FubmVkQ291bnQiOjJ9\"\n      }\n    },\n    {\n      \"ID\": \"ac811cf7325aeb18\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"449\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"45676198\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DM08QH5BINDDPSVQAV0G09K0NFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImU2OTRmNzc2LTMyZTQtNGM5ZS05NjE2LWU0OWJlMTI5YWJiNCJ9LCJTY29yZSI6eyJOIjoiNjAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiUGxheWVyIjp7IlMiOiJhbmR5In0sIlRpbWUiOnsiUyI6IjIwMTktMDItMDFUMDA6MDA6MDBaIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn0sIlNjb3JlIjp7Ik4iOiI4MSJ9fV0sIlNjYW5uZWRDb3VudCI6Mn0=\"\n      }\n    },\n    {\n      \"ID\": \"c09c1a6a578c58b7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"262\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"439\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3791427149\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0ROL24946HCBU16R2DQHUDG587VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7IkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImU2OTRmNzc2LTMyZTQtNGM5ZS05NjE2LWU0OWJlMTI5YWJiNCJ9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiNjAifSwiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlBsYXllciI6eyJTIjoibWVsIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifX0seyJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkNmJlZjhmNC01ZDMxLTQ3ZWEtOGE4NC04Y2FkZDg2N2Q2ZmQifSwiU2NvcmUiOnsiTiI6IjE5MCJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn19XSwiU2Nhbm5lZENvdW50IjoyfQ==\"\n      }\n    },\n    {\n      \"ID\": \"20a8c08cd0a34546\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"639\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2062909809\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BKTUA231H8JKE2K7KTSV8JK847VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xOFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjE5MCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImQ2YmVmOGY0LTVkMzEtNDdlYS04YTg0LThjYWRkODY3ZDZmZCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiNjAifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJlNjk0Zjc3Ni0zMmU0LTRjOWUtOTYxNi1lNDliZTEyOWFiYjQifX1dLCJTY2FubmVkQ291bnQiOjh9\"\n      }\n    },\n    {\n      \"ID\": \"15907f563a347df5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"200\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"639\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2249627460\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HPMAG1F0PL37R2KGENGMCL3PABVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAzLTEzVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9LCJTY29yZSI6eyJOIjoiNDkifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5ODc0OGFmNy01ZjFiLTRhNjQtYmVjOS03ZmMwZjFiZjc0MjEifX1dLCJTY2FubmVkQ291bnQiOjh9\"\n      }\n    },\n    {\n      \"ID\": \"e6169ff768291ad0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1048\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3759705245\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RGU7J1QOK3MM77C6LDON64P7BBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAzLTIwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImZyYW4ifSwiU2NvcmUiOnsiTiI6IjMzIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMmRkNmVkNDQtODMxNy00OTIxLWJkYjQtMDkzNGEwODFkY2QyIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xOFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjE5MCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImQ2YmVmOGY0LTVkMzEtNDdlYS04YTg0LThjYWRkODY3ZDZmZCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19XSwiU2Nhbm5lZENvdW50Ijo4fQ==\"\n      }\n    },\n    {\n      \"ID\": \"e67d20f9bcb8373d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"179\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"430\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"799139171\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"O40FVRN7HISA17H35AQ6H2I3UBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6dHJ1ZX0sIlRpbWUiOnsiUyI6IjIwMTktMDQtMThUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoibWVsIn0sIlNjb3JlIjp7Ik4iOiIxOTAifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkNmJlZjhmNC01ZDMxLTQ3ZWEtOGE4NC04Y2FkZDg2N2Q2ZmQifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9LCJTY29yZSI6eyJOIjoiMTIwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZWI3MWUyYmMtY2U0MS00ZTFiLWFiMDgtNmM1NWVmMGQ1NjA4In19XSwiU2Nhbm5lZENvdW50Ijo4fQ==\"\n      }\n    },\n    {\n      \"ID\": \"23902c46a067285a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"182\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"430\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"799139171\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FBQL44UACD4V99V8GVCEQKD5TJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6dHJ1ZX0sIlRpbWUiOnsiUyI6IjIwMTktMDQtMThUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoibWVsIn0sIlNjb3JlIjp7Ik4iOiIxOTAifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkNmJlZjhmNC01ZDMxLTQ3ZWEtOGE4NC04Y2FkZDg2N2Q2ZmQifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9LCJTY29yZSI6eyJOIjoiMTIwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZWI3MWUyYmMtY2U0MS00ZTFiLWFiMDgtNmM1NWVmMGQ1NjA4In19XSwiU2Nhbm5lZENvdW50Ijo4fQ==\"\n      }\n    },\n    {\n      \"ID\": \"ddc6bec22f496f65\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"188\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1257\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2261849388\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"Q0N5UMMKK8KO5VIUDJCAJLOC6FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NiwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wMi0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJhbmR5In0sIlNjb3JlIjp7Ik4iOiI4MSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImY0NWQ0YWNiLWZjMTQtNGQ4ZC05OGNlLTc5ZTVjZjQ3ZDE1ZCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAzLTE5VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImZyYW4ifSwiU2NvcmUiOnsiTiI6IjMzIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZGVjMzg0YzUtNzNjMy00OTlhLWE2ZWYtODA5OWRkYWFjZjkwIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDQtMTBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoibWVsIn0sIlNjb3JlIjp7Ik4iOiI2MCJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImU2OTRmNzc2LTMyZTQtNGM5ZS05NjE2LWU0OWJlMTI5YWJiNCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAzLTEzVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9LCJTY29yZSI6eyJOIjoiNDkifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5ODc0OGFmNy01ZjFiLTRhNjQtYmVjOS03ZmMwZjFiZjc0MjEifX1dLCJTY2FubmVkQ291bnQiOjh9\"\n      }\n    },\n    {\n      \"ID\": \"ed63c05ca881954c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:51 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JFO0KO9VG06G2DVP0829BMK847VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"bbf4aad0621bb2e9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9DM9DF5QTLUACVJS75MRAEOM0RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"141060cb793fcdd5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"238\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"860\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2228028579\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P68UD06THQGS1GKLTQQL3PQK7RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiODEifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJmNDVkNGFjYi1mYzE0LTRkOGQtOThjZS03OWU1Y2Y0N2QxNWQifSwiUGxheWVyIjp7IlMiOiJhbmR5In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiIzMyJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImRlYzM4NGM1LTczYzMtNDk5YS1hNmVmLTgwOTlkZGFhY2Y5MCJ9LCJQbGF5ZXIiOnsiUyI6ImZyYW4ifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In0sIlBsYXllciI6eyJTIjoibWVsIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9fV0sIlNjYW5uZWRDb3VudCI6NH0=\"\n      }\n    },\n    {\n      \"ID\": \"597a69e94fb51e76\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"263\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"860\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"559360798\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P6PQKLT3PNNI0GM4IBF65FPRJ7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAzLTEzVDAwOjAwOjAwWiJ9LCJTY29yZSI6eyJOIjoiNDkifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5ODc0OGFmNy01ZjFiLTRhNjQtYmVjOS03ZmMwZjFiZjc0MjEifSwiUGxheWVyIjp7IlMiOiJwYXQifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In0sIlBsYXllciI6eyJTIjoibWVsIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlNjb3JlIjp7Ik4iOiIzMyJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImRlYzM4NGM1LTczYzMtNDk5YS1hNmVmLTgwOTlkZGFhY2Y5MCJ9LCJQbGF5ZXIiOnsiUyI6ImZyYW4ifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wMi0wMVQwMDowMDowMFoifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn0sIlBsYXllciI6eyJTIjoiYW5keSJ9fV0sIlNjYW5uZWRDb3VudCI6NH0=\"\n      }\n    },\n    {\n      \"ID\": \"ce6fc8b5582c1498\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"984\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2654593510\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FR2QI000G85K3GRLL8THKD1AUJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In0sIlBsYXllciI6eyJTIjoiYmlsbGllIn19LHsiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifSwiUGxheWVyIjp7IlMiOiJmcmFuIn19LHsiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkNmJlZjhmNC01ZDMxLTQ3ZWEtOGE4NC04Y2FkZDg2N2Q2ZmQifSwiUGxheWVyIjp7IlMiOiJtZWwifX0seyJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9LCJQbGF5ZXIiOnsiUyI6InBhdCJ9fSx7IkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn0sIlBsYXllciI6eyJTIjoiYW5keSJ9fSx7IkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZGVjMzg0YzUtNzNjMy00OTlhLWE2ZWYtODA5OWRkYWFjZjkwIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9fSx7IkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In0sIlBsYXllciI6eyJTIjoibWVsIn19LHsiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5ODc0OGFmNy01ZjFiLTRhNjQtYmVjOS03ZmMwZjFiZjc0MjEifSwiUGxheWVyIjp7IlMiOiJwYXQifX1dLCJTY2FubmVkQ291bnQiOjh9\"\n      }\n    },\n    {\n      \"ID\": \"6f49a076201be36e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"208\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1361\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2414249154\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GLOGL72KS5VJSVLRCGCE9KNKCBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IlBsYXllciI6eyJTIjoiYmlsbGllIn0sIldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIlNjb3JlIjp7Ik4iOiIxMTEifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiUGxheWVyIjp7IlMiOiJmcmFuIn0sIldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIlNjb3JlIjp7Ik4iOiIzMyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIlNjb3JlIjp7Ik4iOiIxOTAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiUGxheWVyIjp7IlMiOiJwYXQifSwiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJTY29yZSI6eyJOIjoiMTIwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IlBsYXllciI6eyJTIjoiYW5keSJ9LCJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJTY29yZSI6eyJOIjoiODEifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiUGxheWVyIjp7IlMiOiJmcmFuIn0sIldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIlNjb3JlIjp7Ik4iOiIzMyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJTY29yZSI6eyJOIjoiNjAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiUGxheWVyIjp7IlMiOiJwYXQifSwiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiU2NvcmUiOnsiTiI6IjQ5In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"20c97503d256948e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PJNVLKMFJ5R1SC87P2BGB5HVGJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"bd20f8b40a988f6c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UGV29VNR6SVRTLESGV0PUE37U7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"90af4ae4b9f2210f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ELIK0LO336B7JA7ON33LSJV5TBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"cea54f0118c49e66\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"J7M8BM83S3O3F4N01G71LFQ4JNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"46884b3028233115\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QH7R1RCH92B5AU2S6P8N6OKJ03VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"43a93f9d309bdde8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"D4QS4TI3CVN7KJBHD16PDTQTKFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"b91f820a8c034688\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U2VQUJ9RL9FS5V1FI5QR9PV6ENVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"6cb9a46aa22a6ae1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"E6DLMCFB9RQCQ1UESJHQSAM55RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"260e0a4e115f77af\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:52 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MU3OTKN5S4502JCAH21QAKJTORVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    },\n    {\n      \"ID\": \"79cc8f543adad74e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1649\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:53 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3539434770\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7B683E4AR03N0055BQ2PR9VR6NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTEwVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImJpbGxpZSJ9LCJTY29yZSI6eyJOIjoiMTExIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODNlN2MyMzYtOGUzMC00MzFjLWI4ZjQtZTIxN2VjZjgwZDA1In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMjBUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiWm9tYmllIERNViJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIyZGQ2ZWQ0NC04MzE3LTQ5MjEtYmRiNC0wOTM0YTA4MWRjZDIifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOnRydWV9LCJUaW1lIjp7IlMiOiIyMDE5LTA0LTE4VDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6Im1lbCJ9LCJTY29yZSI6eyJOIjoiMTkwIn0sIkdhbWUiOnsiUyI6IlpvbWJpZSBETVYifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZDZiZWY4ZjQtNWQzMS00N2VhLThhODQtOGNhZGQ4NjdkNmZkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjp0cnVlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0wMVQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJwYXQifSwiU2NvcmUiOnsiTiI6IjEyMCJ9LCJHYW1lIjp7IlMiOiJab21iaWUgRE1WIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImViNzFlMmJjLWNlNDEtNGUxYi1hYjA4LTZjNTVlZjBkNTYwOCJ9fSx7IldpdGhHbGl0Y2giOnsiQk9PTCI6ZmFsc2V9LCJUaW1lIjp7IlMiOiIyMDE5LTAyLTAxVDAwOjAwOjAwWiJ9LCJQbGF5ZXIiOnsiUyI6ImFuZHkifSwiU2NvcmUiOnsiTiI6IjgxIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjQ1ZDRhY2ItZmMxNC00ZDhkLTk4Y2UtNzllNWNmNDdkMTVkIn19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTlUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoiZnJhbiJ9LCJTY29yZSI6eyJOIjoiMzMifSwiR2FtZSI6eyJTIjoiUHJhaXNlIEFsbCBNb25zdGVycyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJkZWMzODRjNS03M2MzLTQ5OWEtYTZlZi04MDk5ZGRhYWNmOTAifX0seyJXaXRoR2xpdGNoIjp7IkJPT0wiOmZhbHNlfSwiVGltZSI6eyJTIjoiMjAxOS0wNC0xMFQwMDowMDowMFoifSwiUGxheWVyIjp7IlMiOiJtZWwifSwiU2NvcmUiOnsiTiI6IjYwIn0sIkdhbWUiOnsiUyI6IlByYWlzZSBBbGwgTW9uc3RlcnMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZTY5NGY3NzYtMzJlNC00YzllLTk2MTYtZTQ5YmUxMjlhYmI0In19LHsiV2l0aEdsaXRjaCI6eyJCT09MIjpmYWxzZX0sIlRpbWUiOnsiUyI6IjIwMTktMDMtMTNUMDA6MDA6MDBaIn0sIlBsYXllciI6eyJTIjoicGF0In0sIlNjb3JlIjp7Ik4iOiI0OSJ9LCJHYW1lIjp7IlMiOiJQcmFpc2UgQWxsIE1vbnN0ZXJzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk4NzQ4YWY3LTVmMWItNGE2NC1iZWM5LTdmYzBmMWJmNzQyMSJ9fV0sIlNjYW5uZWRDb3VudCI6OH0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/GetQueryKeyField.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5aNIWsTwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5ab4137211134bf5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"V8KKCL8JQNKM61OQFROH8T2USBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"ea4f9505de5dae3c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"699\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"148649085\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IQHVIN5PKJRTMV0J6TC4HBB39RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NiwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RVbm9yZGVyZWRBY3Rpb25zMyJ9LCJFdGFnIjp7IlMiOiI3ODc2OThmMC0xMTA2LTQwYzUtODkyMS1iZDJkMGMyNTQzY2YifSwicyI6eyJTIjoiMyJ9fSx7IkV0YWciOnsiUyI6ImM2YTAwMTIxLTFhNGEtNGU5NC05MTFhLWU5OTYwZDQ2MGRkZiJ9LCJzIjp7IlMiOiI4In0sIm4iOnsiTiI6Ii0xIn0sIm5hbWUiOnsiUyI6InRlc3RVbm9yZGVyZWRBY3Rpb25zOCJ9fSx7Im5hbWUiOnsiUyI6InRlc3RVbm9yZGVyZWRBY3Rpb25zNCJ9LCJFdGFnIjp7IlMiOiI1OTgyOTkzMC1lODBlLTRjNjEtOWIzNy0zYmM1NDcyYjMwMDQifSwicyI6eyJTIjoiNCJ9fSx7IkV0YWciOnsiUyI6ImU1NzczYWM0LWIxNzMtNDk0NS05YTQ0LTczYmZiNjAxYmQxOCJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczcifSwicyI6eyJTIjoiNycifX0seyJFdGFnIjp7IlMiOiI4ZWYxMWUwMy1iNzgyLTQzM2QtOTYwYi0xYzc2MzgzZDVjYWEifSwicyI6eyJTIjoiNicifSwibiI6eyJOIjoiMSJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczYifX0seyJFdGFnIjp7IlMiOiI5NzZjNDA0Ny1kZjg5LTQzNDYtYmI5MC1iYjA1YTk0NzA4MWUifSwibmFtZSI6eyJTIjoidGVzdFVub3JkZXJlZEFjdGlvbnM1In0sInMiOnsiUyI6IjUifX1dLCJTY2FubmVkQ291bnQiOjZ9\"\n      }\n    },\n    {\n      \"ID\": \"80cdfdc49d015771\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U0P4B5BPON9ROTGJHEKPTJII67VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3da44ef8dd617527\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"Q27AG2DJBHDHB0SS06ABFB1M5BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"215120a4b12b9a11\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6TC0CJNE4511PU1163R8A39TL3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"77aae39ba8209c03\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I3FCKKO1RT96Q89IGV75E07DJVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8f8dc14c20125edc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DQHCC55Q32B0POK6SFE12PTKR3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8f58f4e74547f2c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0H3MEE0R4AD5P6PG7P6SDNQNDRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c539ffbcf0dc742b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DFMNFCHUSODVU57A85Q8ORTNVVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a695fe6821000136\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"142\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1G53IN00U2HOPU5CGDBD36CBL3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7c519d2763ad2f03\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5IS5KCNJPN39CI1SNTHNQMM6CVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"05a644bdf7860077\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"242\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"714858241\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"C6L8IUF16IBBJI1H102BLL13TBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7ImEiOnsiUyI6Im9uZSJ9LCJuYW1lIjp7IlMiOiJxa2YxIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjA2MTM3MmQyLTc2MWEtNDQ2ZS05NzM3LWVhMTE0MTYwZTFiMCJ9fSx7ImEiOnsiUyI6InR3byJ9LCJuYW1lIjp7IlMiOiJxa2YyIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImYyMzA1ZTA5LTQ3YmYtNGIyOC1iNWU5LTMzYjVmNGUzZjBhOSJ9fV0sIlNjYW5uZWRDb3VudCI6M30=\"\n      }\n    },\n    {\n      \"ID\": \"289d065ed614ec7b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"346\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"66401451\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"L99A8JEK11POBF3T8BC7J9587JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7ImEiOnsiUyI6Im9uZSJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIwNjEzNzJkMi03NjFhLTQ0NmUtOTczNy1lYTExNDE2MGUxYjAifSwibmFtZSI6eyJTIjoicWtmMSJ9fSx7ImEiOnsiUyI6InRocmVlIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImNjMzI0ZjQ1LWM0OGQtNDdjMy1iNWEyLTk2NjhlMjBlNzYxNSJ9LCJuYW1lIjp7IlMiOiJxa2YzIn19LHsiYSI6eyJTIjoidHdvIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImYyMzA1ZTA5LTQ3YmYtNGIyOC1iNWU5LTMzYjVmNGUzZjBhOSJ9LCJuYW1lIjp7IlMiOiJxa2YyIn19XSwiU2Nhbm5lZENvdW50IjozfQ==\"\n      }\n    },\n    {\n      \"ID\": \"588bd5f4385c1346\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MM7G32RGII52R0PBBFMIOBU06VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"774c6305374f82cc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"346\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2665486194\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"684N7KO28QKCA36R8J2EG3BPTRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7ImEiOnsiUyI6Im9uZSJ9LCJuYW1lIjp7IlMiOiJxa2YxIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjA2MTM3MmQyLTc2MWEtNDQ2ZS05NzM3LWVhMTE0MTYwZTFiMCJ9fSx7ImEiOnsiUyI6InRocmVlIn0sIm5hbWUiOnsiUyI6InFrZjMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiY2MzMjRmNDUtYzQ4ZC00N2MzLWI1YTItOTY2OGUyMGU3NjE1In19LHsiYSI6eyJTIjoidHdvIn0sIm5hbWUiOnsiUyI6InFrZjIifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjIzMDVlMDktNDdiZi00YjI4LWI1ZTktMzNiNWY0ZTNmMGE5In19XSwiU2Nhbm5lZENvdW50IjozfQ==\"\n      }\n    },\n    {\n      \"ID\": \"acfff54c76695b10\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2JP1SB92MBCKR35KGGE606NV1JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a132ed2850f92af5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H7FH76FLLT1B3EELFLTFQ8U63JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9a9802db2d193b5f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0SFQNMM8J3UC9PT24Q6EB4QH5JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ba95855d369f69a3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"130\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"C13CT4UP2E43QRUUE6IPN8JRJ3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6301bc24b18626f7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"128\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:47 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PV475TCV5BFIBU9PUKCGCH6O3VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6424f819a1cf416b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"128\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6400CDVRM4NE92D6QJ2HG48A7FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"dfb912942e82e745\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"218\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2971846369\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RQP4M8RIOTJ3HFP8JP9DVAJT3NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7ImEiOnsiUyI6Im9uZSJ9LCJuYW1lIjp7IlMiOiJxa2YxIn0sIkV0YWciOnsiUyI6ImNjMGM2MzhiLTI0ZDAtNDQ5Zi05OGY1LTIyYzkzMzFhMjE1ZiJ9fSx7ImEiOnsiUyI6InR3byJ9LCJuYW1lIjp7IlMiOiJxa2YyIn0sIkV0YWciOnsiUyI6IjQ2MDY2M2NjLWY2ZGYtNGM3Ny04MTViLWI2MzNlNzEzNDE1OCJ9fV0sIlNjYW5uZWRDb3VudCI6M30=\"\n      }\n    },\n    {\n      \"ID\": \"27b6a8d707b25d51\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"151\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"310\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"218945175\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"N35AN2PHBVNVP4IL76D7I4LE9JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7ImEiOnsiUyI6Im9uZSJ9LCJFdGFnIjp7IlMiOiJjYzBjNjM4Yi0yNGQwLTQ0OWYtOThmNS0yMmM5MzMxYTIxNWYifSwibmFtZSI6eyJTIjoicWtmMSJ9fSx7ImEiOnsiUyI6InRocmVlIn0sIkV0YWciOnsiUyI6IjUzZWIzMmIyLWYwMDktNGFmMy1iYzQ2LWQwYTdmZjY3NDdlYyJ9LCJuYW1lIjp7IlMiOiJxa2YzIn19LHsiYSI6eyJTIjoidHdvIn0sIkV0YWciOnsiUyI6IjQ2MDY2M2NjLWY2ZGYtNGM3Ny04MTViLWI2MzNlNzEzNDE1OCJ9LCJuYW1lIjp7IlMiOiJxa2YyIn19XSwiU2Nhbm5lZENvdW50IjozfQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/MultipleActions.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5YIHECJwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"74bbe0f0d441112b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I3QJ8G9B3RMBD65LTEOGJI9IGVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"7cb2cc3af38754a8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4219194470\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U77SF9CDJ5R2JIHBLTUT2I8I8NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IlB0clRvUHJvdG8iOnsiQiI6IkNDcz0ifSwibmFtZSI6eyJTIjoidGVzdGluZyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5N2E0NDZmZi0yZWE3LTQ1ZTUtYjJjMi0wMjVkYWMzOTUyYjIifSwiUHJvdG8iOnsiQiI6IkNDbz0ifX1dLCJTY2FubmVkQ291bnQiOjF9\"\n      }\n    },\n    {\n      \"ID\": \"9da1c5e82b5b8379\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"227\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AHDSGIHGPJ8O7KKJ1LEHJ3S0E7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9eafac0c26f093e5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QLBBI88QC27AO8QE13T9IK3GDNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c56b0bbbc600d55a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0ACLFQODL7N7CE5N3H6O4NR1RFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fb337fb3943f888c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1OKB843QD7C8IOFAJC11GK8RGJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b9b85353f3ace821\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H9TC5O4CBB9REBN5PAMD5ITSKNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f7eb06052edd85c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TKO7GOIVD44K7UC5M6215LHBP3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0b5a15a376222ef5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HC9F6LT2CL380PKLSAFQA9S73NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4bf29a5dfe4ccfb0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5KISMABRNEEISECLDD1OHSJGKJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0d69953620df3486\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"320\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6H2HPM8PIN7B849C77PN6R6GIVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"95ebc9e3c4ba6288\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"320\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5TG9N01K3KM8DTUND2OQVCUV7FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"57d9811535daa587\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"320\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A23HM9TPA7FV1DOA2LOKB66BMVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0737818cd8943c7c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CQBMCOVGCGST5LTSKCAMBV5OD7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4efebcd9a282f7e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"EB8E96170BPNQ67OVOB9Q5DVJRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cd8da3dc5cbc9c2b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DRH6739965CH8QC68C7FQ16I1VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b3d0c940dfe998e4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OHFMB2OUP80UGQV8LDE8S2QTAJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6ed74f1244042597\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4DJF977B63UJ67UQF3BHOJIPPJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7acc3ac989840b34\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"362\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U5KGLH74MA9AOUHUR6RRG8JIUJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bbd0a69b07d0bc3d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"186\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"407\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3654482066\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"V8UCRAGBQ07OGONOHE0FQ21J77VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMDEyODIyYmUtY2E4Ny00ZTJmLThiZmEtOTVlNzRmZjU5OGE3In0sInMiOnsiUyI6IjMifX0seyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiODdlMmFkNTctYmNmYS00ZDQxLWJlNjEtNWIwMjVjMDJiM2IxIn0sInMiOnsiUyI6IjUifX0seyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczQifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiNzVjMDhiZjYtY2U4Ny00N2ZmLWE5NjItZTdiMjY5YjU0MTcwIn0sInMiOnsiUyI6IjQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"92ab9f349467d4d2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"360\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"R6V8E3K9ADKDRUDA6PKMK0OVERVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"83026d6dfde67d28\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"241\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T5Q97DTR62C4PS1K0P102BA9ANVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"32aae811138f1a69\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"241\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"L3OCC5O1715943DKIBJIBE7R4NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fe7b824af3e7bf05\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"241\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8IT670RTKIKGDHPN6RGRRHM5AJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"dff0966738651a95\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"395\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UHSC0K7JIH5Q3G1VU6638CUCUBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f07bb9b313a9a202\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"108\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3C018QK0C46NA0O8VGK579VODFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"34ba5aa95994bcce\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"186\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3418236683\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9Q27TMCJ14MB0AKKVIS9RHO60BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczMifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMDEyODIyYmUtY2E4Ny00ZTJmLThiZmEtOTVlNzRmZjU5OGE3In0sInMiOnsiUyI6IjMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"28fc9ffaeddee068\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RGBKKC4C4QD6IT1FVM04J1E287VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"0f6599850c405b5b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"320\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"V2LG8JCKAIR9V9PQPQ8PKDVCTBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"15d650adf7aae93b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PR9OBDRFIGC1EMIUL6IJUPA68RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"afaebdc88c3c8ddf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A15G5Q2L1QQ8LK1L26O8KAGRG3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"0520767707599e7c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"771\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3930045769\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"55LT4SV88DP94MO3KR4GN8NFURVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NiwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RVbm9yZGVyZWRBY3Rpb25zMyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIwMTI4MjJiZS1jYTg3LTRlMmYtOGJmYS05NWU3NGZmNTk4YTcifSwicyI6eyJTIjoiMyJ9fSx7InMiOnsiUyI6IjgifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiYTNiNzc5N2EtMDZkNC00MGZiLWI2NDktOGRjMDVlNjVlOGY2In0sIm4iOnsiTiI6Ii0xIn0sIm5hbWUiOnsiUyI6InRlc3RVbm9yZGVyZWRBY3Rpb25zOCJ9fSx7Im5hbWUiOnsiUyI6InRlc3RVbm9yZGVyZWRBY3Rpb25zNCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI3NWMwOGJmNi1jZTg3LTQ3ZmYtYTk2Mi1lN2IyNjliNTQxNzAifSwicyI6eyJTIjoiNCJ9fSx7IkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjcwZjZhMzg4LTM3ZmItNDQyNC05NmFkLTczNjMzMTI0MmY4MSJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczcifSwicyI6eyJTIjoiNycifX0seyJzIjp7IlMiOiI2JyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJlYTZmNGQ1YS03MjEwLTRmM2ItODM0MC0xN2YyYjllNTI3ZWEifSwibiI6eyJOIjoiMSJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczYifX0seyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczUifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiNTRiZDcyMjItODJiOC00Nzg4LThlZjMtODM0MzllZTBhNGM0In0sInMiOnsiUyI6IjUifX1dLCJTY2FubmVkQ291bnQiOjZ9\"\n      }\n    },\n    {\n      \"ID\": \"b122d25d68e32143\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ST1KSMU17O58GRTBEIVVEE42N7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7847cbdd68b2bf20\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"II5LLOMC6IOLMP6QTDE4OUVHPBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"19d7e5433431d01d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MINU0V8B999BV2C3B3NOMOM0QNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9b0c14c7eb56606a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KD30N7J44CH7GUVB0BUDSE7I1NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"08ffbe91da36b2d4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"88V5CLKKMCHQH49FUHQ147VQCRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bace5902ec40c2fc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"76P40JBFDRL5H9NTHHTB4ST2B3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7cd266cd0d176efa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NPKJ5BG0T80R7J0I3FCECAVHOJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f8afd1a1f2df845d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6QV07K826MH7RMCR53QMN3TU5JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e27ed62340045970\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UKCGEI7L13DE7AF2S3D67K1CSJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7e8dec346d7c16fd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5J6P37OD9TBE1CNJICQKLEDCURVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4293ab76231ac012\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"32V2I5H5TFPIGBOSGQOIHFRAQNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"da91b1c3982652e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"URJ24HG6GVAEHI4D4CU4K2N40FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9e833c3200a95f8c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"297\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5D2DDT6197OTOEUQQ7E1DTRADFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"02c7c1ac950c972a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"143\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9U1CJ758KQFAFANNUDMAKE02JNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d1f8f8c03752578d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U26GK6084VK78BQBQ8MKE7PD33VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c6435cf2a2ff1741\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"297\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TJN894NU21THPBQS8NGEGACE0VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6fd86dd9d3d5a018\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"143\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"Q26047IL713UIET5H86A207DG7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"64fe2458a90f2989\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"143\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UUOB9SM2ND44INRV65MF46KS6NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1f22340a53133a2c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7SACVHBH8VMU2007SNEVH7T7GNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4c935168c03c86d1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SVPDUGA0QQ7H5I9CV6HB5HFIO7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e0e8522780a22130\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"297\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"12R9F1EKA5VK66NTNOA49ERHM3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5db2580cebe108f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"186\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"371\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2376893110\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"A966SBFO1PUIU3PUFODG4MBI67VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiIyYzBmMWFmNy05YjM2LTRmZTItOWVkMC00N2QyZWFmZTM1ZTMifSwibmFtZSI6eyJTIjoidGVzdFVub3JkZXJlZEFjdGlvbnM1In0sInMiOnsiUyI6IjUifX0seyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczMifSwiRXRhZyI6eyJTIjoiNzg3Njk4ZjAtMTEwNi00MGM1LTg5MjEtYmQyZDBjMjU0M2NmIn0sInMiOnsiUyI6IjMifX0seyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczQifSwiRXRhZyI6eyJTIjoiNTk4Mjk5MzAtZTgwZS00YzYxLTliMzctM2JjNTQ3MmIzMDA0In0sInMiOnsiUyI6IjQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"e8fdd6ec075a2374\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FJV7AEFJRTS4986SLD3FV4G9OJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ba1eb1d912f999ca\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"229\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3SHTT54I1DELSECO9Q5SM9SBE3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4eb218d197f3dd16\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"229\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7K8531UGND2RJSEK70NMGSAF0FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1d434e7d3e30801b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"229\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FVFJ5P2BJTGEKC58504DBN00EFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b8d68dd43a6ddbde\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"383\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SMC15UCC3ON6I01NB78SKTV5TNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"35d2d7b33f76a47f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"348\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0V7UQR7C3LTP61HC4V37N39U93VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4b2fe7ff68e184b8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"108\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"57\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"289144682\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"035UUPS4MGFRHVCLOE99PDS07JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbXX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"cf3cd5806fb536c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"186\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"161\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3663147691\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BUOD82PUVMAV2T1EG6C1CLO3R3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0VW5vcmRlcmVkQWN0aW9uczMifSwiRXRhZyI6eyJTIjoiNzg3Njk4ZjAtMTEwNi00MGM1LTg5MjEtYmQyZDBjMjU0M2NmIn0sInMiOnsiUyI6IjMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"cf7a283e6123b220\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GFBRI4A9KH9H42S7C4BGK7DS1NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0d6381d5699b08b9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"234\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B076IVGLNRF88LVUJFOFVUD0D3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"648befef19cc4ce3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"76\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3IFCHM6J1OFNGJO7OCTG8GPQ7RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Proto.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5YAwiTkwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"656cd1c5192fce09\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RS06DTIU5P17CT1BERD3VEAO0RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"06323819984e5a76\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"83\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1006067942\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P5GB099DMLF11SG41M3GALB8HRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3REYXRhIn0sInZhbCI6eyJCIjoiQUFFQyJ9fV0sIlNjYW5uZWRDb3VudCI6MX0=\"\n      }\n    },\n    {\n      \"ID\": \"7f56f365b103ea8c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"63\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BI4QMKHG8MFDPDUML9S03HFFLJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f9b2e5493d6771bb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"265\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6T9AC8PPSJT3V3RTB1R16505V3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"29c51cdaecea6d1b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4219194470\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"77H4CPM5K05KE22KRSQ0G90B3NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MSwiSXRlbXMiOlt7IlB0clRvUHJvdG8iOnsiQiI6IkNDcz0ifSwibmFtZSI6eyJTIjoidGVzdGluZyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI5N2E0NDZmZi0yZWE3LTQ1ZTUtYjJjMi0wMjVkYWMzOTUyYjIifSwiUHJvdG8iOnsiQiI6IkNDbz0ifX1dLCJTY2FubmVkQ291bnQiOjF9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Put.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5GDv7krQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b2455ac12931cdd6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0NPEQMG92UOCB1AFTJSQS3RIJJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"25acf4f57bd7dc52\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"543\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2464606679\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TPSQUHNLR8NH85H87MOB3R45SBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NSwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM3In0sIkV0YWciOnsiUyI6ImUzYWUwYjQ2LTFjMzgtNGI1OC04YjEwLWI2MjVmM2YwMTBhZCJ9LCJzIjp7IlMiOiI3In19LHsibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczQifSwiRXRhZyI6eyJTIjoiZThlYzYwYmEtNTFiOC00Yzk1LTgyMTctMjE2MmRkMjcwZTFhIn0sInMiOnsiUyI6IjQifX0seyJFdGFnIjp7IlMiOiI3NjJjZGFlZi1mYzNiLTQxN2QtOWEwMi1hY2EyYmNmOGVhMzIifSwibmFtZSI6eyJTIjoidGVzdEF0b21pY1dyaXRlczUifSwicyI6eyJTIjoiNSJ9fSx7Im5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXMzIn0sIkV0YWciOnsiUyI6IjlkZWI3NDE2LWFiMTQtNGFkNC1iYTYyLTJhODc0YzQwN2Y2OSJ9LCJzIjp7IlMiOiIzIn19LHsiRXRhZyI6eyJTIjoiNzg1M2RmOTgtZTAxYy00NjUzLWI1NjItNTYzYzY1ODYzODZlIn0sIm5hbWUiOnsiUyI6InRlc3RBdG9taWNXcml0ZXM2In0sInMiOnsiUyI6IjYifX1dLCJTY2FubmVkQ291bnQiOjV9\"\n      }\n    },\n    {\n      \"ID\": \"18aa11c6c6583a6b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T2EEBFVABAQNHPEJKN6BHO68I3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ef478295803853fa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KNLD2F2RNFEUSB71VG028000A3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f9e5b59da0ddd915\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6MKCBRVNJ1VTHH41TO1LD4EL5RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"aa1770eb5ac33557\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T93TC3TRPI7V5S4SNJ7AP2ATT7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3ace23b52c8c507c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VP6OE0JG4QK3O5VKJBAS3JMM27VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"14572ef80de8155e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"148\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AE4H1IPK89L44ND3NBHL9RMHLJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7327cf51735ce635\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"249884785\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0L6RUHK2TVN8NUIC3C248GB2GFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UHV0TWFwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjlkNDM0MTRkLTYzOWEtNDZkMy1iYjlmLTgxMDdiMjJhYzBjNCJ9LCJiIjp7IkJPT0wiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"694a4e453f603f43\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OOKO2A5VH42KJ0UQ56EV0KQQEJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b0378858c12865ff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"269\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3040759825\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LTSQ0UIOFMRUN962Q4R0L43HPNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFB1dFN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI4NmU2YzgwOC01MWVjLTQ1MjUtODE0MS04NzJlYzdlMzJlZTIifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"b083c4727a9d23fb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"149\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PA11BMJ5P8PNU1G5GU5S2AIOBBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"10c4a590cc04a183\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3826599646\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UTEJAVFEN1JUIME3NT8229DB3VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UHV0TWFwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjY1ODlkNzQ0LTU2ZWMtNDVjZC05OTM5LTBmNTM3MjkyZWEyNiJ9LCJiIjp7IkJPT0wiOmZhbHNlfX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"d69ccbb716b80ee5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4JLRPLO9MKI9QNM9JKQKD9ORFFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ced650ba06484837\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"270\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3232736\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BKV0543U9P578A8I3J1T8LC15FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiTlVMTCI6dHJ1ZX0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RQdXRTdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiNjE3MzNlYmEtMTBjOS00Mzg2LWIzZTgtNDEzYWE2Yzk5ZjEyIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"7e011c54e0969702\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AGR6G6BTLA82MEC0JO66PT2P7NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"45312ed6e8a719da\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"449\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GA6EE1CCIMNB8Q0OCVMJ2PU7FJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"f803d7077947d7bc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"149\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"INSE56DC25OSOQ5HMLCQ70CQF7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5e742ef1bdb367cd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2364481117\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QT3CI79QIVGELQ117GF3QPMG5JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25NYXAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiYjUyNThiYzEtNWU1Mi00OWVmLThiYWQtNjYxNTBjY2ZmNmU3In0sInMiOnsiUyI6ImEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"1643a571ae5d6d93\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"314\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MU28JIE3LO2GA8T0550JHQV96JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"88b854ac3ecb3898\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"314\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M48CRLE07SPEK94M3IKR7ATS0RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"8dbb49fe68de5f15\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NUDGI1E3531SE1SHBP8Q6VR3SJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"482dd71d20116fcd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"105\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"271\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1943678074\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KAUJ3J3VGGTN63QRF51N556V0VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImMyODRlNWY4LWIxNjMtNDk1NS05YTIxLTNhMjAzYTI3ODI1NiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"31744d9f9ab58942\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"418\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LJLPURHIT4CFNGF3S4795EUUGRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"1ad717467cc576f6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"418\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:27 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UDO6SLVMR2PPLCSNJ0Q93VS1EFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"03fb14bc7325f8bf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M7O0M5VVL901JNF4BTR3OVHPPBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"eb6631035c551ce0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"689\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3916281896\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JCKGABAD2V13V0USF336B54MSFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RSZXZpc2lvbk1hcCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJmMTI1ZDczYy1kODZiLTQ4NmEtOGE2OS1kYjkzMTFjZTU0MTcifSwicyI6eyJTIjoiYSJ9fSx7Im5hbWUiOnsiUyI6InRlc3RQdXRNYXAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiNjU4OWQ3NDQtNTZlYy00NWNkLTk5MzktMGY1MzcyOTJlYTI2In0sImIiOnsiQk9PTCI6ZmFsc2V9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25TdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiYjQzMGNhMzktZTM3OS00OWZhLTllNmQtN2M1YTA5OGNmNWRhIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7Ik5VTEwiOnRydWV9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0UHV0U3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjYxNzMzZWJhLTEwYzktNDM4Ni1iM2U4LTQxM2FhNmM5OWYxMiJ9fV0sIlNjYW5uZWRDb3VudCI6NH0=\"\n      }\n    },\n    {\n      \"ID\": \"2cb4f4a115723431\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VIC1N6G50Q938GCEA57B30T8E3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6b02fe666e0500eb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0M87D4878IDLU93QEVNUKIAUONVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2c6300b319031870\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1C9P66TJJ629B6MAPV9QV49RN7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fcb634b30af447e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BLFTQ95AGN7EP4DFVD2E2DSS6NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3d2a5f7eb2027e12\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"136\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UUD89KLNV6B4UU80O6ALAH05TNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b7ae0a550e7dfd7e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"154\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1989041707\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PHNVM4M6OE01J3IQ5CG9ONKB1RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UHV0TWFwIn0sIkV0YWciOnsiUyI6ImViYzE0Y2M4LTliMjUtNGJiNS04NmY4LTA2MmYwZDQyNDY4ZSJ9LCJiIjp7IkJPT0wiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"857fd7e10875d7f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7NE70MM0713R72NVU8H698ON1VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a8aff42eff54fc31\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"269\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2542374577\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"KMEJ2455QC0ODLUG9RRG67DTU7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOnRydWV9LCJTdCI6eyJOVUxMIjp0cnVlfSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiOWE2MjRlMjItYWQzNy00YzE1LTk4MWUtODY0YjFkNGVkNzI2In0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RQdXRTdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"4cf8eb02b7f97031\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"137\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TK75C3UJRLS8E9M7PR3OATO2UVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d9ede524ade1743f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2888745477\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6DQLSI2NDPUBCLDU4P717EJM17VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UHV0TWFwIn0sIkV0YWciOnsiUyI6Ijg1YWE2OWVlLTdkM2YtNGY1Zi04NmRmLTlmNzNjNjg1NWFiYyJ9LCJiIjp7IkJPT0wiOmZhbHNlfX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"13d9ba96613a2b0f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DJ183HM9OHK0M7SV1ER6VS7RM3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"76bd1ac55a041ca4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"270\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1552192523\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DM7CUHSI2NH99U3VLJU6FEA5UNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiTlVMTCI6dHJ1ZX0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiUyI6IjJmYTcyNDExLWI0ODUtNDMxNy1hOGE1LWMzN2UxNDhiNzQ0ZSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0UHV0U3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"a0acd22c886a0066\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"272\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RHCN729VB42BV4M7HC6JKBKBRNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"cdf7c93515f252f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:28 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NPD2V13L51N3I7663DVIVQ5TM7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"e460efc99a3cb6b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"137\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"10MV3Q2RQS5LL83NME217SJ4RRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b974e08d5577427a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"596753964\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AQUFJ4LRIV65LAQTMDIPKVGO8NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJmMDU2YTA1My0zMGQ4LTQ0MjEtYjcwNC0wZWZkMDhjNzc1NWMifSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uTWFwIn0sInMiOnsiUyI6ImEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"c75fd2c9c8a44082\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"290\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1AKU21A3ONNGG782PFATI44VS7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"74f7c15e543e2522\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"290\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NITGE1CN55UCUHPVC0LK11HUGNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"3c6a8e72241cbf79\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4KH0HGIKH61TQA2N3F6AE1B9Q3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"02c749427f027db7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"105\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"271\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2498238133\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QI3VB95CVURO071KNVTO8FERDVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiMmI0YjY2NWItMTkyOS00ZWU4LThhM2ItYzg3ODRkOTc5ZjkzIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RSZXZpc2lvblN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"831c8aed579152f5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"406\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OENN3EL8DR33TQDEQ3P9RETP7JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e0d34c669f98706d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"406\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"93PGJU80KSTOACVGE42OQ5M60BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Replace.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5JIoa+DwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b242f7cc66bf1a26\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"09NSJ080720Q9BE8PLD85LJP93VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"50a7c849b4dd46d0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"665\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1639290065\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BIMITSE6AGUCAC21JO27UD4O73VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7IkV0YWciOnsiUyI6IjljMWI2NzBjLTUzZGEtNDJhNS1hOGNjLWM1ZGU2YmM5MGZkNiJ9LCJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25NYXAifSwicyI6eyJTIjoiYSJ9fSx7Im5hbWUiOnsiUyI6InRlc3RQdXRNYXAifSwiRXRhZyI6eyJTIjoiODVhYTY5ZWUtN2QzZi00ZjVmLTg2ZGYtOWY3M2M2ODU1YWJjIn0sImIiOnsiQk9PTCI6ZmFsc2V9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7IlMiOiJiNDVhM2M2Mi01N2I1LTQ0MWYtOGYyZS00YTQxNjQxNzlmZWMifSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7Ik5VTEwiOnRydWV9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7IlMiOiIyZmE3MjQxMS1iNDg1LTQzMTctYThhNS1jMzdlMTQ4Yjc0NGUifSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFB1dFN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV0sIlNjYW5uZWRDb3VudCI6NH0=\"\n      }\n    },\n    {\n      \"ID\": \"413ef4a4c0cd2d0a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"R0A96HODLPL9GE7IKUINOSA14RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7e6f4e248f901aa4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:29 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QBQLD8QQDQIV9SC0RBUTBSAONRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8400e6cb857626e4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H9J7PBOS9EH7F86V2D62D8HK6RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c9e91db79133089c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"76IFNENG1TGOHMH0OC622GA7JJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"16c99d11cb404514\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"148\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BOIS3RUR38S93E0LC06M0E58E3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0fb7b840cde7b193\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"235\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CQ0QTD473OHEG4IV7BK55K22PNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9b71b3d400404951\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"101\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2661063232\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"316R8LP93M1IPCQEBOV0UHCVK3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UmVwbGFjZU1hcCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiJiOTJjYzVkYy01MmY3LTQ2NjAtYjFkOS0xY2M5M2M1MjVhOTYifSwicyI6eyJTIjoiYiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"ebad217fa43e716d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"AKT93G0RI4B06KIKRT073EJESFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2b061830d4b9ef16\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"339\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"982DOJPVP65KPV4BTQ1Q7M7S3BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e5145ad1c7693d48\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"270\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1915621502\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"I5PCBT1C4SCPNUQC2OBGE9CEFRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImIifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJlcGxhY2VTdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiZjUyYzczM2ItOWI5Yi00ZTk0LTllMGItMjBmMDFlYjhhZDlkIn19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"f103dc37dd6a8bdc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7PRS9B05B2V2OBDR83QCV0P06VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"9180ee4e6487bc6f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"149\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MF9G83B5GG19VLUM2SRM99GTI3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9f051ba4afb88952\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2928140717\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NQLM66M3TMIL31MKDFLMTQJ42FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25NYXAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiNTlhMzk2NTItNzQ5Ny00NGFiLWFjYTQtNGVmZTFjZTgyNWIyIn0sInMiOnsiUyI6ImEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"0ca46660f32ff5dd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"314\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5SR2AEUK9OA3ALC1JQ7OKTOT2JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f654ad47d47f6695\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"314\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DKBMAGR3ENL82B75B3M53QDMKJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"973314d958356bc1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DQ6OJH0U4JMDRK3S433UPT01R7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"4dbba57b99daa9a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"105\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"271\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"957767178\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SPIJJB4M0HBJKSA49Q8U2AB38FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjE4MDRmZGNkLTNhZDQtNDU3ZS04MjBiLThlNDQ3YTM3NWVhNyJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"b4aa261bd591cd83\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"418\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:30 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"GDPPIKE83H2O9RV4G1J2U5P667VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2a1d9ed2635f95b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"418\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VGFGMVH83PVUV44D3D80MKEU73VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"0f0a7d3dfe3eaec3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"94P1NIA9T189SGOHOHCIPMNJPVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"2f49535f2ae65323\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"688\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"649338559\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DOLCJGMP43JEJDIMKOL5JVGRLVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6NCwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3RSZXBsYWNlTWFwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImI5MmNjNWRjLTUyZjctNDY2MC1iMWQ5LTFjYzkzYzUyNWE5NiJ9LCJzIjp7IlMiOiJiIn19LHsibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uTWFwIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImY4YTA1N2NmLWE1OTMtNGNhNi1iMTUzLTg1MjRjNzU5MjdiZSJ9LCJzIjp7IlMiOiJhIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJiIn0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RSZXBsYWNlU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6ImY1MmM3MzNiLTliOWItNGU5NC05ZTBiLTIwZjAxZWI4YWQ5ZCJ9fSx7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoiYSJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25TdHJ1Y3QifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMWNhMjRhZGYtNjE5My00NGU5LWI3MmMtMDc1M2U4NWYwOGE3In19XSwiU2Nhbm5lZENvdW50Ijo0fQ==\"\n      }\n    },\n    {\n      \"ID\": \"fded72eee26f7462\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"09P8T162CKOQSNT7SEISQVDTKFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c65ecb97237fbc3e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5C1M3V2HVK9C67E7R0H0OGDJ0BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b10b7ad0f7a23310\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CBPJHI3RI90Q5ULDHV6BLTQ3HVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a3963b13ebb81b2b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"T635BBST99D2UCPNTTMBTBERD3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"65e3a31f16e46723\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"136\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IF8GOFV98HE2IFEGIP0B2JEUANVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3f7c6e37f4852336\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"223\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6QR7IR10UNNBMHOBI5FCA0MULNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3eb37ba1a56e2028\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"101\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"154\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3035621950\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QRTQO16CPCCV9RSQLAR20EP05RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJlMjIyYzkyNi00Y2JkLTQzMDgtYjQ3Ni02N2I5MTYyMmEzOWYifSwibmFtZSI6eyJTIjoidGVzdFJlcGxhY2VNYXAifSwicyI6eyJTIjoiYiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"d3c526004d45ede2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"60JORGPO478TDE2U5UFVGG8M37VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ee53248b667122d3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"339\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"79M0TKVFDJVCCL44OOLJ71UBIBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"962550842e3d317d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"104\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"270\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"240382745\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VAI2UK75M040351STJ708VV4EVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImIifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiMDIwY2MzODUtOWM5My00MWVmLWI5NTMtMWMwNTJiYTNkY2MxIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RSZXBsYWNlU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19XX0sIlVucHJvY2Vzc2VkS2V5cyI6e319\"\n      }\n    },\n    {\n      \"ID\": \"70cbc5645bc5c73a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:31 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RND6PRSPG81G7GDCALE8EOAMVJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"5df318f681d2bcdc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"137\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"09DTHKLEIRN8ESSEBT2C3O5VPVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"57b9fe45cc489063\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3252174522\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P30CH30M49NRVNQ66AR5UM2L1JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25NYXAifSwiRXRhZyI6eyJTIjoiYmE0ODA5MGQtOGUyMy00ODU5LTg5ZDMtNGNhMDJmYTUyMGM3In0sInMiOnsiUyI6ImEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"9c50ede85d177289\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"290\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OTRAMJQF3C6T8687HPP6C5C83VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cbcb218022b82664\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"290\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FP2QLNBBIU01O1RUUQET77CSSBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"f80951303dfec4c0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FI6OSTR740ICURH2OEO6DKFOQ7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7672328cb15513f7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"105\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"271\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2698108496\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9U33QS6N4TN6E64MRA873J31VRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiMmJjMjg5MGUtMTE4OC00MThmLWI5MTUtMWIzOWRjYmVjMzZjIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RSZXZpc2lvblN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"b1bf3763c1888fe4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"406\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B9FFPOLLVPK787K4BPKQO7FT5JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f45b946f916a4d74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"406\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:32 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FKQUK8KUAM9JBJ2EQI9GL7RMSJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/SerializeRevision.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5cDtnpQwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ff1d858cc1f884b6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0S65EM704HO5SH5FLQ8BUF9617VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"a93fd8cfdc0a00f0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"310\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2791681388\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"422LSCC6UHL5CGA7PPUHHVQTBFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MywiSXRlbXMiOlt7ImEiOnsiUyI6Im9uZSJ9LCJuYW1lIjp7IlMiOiJxa2YxIn0sIkV0YWciOnsiUyI6ImNjMGM2MzhiLTI0ZDAtNDQ5Zi05OGY1LTIyYzkzMzFhMjE1ZiJ9fSx7ImEiOnsiUyI6InRocmVlIn0sIm5hbWUiOnsiUyI6InFrZjMifSwiRXRhZyI6eyJTIjoiNTNlYjMyYjItZjAwOS00YWYzLWJjNDYtZDBhN2ZmNjc0N2VjIn19LHsiYSI6eyJTIjoidHdvIn0sIm5hbWUiOnsiUyI6InFrZjIifSwiRXRhZyI6eyJTIjoiNDYwNjYzY2MtZjZkZi00Yzc3LTgxNWItYjYzM2U3MTM0MTU4In19XSwiU2Nhbm5lZENvdW50IjozfQ==\"\n      }\n    },\n    {\n      \"ID\": \"13c25f72a6e2e6e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MAL4B3KTBRUB9PRAHE4QKRHIFBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"24145eda66a0abd4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"U0U68LRBQUBTSMQQVP6O13TP4NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"25c9a6750b601ca5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QS47HNJ4LC0C9T0LII31IU9H37VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a1c5e3d18ba145aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:48 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5297C0V3D61JJH2P56VSN8SCVNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestConformance/Update.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5REYcV+gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"97279fcbd071a539\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"DNIIFR1F0R74LKP6SQB2NPT1AVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"f1e5eb88932f73e4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4081904767\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CTTBUTHUE9MJAKDM8GH92D47J3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6MiwiSXRlbXMiOlt7Im5hbWUiOnsiUyI6InRlc3REZWxldGVNYXAifSwiRXRhZyI6eyJTIjoiY2Q4OGQ4OWItOTQyZi00NDg5LWI0YzAtY2U2NTY5MDYwOWUxIn0sImIiOnsiQk9PTCI6dHJ1ZX19LHsiQiI6eyJCT09MIjp0cnVlfSwiU3QiOnsiTlVMTCI6dHJ1ZX0sIlUiOnsiTiI6IjAifSwiRiI6eyJOIjoiMCJ9LCJJIjp7Ik4iOiIwIn0sIkV0YWciOnsiUyI6ImE0ZDU1MzdlLTRlN2EtNGIxZC04YmE5LTUzZWZjNzAzZjU1YSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJuYW1lIjp7IlMiOiJ0ZXN0RGVsZXRlU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiTlVMTCI6dHJ1ZX19XSwiU2Nhbm5lZENvdW50IjoyfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ae589cf6f89555f1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"OP78N0KQUGPRU4LB9IB0P6ILLNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"199b350291954a59\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"E5EGF74TSLFHEGAUAED4IOOAPVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f67da1a759f8c508\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"191\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"Q0ODKPG4BG7J217OGGLTRU0NI3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cbea9d30690790b5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"462\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CH2LBJ3JVL67VJKR7U91RPS5GJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9f81c8a56e312774\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"209\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4012359614\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0J48EIHL2HJ35B8C2BJT7IDN97VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI0ZWUyYTVmYS1mYWIzLTRmOWItYmM3ZC1kNDA2ODVhMWJmNjkifSwiYSI6eyJTIjoiWCJ9LCJjIjp7IlMiOiJDIn0sIm0iOnsiTiI6IjMifSwibiI6eyJOIjoiMi41In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXAifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"09a1dd720d28857b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:37 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3ON7FR8B26H0AKSE0UFUKFMC47VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"e13a18d08b5c18f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"383\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3DPDC3U22OHRJS9CBJU5O4CJKVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"aae1070246e52a94\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"182\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2349206789\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0I9FVIC2FDRUN301T025QG6V8BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIzODVhMjFhMi1hNDdkLTRmMDQtOGJkOS1mNjgyZjFiZGJhZDQifSwiYSI6eyJTIjoiWCJ9LCJtIjp7Ik4iOiIzIn0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXBXcnQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"b3a7a7df54d723a3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"180\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"H96RKPD30NQCLPSTM9TBV1PAGVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"75be5207f44a9c20\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"397\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MHR6JMREF9MBAG3PIGQS45RT9BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"83d51865dc606bf1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"214\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"750229251\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IF3O4AOVPGTIDSGUBA88F5VOP7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI3OTg3N2RiZi1mMThjLTQwNjEtYTZhMy0wYWIxMDBkYzI1NTYifSwiYSI6eyJTIjoiQSJ9LCJpIjp7Ik4iOiIzLjUifSwibSI6eyJOIjoiMyJ9LCJuIjp7Ik4iOiIyLjUifSwibmFtZSI6eyJTIjoidGVzdFVwZGF0ZU1hcEluYyJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"2347c0c6e091fab7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"254\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FTQKHU6RVADSIE59VKVD7R80ENVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8e252afe48a12f3f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"422\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"21FN5JQ095IS88F11H3VMQATIRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b337b590bb162ac1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2874543979\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"UPR72LSNCO5HKGD3LOHF8G5IGNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiMDVhODYwZGUtZGI2NC00ZTVkLTg2YmEtYjNiMjRjOGZmZmIwIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIkYiOnsiTiI6IjAuNSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJTdCI6eyJTIjoic3RyIn0sIlUiOnsiTiI6IjQifSwibmFtZSI6eyJTIjoidGVzdFVwZGF0ZVN0cnVjdCJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"fed31fd06c4abb8e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"255\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SQ28KKT679784GQJANLTPKC11FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a37c27a2afd2274f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"389\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"HMVQ8VU22P844K6I9TFIE2FQJFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2b7ce5dbe35c6939\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"106\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"260\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"220372503\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JNTH4AQMHTGJ5I3LQDRE7L7BLNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiOTYzZDNjY2QtOGVkMy00ZDQxLWI4ZjctN2IwYzIzZTBkMzA1In0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIkYiOnsiTiI6IjAifSwiTSI6eyJOVUxMIjp0cnVlfSwiU3QiOnsiUyI6InN0ciJ9LCJVIjp7Ik4iOiI0In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVTdHJ1Y3RXcnQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"721d0b30c85a0a38\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"257\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"IHCT27E6K5I8T7C6B8R6LN379VVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3b202b1f9f85ace0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"367\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FTF0DOQUR9T68FBCCG7DDKRI8RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"9a604deda43777c1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"106\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"275\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1046705730\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"00G90PP2AAPS6DHO8QI8TU3G1NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiN2U3Y2M2OTQtNWNjMy00OWJhLTkwZGMtNjYwNmUyOWIzOTlmIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIkYiOnsiTiI6IjAuNSJ9LCJJIjp7Ik4iOiIxIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIlN0Ijp7IlMiOiJzdCJ9LCJVIjp7Ik4iOiI0In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVTdHJ1Y3RJbmMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"809d543f4aef0c84\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:38 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QDMI07J27535QLID9VGK84GJ7NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"fa7e9b0b1d09e119\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"149\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7RCEFVOECTJ8VPCIE7KHL6B2I7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"b4d740acc8204ea1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1233382474\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7RPIAEE93JU93G1NASSRL5QJR7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25NYXAifSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiN2VmZTkzMjItZjYzYi00YzQwLWIzNWMtMjQwMmM3ZWI2ZWY3In0sInMiOnsiUyI6ImEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"7c657e6e45f87898\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"353\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"TGMIVG516F77IS5GSU8VE3QO6NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"5121a20ec0f3e8e3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"353\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"SH8CM23ODQO1QC6NDNFS3S92SFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"69981adaf57776c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"NTBPJCUG5E94S8F5ISTM4E121JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"216f8b6b0cb494e9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"105\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"271\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4117684440\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LAGVS6B6Q265O0KEGRA7KPBFHFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJOVUxMIjp0cnVlfSwiTSI6eyJOVUxMIjp0cnVlfSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjE2YWRkMjRmLTkwMjEtNDdmZC1iYzAyLTE2MTM4ODg2M2ZjMiJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"f2e08498b245d0b1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"356\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"PE993LS4VQ1OUNP1TT0CRA196BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d0eec23ba918de24\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"356\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JU6JQHD2BVRV9056UPG73JGHOJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"01d0804138d25f9a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"599\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3022004566\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"29U4DSKPCPLUKO3IO98TL2H82JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6Im5hbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwNzk3OTdFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkl0ZW1Db3VudCI6MCwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoibmFtZSIsIktleVR5cGUiOiJIQVNIIn1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMSIsIlRhYmxlSWQiOiI5N2U0OTNmNC1jZjU3LTQ2YmItOTc4Ny1iOGU4ZDk3ZjUwMDciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTEiLCJUYWJsZVNpemVCeXRlcyI6MCwiVGFibGVTdGF0dXMiOiJBQ1RJVkUiLCJXYXJtVGhyb3VnaHB1dCI6eyJSZWFkVW5pdHNQZXJTZWNvbmQiOjUsIlN0YXR1cyI6IkFDVElWRSIsIldyaXRlVW5pdHNQZXJTZWNvbmQiOjV9fX0=\"\n      }\n    },\n    {\n      \"ID\": \"9ec8cd105e739fe5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Scan\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1441\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"3140913616\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"CJ4M1QPVDQ44B9B9MCCI5GNOV7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJDb3VudCI6OCwiSXRlbXMiOlt7IkIiOnsiQk9PTCI6ZmFsc2V9LCJTdCI6eyJTIjoic3RyIn0sIlUiOnsiTiI6IjQifSwiRiI6eyJOIjoiMC41In0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjA1YTg2MGRlLWRiNjQtNGU1ZC04NmJhLWIzYjI0YzhmZmZiMCJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlU3RydWN0In19LHsiRG9jc3RvcmVSZXZpc2lvbiI6eyJTIjoiOTE2ZmZjZmItMGMxYS00YWRiLWJmZWYtYTY4MDc3MDA1MWNkIn0sIm5hbWUiOnsiUyI6InRlc3RSZXZpc2lvbk1hcCJ9LCJzIjp7IlMiOiJjIn19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJzdHIifSwiVSI6eyJOIjoiNCJ9LCJGIjp7Ik4iOiIwIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6Ijk2M2QzY2NkLThlZDMtNGQ0MS1iOGY3LTdiMGMyM2UwZDMwNSJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlU3RydWN0V3J0In19LHsiQiI6eyJCT09MIjpmYWxzZX0sIlN0Ijp7IlMiOiJzdCJ9LCJVIjp7Ik4iOiI0In0sIkYiOnsiTiI6IjAuNSJ9LCJJIjp7Ik4iOiIxIn0sIkV0YWciOnsiTlVMTCI6dHJ1ZX0sIk0iOnsiTlVMTCI6dHJ1ZX0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjdlN2NjNjk0LTVjYzMtNDliYS05MGRjLTY2MDZlMjliMzk5ZiJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlU3RydWN0SW5jIn19LHsiYSI6eyJTIjoiQSJ9LCJpIjp7Ik4iOiIzLjUifSwibSI6eyJOIjoiMyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI3OTg3N2RiZi1mMThjLTQwNjEtYTZhMy0wYWIxMDBkYzI1NTYifSwibiI6eyJOIjoiMi41In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXBJbmMifX0seyJhIjp7IlMiOiJYIn0sImMiOnsiUyI6IkMifSwibSI6eyJOIjoiMyJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiI0ZWUyYTVmYS1mYWIzLTRmOWItYmM3ZC1kNDA2ODVhMWJmNjkifSwibiI6eyJOIjoiMi41In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXAifX0seyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwicyI6eyJTIjoiYyJ9LCJVIjp7Ik4iOiIwIn0sIkYiOnsiTiI6IjAifSwiSSI6eyJOIjoiMCJ9LCJFdGFnIjp7Ik5VTEwiOnRydWV9LCJNIjp7Ik5VTEwiOnRydWV9LCJEb2NzdG9yZVJldmlzaW9uIjp7IlMiOiIxOGU3OTU4YS05Mzk0LTQ0NmEtYTY3OS0wYjljNjZlNjEzZmMifSwibmFtZSI6eyJTIjoidGVzdFJldmlzaW9uU3RydWN0In19LHsiYSI6eyJTIjoiWCJ9LCJtIjp7Ik4iOiIzIn0sIkRvY3N0b3JlUmV2aXNpb24iOnsiUyI6IjM4NWEyMWEyLWE0N2QtNGYwNC04YmQ5LWY2ODJmMWJkYmFkNCJ9LCJuYW1lIjp7IlMiOiJ0ZXN0VXBkYXRlTWFwV3J0In19XSwiU2Nhbm5lZENvdW50Ijo4fQ==\"\n      }\n    },\n    {\n      \"ID\": \"04823cda9610a4b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4EAOUL7NI2C66H9D027VBLGMP3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c67fc44827956491\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P808M641HOS532G0CJDIO306T7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c1f37175871e158f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VQ9NLVU0IOA2B62EDP6EUJEQ9JVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d56e30890e00e785\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"S47VIH3FOSCUCA98JT223PNS0FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"320cf7f1cd5c1731\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MF2MD1JD2M4BLV6QDR8GI0560FVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2c0036f49a0bd440\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MIDUVBD4F0L9A7KRFDVATIF8RFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"3c337fae16e9b5a4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"70\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MJNACBI9D4R1S8IU7A3CQKKFNVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"65383197e204595f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DeleteItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"R8ECN7AINV90MB8LJRLJ4VN5LVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6332ee0828e56bd3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"179\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:39 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"QRHG6JAGVEG3A177K8PE6JTFLBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"2c93e8a118a126b2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"450\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5QHP6EG1NG3NGASJNLAJB4NI8RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"151a06df2e66315f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"197\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2863006192\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"Q7QVOR8SFEFIFL5GL0966GMUANVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJmZWVkYzcyNC1iZGUzLTQ3YzktYjhjZi05Njg4MDljZWQ0M2IifSwiYSI6eyJTIjoiWCJ9LCJjIjp7IlMiOiJDIn0sIm0iOnsiTiI6IjMifSwibiI6eyJOIjoiMi41In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXAifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"a651f34624d316a4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"138\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6TI9DVC5L9694F166DOU2726GBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d08674e9c1c9312a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"371\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8NNISI7R2OGJKK2GVUBLQOM2ERVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"531aa7f1a121a437\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2152499647\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ODPSKSUMR20NMEEBRJAL9AIDDVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiI0Yzk5M2VhMy0wOGQxLTQxNzUtYmI0Mi0xMDdlMDkwNzZjZmEifSwiYSI6eyJTIjoiWCJ9LCJtIjp7Ik4iOiIzIn0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVNYXBXcnQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"93e81c09ca96d9d8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4NU3O39SNGPIT3C7IQT0A1EIM7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c532c8059040ad65\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"385\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9H84KB22LSCJJG6VKUCV1HNTL7VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"c637bc0391ccc8ce\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"202\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1415525352\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3UK71FU2TODVHP051M9RK8M927VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJFdGFnIjp7IlMiOiJlNmNhYTM4Yi1lMDRlLTQ3NDQtYTkyMi04YmYxYzYyYjUyN2MifSwiYSI6eyJTIjoiQSJ9LCJpIjp7Ik4iOiIzLjUifSwibSI6eyJOIjoiMyJ9LCJuIjp7Ik4iOiIyLjUifSwibmFtZSI6eyJTIjoidGVzdFVwZGF0ZU1hcEluYyJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"a6df211ab7dd1057\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"254\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BEMP1P2GRDIR580S84TDI3DAA3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0af5bcff6cfd0d4d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"410\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"FF3A9NGBFI3OUICOK4U9PHB7GJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"deb5482eac198b20\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1129413683\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JI48CTG6JI9JO4FSB0K92F79NVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfSwiRXRhZyI6eyJTIjoiZTk0YjQ3NDYtMTBmZi00ZDY1LTkxZjEtOTQ2MGZkZmUwYTUxIn0sIkYiOnsiTiI6IjAuNSJ9LCJNIjp7Ik5VTEwiOnRydWV9LCJTdCI6eyJTIjoic3RyIn0sIlUiOnsiTiI6IjQifSwibmFtZSI6eyJTIjoidGVzdFVwZGF0ZVN0cnVjdCJ9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"4a92e614eb293cfb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"255\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"BFEE381LGPDO9FV356UMQKDR2BVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0fc7619324d1174a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"377\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7J5E8A1S5QEK0G58CSRJIB9BPRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"8ac07b634c424827\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"106\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"260\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"4055684817\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"N434122O9B9DP4EMULDN3T95AJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfSwiRXRhZyI6eyJTIjoiZGU3MDk5MWUtNzBjNC00NGQ5LTkxYmItYmEwNGJjZjg2ZThmIn0sIkYiOnsiTiI6IjAifSwiTSI6eyJOVUxMIjp0cnVlfSwiU3QiOnsiUyI6InN0ciJ9LCJVIjp7Ik4iOiI0In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVTdHJ1Y3RXcnQifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"9f906309fed965f6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"257\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5Q00A2PTS2SQ1DTGI4646JI9GBVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"39a442ecf7b765a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:40 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"M8FBIBOCL8RSQPEABE4GQ28HMJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"46578f41290c70a2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"106\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"275\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"82536726\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"USSI7S9HQ0RVAG078MGG3723FNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiRG9jc3RvcmVSZXZpc2lvbiI6eyJOVUxMIjp0cnVlfSwiRXRhZyI6eyJTIjoiZDQ4NmM2OTUtMGI3Ni00OTg5LTk1ZDctYWRjMGUyOWJhZGNhIn0sIkYiOnsiTiI6IjAuNSJ9LCJJIjp7Ik4iOiIxIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIlN0Ijp7IlMiOiJzdCJ9LCJVIjp7Ik4iOiI0In0sIm5hbWUiOnsiUyI6InRlc3RVcGRhdGVTdHJ1Y3RJbmMifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"e886f9a55918ab14\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"243\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"RIKP8LBOT84KLQSGTR3A3AG75NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"28c43344f230595e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"137\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1U6C74MCVI545GK3HEPAQRDL87VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"16639f48158a5aba\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"589922104\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"JOU7NJB8891FK46Q2LSR8DQ3IRVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJuYW1lIjp7IlMiOiJ0ZXN0UmV2aXNpb25NYXAifSwiRXRhZyI6eyJTIjoiMDhmNDI3MjMtODg0MS00MjUxLWI4YmYtYTgxYTNiNDVlMjk3In0sInMiOnsiUyI6ImEifX1dfSwiVW5wcm9jZXNzZWRLZXlzIjp7fX0=\"\n      }\n    },\n    {\n      \"ID\": \"a4c60fdc9c1f13fd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"341\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"R418JBFCVH0A1OUK2AG00F86UVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d9f272e1038051ba\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"341\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"MQMS1KHE904D141UEUUS4E7IKVVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    },\n    {\n      \"ID\": \"95271555cd17a729\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.PutItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"VB3QCQT10CU6PP37LFLMMSRUL3VV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ba14e2c29d315535\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"105\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.BatchGetItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"271\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2956891473\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"P6E102D6AQF4IVCH0F1R11FE4NVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJSZXNwb25zZXMiOnsiZG9jc3RvcmUtdGVzdC0xIjpbeyJCIjp7IkJPT0wiOmZhbHNlfSwiU3QiOnsiUyI6ImEifSwiVSI6eyJOIjoiMCJ9LCJGIjp7Ik4iOiIwIn0sIkkiOnsiTiI6IjAifSwiRXRhZyI6eyJTIjoiZmQ1ZWI1ZjktNTEyYS00NjlkLTg0MjMtOTk1ZDlmYTAyY2VjIn0sIk0iOnsiTlVMTCI6dHJ1ZX0sIm5hbWUiOnsiUyI6InRlc3RSZXZpc2lvblN0cnVjdCJ9LCJEb2NzdG9yZVJldmlzaW9uIjp7Ik5VTEwiOnRydWV9fV19LCJVbnByb2Nlc3NlZEtleXMiOnt9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"4360702b0312d691\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"344\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"2745614147\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"V18MM5CCUA64GREFNT8I7M7L7RVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a83a5cc4fc01b8d3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"344\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.UpdateItem\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:41 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"396270901\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"B7LVQDKKA68IRTG7F0S4P27TNJVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLmR5bmFtb2RiLnYyMDEyMDgxMCNDb25kaXRpb25hbENoZWNrRmFpbGVkRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSBjb25kaXRpb25hbCByZXF1ZXN0IGZhaWxlZCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/testdata/TestQueryErrors.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg5kGwV5zgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\",\n      \".*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b6e124d6ee8313a8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.DescribeTable\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1609\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"298093499\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2688U2MR89VKRQTT5E8LPN81PFVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJUYWJsZSI6eyJBdHRyaWJ1dGVEZWZpbml0aW9ucyI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIkF0dHJpYnV0ZVR5cGUiOiJTIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJBdHRyaWJ1dGVUeXBlIjoiTiJ9LHsiQXR0cmlidXRlTmFtZSI6IlRpbWUiLCJBdHRyaWJ1dGVUeXBlIjoiUyJ9XSwiQ3JlYXRpb25EYXRlVGltZSI6MS43MjMwNzYwODA2OTVFOSwiRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZCI6ZmFsc2UsIkdsb2JhbFNlY29uZGFyeUluZGV4ZXMiOlt7IkluZGV4QXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMi9pbmRleC9nbG9iYWwiLCJJbmRleE5hbWUiOiJnbG9iYWwiLCJJbmRleFNpemVCeXRlcyI6MTE4LCJJbmRleFN0YXR1cyI6IkFDVElWRSIsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiUGxheWVyIiwiS2V5VHlwZSI6IkhBU0gifSx7IkF0dHJpYnV0ZU5hbWUiOiJUaW1lIiwiS2V5VHlwZSI6IlJBTkdFIn1dLCJQcm9qZWN0aW9uIjp7IlByb2plY3Rpb25UeXBlIjoiQUxMIn0sIlByb3Zpc2lvbmVkVGhyb3VnaHB1dCI6eyJOdW1iZXJPZkRlY3JlYXNlc1RvZGF5IjowLCJSZWFkQ2FwYWNpdHlVbml0cyI6NSwiV3JpdGVDYXBhY2l0eVVuaXRzIjo1fSwiV2FybVRocm91Z2hwdXQiOnsiUmVhZFVuaXRzUGVyU2Vjb25kIjo1LCJTdGF0dXMiOiJBQ1RJVkUiLCJXcml0ZVVuaXRzUGVyU2Vjb25kIjo1fX1dLCJJdGVtQ291bnQiOjEsIktleVNjaGVtYSI6W3siQXR0cmlidXRlTmFtZSI6IkdhbWUiLCJLZXlUeXBlIjoiSEFTSCJ9LHsiQXR0cmlidXRlTmFtZSI6IlBsYXllciIsIktleVR5cGUiOiJSQU5HRSJ9XSwiTG9jYWxTZWNvbmRhcnlJbmRleGVzIjpbeyJJbmRleEFybiI6ImFybjphd3M6ZHluYW1vZGI6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3Njp0YWJsZS9kb2NzdG9yZS10ZXN0LTIvaW5kZXgvbG9jYWwiLCJJbmRleE5hbWUiOiJsb2NhbCIsIkluZGV4U2l6ZUJ5dGVzIjoxMTgsIkl0ZW1Db3VudCI6MSwiS2V5U2NoZW1hIjpbeyJBdHRyaWJ1dGVOYW1lIjoiR2FtZSIsIktleVR5cGUiOiJIQVNIIn0seyJBdHRyaWJ1dGVOYW1lIjoiU2NvcmUiLCJLZXlUeXBlIjoiUkFOR0UifV0sIlByb2plY3Rpb24iOnsiUHJvamVjdGlvblR5cGUiOiJBTEwifX1dLCJQcm92aXNpb25lZFRocm91Z2hwdXQiOnsiTnVtYmVyT2ZEZWNyZWFzZXNUb2RheSI6MCwiUmVhZENhcGFjaXR5VW5pdHMiOjUsIldyaXRlQ2FwYWNpdHlVbml0cyI6NX0sIlRhYmxlQXJuIjoiYXJuOmF3czpkeW5hbW9kYjp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OnRhYmxlL2RvY3N0b3JlLXRlc3QtMiIsIlRhYmxlSWQiOiIwZDRmOTk4My1kOGE5LTRhZjEtYTY0NC05YmE3M2NlMGYyMjciLCJUYWJsZU5hbWUiOiJkb2NzdG9yZS10ZXN0LTIiLCJUYWJsZVNpemVCeXRlcyI6MTE4LCJUYWJsZVN0YXR1cyI6IkFDVElWRSIsIldhcm1UaHJvdWdocHV0Ijp7IlJlYWRVbml0c1BlclNlY29uZCI6NSwiU3RhdHVzIjoiQUNUSVZFIiwiV3JpdGVVbml0c1BlclNlY29uZCI6NX19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"74a2d2a9b2d37c7b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://dynamodb.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"identity\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"175\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"DynamoDB_20120810.Query\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"Q0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:56 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amz-Crc32\": [\n            \"1880536678\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"LMQR06C1F1OC7T8K8QPGD6JIDNVV4KQNSO5AEMVJF66Q9ASUAAJG\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uLmNvcmFsLnZhbGlkYXRlI1ZhbGlkYXRpb25FeGNlcHRpb24iLCJtZXNzYWdlIjoiT25lIG9yIG1vcmUgcGFyYW1ldGVyIHZhbHVlcyB3ZXJlIGludmFsaWQ6IENvbmRpdGlvbiBwYXJhbWV0ZXIgdHlwZSBkb2VzIG5vdCBtYXRjaCBzY2hlbWEgdHlwZSJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "docstore/awsdynamodb/v2/urls.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"sync\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\tdyn \"github.com/aws/aws-sdk-go-v2/service/dynamodb\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/docstore\"\n)\n\nfunc init() {\n\tdocstore.DefaultURLMux().RegisterCollection(Scheme, new(lazySessionOpener))\n}\n\ntype lazySessionOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazySessionOpener) OpenCollectionURL(ctx context.Context, u *url.URL) (*docstore.Collection, error) {\n\to.init.Do(func() {\n\n\t\to.opener = &URLOpener{}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open collection %s: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenCollectionURL(ctx, u)\n}\n\n// Scheme is the URL scheme dynamodb registers its URLOpener under on\n// docstore.DefaultMux.\nconst Scheme = \"dynamodb\"\n\n// URLOpener opens dynamodb URLs like\n// \"dynamodb://mytable?partition_key=partkey&sort_key=sortkey\".\n//\n// The URL Host is used as the table name. See\n// https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html\n// for more details.\n//\n// The following query parameters are supported:\n//\n//   - partition_key (required): the path to the partition key of a table or an index.\n//   - sort_key: the path to the sort key of a table or an index.\n//   - allow_scans: if \"true\", allow table scans to be used for queries\n//   - consistent_read: if \"true\", a strongly consistent read is used whenever possible.\n//\n// See https://godoc.org/gocloud.dev/aws#V2ConfigFromURLParams for supported query\n// parameters for overriding the aws.Session from the URL.\ntype URLOpener struct {\n}\n\n// OpenCollectionURL opens the collection at the URL's path. See the package doc for more details.\nfunc (o *URLOpener) OpenCollectionURL(_ context.Context, u *url.URL) (*docstore.Collection, error) {\n\tdb, tableName, partitionKey, sortKey, opts, err := o.processURL(u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn OpenCollection(db, tableName, partitionKey, sortKey, opts)\n}\n\nfunc (o *URLOpener) processURL(u *url.URL) (db *dyn.Client, tableName, partitionKey, sortKey string, opts *Options, err error) {\n\tq := u.Query()\n\n\tpartitionKey = q.Get(\"partition_key\")\n\tif partitionKey == \"\" {\n\t\treturn nil, \"\", \"\", \"\", nil, fmt.Errorf(\"open collection %s: partition_key is required to open a table\", u)\n\t}\n\tq.Del(\"partition_key\")\n\tsortKey = q.Get(\"sort_key\")\n\tq.Del(\"sort_key\")\n\topts = &Options{\n\t\tAllowScans:     q.Get(\"allow_scans\") == \"true\",\n\t\tRevisionField:  q.Get(\"revision_field\"),\n\t\tConsistentRead: q.Get(\"consistent_read\") == \"true\",\n\t}\n\tq.Del(\"allow_scans\")\n\tq.Del(\"revision_field\")\n\tq.Del(\"consistent_read\")\n\n\ttableName = u.Host\n\tif tableName == \"\" {\n\t\treturn nil, \"\", \"\", \"\", nil, fmt.Errorf(\"open collection %s: URL's host cannot be empty (the table name)\", u)\n\t}\n\tif u.Path != \"\" {\n\t\treturn nil, \"\", \"\", \"\", nil, fmt.Errorf(\"open collection %s: URL path must be empty, only the host is needed\", u)\n\t}\n\n\tcfg, err := gcaws.V2ConfigFromURLParams(context.Background(), q)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", \"\", nil, fmt.Errorf(\"open collection %s: %v\", u, err)\n\t}\n\tdb, err = Dial(cfg)\n\tif err != nil {\n\t\treturn nil, \"\", \"\", \"\", nil, fmt.Errorf(\"open collection %s: %v\", u, err)\n\t}\n\treturn db, tableName, partitionKey, sortKey, opts, nil\n}\n\n// Dial gets an AWS DynamoDB service client.\nfunc Dial(p aws.Config) (*dyn.Client, error) {\n\tif p.Credentials == nil {\n\t\treturn nil, errors.New(\"getting Dynamo service: no AWS session provided\")\n\t}\n\treturn dyn.NewFromConfig(p), nil\n}\n"
  },
  {
    "path": "docstore/awsdynamodb/v2/urls_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsdynamodb\n\nimport (\n\t\"net/url\"\n\t\"testing\"\n)\n\nfunc TestProcessURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind\", false},\n\t\t// OK.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind&sort_key=_id\", false},\n\t\t// OK, overriding region.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind&region=\" + region, false},\n\t\t// OK, allow_scans.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind&allow_scans=true\" + region, false},\n\t\t// Passing revision field.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind&revision_field=123\", false},\n\t\t// Passing consistent read field.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind&consistent_read=true\", false},\n\t\t// Unknown parameter.\n\t\t{\"dynamodb://docstore-test?partition_key=_kind&param=value\", true},\n\t\t// With path.\n\t\t{\"dynamodb://docstore-test/subcoll?partition_key=_kind\", true},\n\t\t// Missing partition_key.\n\t\t{\"dynamodb://docstore-test?sort_key=_id\", true},\n\t}\n\n\to := &URLOpener{}\n\tfor _, test := range tests {\n\t\tu, err := url.Parse(test.URL)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\t_, _, _, _, _, err = o.processURL(u)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/doc.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package docstore provides a portable way of interacting with a document store.\n// Subpackages contain driver implementations of docstore for supported\n// services.\n//\n// See https://gocloud.dev/howto/docstore/ for a detailed how-to guide.\n//\n// # Collections\n//\n// In docstore, documents are grouped into collections, and each document has a key\n// that is unique in its collection. You can add, retrieve, modify and delete\n// documents by key, and you can query a collection to retrieve documents that match\n// certain criteria.\n//\n// # Representing Documents\n//\n// A document is a set of named fields, each with a value. A field's value can be a scalar,\n// a list, or a nested document.\n//\n// Docstore allows you to represent documents as either map[string]interface{} or\n// struct pointers. When you represent a document as a map, the fields are map keys\n// and the values are map values. Lists are represented with slices. For example,\n// here is a document about a book described as a map:\n//\n//\tdoc := map[string]interface{}{\n//\t    \"Title\": \"The Master and Margarita\",\n//\t    \"Author\": map[string]interface{}{\n//\t        \"First\": \"Mikhail\",\n//\t        \"Last\": \"Bulgakov\",\n//\t    },\n//\t    \"PublicationYears\": []int{1967, 1973},\n//\t}\n//\n// Note that the value of \"PublicationYears\" is a list, and the value of \"Author\" is\n// itself a document.\n//\n// Here is the same document represented with structs:\n//\n//\ttype Book struct {\n//\t    Title            string\n//\t    Author           Name\n//\t    PublicationYears []int\n//\t}\n//\n//\ttype Name struct {\n//\t    First, Last string\n//\t}\n//\n//\tdoc := &Book{\n//\t    Title: \"The Master and Margarita\",\n//\t    Author: Name{\n//\t        First: \"Mikhail\",\n//\t        Last:  \"Bulgakov\",\n//\t    },\n//\t    PublicationYears: []int{1967, 1973},\n//\t}\n//\n// You must use a pointer to a struct to represent a document, although structs\n// nested inside a document, like the Name struct above, need not be pointers.\n//\n// Maps are best for applications where you don't know the structure of the\n// documents. Using structs is preferred because it enforces some structure on your\n// data.\n//\n// By default, Docstore treats a struct's exported fields as the fields of the\n// document. You can alter this default mapping by using a struct tag beginning\n// with \"docstore:\". Docstore struct tags support renaming, omitting fields\n// unconditionally, or omitting them only when they are empty, exactly like\n// encoding/json. For example, this is the Book struct with different field\n// names:\n//\n//\ttype Book struct {\n//\t    Title            string `docstore:\"title\"`\n//\t    Author           Name   `docstore:\"author\"`\n//\t    PublicationYears []int  `docstore:\"pub_years,omitempty\"`\n//\t    NumPublications  int    `docstore:\"-\"`\n//\t}\n//\n// This struct describes a document with field names \"title\", \"author\" and\n// \"pub_years\". The pub_years field is omitted from the stored document if it has\n// length zero. The NumPublications field is never stored because it can easily be\n// computed from the PublicationYears field.\n//\n// Given a document field \"Foo\" and a struct type document, Docstore's decoder\n// will look through the destination struct's field to find (in order of\n// preference):\n//   - An exported field with a tag of \"Foo\";\n//   - An exported field named \"Foo\".\n//\n// Note that unlike encoding/json, Docstore does case-sensitive matching during\n// decoding to match the behavior of decoders in most docstore services.\n//\n// # Representing Data\n//\n// Values stored in document fields can be any of a wide range of types. All\n// primitive types except for complex numbers are supported, as well as slices and\n// maps (the map key type must be a string, an integer, or a type that implements\n// encoding.TextMarshaler). In addition, any type that implements\n// encoding.BinaryMarshaler or encoding.TextMarshaler is permitted. This set of types\n// closely matches the encoding/json package (see https://golang.org/pkg/encoding/json).\n//\n// Times deserve special mention. Docstore can store and retrieve values of type\n// time.Time, with two caveats. First, the timezone will not be preserved. Second,\n// Docstore guarantees only that time.Time values are represented to millisecond\n// precision. Many services will do better, but if you need to be sure that times\n// are stored with nanosecond precision, convert the time.Time to another type before\n// storing and re-create when you retrieve it. For instance, if you store Unix\n// time in nanoseconds using time's UnixNano method, you can get the original\n// time back (in the local timezone) with the time.Unix function.\n//\n// # Representing Keys\n//\n// The key of a docstore document is its unique identifier, usually a field.\n// Keys never appear alone in the docstore API, only as part of a document. For\n// instance, to retrieve a document by key, you pass the Collection.Get method\n// a document as a struct pointer or map with the key field populated, and docstore\n// populates the rest of that argument with the stored contents. Docstore\n// doesn't take zero-value key.\n//\n// When you open a collection using an OpenCollection method of the\n// service-specific driver or a URL, you specify how to extract the key from a\n// document.\n// Usually, you provide the name of the key field, as in the example below:\n//\n//\tcoll, err := memdocstore.OpenCollection(\"SSN\", nil)\n//\n// Here, the \"SSN\" field of the document is used as the key. Some drivers let you\n// supply a function to extract the key from the document, which can be useful if the\n// key is composed of more than one field.\n//\n// # Actions\n//\n// Docstore supports six actions on documents as methods on the Collection type:\n//   - Get retrieves a document.\n//   - Create creates a new document.\n//   - Replace replaces an existing document.\n//   - Put puts a document into a collection, replacing it if it is already present.\n//   - Update applies a set of modifications to a document.\n//   - Delete deletes a document.\n//\n// Each action acts atomically on a single document. You can execute actions\n// individually or you can group them into an action list, like so:\n//\n//\terr := coll.Actions().Put(doc1).Replace(doc2).Get(doc3).Do(ctx)\n//\n// When you use an action list, docstore will try to optimize the execution of the\n// actions. For example, multiple Get actions may be combined into a single \"batch\n// get\" RPC. For the most part, actions in a list execute in an undefined order\n// (perhaps concurrently) and independently, but read and write operations on the same\n// document are executed in the user-specified order. See the documentation of\n// ActionList for details.\n//\n// # Revisions\n//\n// Docstore supports document revisions to distinguish different versions of a\n// document and enable optimistic locking. By default, Docstore stores the\n// revision in the field named \"DocstoreRevision\" (stored in the constant\n// DefaultRevisionField). Providers give you the option of changing that field\n// name.\n//\n// When you pass a document with a revision field to a write action, Docstore\n// will give it a revision at creation time or update the revision value when\n// modifying the document. If you don't want Docstore to handle any revision\n// logic, simply do not have the revision field in your document.\n//\n// When you pass a document with a non-nil revision to Put, Replace, Update or\n// Delete, Docstore will also compare the revision of the stored document to\n// that of the given document before making the change. It returns an error with\n// code FailedPrecondition on mismatch. (See https://gocloud.dev/gcerrors for\n// information about error codes.) If modification methods are called on a\n// document struct or map a nil revision field, then no revision checks are\n// performed, and changes are forced blindly, but a new revision will still be\n// given for the document. For example, if you call Get to retrieve a document\n// with a revision, then later perform a write action with that same document,\n// it will fail if the document was changed since the Get.\n//\n// Since different services use different types for revisions, revision fields\n// of unspecified type must be handled. When defining a document struct,\n// define the field to be of type interface{}. For example,\n//\n//\ttype User {\n//\t    Name             string\n//\t    DocstoreRevision interface{}\n//\t}\n//\n// # Queries\n//\n// Docstore supports querying within a collection. Call the Query method on\n// Collection to obtain a Query value, then build your query by calling Query methods\n// like Where, Limit and so on. Finally, call the Get method on the query to execute it.\n// The result is an iterator, whose use is described below.\n//\n//\titer := coll.Query().Where(\"size\", \">\", 10).Limit(5).Get(ctx)\n//\n// The Where method defines a filter condition, much like a WHERE clause in SQL.\n// Conditions are of the form \"field op value\", where field is any document field\n// path (including dot-separated paths), op is one of \"=\", \">\", \"<\", \">=\" or \"<=\",\n// and value can be any value.\n//\n//\titer := coll.Query().Where(\"Author.Last\", \"=\", \"Bulgakov\").Limit(3).Get(ctx)\n//\n// Dot-separated paths work as you'd expect for nested structs and maps, addressing\n// the nested struct field or map key. For nested slices, some providers (notably\n// MongoDB) treat s.f, where s is a sequence, as the slice of e.f for each e in s.\n// However, others do not support field selectors inside slices, so docstore does\n// not support them -- while you may find that they work with some providers, you\n// cannot rely on that if you need fully portable code.\n//\n// You can make multiple Where calls. In some cases, parts of a Where clause may be\n// processed in the driver rather than natively by the backing service, which may have\n// performance implications for large result sets. See the driver package\n// documentation for details.\n//\n// Use the DocumentIterator returned from Query.Get by repeatedly calling its Next\n// method until it returns io.EOF. Always call Stop when you are finished with an\n// iterator. It is wise to use a defer statement for this.\n//\n//\titer := coll.Query().Where(\"size\", \">\", 10).Limit(5).Get(ctx)\n//\tdefer iter.Stop()\n//\tfor {\n//\t    m := map[string]interface{}{}\n//\t    err := iter.Next(ctx, m)\n//\t    if err == io.EOF {\n//\t        break\n//\t    }\n//\t    if err != nil {\n//\t        return err\n//\t    }\n//\t    fmt.Println(m)\n//\t}\n//\n// # Errors\n//\n// The errors returned from this package can be inspected in several ways:\n//\n// The Code function from https://gocloud.dev/gcerrors will return an error code, also\n// defined in that package, when invoked on an error.\n//\n// The Collection.ErrorAs method can retrieve the underlying driver error from\n// the returned error. See the specific driver's package doc for the supported\n// types.\n//\n// # OpenTelemetry Integration\n//\n// OpenTelemetry supports tracing, metrics, and logs collection for multiple languages and\n// backend providers. See https://opentelemetry.io.\n//\n// This API collects OpenTelemetry traces and metrics for the following methods:\n//   - ActionList.Do\n//   - Query.Get (for the first query only; drivers may make additional calls while iterating over results)\n//\n// All trace and metric names begin with the package import path.\n// The traces add the method name.\n// For example, \"gocloud.dev/docstore/ActionList.Do\".\n// The metrics are \"completed_calls\", a count of completed method calls by driver,\n// method and status (error code); and \"latency\", a distribution of method latency\n// by driver and method.\n// For example, \"gocloud.dev/docstore/latency\".\n//\n// To enable trace collection in your application, see the documentation at\n// https://opentelemetry.io/docs/instrumentation/go/getting-started/.\n// To enable metric collection in your application, see the documentation at\n// https://opentelemetry.io/docs/instrumentation/go/manual/.\n//\n// # GORM-like Code Generation\n//\n// You may find https://github.com/bartventer/docstore-gen useful.\npackage docstore // import \"gocloud.dev/docstore\"\n"
  },
  {
    "path": "docstore/docstore.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"log\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"slices\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode/utf8\"\n\n\t\"go.opentelemetry.io/otel/trace\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\tgcdkotel \"gocloud.dev/internal/otel\"\n)\n\n// A Document is a set of field-value pairs. One or more fields, called the key\n// fields, must uniquely identify the document in the collection. You specify the key\n// fields when you open a collection.\n// A field name must be a valid UTF-8 string that does not contain a '.'.\n//\n// A Document can be represented as a map[string]int or a pointer to a struct. For\n// structs, the exported fields are the document fields.\ntype Document = any\n\n// A Collection represents a set of documents. It provides an easy and portable\n// way to interact with document stores.\n// To create a Collection, use constructors found in driver subpackages.\ntype Collection struct {\n\tdriver driver.Collection\n\ttracer *gcdkotel.Tracer\n\tmu     sync.Mutex\n\tclosed bool\n}\n\nconst pkgName = \"gocloud.dev/docstore\"\n\nvar (\n\n\t// OpenTelemetryViews are predefined views for OpenTelemetry metrics.\n\t// The views include counts and latency distributions for API method calls.\n\t// See the explanations at https://opentelemetry.io/docs/specs/otel/metrics/data-model/ for usage.\n\tOpenTelemetryViews = gcdkotel.Views(pkgName)\n)\n\n// NewCollection is intended for use by drivers only. Do not use in application code.\nvar NewCollection = newCollection\n\n// newCollection makes a Collection.\nfunc newCollection(d driver.Collection) *Collection {\n\tproviderName := gcdkotel.ProviderName(d)\n\tc := &Collection{\n\t\tdriver: d,\n\t\ttracer: gcdkotel.NewTracer(pkgName, providerName),\n\t}\n\t_, file, lineno, ok := runtime.Caller(1)\n\truntime.SetFinalizer(c, func(c *Collection) {\n\t\tc.mu.Lock()\n\t\tclosed := c.closed\n\t\tc.mu.Unlock()\n\t\tif !closed {\n\t\t\tvar caller string\n\t\t\tif ok {\n\t\t\t\tcaller = fmt.Sprintf(\" (%s:%d)\", file, lineno)\n\t\t\t}\n\t\t\tlog.Printf(\"A docstore.Collection was never closed%s\", caller)\n\t\t}\n\t})\n\treturn c\n}\n\n// DefaultRevisionField is the default name of the document field used for document revision\n// information, to implement optimistic locking.\n// See the Revisions section of the package documentation.\nconst DefaultRevisionField = \"DocstoreRevision\"\n\nfunc (c *Collection) revisionField() string {\n\tif r := c.driver.RevisionField(); r != \"\" {\n\t\treturn r\n\t}\n\treturn DefaultRevisionField\n}\n\n// A FieldPath is a dot-separated sequence of UTF-8 field names. Examples:\n//\n//\troom\n//\troom.size\n//\troom.size.width\n//\n// A FieldPath can be used select top-level fields or elements of sub-documents.\n// There is no way to select a single list element.\ntype FieldPath string\n\n// Actions returns an ActionList that can be used to perform\n// actions on the collection's documents.\nfunc (c *Collection) Actions() *ActionList {\n\treturn &ActionList{coll: c}\n}\n\n// An ActionList is a group of actions that affect a single collection.\n//\n// The writes in an action list (Put, Create, Replace, Update and Delete actions)\n// must refer to distinct documents and are unordered with respect to each other.\n// Each write happens independently of the others: all actions will be executed, even\n// if some fail.\n//\n// The Gets in an action list must also refer to distinct documents and are unordered\n// and independent of each other.\n//\n// A Get and a write may refer to the same document. Each write may be paired with\n// only one Get in this way. The Get and write will be executed in the order\n// specified in the list: a Get before a write will see the old value of the\n// document; a Get after the write will see the new value if the service is strongly\n// consistent, but may see the old value if the service is eventually consistent.\ntype ActionList struct {\n\tcoll               *Collection\n\tactions            []*Action\n\tenableAtomicWrites bool\n\tbeforeDo           func(asFunc func(any) bool) error\n}\n\n// An Action is a read or write on a single document.\n// Use the methods of ActionList to create and execute Actions.\ntype Action struct {\n\tkind          driver.ActionKind\n\tdoc           Document\n\tfieldpaths    []FieldPath // paths to retrieve, for Get\n\tmods          Mods        // modifications to make, for Update\n\tinAtomicWrite bool        // if this action is a part of atomic writes\n}\n\nfunc (l *ActionList) add(a *Action) *ActionList {\n\tl.actions = append(l.actions, a)\n\treturn l\n}\n\n// Create adds an action that creates a new document to the given ActionList, and\n// returns the ActionList. The document must not already exist; an error with code\n// AlreadyExists is returned if it does. (See gocloud.dev/gcerrors for more on error\n// codes.)\n//\n// If the document doesn't have key fields, or the key fields are empty, meaning\n// 0, a nil interface value, or any empty array or string, key fields with\n// unique values will be created and doc will be populated with them if there is\n// a way to assign those keys, see each driver for details on the requirement of\n// generating keys.\n//\n// The revision field of the document must be absent or nil.\n//\n// Except for setting the revision field and possibly setting the key fields, the doc\n// argument is not modified.\nfunc (l *ActionList) Create(doc Document) *ActionList {\n\treturn l.add(&Action{kind: driver.Create, doc: doc, inAtomicWrite: l.enableAtomicWrites})\n}\n\n// Replace adds an action that replaces a document to the given ActionList, and\n// returns the ActionList. The key fields of the doc argument must be set. The\n// document must already exist; an error with code NotFound is returned if it does\n// not (or possibly FailedPrecondition, if the doc argument has a non-nil revision).\n// (See gocloud.dev/gcerrors for more on error codes.)\n//\n// See the Revisions section of the package documentation for how revisions are\n// handled.\nfunc (l *ActionList) Replace(doc Document) *ActionList {\n\treturn l.add(&Action{kind: driver.Replace, doc: doc, inAtomicWrite: l.enableAtomicWrites})\n}\n\n// Put adds an action that adds or replaces a document to the given ActionList, and returns the ActionList.\n// The key fields must be set.\n//\n// If the revision field is non-nil, then Put behaves exactly like Replace, returning\n// an error if the document does not exist. Otherwise, Put will create the document\n// if it does not exist.\n//\n// See the Revisions section of the package documentation for how revisions are\n// handled.\nfunc (l *ActionList) Put(doc Document) *ActionList {\n\treturn l.add(&Action{kind: driver.Put, doc: doc, inAtomicWrite: l.enableAtomicWrites})\n}\n\n// Delete adds an action that deletes a document to the given ActionList, and returns\n// the ActionList. Only the key and revision fields of doc are used.\n// See the Revisions section of the package documentation for how revisions are\n// handled.\n// If doc has no revision and the document doesn't exist, nothing happens and no\n// error is returned.\nfunc (l *ActionList) Delete(doc Document) *ActionList {\n\t// Rationale for not returning an error if the document does not exist:\n\t// Returning an error might be informative and could be ignored, but if the\n\t// semantics of an action list are to stop at first error, then we might abort a\n\t// list of Deletes just because one of the docs was not present, and that seems\n\t// wrong, or at least something you'd want to turn off.\n\treturn l.add(&Action{kind: driver.Delete, doc: doc, inAtomicWrite: l.enableAtomicWrites})\n}\n\n// Get adds an action that retrieves a document to the given ActionList, and\n// returns the ActionList.\n// Only the key fields of doc are used.\n// If fps is omitted, doc will contain all the fields of the retrieved document.\n// If fps is present, only the given field paths are retrieved. It is undefined\n// whether other fields of doc at the time of the call are removed, unchanged,\n// or zeroed, so for portable behavior doc should contain only the key fields.\n// If you plan to write the document back and let Docstore to perform optimistic\n// locking, include the revision field in fps. See more about revision at\n// https://godoc.org/gocloud.dev/docstore#hdr-Revisions.\nfunc (l *ActionList) Get(doc Document, fps ...FieldPath) *ActionList {\n\treturn l.add(&Action{\n\t\tkind:       driver.Get,\n\t\tdoc:        doc,\n\t\tfieldpaths: fps,\n\t})\n}\n\n// Update atomically applies Mods to doc, which must exist.\n// Only the key and revision fields of doc are used.\n// It is an error to pass an empty Mods to Update.\n//\n// A modification will create a field if it doesn't exist.\n//\n// No field path in mods can be a prefix of another. (It makes no sense\n// to, say, set foo but increment foo.bar.)\n//\n// See the Revisions section of the package documentation for how revisions are\n// handled.\n//\n// It is undefined whether updating a sub-field of a non-map field will succeed.\n// For instance, if the current document is {a: 1} and Update is called with the\n// mod \"a.b\": 2, then either Update will fail, or it will succeed with the result\n// {a: {b: 2}}.\n//\n// Update does not modify its doc argument, except to set the new revision. To obtain\n// the updated document, call Get after calling Update.\nfunc (l *ActionList) Update(doc Document, mods Mods) *ActionList {\n\treturn l.add(&Action{\n\t\tkind:          driver.Update,\n\t\tdoc:           doc,\n\t\tmods:          mods,\n\t\tinAtomicWrite: l.enableAtomicWrites,\n\t})\n}\n\n// Mods is a map from field paths to modifications.\n// At present, a modification is one of:\n//   - nil, to delete the field\n//   - an Increment value, to add a number to the field\n//   - any other value, to set the field to that value\n//\n// See ActionList.Update.\ntype Mods map[FieldPath]any\n\n// Increment returns a modification that results in a field being incremented. It\n// should only be used as a value in a Mods map, like so:\n//\n//\tdocstore.Mods{\"count\": docstore.Increment(1)}\n//\n// The amount must be an integer or floating-point value.\nfunc Increment(amount any) any {\n\treturn driver.IncOp{amount}\n}\n\n// An ActionListError is returned by ActionList.Do. It contains all the errors\n// encountered while executing the ActionList, and the positions of the corresponding\n// actions.\ntype ActionListError []struct {\n\tIndex int\n\tErr   error\n}\n\n// TODO(jba): use xerrors formatting.\n\nfunc (e ActionListError) Error() string {\n\tvar s []string\n\tfor _, x := range e {\n\t\ts = append(s, fmt.Sprintf(\"at %d: %v\", x.Index, x.Err))\n\t}\n\treturn strings.Join(s, \"; \")\n}\n\n// Unwrap returns the error in e, if there is exactly one. If there is more than one\n// error, Unwrap returns nil, since there is no way to determine which should be\n// returned.\nfunc (e ActionListError) Unwrap() error {\n\tif len(e) == 1 {\n\t\treturn e[0].Err\n\t}\n\t// Return nil when e is nil, or has more than one error.\n\t// When there are multiple errors, it doesn't make sense to return any of them.\n\treturn nil\n}\n\n// BeforeDo takes a callback function that will be called before the ActionList is\n// executed by the underlying service. It may be invoked multiple times for a single\n// call to ActionList.Do, because the driver may split the action list into several\n// service calls. If any callback invocation returns an error, ActionList.Do returns\n// an error.\n//\n// The callback takes a parameter, asFunc, that converts its argument to\n// driver-specific types. See https://gocloud.dev/concepts/as for background\n// information.\nfunc (l *ActionList) BeforeDo(f func(asFunc func(any) bool) error) *ActionList {\n\tl.beforeDo = f\n\treturn l\n}\n\n// Do executes the action list.\n//\n// If Do returns a non-nil error, it will be of type ActionListError. If any action\n// fails, the returned error will contain the position in the ActionList of each\n// failed action.\n//\n// All the actions will be executed. Docstore tries to execute the actions as\n// efficiently as possible. Sometimes this makes it impossible to attribute failures\n// to specific actions; in such cases, the returned ActionListError will have entries\n// whose Index field is negative.\nfunc (l *ActionList) Do(ctx context.Context) error {\n\treturn l.do(ctx, true)\n}\n\n// do implements Do with optional OpenTelemetry tracing, so it can be used internally.\nfunc (l *ActionList) do(ctx context.Context, withTracing bool) (err error) {\n\tif err := l.coll.checkClosed(); err != nil {\n\t\treturn ActionListError{{-1, errClosed}}\n\t}\n\n\tif withTracing {\n\t\tvar span trace.Span\n\t\tctx, span = l.coll.tracer.Start(ctx, \"ActionList.Do\")\n\t\tdefer func() { l.coll.tracer.End(ctx, span, err) }()\n\t}\n\n\tdas, err := l.toDriverActions()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdopts := &driver.RunActionsOptions{BeforeDo: l.beforeDo}\n\talerr := ActionListError(l.coll.driver.RunActions(ctx, das, dopts))\n\tif len(alerr) == 0 {\n\t\treturn nil // Explicitly return nil, because alerr is not of type error.\n\t}\n\tfor i := range alerr {\n\t\talerr[i].Err = wrapError(l.coll.driver, alerr[i].Err)\n\t}\n\treturn alerr\n}\n\nfunc (l *ActionList) toDriverActions() ([]*driver.Action, error) {\n\tvar das []*driver.Action\n\tvar alerr ActionListError\n\t// Create a set of (document key, is Get action) pairs for detecting duplicates:\n\t// an action list can have at most one get and at most one write for each key.\n\ttype keyAndKind struct {\n\t\tkey   any\n\t\tisGet bool\n\t}\n\tseen := map[keyAndKind]bool{}\n\tfor i, a := range l.actions {\n\t\td, err := l.coll.toDriverAction(a)\n\t\t// Check for duplicate key.\n\t\tif err == nil && d.Key != nil {\n\t\t\tkk := keyAndKind{d.Key, d.Kind == driver.Get}\n\t\t\tif seen[kk] {\n\t\t\t\terr = gcerr.Newf(gcerr.InvalidArgument, nil, \"duplicate key in action list: %v\", d.Key)\n\t\t\t} else {\n\t\t\t\tseen[kk] = true\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\talerr = append(alerr, struct {\n\t\t\t\tIndex int\n\t\t\t\tErr   error\n\t\t\t}{i, wrapError(l.coll.driver, err)})\n\t\t} else {\n\t\t\td.Index = i\n\t\t\tdas = append(das, d)\n\t\t}\n\t}\n\tif len(alerr) > 0 {\n\t\treturn nil, alerr\n\t}\n\treturn das, nil\n}\n\nfunc (c *Collection) toDriverAction(a *Action) (*driver.Action, error) {\n\tddoc, err := driver.NewDocument(a.doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tkey, err := c.driver.Key(ddoc)\n\tif err != nil {\n\t\tif gcerrors.Code(err) != gcerr.InvalidArgument {\n\t\t\terr = gcerr.Newf(gcerr.InvalidArgument, err, \"bad document key\")\n\t\t}\n\t\treturn nil, err\n\t}\n\tif key == nil || driver.IsEmptyValue(reflect.ValueOf(key)) {\n\t\tif a.kind != driver.Create {\n\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"missing document key\")\n\t\t}\n\t\t// set the key to nil so that the following code does not need to check for\n\t\t// empty.\n\t\tkey = nil\n\t}\n\tif reflect.ValueOf(key).Kind() == reflect.Pointer {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"keys cannot be pointers\")\n\t}\n\trev, _ := ddoc.GetField(c.revisionField())\n\tif a.kind == driver.Create && rev != nil {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"cannot create a document with a revision field\")\n\t}\n\tkind := a.kind\n\tif kind == driver.Put && rev != nil {\n\t\t// A Put with a revision field is equivalent to a Replace.\n\t\tkind = driver.Replace\n\t}\n\td := &driver.Action{Kind: kind, Doc: ddoc, Key: key, InAtomicWrite: a.inAtomicWrite}\n\tif a.fieldpaths != nil {\n\t\td.FieldPaths, err = parseFieldPaths(a.fieldpaths)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif a.kind == driver.Update {\n\t\td.Mods, err = toDriverMods(a.mods)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn d, nil\n}\n\nfunc parseFieldPaths(fps []FieldPath) ([][]string, error) {\n\tres := make([][]string, len(fps))\n\tfor i, s := range fps {\n\t\tfp, err := parseFieldPath(s)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tres[i] = fp\n\t}\n\treturn res, nil\n}\n\nfunc toDriverMods(mods Mods) ([]driver.Mod, error) {\n\t// Convert mods from a map to a slice of (fieldPath, value) pairs.\n\t// The map is easier for users to write, but the slice is easier\n\t// to process.\n\tif len(mods) == 0 {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"no mods passed to Update\")\n\t}\n\n\t// Sort keys so tests are deterministic.\n\t// After sorting, a key might not immediately follow its prefix. Consider the\n\t// sorted list of keys \"a\", \"a+b\", \"a.b\". \"a\" is prefix of \"a.b\", but since '+'\n\t// sorts before '.', it is not adjacent to it. All we can assume is that the\n\t// prefix is before the key.\n\tvar keys []string\n\tfor k := range mods {\n\t\tkeys = append(keys, string(k))\n\t}\n\tsort.Strings(keys)\n\n\tvar dmods []driver.Mod\n\tfor _, k := range keys {\n\t\tk := FieldPath(k)\n\t\tv := mods[k]\n\t\tfp, err := parseFieldPath(k)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, d := range dmods {\n\t\t\tif fpHasPrefix(fp, d.FieldPath) {\n\t\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil,\n\t\t\t\t\t\"field path %q is a prefix of %q\", strings.Join(d.FieldPath, \".\"), k)\n\t\t\t}\n\t\t}\n\t\tif inc, ok := v.(driver.IncOp); ok && !isIncNumber(inc.Amount) {\n\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil,\n\t\t\t\t\"Increment amount %v of type %[1]T must be an integer or floating-point number\", inc.Amount)\n\t\t}\n\t\tdmods = append(dmods, driver.Mod{FieldPath: fp, Value: v})\n\t}\n\treturn dmods, nil\n}\n\n// fpHasPrefix reports whether the field path fp begins with prefix.\nfunc fpHasPrefix(fp, prefix []string) bool {\n\tif len(fp) < len(prefix) {\n\t\treturn false\n\t}\n\tfor i, p := range prefix {\n\t\tif fp[i] != p {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc isIncNumber(x any) bool {\n\tswitch reflect.TypeOf(x).Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (l *ActionList) String() string {\n\tvar as []string\n\tfor _, a := range l.actions {\n\t\tas = append(as, a.String())\n\t}\n\treturn \"[\" + strings.Join(as, \", \") + \"]\"\n}\n\n// AtomicWrites causes all following writes in the list to execute as a single atomic operation.\nfunc (l *ActionList) AtomicWrites() *ActionList {\n\tl.enableAtomicWrites = true\n\treturn l\n}\n\nfunc (a *Action) String() string {\n\tbuf := &strings.Builder{}\n\tfmt.Fprintf(buf, \"%s(%v\", a.kind, a.doc)\n\tfor _, fp := range a.fieldpaths {\n\t\tfmt.Fprintf(buf, \", %s\", fp)\n\t}\n\tfor _, m := range a.mods {\n\t\tfmt.Fprintf(buf, \", %v\", m)\n\t}\n\tfmt.Fprint(buf, \")\")\n\treturn buf.String()\n}\n\n// Create is a convenience for building and running a single-element action list.\n// See ActionList.Create.\nfunc (c *Collection) Create(ctx context.Context, doc Document) error {\n\tif err := c.Actions().Create(doc).Do(ctx); err != nil {\n\t\treturn err.(ActionListError).Unwrap()\n\t}\n\treturn nil\n}\n\n// Replace is a convenience for building and running a single-element action list.\n// See ActionList.Replace.\nfunc (c *Collection) Replace(ctx context.Context, doc Document) error {\n\tif err := c.Actions().Replace(doc).Do(ctx); err != nil {\n\t\treturn err.(ActionListError).Unwrap()\n\t}\n\treturn nil\n}\n\n// Put is a convenience for building and running a single-element action list.\n// See ActionList.Put.\nfunc (c *Collection) Put(ctx context.Context, doc Document) error {\n\tif err := c.Actions().Put(doc).Do(ctx); err != nil {\n\t\treturn err.(ActionListError).Unwrap()\n\t}\n\treturn nil\n}\n\n// Delete is a convenience for building and running a single-element action list.\n// See ActionList.Delete.\nfunc (c *Collection) Delete(ctx context.Context, doc Document) error {\n\tif err := c.Actions().Delete(doc).Do(ctx); err != nil {\n\t\treturn err.(ActionListError).Unwrap()\n\t}\n\treturn nil\n}\n\n// Get is a convenience for building and running a single-element action list.\n// See ActionList.Get.\nfunc (c *Collection) Get(ctx context.Context, doc Document, fps ...FieldPath) error {\n\tif err := c.Actions().Get(doc, fps...).Do(ctx); err != nil {\n\t\treturn err.(ActionListError).Unwrap()\n\t}\n\treturn nil\n}\n\n// Update is a convenience for building and running a single-element action list.\n// See ActionList.Update.\nfunc (c *Collection) Update(ctx context.Context, doc Document, mods Mods) error {\n\tif err := c.Actions().Update(doc, mods).Do(ctx); err != nil {\n\t\treturn err.(ActionListError).Unwrap()\n\t}\n\treturn nil\n}\n\nfunc parseFieldPath(fp FieldPath) ([]string, error) {\n\tif len(fp) == 0 {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"empty field path\")\n\t}\n\tif !utf8.ValidString(string(fp)) {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"invalid UTF-8 field path %q\", fp)\n\t}\n\tparts := strings.Split(string(fp), \".\")\n\tif slices.Contains(parts, \"\") {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"empty component in field path %q\", fp)\n\t}\n\treturn parts, nil\n}\n\n// RevisionToString converts a document revision to a string. The returned\n// string should be treated as opaque; its only use is to provide a serialized\n// form that can be passed around (e.g., as a hidden field on a web form)\n// and then turned back into a revision using StringToRevision. The string is safe\n// for use in URLs and HTTP forms.\nfunc (c *Collection) RevisionToString(rev any) (string, error) {\n\tif rev == nil {\n\t\treturn \"\", gcerr.Newf(gcerr.InvalidArgument, nil, \"RevisionToString: nil revision\")\n\t}\n\tbytes, err := c.driver.RevisionToBytes(rev)\n\tif err != nil {\n\t\treturn \"\", wrapError(c.driver, err)\n\t}\n\treturn base64.RawURLEncoding.EncodeToString(bytes), nil\n}\n\n// StringToRevision converts a string obtained with RevisionToString\n// to a revision.\nfunc (c *Collection) StringToRevision(s string) (any, error) {\n\tif s == \"\" {\n\t\treturn \"\", gcerr.Newf(gcerr.InvalidArgument, nil, \"StringToRevision: empty string\")\n\t}\n\tbytes, err := base64.RawURLEncoding.DecodeString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\trev, err := c.driver.BytesToRevision(bytes)\n\tif err != nil {\n\t\treturn \"\", wrapError(c.driver, err)\n\t}\n\treturn rev, nil\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (c *Collection) As(i any) bool {\n\tif i == nil {\n\t\treturn false\n\t}\n\treturn c.driver.As(i)\n}\n\nvar errClosed = gcerr.Newf(gcerr.FailedPrecondition, nil, \"docstore: Collection has been closed\")\n\n// Close releases any resources used for the collection.\nfunc (c *Collection) Close() error {\n\tc.mu.Lock()\n\tprev := c.closed\n\tc.closed = true\n\tc.mu.Unlock()\n\tif prev {\n\t\treturn errClosed\n\t}\n\treturn wrapError(c.driver, c.driver.Close())\n}\n\nfunc (c *Collection) checkClosed() error {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif c.closed {\n\t\treturn errClosed\n\t}\n\treturn nil\n}\n\nfunc wrapError(c driver.Collection, err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif gcerr.DoNotWrap(err) {\n\t\treturn err\n\t}\n\tif _, ok := err.(*gcerr.Error); ok {\n\t\treturn err\n\t}\n\treturn gcerr.New(c.ErrorCode(err), err, 2, \"docstore\")\n}\n\n// ErrorAs converts i to driver-specific types. See\n// https://gocloud.dev/concepts/as/ for background information and the\n// driver package documentation for the specific types supported for\n// that driver.\n//\n// When the error is an ActionListError, ErrorAs works on individual errors in\n// the slice, not the slice itself.\n//\n// ErrorAs panics if i is nil or not a pointer.\n// ErrorAs returns false if err == nil.\nfunc (c *Collection) ErrorAs(err error, i any) bool {\n\treturn gcerr.ErrorAs(err, i, c.driver.ErrorAs)\n}\n"
  },
  {
    "path": "docstore/docstore_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore\n\nimport (\n\t\"context\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n)\n\ntype Book struct {\n\tTitle            string `docstore:\"key\"`\n\tAuthor           Name   `docstore:\"author\"`\n\tPublicationYears []int  `docstore:\"pub_years,omitempty\"`\n\tNumPublications  int    `docstore:\"-\"`\n}\n\ntype Name struct {\n\tFirst, Last string\n}\n\nfunc TestIsIncNumber(t *testing.T) {\n\tfor _, x := range []any{int(1), 'x', uint(1), byte(1), float32(1), float64(1), time.Duration(1)} {\n\t\tif !isIncNumber(x) {\n\t\t\tt.Errorf(\"%v: got false, want true\", x)\n\t\t}\n\t}\n\tfor _, x := range []any{1 + 1i, \"3\", time.Time{}} {\n\t\tif isIncNumber(x) {\n\t\t\tt.Errorf(\"%v: got true, want false\", x)\n\t\t}\n\t}\n}\n\nfunc TestActionsDo(t *testing.T) {\n\tc := newCollection(fakeDriverCollection{})\n\tdefer c.Close()\n\tdn := map[string]any{\"key\": nil}\n\td1 := map[string]any{\"key\": 1}\n\td2 := map[string]any{\"key\": 2}\n\tdsn := &Book{}\n\tds1 := &Book{Title: \"The Master and Margarita\"}\n\tds2 := &Book{Title: \"The Martian\"}\n\n\tfor _, test := range []struct {\n\t\talist *ActionList\n\t\twant  []int // error indexes; nil if no error\n\t}{\n\t\t{c.Actions().Get(d1).Get(d2).Get(ds1).Get(ds2), nil},\n\t\t{c.Actions().Get(d1).Put(d1).Put(ds1).Get(ds1), nil},\n\t\t{c.Actions().Get(d2).Replace(d1).Put(d2).Get(d1), nil},\n\t\t{c.Actions().Get(ds2).Replace(ds1).Put(ds2).Get(ds1), nil},\n\t\t// Missing keys.\n\t\t{c.Actions().Put(dn).Put(dsn), []int{0, 1}},\n\t\t{c.Actions().Get(dn).Replace(dn).Create(dn).Update(dn, Mods{\"a\": 1}), []int{0, 1, 3}},\n\t\t{c.Actions().Get(dsn).Replace(dsn).Create(dsn).Update(dsn, Mods{\"a\": 1}), []int{0, 1, 3}},\n\t\t// Duplicate documents.\n\t\t{c.Actions().Create(dn).Create(dn).Create(dsn).Create(dsn), nil}, // each Create without a key is a separate document\n\t\t{c.Actions().Create(d2).Create(ds2).Get(d2).Get(ds2).Create(d2).Put(ds2), []int{4, 5}},\n\t\t{c.Actions().Get(d1).Get(ds1).Get(d1).Get(ds1), []int{2, 3}},\n\t\t{c.Actions().Put(d1).Put(ds1).Get(d1).Get(ds1).Get(d1).Get(ds1), []int{4, 5}},\n\t\t{c.Actions().Get(d1).Get(ds1).Put(d1).Put(d2).Put(ds1).Put(ds2).Put(d1).Replace(ds1), []int{6, 7}},\n\t\t{c.Actions().Create(dn).Create(d1).Create(dsn).Create(ds1).Get(d1).Get(ds1), nil},\n\t\t// Get with field paths.\n\t\t{c.Actions().Get(d1, \"a.b\", \"c\"), nil},\n\t\t{c.Actions().Get(ds1, \"name.Last\", \"pub_years\"), nil},\n\t\t{c.Actions().Get(d1, \".c\").Get(ds1, \"\").Get(ds2, \"\\xa0\\xa1\"), []int{0, 1, 2}}, // bad field path\n\t\t// Mods.\n\t\t{c.Actions().Update(d1, nil).Update(ds1, nil), []int{0, 1}},                                                 // empty mod\n\t\t{c.Actions().Update(d1, Mods{\"a.b.c\": 1, \"a.b\": 2, \"a.b+c\": 3}), []int{0}},                                  // a.b is a prefix of a.b.c\n\t\t{c.Actions().Update(d1, Mods{\"\": 1}).Update(ds1, Mods{\".f\": 2}), []int{0, 1}},                               // invalid field path\n\t\t{c.Actions().Update(d1, Mods{\"a\": Increment(true)}).Update(ds1, Mods{\"name\": Increment(\"b\")}), []int{0, 1}}, // invalid incOp\n\t} {\n\t\terr := test.alist.Do(context.Background())\n\t\tif err == nil {\n\t\t\tif len(test.want) > 0 {\n\t\t\t\tt.Errorf(\"%s: got nil, want error\", test.alist)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tvar got []int\n\t\tfor _, e := range err.(ActionListError) {\n\t\t\tif gcerrors.Code(e.Err) != gcerrors.InvalidArgument {\n\t\t\t\tt.Errorf(\"%s: got %v, want InvalidArgument\", test.alist, e.Err)\n\t\t\t}\n\t\t\tgot = append(got, e.Index)\n\t\t}\n\t\tif !cmp.Equal(got, test.want) {\n\t\t\tt.Errorf(\"%s: got %v, want %v\", test.alist, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestClosedErrors(t *testing.T) {\n\t// Check that all collection methods return errClosed if the collection is closed.\n\tctx := context.Background()\n\tc := NewCollection(fakeDriverCollection{})\n\tif err := c.Close(); err != nil {\n\t\tt.Fatalf(\"got %v, want nil\", err)\n\t}\n\n\tcheck := func(err error) {\n\t\tt.Helper()\n\t\tif alerr, ok := err.(ActionListError); ok {\n\t\t\terr = alerr.Unwrap()\n\t\t}\n\t\tif err != errClosed {\n\t\t\tt.Errorf(\"got %v, want errClosed\", err)\n\t\t}\n\t}\n\n\tdoc := map[string]any{\"key\": \"k\"}\n\tcheck(c.Close())\n\tcheck(c.Actions().Create(doc).Do(ctx))\n\tcheck(c.Create(ctx, doc))\n\tcheck(c.Replace(ctx, doc))\n\tcheck(c.Put(ctx, doc))\n\tcheck(c.Get(ctx, doc))\n\tcheck(c.Delete(ctx, doc))\n\tcheck(c.Update(ctx, doc, Mods{\"a\": 1}))\n\titer := c.Query().Get(ctx)\n\tcheck(iter.Next(ctx, doc))\n\n\t// Check that DocumentIterator.Next returns errClosed if Close is called\n\t// in the middle of the iteration.\n\tc = NewCollection(fakeDriverCollection{})\n\titer = c.Query().Get(ctx)\n\tc.Close()\n\tcheck(iter.Next(ctx, doc))\n}\n\nfunc TestSerializeRevisionErrors(t *testing.T) {\n\tc := NewCollection(fakeDriverCollection{})\n\t_, err := c.RevisionToString(nil)\n\tif got := gcerrors.Code(err); got != gcerrors.InvalidArgument {\n\t\tt.Errorf(\"got %v, want InvalidArgument\", got)\n\t}\n\t_, err = c.StringToRevision(\"\")\n\tif got := gcerrors.Code(err); got != gcerrors.InvalidArgument {\n\t\tt.Errorf(\"got %v, want InvalidArgument\", got)\n\t}\n}\n\ntype fakeDriverCollection struct {\n\tdriver.Collection\n}\n\nfunc (fakeDriverCollection) Key(doc driver.Document) (any, error) {\n\tkey, err := doc.GetField(\"key\")\n\t// TODO(#2589): remove this check once we check for empty key.\n\tif err != nil || driver.IsEmptyValue(reflect.ValueOf(key)) {\n\t\treturn nil, err\n\t}\n\treturn key, nil\n}\n\nfunc (fakeDriverCollection) RevisionField() string { return DefaultRevisionField }\n\nfunc (fakeDriverCollection) Close() error { return nil }\n\nfunc (fakeDriverCollection) RunActions(ctx context.Context, actions []*driver.Action, opts *driver.RunActionsOptions) driver.ActionListError {\n\treturn nil\n}\n\nfunc (fakeDriverCollection) RunGetQuery(context.Context, *driver.Query) (driver.DocumentIterator, error) {\n\treturn fakeDriverDocumentIterator{}, nil\n}\n\ntype fakeDriverDocumentIterator struct {\n\tdriver.DocumentIterator\n}\n\nfunc (fakeDriverDocumentIterator) Next(context.Context, driver.Document) error { return nil }\n"
  },
  {
    "path": "docstore/driver/actionkind_string.go",
    "content": "// Code generated by \"stringer -type=ActionKind\"; DO NOT EDIT.\n\npackage driver\n\nimport \"strconv\"\n\nfunc _() {\n\t// An \"invalid array index\" compiler error signifies that the constant values have changed.\n\t// Re-run the stringer command to generate them again.\n\tvar x [1]struct{}\n\t_ = x[Create-0]\n\t_ = x[Replace-1]\n\t_ = x[Put-2]\n\t_ = x[Get-3]\n\t_ = x[Delete-4]\n\t_ = x[Update-5]\n}\n\nconst _ActionKind_name = \"CreateReplacePutGetDeleteUpdate\"\n\nvar _ActionKind_index = [...]uint8{0, 6, 13, 16, 19, 25, 31}\n\nfunc (i ActionKind) String() string {\n\tif i < 0 || i >= ActionKind(len(_ActionKind_index)-1) {\n\t\treturn \"ActionKind(\" + strconv.FormatInt(int64(i), 10) + \")\"\n\t}\n\treturn _ActionKind_name[_ActionKind_index[i]:_ActionKind_index[i+1]]\n}\n"
  },
  {
    "path": "docstore/driver/codec.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// TODO(jba): support struct tags.\n// TODO(jba): for efficiency, enable encoding of only a subset of field paths.\n\npackage driver\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\n\t\"gocloud.dev/docstore/internal/fields\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\nvar (\n\tbinaryMarshalerType   = reflect.TypeFor[encoding.BinaryMarshaler]()\n\tbinaryUnmarshalerType = reflect.TypeFor[encoding.BinaryUnmarshaler]()\n\ttextMarshalerType     = reflect.TypeFor[encoding.TextMarshaler]()\n\ttextUnmarshalerType   = reflect.TypeFor[encoding.TextUnmarshaler]()\n\tprotoMessageType      = reflect.TypeFor[proto.Message]()\n)\n\n// An Encoder encodes Go values in some other form (e.g. JSON, protocol buffers).\n// The encoding protocol is designed to avoid losing type information by passing\n// values using interface{}. An Encoder is responsible for storing the value\n// it is encoding.\n//\n// Because all drivers must support the same set of values, the encoding methods\n// (with the exception of EncodeStruct) do not return errors. EncodeStruct is special\n// because it is an escape hatch for arbitrary structs, not all of which may be\n// encodable.\ntype Encoder interface {\n\t// These methods all encode and store a single Go value.\n\tEncodeNil()\n\tEncodeBool(bool)\n\tEncodeString(string)\n\tEncodeInt(int64)\n\tEncodeUint(uint64)\n\tEncodeFloat(float64)\n\tEncodeBytes([]byte)\n\n\t// EncodeList is called when a slice or array is encountered (except for a\n\t// []byte, which is handled by EncodeBytes). Its argument is the length of the\n\t// slice or array. The encoding algorithm will call the returned Encoder that\n\t// many times to encode the successive values of the list. After each such call,\n\t// ListIndex will be called with the index of the element just encoded.\n\t//\n\t// For example, []string{\"a\", \"b\"} will result in these calls:\n\t//     enc2 := enc.EncodeList(2)\n\t//     enc2.EncodeString(\"a\")\n\t//     enc2.ListIndex(0)\n\t//     enc2.EncodeString(\"b\")\n\t//     enc2.ListIndex(1)\n\tEncodeList(n int) Encoder\n\tListIndex(i int)\n\n\t// EncodeMap is called when a map is encountered. Its argument is the number of\n\t// fields in the map. The encoding algorithm will call the returned Encoder that\n\t// many times to encode the successive values of the map. After each such call,\n\t// MapKey will be called with the key of the element just encoded.\n\t//\n\t// For example, map[string}int{\"A\": 1, \"B\": 2} will result in these calls:\n\t//     enc2 := enc.EncodeMap(2)\n\t//     enc2.EncodeInt(1)\n\t//     enc2.MapKey(\"A\")\n\t//     enc2.EncodeInt(2)\n\t//     enc2.MapKey(\"B\")\n\t//\n\t// EncodeMap is also called for structs. The map then consists of the exported\n\t// fields of the struct. For struct{A, B int}{1, 2}, if EncodeStruct returns\n\t// false, the same sequence of calls as above will occur.\n\tEncodeMap(n int) Encoder\n\tMapKey(string)\n\n\t// If the encoder wants to encode a value in a special way it should do so here\n\t// and return true along with any error from the encoding. Otherwise, it should\n\t// return false.\n\tEncodeSpecial(v reflect.Value) (bool, error)\n}\n\n// Encode encodes the value using the given Encoder. It traverses the value,\n// iterating over arrays, slices, maps and the exported fields of structs. If it\n// encounters a non-nil pointer, it encodes the value that it points to.\n// Encode treats a few interfaces specially:\n//\n// If the value implements encoding.BinaryMarshaler, Encode invokes MarshalBinary\n// on it and encodes the resulting byte slice.\n//\n// If the value implements encoding.TextMarshaler, Encode invokes MarshalText on it\n// and encodes the resulting string.\n//\n// If the value implements proto.Message, Encode invokes proto.Marshal on it and encodes\n// the resulting byte slice. Here proto is the package \"google.golang.org/protobuf/proto\".\n//\n// Not every map key type can be encoded. Only strings, integers (signed or\n// unsigned), and types that implement encoding.TextMarshaler are permitted as map\n// keys. These restrictions match exactly those of the encoding/json package.\nfunc Encode(v reflect.Value, e Encoder) error {\n\treturn wrap(encode(v, e), gcerr.InvalidArgument)\n}\n\nfunc encode(v reflect.Value, enc Encoder) error {\n\tif !v.IsValid() {\n\t\tenc.EncodeNil()\n\t\treturn nil\n\t}\n\tdone, err := enc.EncodeSpecial(v)\n\tif done {\n\t\treturn err\n\t}\n\tif v.Type().Implements(binaryMarshalerType) {\n\t\tbytes, err := v.Interface().(encoding.BinaryMarshaler).MarshalBinary()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenc.EncodeBytes(bytes)\n\t\treturn nil\n\t}\n\tif v.Type().Implements(protoMessageType) {\n\t\tif v.IsNil() {\n\t\t\tenc.EncodeNil()\n\t\t} else {\n\t\t\tbytes, err := proto.Marshal(v.Interface().(proto.Message))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tenc.EncodeBytes(bytes)\n\t\t}\n\t\treturn nil\n\t}\n\tif reflect.PtrTo(v.Type()).Implements(protoMessageType) {\n\t\tbytes, err := proto.Marshal(v.Addr().Interface().(proto.Message))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenc.EncodeBytes(bytes)\n\t\treturn nil\n\t}\n\tif v.Type().Implements(textMarshalerType) {\n\t\tbytes, err := v.Interface().(encoding.TextMarshaler).MarshalText()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenc.EncodeString(string(bytes))\n\t\treturn nil\n\t}\n\tswitch v.Kind() {\n\tcase reflect.Bool:\n\t\tenc.EncodeBool(v.Bool())\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tenc.EncodeInt(v.Int())\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tenc.EncodeUint(v.Uint())\n\tcase reflect.Float32, reflect.Float64:\n\t\tenc.EncodeFloat(v.Float())\n\tcase reflect.String:\n\t\tenc.EncodeString(v.String())\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\tenc.EncodeNil()\n\t\t\treturn nil\n\t\t}\n\t\tfallthrough\n\tcase reflect.Array:\n\t\treturn encodeList(v, enc)\n\tcase reflect.Map:\n\t\treturn encodeMap(v, enc)\n\tcase reflect.Pointer:\n\t\tif v.IsNil() {\n\t\t\tenc.EncodeNil()\n\t\t\treturn nil\n\t\t}\n\t\treturn encode(v.Elem(), enc)\n\tcase reflect.Interface:\n\t\tif v.IsNil() {\n\t\t\tenc.EncodeNil()\n\t\t\treturn nil\n\t\t}\n\t\treturn encode(v.Elem(), enc)\n\n\tcase reflect.Struct:\n\t\tfields, err := fieldCache.Fields(v.Type())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn encodeStructWithFields(v, fields, enc)\n\n\tdefault:\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"cannot encode type %s\", v.Type())\n\t}\n\treturn nil\n}\n\n// Encode an array or non-nil slice.\nfunc encodeList(v reflect.Value, enc Encoder) error {\n\t// Byte slices encode specially.\n\tif v.Type().Kind() == reflect.Slice && v.Type().Elem().Kind() == reflect.Uint8 {\n\t\tenc.EncodeBytes(v.Bytes())\n\t\treturn nil\n\t}\n\tn := v.Len()\n\tenc2 := enc.EncodeList(n)\n\tfor i := range n {\n\t\tif err := encode(v.Index(i), enc2); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenc2.ListIndex(i)\n\t}\n\treturn nil\n}\n\n// Encode a map.\nfunc encodeMap(v reflect.Value, enc Encoder) error {\n\tif v.IsNil() {\n\t\tenc.EncodeNil()\n\t\treturn nil\n\t}\n\tkeys := v.MapKeys()\n\tenc2 := enc.EncodeMap(len(keys))\n\tfor _, k := range keys {\n\t\tsk, err := stringifyMapKey(k)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := encode(v.MapIndex(k), enc2); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenc2.MapKey(sk)\n\t}\n\treturn nil\n}\n\n// k is the key of a map. Encode it as a string.\n// Only strings, integers (signed or unsigned), and types that implement\n// encoding.TextMarshaler are supported.\nfunc stringifyMapKey(k reflect.Value) (string, error) {\n\t// This is basically reflectWithString.resolve, from encoding/json/encode.go.\n\tif k.Kind() == reflect.String {\n\t\treturn k.String(), nil\n\t}\n\tif tm, ok := k.Interface().(encoding.TextMarshaler); ok {\n\t\tb, err := tm.MarshalText()\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn string(b), nil\n\t}\n\tswitch k.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn strconv.FormatInt(k.Int(), 10), nil\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn strconv.FormatUint(k.Uint(), 10), nil\n\tdefault:\n\t\treturn \"\", gcerr.Newf(gcerr.InvalidArgument, nil, \"cannot encode key %v of type %s\", k, k.Type())\n\t}\n}\n\nfunc encodeStructWithFields(v reflect.Value, fields fields.List, e Encoder) error {\n\te2 := e.EncodeMap(len(fields))\n\tfor _, f := range fields {\n\t\tfv, ok := fieldByIndex(v, f.Index)\n\t\tif !ok {\n\t\t\t// if !ok, then f is a field in an embedded pointer to struct, and that embedded pointer\n\t\t\t// is nil in v. In other words, the field exists in the struct type, but not this particular\n\t\t\t// struct value. So we just ignore it.\n\t\t\tcontinue\n\t\t}\n\t\tif f.ParsedTag.(tagOptions).omitEmpty && IsEmptyValue(fv) {\n\t\t\tcontinue\n\t\t}\n\t\tif err := encode(fv, e2); err != nil {\n\t\t\treturn err\n\t\t}\n\t\te2.MapKey(f.Name)\n\t}\n\treturn nil\n}\n\n// fieldByIndex retrieves the field of v at the given index if present.\n// v must be a struct. index must refer to a valid field of v's type.\n// The second return value is false if there is a nil embedded pointer\n// along the path denoted by index.\n//\n// From encoding/json/encode.go.\nfunc fieldByIndex(v reflect.Value, index []int) (reflect.Value, bool) {\n\tfor _, i := range index {\n\t\tif v.Kind() == reflect.Pointer {\n\t\t\tif v.IsNil() {\n\t\t\t\treturn reflect.Value{}, false\n\t\t\t}\n\t\t\tv = v.Elem()\n\t\t}\n\t\tv = v.Field(i)\n\t}\n\treturn v, true\n}\n\n////////////////////////////////////////////////////////////////\n\n// TODO(jba): consider a fast path: if we are decoding into a struct, assume the same struct\n// was used to encode. Then we can build a map from field names to functions, where each\n// function avoids all the tests of Decode and contains just the code for setting the field.\n\n// TODO(jba): provide a way to override the check on missing fields.\n\n// A Decoder decodes data that was produced by Encode back into Go values.\n// Each Decoder instance is responsible for decoding one value.\ntype Decoder interface {\n\t// The AsXXX methods each report whether the value being decoded can be represented as\n\t// a particular Go type. If so, the method should return the value as that type, and true;\n\t// otherwise it should return the zero value and false.\n\tAsString() (string, bool)\n\tAsInt() (int64, bool)\n\tAsUint() (uint64, bool)\n\tAsFloat() (float64, bool)\n\tAsBytes() ([]byte, bool)\n\tAsBool() (bool, bool)\n\tAsNull() bool\n\n\t// ListLen should return the length of the value being decoded and true, if the\n\t// value can be decoded into a slice or array. Otherwise, ListLen should return\n\t// (0, false).\n\tListLen() (int, bool)\n\n\t// If ListLen returned true, then DecodeList will be called. It should iterate\n\t// over the value being decoded in sequence from index 0, invoking the callback\n\t// for each element with the element's index and a Decoder for the element.\n\t// If the callback returns false, DecodeList should return immediately.\n\tDecodeList(func(int, Decoder) bool)\n\n\t// MapLen should return the number of fields of the value being decoded and true,\n\t// if the value can be decoded into a map or struct. Otherwise, it should return\n\t// (0, false).\n\tMapLen() (int, bool)\n\n\t// DecodeMap iterates over the fields of the value being decoded, invoke the\n\t// callback on each with field name, a Decoder for the field value, and a bool\n\t// to indicate whether or not to use exact match for the field names. It will\n\t// be called when MapLen returns true or decoding a struct. If the callback\n\t// returns false, DecodeMap should return immediately.\n\tDecodeMap(func(string, Decoder, bool) bool)\n\n\t// AsInterface should decode the value into the Go value that best represents it.\n\tAsInterface() (any, error)\n\n\t// If the decoder wants to decode a value in a special way it should do so here\n\t// and return true, the decoded value, and any error from the decoding.\n\t// Otherwise, it should return false.\n\tAsSpecial(reflect.Value) (bool, any, error)\n\n\t// String should return a human-readable representation of the Decoder, for error messages.\n\tString() string\n}\n\n// Decode decodes the value held in the Decoder d into v.\n// Decode creates slices, maps and pointer elements as needed.\n// It treats values that implement encoding.BinaryUnmarshaler,\n// encoding.TextUnmarshaler and proto.Message specially; see Encode.\nfunc Decode(v reflect.Value, d Decoder) error {\n\treturn wrap(decode(v, d), gcerr.InvalidArgument)\n}\n\nfunc decode(v reflect.Value, d Decoder) error {\n\tif !v.CanSet() {\n\t\treturn fmt.Errorf(\"while decoding: cannot set %+v\", v)\n\t}\n\t// A Null value sets anything nullable to nil.\n\t// If the value isn't nullable, we keep going.\n\t// TODO(jba): should we treat decoding a null into a non-nullable as an error, or\n\t// ignore it like encoding/json does?\n\tif d.AsNull() {\n\t\tswitch v.Kind() {\n\t\tcase reflect.Interface, reflect.Pointer, reflect.Map, reflect.Slice:\n\t\t\tv.Set(reflect.Zero(v.Type()))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif done, val, err := d.AsSpecial(v); done {\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif reflect.TypeOf(val).AssignableTo(v.Type()) {\n\t\t\tv.Set(reflect.ValueOf(val))\n\t\t\treturn nil\n\t\t}\n\t\treturn decodingError(v, d)\n\t}\n\n\t// Handle implemented interfaces first.\n\tif reflect.PtrTo(v.Type()).Implements(binaryUnmarshalerType) {\n\t\tif b, ok := d.AsBytes(); ok {\n\t\t\treturn v.Addr().Interface().(encoding.BinaryUnmarshaler).UnmarshalBinary(b)\n\t\t}\n\t\treturn decodingError(v, d)\n\t}\n\tif reflect.PtrTo(v.Type()).Implements(protoMessageType) {\n\t\tif b, ok := d.AsBytes(); ok {\n\t\t\treturn proto.Unmarshal(b, v.Addr().Interface().(proto.Message))\n\t\t}\n\t\treturn decodingError(v, d)\n\t}\n\tif reflect.PtrTo(v.Type()).Implements(textUnmarshalerType) {\n\t\tif s, ok := d.AsString(); ok {\n\t\t\treturn v.Addr().Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(s))\n\t\t}\n\t\treturn decodingError(v, d)\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Bool:\n\t\tif b, ok := d.AsBool(); ok {\n\t\t\tv.SetBool(b)\n\t\t\treturn nil\n\t\t}\n\n\tcase reflect.String:\n\t\tif s, ok := d.AsString(); ok {\n\t\t\tv.SetString(s)\n\t\t\treturn nil\n\t\t}\n\n\tcase reflect.Float32, reflect.Float64:\n\t\tif f, ok := d.AsFloat(); ok {\n\t\t\tv.SetFloat(f)\n\t\t\treturn nil\n\t\t}\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\ti, ok := d.AsInt()\n\t\tif !ok {\n\t\t\t// Accept a floating-point number with integral value.\n\t\t\tf, ok := d.AsFloat()\n\t\t\tif !ok {\n\t\t\t\treturn decodingError(v, d)\n\t\t\t}\n\t\t\ti = int64(f)\n\t\t\tif float64(i) != f {\n\t\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"float %f does not fit into %s\", f, v.Type())\n\t\t\t}\n\t\t}\n\t\tif v.OverflowInt(i) {\n\t\t\treturn overflowError(i, v.Type())\n\t\t}\n\t\tv.SetInt(i)\n\t\treturn nil\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tu, ok := d.AsUint()\n\t\tif !ok {\n\t\t\t// Accept a floating-point number with integral value.\n\t\t\tf, ok := d.AsFloat()\n\t\t\tif !ok {\n\t\t\t\treturn decodingError(v, d)\n\t\t\t}\n\t\t\tu = uint64(f)\n\t\t\tif float64(u) != f {\n\t\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"float %f does not fit into %s\", f, v.Type())\n\t\t\t}\n\t\t}\n\t\tif v.OverflowUint(u) {\n\t\t\treturn overflowError(u, v.Type())\n\t\t}\n\t\tv.SetUint(u)\n\t\treturn nil\n\n\tcase reflect.Slice, reflect.Array:\n\t\treturn decodeList(v, d)\n\n\tcase reflect.Map:\n\t\treturn decodeMap(v, d)\n\n\tcase reflect.Pointer:\n\t\t// If the pointer is nil, set it to a zero value.\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\t\treturn decode(v.Elem(), d)\n\n\tcase reflect.Struct:\n\t\treturn decodeStruct(v, d)\n\n\tcase reflect.Interface:\n\t\tif v.NumMethod() == 0 { // empty interface\n\t\t\t// If v holds a pointer, set the pointer.\n\t\t\tif !v.IsNil() && v.Elem().Kind() == reflect.Pointer {\n\t\t\t\treturn decode(v.Elem(), d)\n\t\t\t}\n\t\t\t// Otherwise, create a fresh value.\n\t\t\tx, err := d.AsInterface()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tv.Set(reflect.ValueOf(x))\n\t\t\treturn nil\n\t\t}\n\t\t// Any other kind of interface is an error???\n\t}\n\n\treturn decodingError(v, d)\n}\n\nfunc decodeList(v reflect.Value, d Decoder) error {\n\t// If we're decoding into a byte slice or array, and the decoded value\n\t// supports that, then do the decoding.\n\tif v.Type().Elem().Kind() == reflect.Uint8 {\n\t\tif b, ok := d.AsBytes(); ok {\n\t\t\tif v.Kind() == reflect.Slice {\n\t\t\t\tv.SetBytes(b)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\t// It's an array; copy the data in.\n\t\t\terr := prepareLength(v, len(b))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treflect.Copy(v, reflect.ValueOf(b))\n\t\t\treturn nil\n\t\t}\n\t\t// Fall through to decode the []byte as an ordinary slice.\n\t}\n\tdlen, ok := d.ListLen()\n\tif !ok {\n\t\treturn decodingError(v, d)\n\t}\n\terr := prepareLength(v, dlen)\n\tif err != nil {\n\t\treturn err\n\t}\n\td.DecodeList(func(i int, vd Decoder) bool {\n\t\tif err != nil || i >= dlen {\n\t\t\treturn false\n\t\t}\n\t\terr = decode(v.Index(i), vd)\n\t\treturn err == nil\n\t})\n\treturn err\n}\n\n// v must be a slice or array. We want it to be of length wantLen. Prepare it as\n// necessary (details described in the code below), and return its resulting length.\n// If an array is too short, return an error. This behavior differs from\n// encoding/json, which just populates a short array with whatever it can and drops\n// the rest. That can lose data.\nfunc prepareLength(v reflect.Value, wantLen int) error {\n\tvLen := v.Len()\n\tif v.Kind() == reflect.Slice {\n\t\t// Construct a slice of the right size, avoiding allocation if possible.\n\t\tswitch {\n\t\tcase vLen < wantLen: // v too short\n\t\t\tif v.Cap() >= wantLen { // extend its length if there's room\n\t\t\t\tv.SetLen(wantLen)\n\t\t\t} else { // else make a new one\n\t\t\t\tv.Set(reflect.MakeSlice(v.Type(), wantLen, wantLen))\n\t\t\t}\n\t\tcase vLen > wantLen: // v too long; truncate it\n\t\t\tv.SetLen(wantLen)\n\t\t}\n\t} else { // array\n\t\tswitch {\n\t\tcase vLen < wantLen: // v too short\n\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"array length %d is too short for incoming list of length %d\",\n\t\t\t\tvLen, wantLen)\n\t\tcase vLen > wantLen: // v too long; set extra elements to zero\n\t\t\tz := reflect.Zero(v.Type().Elem())\n\t\t\tfor i := wantLen; i < vLen; i++ {\n\t\t\t\tv.Index(i).Set(z)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Since a map value is not settable via reflection, this function always creates a\n// new element for each corresponding map key. Existing values of v are overwritten.\n// This happens even if the map value is something like a pointer to a struct, where\n// we could in theory populate the existing struct value instead of discarding it.\n// This behavior matches encoding/json.\nfunc decodeMap(v reflect.Value, d Decoder) error {\n\tmapLen, ok := d.MapLen()\n\tif !ok {\n\t\treturn decodingError(v, d)\n\t}\n\tt := v.Type()\n\tif v.IsNil() {\n\t\tv.Set(reflect.MakeMapWithSize(t, mapLen))\n\t}\n\tet := t.Elem()\n\tvar err error\n\tkt := v.Type().Key()\n\td.DecodeMap(func(key string, vd Decoder, _ bool) bool {\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tel := reflect.New(et).Elem()\n\t\terr = decode(el, vd)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tvk, e := unstringifyMapKey(key, kt)\n\t\tif e != nil {\n\t\t\terr = e\n\t\t\treturn false\n\t\t}\n\t\tv.SetMapIndex(vk, el)\n\t\treturn err == nil\n\t})\n\treturn err\n}\n\n// Given a map key encoded as a string, and the type of the map key, convert the key\n// into the type.\n// For example, if we are decoding the key \"3\" for a map[int]interface{}, then key is \"3\"\n// and keyType is reflect.Int.\nfunc unstringifyMapKey(key string, keyType reflect.Type) (reflect.Value, error) {\n\t// This code is mostly from the middle of decodeState.object in encoding/json/decode.go.\n\t// Except for literalStore, which I don't understand.\n\t// TODO(jba): understand literalStore.\n\tswitch {\n\tcase keyType.Kind() == reflect.String:\n\t\treturn reflect.ValueOf(key).Convert(keyType), nil\n\tcase reflect.PtrTo(keyType).Implements(textUnmarshalerType):\n\t\ttu := reflect.New(keyType)\n\t\tif err := tu.Interface().(encoding.TextUnmarshaler).UnmarshalText([]byte(key)); err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\treturn tu.Elem(), nil\n\tcase keyType.Kind() == reflect.Interface && keyType.NumMethod() == 0:\n\t\t// TODO: remove this case? encoding/json doesn't support it.\n\t\treturn reflect.ValueOf(key), nil\n\tdefault:\n\t\tswitch keyType.Kind() {\n\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\t\tn, err := strconv.ParseInt(key, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn reflect.Value{}, err\n\t\t\t}\n\t\t\tif reflect.Zero(keyType).OverflowInt(n) {\n\t\t\t\treturn reflect.Value{}, overflowError(n, keyType)\n\t\t\t}\n\t\t\treturn reflect.ValueOf(n).Convert(keyType), nil\n\t\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\t\tn, err := strconv.ParseUint(key, 10, 64)\n\t\t\tif err != nil {\n\t\t\t\treturn reflect.Value{}, err\n\t\t\t}\n\t\t\tif reflect.Zero(keyType).OverflowUint(n) {\n\t\t\t\treturn reflect.Value{}, overflowError(n, keyType)\n\t\t\t}\n\t\t\treturn reflect.ValueOf(n).Convert(keyType), nil\n\t\tdefault:\n\t\t\treturn reflect.Value{}, gcerr.Newf(gcerr.InvalidArgument, nil, \"invalid key type %s\", keyType)\n\t\t}\n\t}\n}\n\nfunc decodeStruct(v reflect.Value, d Decoder) error {\n\tfs, err := fieldCache.Fields(v.Type())\n\tif err != nil {\n\t\treturn err\n\t}\n\td.DecodeMap(func(key string, d2 Decoder, exactMatch bool) bool {\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tvar f *fields.Field\n\t\tif exactMatch {\n\t\t\tf = fs.MatchExact(key)\n\t\t} else {\n\t\t\tf = fs.MatchFold(key)\n\t\t}\n\t\tif f == nil {\n\t\t\terr = gcerr.Newf(gcerr.InvalidArgument, nil, \"no field matching %q in %s\", key, v.Type())\n\t\t\treturn false\n\t\t}\n\t\tfv, ok := fieldByIndexCreate(v, f.Index)\n\t\tif !ok {\n\t\t\terr = gcerr.Newf(gcerr.InvalidArgument, nil,\n\t\t\t\t\"setting field %q in %s: cannot create embedded pointer field of unexported type\",\n\t\t\t\tkey, v.Type())\n\t\t\treturn false\n\t\t}\n\t\terr = decode(fv, d2)\n\t\treturn err == nil\n\t})\n\treturn err\n}\n\n// fieldByIndexCreate retrieves the the field of v at the given index if present,\n// creating embedded struct pointers where necessary.\n// v must be a struct. index must refer to a valid field of v's type.\n// The second return value is false If there is a nil embedded pointer of unexported\n// type along the path denoted by index. (We cannot create such pointers.)\nfunc fieldByIndexCreate(v reflect.Value, index []int) (reflect.Value, bool) {\n\tfor _, i := range index {\n\t\tif v.Kind() == reflect.Pointer {\n\t\t\tif v.IsNil() {\n\t\t\t\tif !v.CanSet() {\n\t\t\t\t\treturn reflect.Value{}, false\n\t\t\t\t}\n\t\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t\t}\n\t\t\tv = v.Elem()\n\t\t}\n\t\tv = v.Field(i)\n\t}\n\treturn v, true\n}\n\nfunc decodingError(v reflect.Value, d Decoder) error {\n\treturn gcerr.New(gcerr.InvalidArgument, nil, 2, fmt.Sprintf(\"cannot set type %s to %v\", v.Type(), d))\n}\n\nfunc overflowError(x any, t reflect.Type) error {\n\treturn gcerr.New(gcerr.InvalidArgument, nil, 2, fmt.Sprintf(\"value %v overflows type %s\", x, t))\n}\n\nfunc wrap(err error, code gcerr.ErrorCode) error {\n\tif _, ok := err.(*gcerr.Error); !ok && err != nil {\n\t\terr = gcerr.New(code, err, 2, err.Error())\n\t}\n\treturn err\n}\n\nvar fieldCache = fields.NewCache(parseTag, nil, nil)\n\n// IsEmptyValue returns whether or not v is a zero value of its type.\n// Copied from encoding/json, go 1.12.\nfunc IsEmptyValue(v reflect.Value) bool {\n\tswitch k := v.Kind(); k {\n\tcase reflect.Array, reflect.Map, reflect.Slice, reflect.String:\n\t\treturn v.Len() == 0\n\tcase reflect.Bool:\n\t\treturn !v.Bool()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn v.Int() == 0\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn v.Uint() == 0\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn v.Float() == 0\n\tcase reflect.Interface, reflect.Pointer:\n\t\treturn v.IsNil()\n\t}\n\treturn false\n}\n\n// Options for struct tags.\ntype tagOptions struct {\n\tomitEmpty bool // do not encode value if empty\n}\n\n// parseTag interprets docstore struct field tags.\nfunc parseTag(t reflect.StructTag) (name string, keep bool, other any, err error) {\n\tvar opts []string\n\tname, keep, opts = fields.ParseStandardTag(\"docstore\", t)\n\ttagOpts := tagOptions{}\n\tfor _, opt := range opts {\n\t\tswitch opt {\n\t\tcase \"omitempty\":\n\t\t\ttagOpts.omitEmpty = true\n\t\tdefault:\n\t\t\treturn \"\", false, nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"unknown tag option: %q\", opt)\n\t\t}\n\t}\n\treturn name, keep, tagOpts, nil\n}\n"
  },
  {
    "path": "docstore/driver/codec_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage driver\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"google.golang.org/protobuf/proto\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\ntype myString string\n\ntype te struct{ X byte }\n\nfunc (e te) MarshalText() ([]byte, error) {\n\treturn []byte{e.X}, nil\n}\n\nfunc (e *te) UnmarshalText(b []byte) error {\n\tif len(b) != 1 {\n\t\treturn errors.New(\"te.UnmarshalText: need exactly 1 byte\")\n\t}\n\te.X = b[0]\n\treturn nil\n}\n\ntype special int\n\nfunc (special) MarshalBinary() ([]byte, error) { panic(\"should never be called\") }\nfunc (*special) UnmarshalBinary([]byte) error  { panic(\"should never be called\") }\n\ntype badSpecial int\n\ntype Embed1 struct {\n\tE1 string\n}\ntype Embed2 struct {\n\tE2 string\n}\n\ntype embed3 struct {\n\tE3 string\n}\n\ntype embed4 struct {\n\tE4 string\n}\n\ntype MyStruct struct {\n\tA int\n\tB *bool\n\tC []*te\n\tD []time.Time\n\tT *tspb.Timestamp\n\tEmbed1\n\t*Embed2\n\tembed3\n\t*embed4\n\tOmit      int `docstore:\"-\"`\n\tOmitEmpty int `docstore:\",omitempty\"`\n\tRename    int `docstore:\"rename\"`\n}\n\nfunc TestEncode(t *testing.T) {\n\tvar seven int32 = 7\n\tvar nullptr *int\n\ttm := time.Now()\n\ttmb, err := tm.MarshalBinary()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttru := true\n\tts := &tspb.Timestamp{Seconds: 25, Nanos: 300}\n\ttsb, err := proto.Marshal(ts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, test := range []struct {\n\t\tin, want any\n\t}{\n\t\t{nil, nil},\n\t\t{0, int64(0)},\n\t\t{uint64(999), uint64(999)},\n\t\t{float32(3.5), float64(3.5)},\n\t\t{\"\", \"\"},\n\t\t{\"x\", \"x\"},\n\t\t{true, true},\n\t\t{nullptr, nil},\n\t\t{seven, int64(seven)},\n\t\t{&seven, int64(seven)},\n\t\t{[]byte{1, 2}, []byte{1, 2}},\n\t\t{[2]byte{3, 4}, []any{uint64(3), uint64(4)}},\n\t\t{[]int(nil), nil},\n\t\t{[]int{}, []any{}},\n\t\t{[]int{1, 2}, []any{int64(1), int64(2)}},\n\t\t{\n\t\t\t[][]string{{\"a\", \"b\"}, {\"c\", \"d\"}},\n\t\t\t[]any{\n\t\t\t\t[]any{\"a\", \"b\"},\n\t\t\t\t[]any{\"c\", \"d\"},\n\t\t\t},\n\t\t},\n\t\t{[...]int{1, 2}, []any{int64(1), int64(2)}},\n\t\t{[]any{nil, false}, []any{nil, false}},\n\t\t{map[string]int(nil), nil},\n\t\t{map[string]int{}, map[string]any{}},\n\t\t{\n\t\t\tmap[string]int{\"a\": 1, \"b\": 2},\n\t\t\tmap[string]any{\"a\": int64(1), \"b\": int64(2)},\n\t\t},\n\t\t{tm, tmb},\n\t\t{ts, tsb},\n\t\t{te{'A'}, \"A\"},\n\t\t{special(17), 17},\n\t\t{myString(\"x\"), \"x\"},\n\t\t{[]myString{\"x\"}, []any{\"x\"}},\n\t\t{map[myString]myString{\"a\": \"x\"}, map[string]any{\"a\": \"x\"}},\n\t\t{\n\t\t\tmap[int]bool{17: true},\n\t\t\tmap[string]any{\"17\": true},\n\t\t},\n\t\t{\n\t\t\tmap[uint]bool{18: true},\n\t\t\tmap[string]any{\"18\": true},\n\t\t},\n\t\t{\n\t\t\tmap[te]bool{{'B'}: true},\n\t\t\tmap[string]any{\"B\": true},\n\t\t},\n\t\t{\n\t\t\tMyStruct{\n\t\t\t\tA:         1,\n\t\t\t\tB:         &tru,\n\t\t\t\tC:         []*te{{'T'}},\n\t\t\t\tD:         []time.Time{tm},\n\t\t\t\tT:         ts,\n\t\t\t\tEmbed1:    Embed1{E1: \"E1\"},\n\t\t\t\tEmbed2:    &Embed2{E2: \"E2\"},\n\t\t\t\tembed3:    embed3{E3: \"E3\"},\n\t\t\t\tembed4:    &embed4{E4: \"E4\"},\n\t\t\t\tOmit:      3,\n\t\t\t\tOmitEmpty: 4,\n\t\t\t\tRename:    5,\n\t\t\t},\n\t\t\tmap[string]any{\n\t\t\t\t\"A\":         int64(1),\n\t\t\t\t\"B\":         true,\n\t\t\t\t\"C\":         []any{\"T\"},\n\t\t\t\t\"D\":         []any{tmb},\n\t\t\t\t\"T\":         tsb,\n\t\t\t\t\"E1\":        \"E1\",\n\t\t\t\t\"E2\":        \"E2\",\n\t\t\t\t\"E3\":        \"E3\",\n\t\t\t\t\"E4\":        \"E4\",\n\t\t\t\t\"OmitEmpty\": int64(4),\n\t\t\t\t\"rename\":    int64(5),\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tMyStruct{},\n\t\t\tmap[string]any{\n\t\t\t\t\"A\":      int64(0),\n\t\t\t\t\"B\":      nil,\n\t\t\t\t\"C\":      nil,\n\t\t\t\t\"D\":      nil,\n\t\t\t\t\"T\":      nil,\n\t\t\t\t\"E1\":     \"\",\n\t\t\t\t\"E3\":     \"\",\n\t\t\t\t\"rename\": int64(0),\n\t\t\t},\n\t\t},\n\t} {\n\t\tenc := &testEncoder{}\n\t\tif err := Encode(reflect.ValueOf(test.in), enc); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot := enc.val\n\t\tif diff := cmp.Diff(got, test.want); diff != \"\" {\n\t\t\tt.Errorf(\"%#v (got=-, want=+):\\n%s\", test.in, diff)\n\t\t}\n\t}\n}\n\ntype badBinaryMarshaler struct{}\n\nfunc (badBinaryMarshaler) MarshalBinary() ([]byte, error) { return nil, errors.New(\"bad\") }\nfunc (*badBinaryMarshaler) UnmarshalBinary([]byte) error  { return errors.New(\"bad\") }\n\ntype badTextMarshaler struct{}\n\nfunc (badTextMarshaler) MarshalText() ([]byte, error) { return nil, errors.New(\"bad\") }\nfunc (*badTextMarshaler) UnmarshalText([]byte) error  { return errors.New(\"bad\") }\n\nfunc TestEncodeErrors(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tdesc string\n\t\tval  any\n\t}{\n\t\t{\"MarshalBinary fails\", badBinaryMarshaler{}},\n\t\t{\"MarshalText fails\", badTextMarshaler{}},\n\t\t{\"bad type\", make(chan int)},\n\t\t{\"bad type in list\", []any{func() {}}},\n\t\t{\"bad type in map\", map[string]any{\"a\": func() {}}},\n\t\t{\"bad type in struct\", &struct{ C chan int }{}},\n\t\t{\"bad map key type\", map[float32]int{1: 1}},\n\t\t{\"MarshalText for map key fails\", map[badTextMarshaler]int{{}: 1}},\n\t} {\n\t\tenc := &testEncoder{}\n\t\tif err := Encode(reflect.ValueOf(test.val), enc); err == nil {\n\t\t\tt.Errorf(\"%s: got nil, want error\", test.desc)\n\t\t} else if c := gcerrors.Code(err); c != gcerrors.InvalidArgument {\n\t\t\tt.Errorf(\"%s: got code %s, want InvalidArgument\", test.desc, c)\n\t\t}\n\t}\n}\n\ntype testEncoder struct {\n\tval any\n}\n\nfunc (e *testEncoder) EncodeNil()            { e.val = nil }\nfunc (e *testEncoder) EncodeBool(x bool)     { e.val = x }\nfunc (e *testEncoder) EncodeString(x string) { e.val = x }\nfunc (e *testEncoder) EncodeInt(x int64)     { e.val = x }\nfunc (e *testEncoder) EncodeUint(x uint64)   { e.val = x }\nfunc (e *testEncoder) EncodeFloat(x float64) { e.val = x }\nfunc (e *testEncoder) EncodeBytes(x []byte)  { e.val = x }\n\nvar (\n\ttypeOfSpecial    = reflect.TypeFor[special]()\n\ttypeOfBadSpecial = reflect.TypeFor[badSpecial]()\n)\n\nfunc (e *testEncoder) EncodeSpecial(v reflect.Value) (bool, error) {\n\t// special would normally encode as a []byte, because it implements BinaryMarshaler.\n\t// Encode it as an int instead.\n\tif v.Type() == typeOfSpecial {\n\t\te.val = int(v.Interface().(special))\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\nfunc (e *testEncoder) ListIndex(int) { panic(\"impossible\") }\nfunc (e *testEncoder) MapKey(string) { panic(\"impossible\") }\n\nfunc (e *testEncoder) EncodeList(n int) Encoder {\n\ts := make([]any, n)\n\te.val = s\n\treturn &listEncoder{s: s}\n}\n\nfunc (e *testEncoder) EncodeMap(n int) Encoder {\n\tm := make(map[string]any, n)\n\te.val = m\n\treturn &mapEncoder{m: m}\n}\n\ntype listEncoder struct {\n\ts []any\n\ttestEncoder\n}\n\nfunc (e *listEncoder) ListIndex(i int) { e.s[i] = e.val }\n\ntype mapEncoder struct {\n\tm map[string]any\n\ttestEncoder\n}\n\nfunc (e *mapEncoder) MapKey(k string) { e.m[k] = e.val }\n\nfunc TestDecode(t *testing.T) {\n\ttwo := 2\n\ttru := true\n\tfa := false\n\tptru := &tru\n\tpfa := &fa\n\ttm := time.Now()\n\ttmb, err := tm.MarshalBinary()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tts := &tspb.Timestamp{Seconds: 25, Nanos: 300}\n\ttsb, err := proto.Marshal(ts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tfor _, test := range []struct {\n\t\tin         any // pointer that will be set\n\t\tval        any // value to set it to\n\t\twant       any\n\t\texactMatch bool\n\t}{\n\t\t{new(any), nil, nil, true},\n\t\t{new(int), int64(7), int(7), true},\n\t\t{new(uint8), uint64(250), uint8(250), true},\n\t\t{new(bool), true, true, true},\n\t\t{new(string), \"x\", \"x\", true},\n\t\t{new(float32), 4.25, float32(4.25), true},\n\t\t{new(*int), int64(2), &two, true},\n\t\t{new(*int), nil, (*int)(nil), true},\n\t\t{new([]byte), []byte(\"foo\"), []byte(\"foo\"), true},\n\t\t{new([]string), []any{\"a\", \"b\"}, []string{\"a\", \"b\"}, true},\n\t\t{new([]**bool), []any{true, false}, []**bool{&ptru, &pfa}, true},\n\t\t{&[1]int{1}, []any{2}, [1]int{2}, true},\n\t\t{&[2]int{1, 2}, []any{3}, [2]int{3, 0}, true}, // zero extra elements\n\t\t{&[]int{1, 2}, []any{3}, []int{3}, true},      // truncate slice\n\t\t{\n\t\t\t// extend slice\n\t\t\tfunc() *[]int { s := make([]int, 1, 2); return &s }(),\n\t\t\t[]any{5, 6},\n\t\t\t[]int{5, 6},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[string]string),\n\t\t\tmap[string]any{\"a\": \"b\"},\n\t\t\tmap[string]string{\"a\": \"b\"},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[int]bool),\n\t\t\tmap[string]any{\"17\": true},\n\t\t\tmap[int]bool{17: true},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[te]bool),\n\t\t\tmap[string]any{\"B\": true},\n\t\t\tmap[te]bool{{'B'}: true},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[any]bool),\n\t\t\tmap[string]any{\"B\": true},\n\t\t\tmap[any]bool{\"B\": true},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[string][]bool),\n\t\t\tmap[string]any{\n\t\t\t\t\"a\": []any{true, false},\n\t\t\t\t\"b\": []any{false, true},\n\t\t\t},\n\t\t\tmap[string][]bool{\n\t\t\t\t\"a\": {true, false},\n\t\t\t\t\"b\": {false, true},\n\t\t\t},\n\t\t\ttrue,\n\t\t},\n\t\t{new(special), 17, special(17), true},\n\t\t{new(myString), \"x\", myString(\"x\"), true},\n\t\t{new([]myString), []any{\"x\"}, []myString{\"x\"}, true},\n\t\t{new(time.Time), tmb, tm, true},\n\t\t{new(*time.Time), tmb, &tm, true},\n\t\t{new(*tspb.Timestamp), tsb, ts, true},\n\t\t{new([]time.Time), []any{tmb}, []time.Time{tm}, true},\n\t\t{new([]*time.Time), []any{tmb}, []*time.Time{&tm}, true},\n\t\t{\n\t\t\tnew(map[myString]myString),\n\t\t\tmap[string]any{\"a\": \"x\"},\n\t\t\tmap[myString]myString{\"a\": \"x\"},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[string]time.Time),\n\t\t\tmap[string]any{\"t\": tmb},\n\t\t\tmap[string]time.Time{\"t\": tm},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\tnew(map[string]*time.Time),\n\t\t\tmap[string]any{\"t\": tmb},\n\t\t\tmap[string]*time.Time{\"t\": &tm},\n\t\t\ttrue,\n\t\t},\n\t\t{new(te), \"A\", te{'A'}, true},\n\t\t{new(**te), \"B\", func() **te { x := &te{'B'}; return &x }(), true},\n\n\t\t{\n\t\t\t&MyStruct{embed4: &embed4{}},\n\t\t\tmap[string]any{\n\t\t\t\t\"A\":  int64(1),\n\t\t\t\t\"B\":  true,\n\t\t\t\t\"C\":  []any{\"T\"},\n\t\t\t\t\"D\":  []any{tmb},\n\t\t\t\t\"T\":  tsb,\n\t\t\t\t\"E1\": \"E1\",\n\t\t\t\t\"E2\": \"E2\",\n\t\t\t\t\"E3\": \"E3\",\n\t\t\t\t\"E4\": \"E4\",\n\t\t\t},\n\t\t\tMyStruct{\n\t\t\t\tA: 1, B: &tru, C: []*te{{'T'}}, D: []time.Time{tm}, T: ts,\n\t\t\t\tEmbed1: Embed1{E1: \"E1\"},\n\t\t\t\tEmbed2: &Embed2{E2: \"E2\"},\n\t\t\t\tembed3: embed3{E3: \"E3\"},\n\t\t\t\tembed4: &embed4{E4: \"E4\"},\n\t\t\t},\n\t\t\ttrue,\n\t\t},\n\t\t{\n\t\t\t&MyStruct{embed4: &embed4{}},\n\t\t\tmap[string]any{\n\t\t\t\t\"a\":  int64(1),\n\t\t\t\t\"b\":  true,\n\t\t\t\t\"c\":  []any{\"T\"},\n\t\t\t\t\"d\":  []any{tmb},\n\t\t\t\t\"t\":  tsb,\n\t\t\t\t\"e1\": \"E1\",\n\t\t\t\t\"e2\": \"E2\",\n\t\t\t\t\"e3\": \"E3\",\n\t\t\t\t\"e4\": \"E4\",\n\t\t\t},\n\t\t\tMyStruct{\n\t\t\t\tA: 1, B: &tru, C: []*te{{'T'}}, D: []time.Time{tm}, T: ts,\n\t\t\t\tEmbed1: Embed1{E1: \"E1\"},\n\t\t\t\tEmbed2: &Embed2{E2: \"E2\"},\n\t\t\t\tembed3: embed3{E3: \"E3\"},\n\t\t\t\tembed4: &embed4{E4: \"E4\"},\n\t\t\t},\n\t\t\tfalse,\n\t\t},\n\t} {\n\t\tdec := &testDecoder{test.val, test.exactMatch}\n\t\tif err := Decode(reflect.ValueOf(test.in).Elem(), dec); err != nil {\n\t\t\tt.Fatalf(\"%T: %v\", test.in, err)\n\t\t}\n\t\tgot := reflect.ValueOf(test.in).Elem().Interface()\n\t\tdiff := cmp.Diff(got, test.want, cmp.Comparer(proto.Equal), cmp.AllowUnexported(MyStruct{}))\n\t\tif diff != \"\" {\n\t\t\tt.Errorf(\"%T (got=-, want=+): %s\", test.in, diff)\n\t\t}\n\t}\n}\n\nfunc TestDecodeErrors(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tdesc    string\n\t\tin, val any\n\t}{\n\t\t{\n\t\t\t\"bad type\",\n\t\t\tnew(int),\n\t\t\t\"foo\",\n\t\t},\n\t\t{\n\t\t\t\"bad type in list\",\n\t\t\tnew([]int),\n\t\t\t[]any{1, \"foo\"},\n\t\t},\n\t\t{\n\t\t\t\"array too short\",\n\t\t\tnew([1]bool),\n\t\t\t[]any{true, false},\n\t\t},\n\t\t{\n\t\t\t\"bad map key type\",\n\t\t\tnew(map[float64]any),\n\t\t\tmap[string]any{\"a\": 1},\n\t\t},\n\t\t{\n\t\t\t\"unknown struct field\",\n\t\t\tnew(MyStruct),\n\t\t\tmap[string]any{\"bad\": 1},\n\t\t},\n\t\t{\n\t\t\t\"nil embedded, unexported pointer to struct\",\n\t\t\tnew(MyStruct),\n\t\t\tmap[string]any{\"E4\": \"E4\"},\n\t\t},\n\t\t{\n\t\t\t\"int overflow\",\n\t\t\tnew(int8),\n\t\t\t257,\n\t\t},\n\t\t{\n\t\t\t\"uint overflow\",\n\t\t\tnew(uint8),\n\t\t\tuint(257),\n\t\t},\n\t\t{\n\t\t\t\"non-integral float (int)\",\n\t\t\tnew(int),\n\t\t\t1.5,\n\t\t},\n\t\t{\n\t\t\t\"non-integral float (uint)\",\n\t\t\tnew(uint),\n\t\t\t1.5,\n\t\t},\n\t\t{\n\t\t\t\"bad special\",\n\t\t\tnew(badSpecial),\n\t\t\tbadSpecial(0),\n\t\t},\n\t\t{\n\t\t\t\"bad binary unmarshal\",\n\t\t\tnew(badBinaryMarshaler),\n\t\t\t[]byte{1},\n\t\t},\n\t\t{\n\t\t\t\"binary unmarshal with non-byte slice\",\n\t\t\tnew(time.Time),\n\t\t\t1,\n\t\t},\n\t\t{\n\t\t\t\"bad text unmarshal\",\n\t\t\tnew(badTextMarshaler),\n\t\t\t\"foo\",\n\t\t},\n\t\t{\n\t\t\t\"text unmarshal with non-string\",\n\t\t\tnew(badTextMarshaler),\n\t\t\t1,\n\t\t},\n\t\t{\n\t\t\t\"bad text unmarshal in map key\",\n\t\t\tnew(map[badTextMarshaler]int),\n\t\t\tmap[string]any{\"a\": 1},\n\t\t},\n\t\t{\n\t\t\t\"bad int map key\",\n\t\t\tnew(map[int]int),\n\t\t\tmap[string]any{\"a\": 1},\n\t\t},\n\t\t{\n\t\t\t\"overflow in int map key\",\n\t\t\tnew(map[int8]int),\n\t\t\tmap[string]any{\"256\": 1},\n\t\t},\n\t\t{\n\t\t\t\"bad uint map key\",\n\t\t\tnew(map[uint]int),\n\t\t\tmap[string]any{\"a\": 1},\n\t\t},\n\t\t{\n\t\t\t\"overflow in uint map key\",\n\t\t\tnew(map[uint8]int),\n\t\t\tmap[string]any{\"256\": 1},\n\t\t},\n\t\t{\n\t\t\t\"case mismatch when decoding with exact match\",\n\t\t\t&MyStruct{embed4: &embed4{}},\n\t\t\tmap[string]any{\n\t\t\t\t\"a\":  int64(1),\n\t\t\t\t\"b\":  true,\n\t\t\t\t\"e1\": \"E1\",\n\t\t\t\t\"e2\": \"E2\",\n\t\t\t},\n\t\t},\n\t} {\n\t\tdec := &testDecoder{test.val, true}\n\t\terr := Decode(reflect.ValueOf(test.in).Elem(), dec)\n\t\tif e, ok := err.(*gcerr.Error); !ok || err == nil || e.Code != gcerr.InvalidArgument {\n\t\t\tt.Errorf(\"%s: got %v, want InvalidArgument Error\", test.desc, err)\n\t\t}\n\t}\n}\n\nfunc TestDecodeFail(t *testing.T) {\n\t// Verify that failure to decode a value results in an error.\n\tfor _, in := range []any{\n\t\tnew(any), new(bool), new(string), new(int), new(uint), new(float32),\n\t\tnew([]byte), new([]int), new(map[string]any),\n\t} {\n\t\tdec := &failDecoder{}\n\t\terr := Decode(reflect.ValueOf(in).Elem(), dec)\n\t\tif e, ok := err.(*gcerr.Error); !ok || err == nil || e.Code != gcerr.InvalidArgument {\n\t\t\tt.Errorf(\"%T: got %v, want InvalidArgument Error\", in, err)\n\t\t}\n\t}\n}\n\ntype testDecoder struct {\n\tval        any // assume encoded by testEncoder.\n\texactMatch bool\n}\n\nfunc (d testDecoder) String() string {\n\treturn fmt.Sprintf(\"%+v of type %T\", d.val, d.val)\n}\n\nfunc (d testDecoder) AsNull() bool {\n\treturn d.val == nil\n}\n\nfunc (d testDecoder) AsBool() (bool, bool)     { x, ok := d.val.(bool); return x, ok }\nfunc (d testDecoder) AsString() (string, bool) { x, ok := d.val.(string); return x, ok }\n\nfunc (d testDecoder) AsInt() (int64, bool) {\n\tswitch v := d.val.(type) {\n\tcase int64:\n\t\treturn v, true\n\tcase int:\n\t\treturn int64(v), true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\n\nfunc (d testDecoder) AsUint() (uint64, bool) {\n\tswitch v := d.val.(type) {\n\tcase uint64:\n\t\treturn v, true\n\tcase uint:\n\t\treturn uint64(v), true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\n\nfunc (d testDecoder) AsFloat() (float64, bool) { x, ok := d.val.(float64); return x, ok }\nfunc (d testDecoder) AsBytes() ([]byte, bool)  { x, ok := d.val.([]byte); return x, ok }\n\nfunc (d testDecoder) ListLen() (int, bool) {\n\tl, ok := d.val.([]any)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn len(l), true\n}\n\nfunc (d testDecoder) DecodeList(f func(i int, vd Decoder) bool) {\n\tfor i, v := range d.val.([]any) {\n\t\tif !f(i, testDecoder{v, d.exactMatch}) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (d testDecoder) MapLen() (int, bool) {\n\tif m, ok := d.val.(map[string]any); ok {\n\t\treturn len(m), true\n\t}\n\treturn 0, false\n}\n\nfunc (d testDecoder) DecodeMap(f func(key string, vd Decoder, exactMatch bool) bool) {\n\tfor k, v := range d.val.(map[string]any) {\n\t\tif !f(k, testDecoder{v, d.exactMatch}, d.exactMatch) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (d testDecoder) AsInterface() (any, error) {\n\treturn d.val, nil\n}\n\nfunc (d testDecoder) AsSpecial(v reflect.Value) (bool, any, error) {\n\tswitch v.Type() {\n\tcase typeOfSpecial:\n\t\treturn true, special(d.val.(int)), nil\n\tcase typeOfBadSpecial:\n\t\treturn true, nil, errors.New(\"bad special\")\n\tdefault:\n\t\treturn false, nil, nil\n\t}\n}\n\n// All of failDecoder's methods return failure.\ntype failDecoder struct{}\n\nfunc (failDecoder) String() string                               { return \"failDecoder\" }\nfunc (failDecoder) AsNull() bool                                 { return false }\nfunc (failDecoder) AsBool() (bool, bool)                         { return false, false }\nfunc (failDecoder) AsString() (string, bool)                     { return \"\", false }\nfunc (failDecoder) AsInt() (int64, bool)                         { return 0, false }\nfunc (failDecoder) AsUint() (uint64, bool)                       { return 0, false }\nfunc (failDecoder) AsFloat() (float64, bool)                     { return 0, false }\nfunc (failDecoder) AsBytes() ([]byte, bool)                      { return nil, false }\nfunc (failDecoder) ListLen() (int, bool)                         { return 0, false }\nfunc (failDecoder) DecodeList(func(i int, vd Decoder) bool)      { panic(\"impossible\") }\nfunc (failDecoder) MapLen() (int, bool)                          { return 0, false }\nfunc (failDecoder) DecodeMap(func(string, Decoder, bool) bool)   { panic(\"impossible\") }\nfunc (failDecoder) AsSpecial(v reflect.Value) (bool, any, error) { return false, nil, nil }\nfunc (failDecoder) AsInterface() (any, error)                    { return nil, errors.New(\"fail\") }\n"
  },
  {
    "path": "docstore/driver/compare.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Useful comparison functions.\n\npackage driver\n\nimport (\n\t\"fmt\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// CompareTimes returns -1, 1 or 0 depending on whether t1 is before, after or\n// equal to t2.\nfunc CompareTimes(t1, t2 time.Time) int {\n\tswitch {\n\tcase t1.Before(t2):\n\t\treturn -1\n\tcase t1.After(t2):\n\t\treturn 1\n\tdefault:\n\t\treturn 0\n\t}\n}\n\n// CompareNumbers returns -1, 1 or 0 depending on whether n1 is less than,\n// greater than or equal to n2. n1 and n2 must be signed integer, unsigned\n// integer, or floating-point values, but they need not be the same type.\n//\n// If both types are integers or both floating-point, CompareNumbers behaves\n// like Go comparisons on those types. If one operand is integer and the other\n// is floating-point, CompareNumbers correctly compares the mathematical values\n// of the numbers, without loss of precision.\nfunc CompareNumbers(n1, n2 any) (int, error) {\n\tv1, ok := n1.(reflect.Value)\n\tif !ok {\n\t\tv1 = reflect.ValueOf(n1)\n\t}\n\tv2, ok := n2.(reflect.Value)\n\tif !ok {\n\t\tv2 = reflect.ValueOf(n2)\n\t}\n\tf1, err := toBigFloat(v1)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tf2, err := toBigFloat(v2)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn f1.Cmp(f2), nil\n}\n\nfunc toBigFloat(x reflect.Value) (*big.Float, error) {\n\tvar f big.Float\n\tswitch x.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tf.SetInt64(x.Int())\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tf.SetUint64(x.Uint())\n\tcase reflect.Float32, reflect.Float64:\n\t\tf.SetFloat64(x.Float())\n\tdefault:\n\t\ttyp := \"nil\"\n\t\tif x.IsValid() {\n\t\t\ttyp = fmt.Sprint(x.Type())\n\t\t}\n\t\treturn nil, fmt.Errorf(\"%v of type %s is not a number\", x, typ)\n\t}\n\treturn &f, nil\n}\n"
  },
  {
    "path": "docstore/driver/compare_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage driver\n\nimport (\n\t\"math\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestCompareTimes(t *testing.T) {\n\tt1 := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)\n\tt2 := t1.Add(1)\n\tfor _, test := range []struct {\n\t\tin1, in2 time.Time\n\t\twant     int\n\t}{\n\t\t{t1, t2, -1},\n\t\t{t2, t1, 1},\n\t\t{t1, t1, 0},\n\t} {\n\t\tgot := CompareTimes(test.in1, test.in2)\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"CompareTimes(%v, %v) == %d, want %d\", test.in1, test.in2, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestCompareNumbers(t *testing.T) {\n\tcheck := func(n1, n2 any, want int) {\n\t\tt.Helper()\n\t\tgot, err := CompareNumbers(n1, n2)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"CompareNumbers(%T(%[1]v), %T(%[2]v)): %v\", n1, n2, err)\n\t\t}\n\t\tif got != want {\n\t\t\tt.Errorf(\"CompareNumbers(%T(%[1]v), %T(%[2]v)) = %d, want %d\", n1, n2, got, want)\n\t\t}\n\t}\n\n\tfor _, test := range []struct {\n\t\tin1, in2 any\n\t\twant     int\n\t}{\n\t\t// simple cases\n\t\t{1, 1, 0},\n\t\t{1, 2, -1},\n\t\t{1.0, 1.0, 0},\n\t\t{1.0, 2.0, -1},\n\n\t\t// mixed int types\n\t\t{int8(1), int64(1), 0},\n\t\t{int8(2), int64(1), 1},\n\t\t{uint(1), int(1), 0},\n\t\t{uint(2), int(1), 1},\n\n\t\t// mixed int and float\n\t\t{1, 1.0, 0},\n\t\t{1, 1.1, -1},\n\t\t{2, 1.1, 1},\n\n\t\t// large numbers\n\t\t{int64(math.MaxInt64), int64(math.MaxInt64), 0},\n\t\t{uint64(math.MaxUint64), uint64(math.MaxUint64), 0},\n\t\t{float64(math.MaxFloat64), float64(math.MaxFloat64), 0},\n\t\t{int64(math.MaxInt64), int64(math.MaxInt64 - 1), 1},\n\t\t{int64(math.MaxInt64), float64(math.MaxInt64 - 1), -1}, // float is bigger because it gets rounded up\n\t\t{int64(math.MaxInt64), uint64(math.MaxUint64), -1},\n\n\t\t// special floats\n\t\t{int64(math.MaxInt64), math.Inf(1), -1},\n\t\t{int64(math.MinInt64), math.Inf(-1), 1},\n\t} {\n\t\tcheck(test.in1, test.in2, test.want)\n\t\tif test.want != 0 {\n\t\t\tcheck(test.in2, test.in1, -test.want)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/driver/document.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage driver\n\nimport (\n\t\"reflect\"\n\n\t\"gocloud.dev/docstore/internal/fields\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// A Document is a lightweight wrapper around either a map[string]interface{} or a\n// struct pointer. It provides operations to get and set fields and field paths.\ntype Document struct {\n\tOrigin any            // the argument to NewDocument\n\tm      map[string]any // nil if it's a *struct\n\ts      reflect.Value  // the struct reflected\n\tfields fields.List    // for structs\n}\n\n// NewDocument creates a new document from doc, which must be a non-nil\n// map[string]interface{} or struct pointer.\nfunc NewDocument(doc any) (Document, error) {\n\tif doc == nil {\n\t\treturn Document{}, gcerr.Newf(gcerr.InvalidArgument, nil, \"document cannot be nil\")\n\t}\n\tif m, ok := doc.(map[string]any); ok {\n\t\tif m == nil {\n\t\t\treturn Document{}, gcerr.Newf(gcerr.InvalidArgument, nil, \"document map cannot be nil\")\n\t\t}\n\t\treturn Document{Origin: doc, m: m}, nil\n\t}\n\tv := reflect.ValueOf(doc)\n\tt := v.Type()\n\tif t.Kind() != reflect.Pointer || t.Elem().Kind() != reflect.Struct {\n\t\treturn Document{}, gcerr.Newf(gcerr.InvalidArgument, nil, \"expecting *struct or map[string]interface{}, got %s\", t)\n\t}\n\tt = t.Elem()\n\tif v.IsNil() {\n\t\treturn Document{}, gcerr.Newf(gcerr.InvalidArgument, nil, \"document struct pointer cannot be nil\")\n\t}\n\tfields, err := fieldCache.Fields(t)\n\tif err != nil {\n\t\treturn Document{}, err\n\t}\n\treturn Document{Origin: doc, s: v.Elem(), fields: fields}, nil\n}\n\n// GetField returns the value of the named document field.\nfunc (d Document) GetField(field string) (any, error) {\n\tif d.m != nil {\n\t\tx, ok := d.m[field]\n\t\tif !ok {\n\t\t\treturn nil, gcerr.Newf(gcerr.NotFound, nil, \"field %q not found in map\", field)\n\t\t}\n\t\treturn x, nil\n\t}\n\tv, err := d.structField(field)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn v.Interface(), nil\n}\n\n// getDocument gets the value of the given field path, which must be a document.\n// If create is true, it creates intermediate documents as needed.\nfunc (d Document) getDocument(fp []string, create bool) (Document, error) {\n\tif len(fp) == 0 {\n\t\treturn d, nil\n\t}\n\tx, err := d.GetField(fp[0])\n\tif err != nil {\n\t\tif create && gcerrors.Code(err) == gcerrors.NotFound {\n\t\t\t// TODO(jba): create the right type for the struct field.\n\t\t\tx = map[string]any{}\n\t\t\tif err := d.SetField(fp[0], x); err != nil {\n\t\t\t\treturn Document{}, err\n\t\t\t}\n\t\t} else {\n\t\t\treturn Document{}, err\n\t\t}\n\t}\n\td2, err := NewDocument(x)\n\tif err != nil {\n\t\treturn Document{}, err\n\t}\n\treturn d2.getDocument(fp[1:], create)\n}\n\n// Get returns the value of the given field path in the document.\nfunc (d Document) Get(fp []string) (any, error) {\n\td2, err := d.getDocument(fp[:len(fp)-1], false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn d2.GetField(fp[len(fp)-1])\n}\n\nfunc (d Document) structField(name string) (reflect.Value, error) {\n\t// We do case-insensitive match here to cover the MongoDB's lowercaseFields\n\t// option.\n\tf := d.fields.MatchFold(name)\n\tif f == nil {\n\t\treturn reflect.Value{}, gcerr.Newf(gcerr.NotFound, nil, \"field %q not found in struct type %s\", name, d.s.Type())\n\t}\n\tfv, ok := fieldByIndex(d.s, f.Index)\n\tif !ok {\n\t\treturn reflect.Value{}, gcerr.Newf(gcerr.InvalidArgument, nil, \"nil embedded pointer; cannot get field %q from %s\",\n\t\t\tname, d.s.Type())\n\t}\n\treturn fv, nil\n}\n\n// Set sets the value of the field path in the document.\n// This creates sub-maps as necessary, if possible.\nfunc (d Document) Set(fp []string, val any) error {\n\td2, err := d.getDocument(fp[:len(fp)-1], true)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d2.SetField(fp[len(fp)-1], val)\n}\n\n// SetField sets the field to value in the document.\nfunc (d Document) SetField(field string, value any) error {\n\tif d.m != nil {\n\t\td.m[field] = value\n\t\treturn nil\n\t}\n\tv, err := d.structField(field)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !v.CanSet() {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"cannot set field %s in struct of type %s: not addressable\",\n\t\t\tfield, d.s.Type())\n\t}\n\tv.Set(reflect.ValueOf(value))\n\treturn nil\n}\n\n// FieldNames returns names of the top-level fields of d.\nfunc (d Document) FieldNames() []string {\n\tvar names []string\n\tif d.m != nil {\n\t\tfor k := range d.m {\n\t\t\tnames = append(names, k)\n\t\t}\n\t} else {\n\t\tfor _, f := range d.fields {\n\t\t\tnames = append(names, f.Name)\n\t\t}\n\t}\n\treturn names\n}\n\n// Encode encodes the document using the given Encoder.\nfunc (d Document) Encode(e Encoder) error {\n\tif d.m != nil {\n\t\treturn encodeMap(reflect.ValueOf(d.m), e)\n\t}\n\treturn encodeStructWithFields(d.s, d.fields, e)\n}\n\n// Decode decodes the document using the given Decoder.\nfunc (d Document) Decode(dec Decoder) error {\n\tif d.m != nil {\n\t\treturn decodeMap(reflect.ValueOf(d.m), dec)\n\t}\n\treturn decodeStruct(d.s, dec)\n}\n\n// HasField returns whether or not d has a certain field.\nfunc (d Document) HasField(field string) bool {\n\treturn d.hasField(field, true)\n}\n\n// HasFieldFold is like HasField but matches case-insensitively for struct\n// field.\nfunc (d Document) HasFieldFold(field string) bool {\n\treturn d.hasField(field, false)\n}\n\nfunc (d Document) hasField(field string, exactMatch bool) bool {\n\tif d.m != nil {\n\t\t_, ok := d.m[field]\n\t\treturn ok\n\t}\n\tif exactMatch {\n\t\treturn d.fields.MatchExact(field) != nil\n\t}\n\treturn d.fields.MatchFold(field) != nil\n}\n"
  },
  {
    "path": "docstore/driver/document_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage driver\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/gcerrors\"\n)\n\ntype S struct {\n\tI int\n\tM map[string]any\n}\n\nfunc TestNewDocument(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tin      any\n\t\twantErr bool\n\t\twantMap bool\n\t}{\n\t\t{in: nil, wantErr: true},\n\t\t{in: map[string]any{}, wantMap: true},\n\t\t{in: map[string]any(nil), wantErr: true},\n\t\t{in: S{}, wantErr: true},\n\t\t{in: &S{}, wantMap: false},\n\t\t{in: (*S)(nil), wantErr: true},\n\t\t{in: map[string]bool{}, wantErr: true},\n\t} {\n\t\tgot, err := NewDocument(test.in)\n\t\tif err != nil {\n\t\t\tif !test.wantErr {\n\t\t\t\tt.Errorf(\"%#v: got %v, did not want error\", test.in, err)\n\t\t\t}\n\t\t\tif c := gcerrors.Code(err); c != gcerrors.InvalidArgument {\n\t\t\t\tt.Errorf(\"%#v: got error code %s, want InvalidArgument\", test.in, c)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif test.wantErr {\n\t\t\tt.Errorf(\"%#v: got nil, want error\", test.in)\n\t\t\tcontinue\n\t\t}\n\t\tif g := (got.m != nil); g != test.wantMap {\n\t\t\tt.Errorf(\"%#v: got map: %t, want map: %t\", test.in, g, test.wantMap)\n\t\t}\n\t}\n}\n\nfunc TestGet(t *testing.T) {\n\tin := map[string]any{\n\t\t\"S\": &S{\n\t\t\tI: 2,\n\t\t\tM: map[string]any{\n\t\t\t\t\"J\": 3,\n\t\t\t\t\"T\": &S{I: 4},\n\t\t\t},\n\t\t},\n\t}\n\tdoc, err := NewDocument(in)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tfor _, test := range []struct {\n\t\tfp   string\n\t\twant any\n\t}{\n\t\t{\"S.I\", 2},\n\t\t{\"S.i\", 2},\n\t\t{\"S.M.J\", 3},\n\t\t{\"S.m.J\", 3},\n\t\t{\"S.M.T.I\", 4},\n\t\t{\"S.m.T.i\", 4},\n\t} {\n\t\tfp := strings.Split(test.fp, \".\")\n\t\tgot, err := doc.Get(fp)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif !cmp.Equal(got, test.want) {\n\t\t\tt.Errorf(\"%s: got %v, want %v\", got, test.fp, test.want)\n\t\t}\n\t}\n}\n\nfunc TestSet(t *testing.T) {\n\tin := map[string]any{\n\t\t\"S\": &S{\n\t\t\tI: 2,\n\t\t\tM: map[string]any{\n\t\t\t\t\"J\": 3,\n\t\t\t\t\"T\": &S{I: 4},\n\t\t\t},\n\t\t},\n\t}\n\tdoc, err := NewDocument(in)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, test := range []struct {\n\t\tfp  string\n\t\tval any\n\t}{\n\t\t{\"S.I\", -1},\n\t\t{\"S.i\", -2},\n\t\t{\"S.M.J\", -3},\n\t\t{\"S.m.J\", -4},\n\t\t{\"S.M.T.I\", -5},\n\t\t{\"S.m.T.i\", -6},\n\t\t{\"new.field\", -7},\n\t} {\n\t\tfp := strings.Split(test.fp, \".\")\n\t\tif err := doc.Set(fp, test.val); err != nil {\n\t\t\tt.Fatalf(\"%q: %v\", test.fp, err)\n\t\t}\n\t\tgot, err := doc.Get(fp)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"%s: %v\", test.fp, err)\n\t\t}\n\t\tif !cmp.Equal(got, test.val) {\n\t\t\tt.Errorf(\"got %v, want %v\", got, test.val)\n\t\t}\n\t}\n}\n\nfunc TestGetField(t *testing.T) {\n\ttype S struct {\n\t\tA int `docstore:\"a\"`\n\t\tB any `docstore:\"b\"`\n\t}\n\n\twant := 1\n\tfor _, in := range []any{\n\t\tmap[string]any{\"a\": want, \"b\": nil},\n\t\t&S{A: want, B: nil},\n\t} {\n\t\tt.Run(fmt.Sprint(in), func(t *testing.T) {\n\t\t\tdoc, err := NewDocument(in)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tgot, err := doc.GetField(\"a\")\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif got != want {\n\t\t\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t\t\t}\n\n\t\t\tgot, err = doc.GetField(\"b\")\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif got != nil {\n\t\t\t\tt.Errorf(\"got %v, want nil\", got)\n\t\t\t}\n\n\t\t\t_, err = doc.GetField(\"c\")\n\t\t\tif gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\t\tt.Fatalf(\"got %v, want NotFound\", err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFieldNames(t *testing.T) {\n\ttype E struct {\n\t\tC int\n\t}\n\ttype S struct {\n\t\tA int `docstore:\"a\"`\n\t\tB int\n\t\tE\n\t}\n\n\tfor _, test := range []struct {\n\t\tin   any\n\t\twant []string\n\t}{\n\t\t{\n\t\t\tmap[string]any{\"a\": 1, \"b\": map[string]any{\"c\": 2}},\n\t\t\t[]string{\"a\", \"b\"},\n\t\t},\n\t\t{\n\t\t\t&S{},\n\t\t\t[]string{\"B\", \"C\", \"a\"},\n\t\t},\n\t} {\n\t\tdoc, err := NewDocument(test.in)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot := doc.FieldNames()\n\t\tsort.Strings(got)\n\t\tif !cmp.Equal(got, test.want) {\n\t\t\tt.Errorf(\"%v: got %v, want %v\", test.in, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestHasField(t *testing.T) {\n\ttype withRev struct {\n\t\tRev any\n\t}\n\ttype withoutRev struct {\n\t\tW withRev\n\t}\n\n\tfor _, tc := range []struct {\n\t\tin   any\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tin:   &withRev{},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tin:   &withoutRev{},\n\t\t\twant: false,\n\t\t},\n\t\t{\n\t\t\tin:   map[string]any{\"Rev\": nil},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tin:   map[string]any{},\n\t\t\twant: false,\n\t\t},\n\t} {\n\t\tdoc, err := NewDocument(tc.in)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\ton := doc.HasField(\"Rev\")\n\t\tif on != tc.want {\n\t\t\tt.Errorf(\"%v: got %v want %v\", tc.in, on, tc.want)\n\t\t}\n\t}\n}\n\nfunc TestHasFieldFold(t *testing.T) {\n\ttype withRev struct {\n\t\tRev any\n\t}\n\ttype withoutRev struct {\n\t\tW withRev\n\t}\n\n\tfor _, tc := range []struct {\n\t\tin   any\n\t\twant bool\n\t}{\n\t\t{\n\t\t\tin:   &withRev{},\n\t\t\twant: true,\n\t\t},\n\t\t{\n\t\t\tin:   &withoutRev{},\n\t\t\twant: false,\n\t\t},\n\t} {\n\t\tdoc, err := NewDocument(tc.in)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tfor _, f := range []string{\"Rev\", \"rev\", \"REV\"} {\n\t\t\ton := doc.HasFieldFold(f)\n\t\t\tif on != tc.want {\n\t\t\t\tt.Errorf(\"%v: got %v want %v\", tc.in, on, tc.want)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/driver/driver.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package driver defines interfaces to be implemented by docstore drivers, which\n// will be used by the docstore package to interact with the underlying services.\n// Application code should use package docstore.\npackage driver // import \"gocloud.dev/docstore/driver\"\n\nimport (\n\t\"context\"\n\n\t\"gocloud.dev/gcerrors\"\n)\n\n// A Collection is a set of documents.\ntype Collection interface {\n\t// Key returns the document key, or nil if the document doesn't have one, which\n\t// means it is absent or zero value, such as 0, a nil interface value, and any\n\t// empty array or string.\n\t//\n\t// If the collection is able to generate a key for a Create action, then\n\t// it should not return an error if the key is missing. If the collection\n\t// can't generate a missing key, it should return an error.\n\t//\n\t// The returned key must be comparable.\n\t//\n\t// The returned key should not be encoded with the driver's codec; it should\n\t// be the user-supplied Go value.\n\tKey(Document) (any, error)\n\n\t// RevisionField returns the name of the field used to hold revisions.\n\t// If the empty string is returned, docstore.DefaultRevisionField will be used.\n\tRevisionField() string\n\n\t// RunActions executes a slice of actions.\n\t//\n\t// If unordered is false, it must appear as if the actions were executed in the\n\t// order they appear in the slice, from the client's point of view. The actions\n\t// need not happen atomically, nor does eventual consistency in the service\n\t// need to be taken into account. For example, after a write returns\n\t// successfully, the driver can immediately perform a read on the same document,\n\t// even though the service's semantics does not guarantee that the read will see\n\t// the write. RunActions should return immediately after the first action that fails.\n\t// The returned slice should have a single element.\n\t//\n\t// opts controls the behavior of RunActions and is guaranteed to be non-nil.\n\tRunActions(ctx context.Context, actions []*Action, opts *RunActionsOptions) ActionListError\n\n\t// RunGetQuery executes a Query.\n\t//\n\t// Implementations can choose to execute the Query as one single request or\n\t// multiple ones, depending on their service offerings. The portable type\n\t// exposes OpenTelemetry metrics for the call to RunGetQuery (but not for\n\t// subsequent calls to DocumentIterator.Next), so drivers should prefer to\n\t// make at least one RPC during RunGetQuery itself instead of lazily waiting\n\t// for the first call to Next.\n\tRunGetQuery(context.Context, *Query) (DocumentIterator, error)\n\n\t// QueryPlan returns the plan for the query.\n\tQueryPlan(*Query) (string, error)\n\n\t// RevisionToBytes converts a revision to a byte slice.\n\tRevisionToBytes(any) ([]byte, error)\n\n\t// BytesToRevision converts a []byte to a revision.\n\tBytesToRevision([]byte) (any, error)\n\n\t// As converts i to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAs(i any) bool\n\n\t// ErrorAs allows drivers to expose driver-specific types for returned\n\t// errors.\n\t//\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tErrorAs(err error, i any) bool\n\n\t// ErrorCode should return a code that describes the error, which was returned by\n\t// one of the other methods in this interface.\n\tErrorCode(error) gcerrors.ErrorCode\n\n\t// Close cleans up any resources used by the Collection. Once Close is called,\n\t// there will be no method calls to the Collection other than As, ErrorAs, and\n\t// ErrorCode.\n\tClose() error\n}\n\n// DeleteQueryer should be implemented by Collections that can handle Query.Delete\n// efficiently. If a Collection does not implement this interface, then Query.Delete\n// will be implemented by calling RunGetQuery and deleting the returned documents.\ntype DeleteQueryer interface {\n\tRunDeleteQuery(context.Context, *Query) error\n}\n\n// UpdateQueryer should be implemented by Collections that can handle Query.Update\n// efficiently. If a Collection does not implement this interface, then Query.Update\n// will be implemented by calling RunGetQuery and updating the returned documents.\ntype UpdateQueryer interface {\n\tRunUpdateQuery(context.Context, *Query, []Mod) error\n}\n\n// ActionKind describes the type of an action.\ntype ActionKind int\n\n// Values for ActionKind.\nconst (\n\tCreate ActionKind = iota\n\tReplace\n\tPut\n\tGet\n\tDelete\n\tUpdate\n)\n\n//go:generate stringer -type=ActionKind\n\ntype Action struct {\n\tKind          ActionKind // the kind of action\n\tDoc           Document   // the document on which to perform the action\n\tKey           any        // the document key returned by Collection.Key, to avoid recomputing it\n\tFieldPaths    [][]string // field paths to retrieve, for Get only\n\tMods          []Mod      // modifications to make, for Update only\n\tIndex         int        // the index of the action in the original action list\n\tInAtomicWrite bool       // if this action is a part of transaction\n}\n\n// A Mod is a modification to a field path in a document.\n// At present, the only modifications supported are:\n// - set the value at the field path, or create the field path if it doesn't exist\n// - delete the field path (when Value is nil)\ntype Mod struct {\n\tFieldPath []string\n\tValue     any\n}\n\n// IncOp is a value representing an increment modification.\ntype IncOp struct {\n\tAmount any\n}\n\n// An ActionListError contains all the errors encountered from a call to RunActions,\n// and the positions of the corresponding actions.\ntype ActionListError []struct {\n\tIndex int\n\tErr   error\n}\n\n// NewActionListError creates an ActionListError from a slice of errors.\n// If the ith element err of the slice is non-nil, the resulting ActionListError\n// will have an item {i, err}.\nfunc NewActionListError(errs []error) ActionListError {\n\tvar alerr ActionListError\n\tfor i, err := range errs {\n\t\tif err != nil {\n\t\t\talerr = append(alerr, struct {\n\t\t\t\tIndex int\n\t\t\t\tErr   error\n\t\t\t}{i, err})\n\t\t}\n\t}\n\treturn alerr\n}\n\n// RunActionsOptions controls the behavior of RunActions.\ntype RunActionsOptions struct {\n\t// BeforeDo is a callback that must be called once, sequentially, before each one\n\t// or group of the underlying service's actions is executed. asFunc allows\n\t// drivers to expose driver-specific types.\n\tBeforeDo func(asFunc func(any) bool) error\n}\n\n// A Query defines a query operation to find documents within a collection based\n// on a set of requirements.\ntype Query struct {\n\t// FieldPaths contain a list of field paths the user selects to return in the\n\t// query results. The returned documents should only have these fields\n\t// populated.\n\tFieldPaths [][]string\n\n\t// Filters contain a list of filters for the query. If there are more than one\n\t// filter, they should be combined with AND.\n\tFilters []Filter\n\n\t// Offset (also commonly referred to as `Skip`) sets the number of results to skip\n\t// before returning results. When Offset <= 0, the driver implementation should\n\t// return all possible results.\n\tOffset int\n\n\t// Limit sets the maximum number of results returned by running the query. When\n\t// Limit <= 0, the driver implementation should return all possible results.\n\tLimit int\n\n\t// OrderByField is the field to use for sorting the results.\n\tOrderByField string\n\n\t// OrderAscending specifies the sort direction.\n\tOrderAscending bool\n\n\t// BeforeQuery is a callback that must be called exactly once before the\n\t// underlying service's query is executed. asFunc allows drivers to expose\n\t// driver-specific types.\n\tBeforeQuery func(asFunc func(any) bool) error\n}\n\n// A Filter defines a filter expression used to filter the query result.\n// If the value is a number type, the filter uses numeric comparison.\n// If the value is a string type, the filter uses UTF-8 string comparison.\n// TODO(#1762): support comparison of other types.\ntype Filter struct {\n\tFieldPath []string // the field path to filter\n\tOp        string   // the operation, supports `=`, `>`, `>=`, `<`, `<=`, `in`, `not-in`\n\tValue     any      // the value to compare using the operation\n}\n\n// A DocumentIterator iterates through the results (for Get action).\ntype DocumentIterator interface {\n\t// Next tries to get the next item in the query result and decodes into Document\n\t// with the driver's codec.\n\t// When there are no more results, it should return io.EOF.\n\t// Once Next returns a non-nil error, it will never be called again.\n\tNext(context.Context, Document) error\n\n\t// Stop terminates the iterator before Next return io.EOF, allowing any cleanup\n\t// needed.\n\tStop()\n\n\t// As converts i to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAs(i any) bool\n}\n\n// EqualOp is the name of the equality operator.\n// It is defined here to avoid confusion between \"=\" and \"==\".\nconst EqualOp = \"=\"\n"
  },
  {
    "path": "docstore/driver/util.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage driver\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\t\"sync\"\n\n\t\"github.com/google/uuid\"\n)\n\n// UniqueString generates a string that is unique with high probability.\n// Driver implementations can use it to generate keys for Create actions.\nfunc UniqueString() string { return uuid.New().String() }\n\n// SplitActions divides the actions slice into sub-slices much like strings.Split.\n// The split function should report whether two consecutive actions should be split,\n// that is, should be in different sub-slices. The first argument to split is the\n// last action of the sub-slice currently under construction; the second argument is\n// the action being considered for addition to that sub-slice.\n// SplitActions doesn't change the order of the input slice.\nfunc SplitActions(actions []*Action, split func(a, b *Action) bool) [][]*Action {\n\tvar (\n\t\tgroups [][]*Action // the actions, split; the return value\n\t\tcur    []*Action   // the group currently being constructed\n\t)\n\tcollect := func() { // called when the current group is known to be finished\n\t\tif len(cur) > 0 {\n\t\t\tgroups = append(groups, cur)\n\t\t\tcur = nil\n\t\t}\n\t}\n\tfor _, a := range actions {\n\t\tif len(cur) > 0 && split(cur[len(cur)-1], a) {\n\t\t\tcollect()\n\t\t}\n\t\tcur = append(cur, a)\n\t}\n\tcollect()\n\treturn groups\n}\n\n// GroupActions separates actions into four sets: writes, gets that must happen before the writes,\n// gets that must happen after the writes, and gets that can happen concurrently with the writes.\nfunc GroupActions(actions []*Action) (beforeGets, getList, writeList, writesTxList, afterGets []*Action) {\n\t// maps from key to action\n\tbgets := map[any]*Action{}\n\tagets := map[any]*Action{}\n\tcgets := map[any]*Action{}\n\twrites := map[any]*Action{}\n\twritesTx := map[any]*Action{}\n\tvar nilkeys []*Action\n\tfor _, a := range actions {\n\t\tif a.Key == nil {\n\t\t\t// Probably a Create.\n\t\t\tnilkeys = append(nilkeys, a)\n\t\t} else if a.Kind == Get {\n\t\t\t// If there was a prior write with this key, make sure this get\n\t\t\t// happens after the writes.\n\t\t\tif _, ok := writes[a.Key]; ok {\n\t\t\t\tagets[a.Key] = a\n\t\t\t} else if _, ok := writesTx[a.Key]; ok {\n\t\t\t\tagets[a.Key] = a\n\t\t\t} else {\n\t\t\t\tcgets[a.Key] = a\n\t\t\t}\n\t\t} else {\n\t\t\t// This is a write. A prior get on the same key was put into cgets; move\n\t\t\t// it to bgets because it has to happen before writes.\n\t\t\tif g, ok := cgets[a.Key]; ok {\n\t\t\t\tdelete(cgets, a.Key)\n\t\t\t\tbgets[a.Key] = g\n\t\t\t}\n\t\t\tif a.InAtomicWrite {\n\t\t\t\twritesTx[a.Key] = a\n\t\t\t} else {\n\t\t\t\twrites[a.Key] = a\n\t\t\t}\n\t\t}\n\t}\n\n\tvals := func(m map[any]*Action) []*Action {\n\t\tvar as []*Action\n\t\tfor _, v := range m {\n\t\t\tas = append(as, v)\n\t\t}\n\t\t// Sort so the order is always the same for replay.\n\t\tsort.Slice(as, func(i, j int) bool { return as[i].Index < as[j].Index })\n\t\treturn as\n\t}\n\n\treturn vals(bgets), vals(cgets), append(vals(writes), nilkeys...), vals(writesTx), vals(agets)\n}\n\n// AsFunc creates and returns an \"as function\" that behaves as follows:\n// If its argument is a pointer to the same type as val, the argument is set to val\n// and the function returns true. Otherwise, the function returns false.\nfunc AsFunc(val any) func(any) bool {\n\trval := reflect.ValueOf(val)\n\twantType := reflect.PtrTo(rval.Type())\n\treturn func(i any) bool {\n\t\tif i == nil {\n\t\t\treturn false\n\t\t}\n\t\tri := reflect.ValueOf(i)\n\t\tif ri.Type() != wantType {\n\t\t\treturn false\n\t\t}\n\t\tri.Elem().Set(rval)\n\t\treturn true\n\t}\n}\n\n// GroupByFieldPath collect the Get actions into groups with the same set of\n// field paths.\nfunc GroupByFieldPath(gets []*Action) [][]*Action {\n\t// This is quadratic in the worst case, but it's unlikely that there would be\n\t// many Gets with different field paths.\n\tvar groups [][]*Action\n\tseen := map[*Action]bool{}\n\tfor len(seen) < len(gets) {\n\t\tvar g []*Action\n\t\tfor _, a := range gets {\n\t\t\tif !seen[a] {\n\t\t\t\tif len(g) == 0 || fpsEqual(g[0].FieldPaths, a.FieldPaths) {\n\t\t\t\t\tg = append(g, a)\n\t\t\t\t\tseen[a] = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tgroups = append(groups, g)\n\t}\n\treturn groups\n}\n\n// Report whether two lists of field paths are equal.\nfunc fpsEqual(fps1, fps2 [][]string) bool {\n\t// TODO?: We really care about sets of field paths, but that's too tedious to determine.\n\tif len(fps1) != len(fps2) {\n\t\treturn false\n\t}\n\tfor i, fp1 := range fps1 {\n\t\tif !FieldPathsEqual(fp1, fps2[i]) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// FieldPathsEqual reports whether two field paths are equal.\nfunc FieldPathsEqual(fp1, fp2 []string) bool {\n\tif len(fp1) != len(fp2) {\n\t\treturn false\n\t}\n\tfor i, s1 := range fp1 {\n\t\tif s1 != fp2[i] {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// FieldPathEqualsField reports whether a field path equals a field.\n// This is a convenience for FieldPathsEqual(fp, []string{s}).\nfunc FieldPathEqualsField(fp []string, s string) bool {\n\treturn len(fp) == 1 && fp[0] == s\n}\n\n// Throttle is used to limit the number of outstanding activities, like RPCs.\n// It acts like a combination of a semaphore and a WaitGroup.\ntype Throttle struct {\n\tc  chan struct{} // token semaphore\n\twg sync.WaitGroup\n}\n\n// NewThrottle returns a Throttle that will allow max calls to Acquire that\n// are not matched with Release calls before blocking.\n// If max is <= 0, there is no throttling: Acquire always returns immediately.\nfunc NewThrottle(max int) *Throttle {\n\tt := &Throttle{}\n\tif max > 0 {\n\t\tt.c = make(chan struct{}, max)\n\t}\n\treturn t\n}\n\n// Acquire blocks until a token is available, then acquires it and returns.\n// Acquire is deliberately not sensitive to context.Context, because it assumes\n// that whatever acquires a token will be context-sensitive, and thus will release\n// the token when the context is done.\nfunc (t *Throttle) Acquire() {\n\tt.wg.Add(1)\n\tif t.c != nil {\n\t\tt.c <- struct{}{}\n\t}\n}\n\n// Release releases a token obtained by Acquire.\nfunc (t *Throttle) Release() {\n\tif t.c != nil {\n\t\t<-t.c\n\t}\n\tt.wg.Done()\n}\n\n// Wait blocks goroutine until the number of calls to Release matches the number of\n// calls to Acquire.\nfunc (t *Throttle) Wait() {\n\tt.wg.Wait()\n}\n"
  },
  {
    "path": "docstore/driver/util_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage driver\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n)\n\nfunc TestSplitActions(t *testing.T) {\n\tin := []*Action{\n\t\t{Kind: Get},\n\t\t{Kind: Get},\n\t\t{Kind: Put},\n\t\t{Kind: Update},\n\t\t{Kind: Get},\n\t\t{Kind: Create},\n\t}\n\n\tfor _, test := range []struct {\n\t\tdesc  string\n\t\tsplit func(a, b *Action) bool\n\t\twant  [][]*Action\n\t}{\n\t\t{\n\t\t\t\"always false\",\n\t\t\tfunc(a, b *Action) bool { return false },\n\t\t\t[][]*Action{in},\n\t\t},\n\t\t{\n\t\t\t\"always true\",\n\t\t\tfunc(a, b *Action) bool { return true },\n\t\t\t[][]*Action{\n\t\t\t\t{{Kind: Get}},\n\t\t\t\t{{Kind: Get}},\n\t\t\t\t{{Kind: Put}},\n\t\t\t\t{{Kind: Update}},\n\t\t\t\t{{Kind: Get}},\n\t\t\t\t{{Kind: Create}},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t\"Get vs. other\",\n\t\t\tfunc(a, b *Action) bool { return (a.Kind == Get) != (b.Kind == Get) },\n\t\t\t[][]*Action{\n\t\t\t\t{{Kind: Get}, {Kind: Get}},\n\t\t\t\t{{Kind: Put}, {Kind: Update}},\n\t\t\t\t{{Kind: Get}},\n\t\t\t\t{{Kind: Create}},\n\t\t\t},\n\t\t},\n\t} {\n\t\tgot := SplitActions(in, test.split)\n\t\tif diff := cmp.Diff(got, test.want, cmpopts.IgnoreFields(Action{}, \"Doc\")); diff != \"\" {\n\t\t\tt.Errorf(\"%s: %s\", test.desc, diff)\n\t\t}\n\t}\n}\n\nfunc TestGroupActions(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tin   []*Action\n\t\twant [][]int // in the same order as the return args\n\t}{\n\t\t{\n\t\t\tin:   []*Action{{Kind: Get, Key: 1}},\n\t\t\twant: [][]int{nil, {0}, nil, nil, nil},\n\t\t},\n\t\t{\n\t\t\tin: []*Action{\n\t\t\t\t{Kind: Get, Key: 1},\n\t\t\t\t{Kind: Get, Key: 3},\n\t\t\t\t{Kind: Put, Key: 1},\n\t\t\t\t{Kind: Replace, Key: 2},\n\t\t\t\t{Kind: Get, Key: 2},\n\t\t\t},\n\t\t\twant: [][]int{{0}, {1}, {2, 3}, nil, {4}},\n\t\t},\n\t\t{\n\t\t\tin:   []*Action{{Kind: Create}, {Kind: Create}, {Kind: Create}},\n\t\t\twant: [][]int{nil, nil, {0, 1, 2}, nil, nil},\n\t\t},\n\t\t{\n\t\t\tin: []*Action{\n\t\t\t\t{Kind: Get, Key: 1},\n\t\t\t\t{Kind: Get, Key: 3},\n\t\t\t\t{Kind: Put, Key: 1, InAtomicWrite: true},\n\t\t\t\t{Kind: Replace, Key: 2, InAtomicWrite: true},\n\t\t\t\t{Kind: Get, Key: 2},\n\t\t\t},\n\t\t\twant: [][]int{{0}, {1}, nil, {2, 3}, {4}},\n\t\t},\n\t\t{\n\t\t\tin: []*Action{\n\t\t\t\t{Kind: Get, Key: 1},\n\t\t\t\t{Kind: Get, Key: 3},\n\t\t\t\t{Kind: Put, Key: 1, InAtomicWrite: true},\n\t\t\t\t{Kind: Replace, Key: 2},\n\t\t\t\t{Kind: Put, Key: 2, InAtomicWrite: true},\n\t\t\t\t{Kind: Get, Key: 2},\n\t\t\t},\n\t\t\twant: [][]int{{0}, {1}, {3}, {2, 4}, {5}},\n\t\t},\n\t\t{\n\t\t\tin: []*Action{\n\t\t\t\t{Kind: Get, Key: 1},\n\t\t\t\t{Kind: Get, Key: 3},\n\t\t\t\t{Kind: Put, Key: 1, InAtomicWrite: true},\n\t\t\t\t{Kind: Replace, Key: 2, InAtomicWrite: true},\n\t\t\t\t{Kind: Put, Key: 2, InAtomicWrite: true},\n\t\t\t\t{Kind: Get, Key: 2},\n\t\t\t},\n\t\t\twant: [][]int{{0}, {1}, nil, {2, 4}, {5}},\n\t\t},\n\t} {\n\t\tgot := make([][]*Action, 5)\n\t\tgot[0], got[1], got[2], got[3], got[4] = GroupActions(test.in)\n\t\twant := make([][]*Action, 5)\n\t\tfor i, s := range test.want {\n\t\t\tfor _, x := range s {\n\t\t\t\twant[i] = append(want[i], test.in[x])\n\t\t\t}\n\t\t}\n\t\tdiff := cmp.Diff(got, want,\n\t\t\tcmpopts.IgnoreUnexported(Document{}),\n\t\t\tcmpopts.SortSlices(func(a1, a2 *Action) bool {\n\t\t\t\tif a1.Kind != a2.Kind {\n\t\t\t\t\treturn a1.Kind < a2.Kind\n\t\t\t\t}\n\t\t\t\ta1k, _ := a1.Key.(int)\n\t\t\t\ta2k, _ := a2.Key.(int)\n\t\t\t\treturn a1k < a2k\n\t\t\t}))\n\t\tif diff != \"\" {\n\t\t\tt.Errorf(\"%v: %s\", test.in, diff)\n\t\t}\n\t}\n}\n\nfunc (a *Action) String() string { // for TestGroupActions\n\treturn fmt.Sprintf(\"<%s %v>\", a.Kind, a.Key)\n}\n\nfunc TestAsFunc(t *testing.T) {\n\tx := 1\n\tas := AsFunc(x)\n\n\tvar y int\n\tif !as(&y) || y != 1 {\n\t\tt.Errorf(\"*int: returned false or wrong value %d\", y)\n\t}\n\n\tvar z float64\n\tfor _, arg := range []any{nil, y, &z} {\n\t\tif as(arg) {\n\t\t\tt.Errorf(\"%#v: got true, want false\", arg)\n\t\t}\n\t}\n}\n\nfunc TestGroupByFieldPath(t *testing.T) {\n\tfor i, test := range []struct {\n\t\tin   []*Action\n\t\twant [][]int // indexes into test.in\n\t}{\n\t\t{\n\t\t\tin:   []*Action{{Index: 0}, {Index: 1}, {Index: 2}},\n\t\t\twant: [][]int{{0, 1, 2}},\n\t\t},\n\t\t{\n\t\t\tin:   []*Action{{Index: 0}, {Index: 1, FieldPaths: [][]string{{\"a\"}}}, {Index: 2}},\n\t\t\twant: [][]int{{0, 2}, {1}},\n\t\t},\n\t\t{\n\t\t\tin: []*Action{\n\t\t\t\t{Index: 0, FieldPaths: [][]string{{\"a\", \"b\"}}},\n\t\t\t\t{Index: 1, FieldPaths: [][]string{{\"a\"}}},\n\t\t\t\t{Index: 2},\n\t\t\t\t{Index: 3, FieldPaths: [][]string{{\"a\"}, {\"b\"}}},\n\t\t\t},\n\t\t\twant: [][]int{{0}, {1}, {2}, {3}},\n\t\t},\n\t} {\n\t\tgot := GroupByFieldPath(test.in)\n\t\twant := make([][]*Action, len(test.want))\n\t\tfor i, s := range test.want {\n\t\t\twant[i] = make([]*Action, len(s))\n\t\t\tfor j, x := range s {\n\t\t\t\twant[i][j] = test.in[x]\n\t\t\t}\n\t\t}\n\t\tif diff := cmp.Diff(got, want, cmpopts.IgnoreUnexported(Document{})); diff != \"\" {\n\t\t\tt.Errorf(\"#%d: %s\", i, diff)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/drivertest/driverbenchmark.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage drivertest\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"sync/atomic\"\n\t\"testing\"\n\n\t\"gocloud.dev/docstore\"\n)\n\n// RunBenchmarks runs benchmarks for docstore drivers.\nfunc RunBenchmarks(b *testing.B, coll *docstore.Collection) {\n\tb.Helper()\n\n\tdefer coll.Close()\n\tClearCollection(b, coll)\n\tb.Run(\"BenchmarkSingleActionPut\", func(b *testing.B) {\n\t\tbenchmarkSingleActionPut(b, 10, coll)\n\t})\n\tb.Run(\"BenchmarkSingleActionGet\", func(b *testing.B) {\n\t\tbenchmarkSingleActionGet(b, 10, coll)\n\t})\n\tb.Run(\"BenchmarkActionListPut\", func(b *testing.B) {\n\t\tbenchmarkActionListPut(b, 50, coll)\n\t})\n\tb.Run(\"BenchmarkActionListGet\", func(b *testing.B) {\n\t\tbenchmarkActionListGet(b, 100, coll)\n\t})\n\tClearCollection(b, coll)\n}\n\nfunc benchmarkSingleActionPut(b *testing.B, n int, coll *docstore.Collection) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tconst baseKey = \"benchmarksingleaction-put-\"\n\tvar nextID uint32\n\n\tb.ResetTimer()\n\tb.RunParallel(func(pb *testing.PB) {\n\t\tfor pb.Next() {\n\t\t\tfor range n {\n\t\t\t\tkey := fmt.Sprintf(\"%s%d\", baseKey, atomic.AddUint32(&nextID, 1))\n\t\t\t\tdoc := docmap{KeyField: key, \"S\": key}\n\t\t\t\tif err := coll.Put(ctx, doc); err != nil {\n\t\t\t\t\tb.Error(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc benchmarkSingleActionGet(b *testing.B, n int, coll *docstore.Collection) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tconst baseKey = \"benchmarksingleaction-get-\"\n\tdocs := make([]docmap, n)\n\tputs := coll.Actions()\n\tfor i := range n {\n\t\tdocs[i] = docmap{KeyField: baseKey + strconv.Itoa(i), \"n\": i}\n\t\tputs.Put(docs[i])\n\t}\n\tif err := puts.Do(ctx); err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\tb.ResetTimer()\n\tb.RunParallel(func(pb *testing.PB) {\n\t\tfor pb.Next() {\n\t\t\tfor _, doc := range docs {\n\t\t\t\tgot := docmap{KeyField: doc[KeyField]}\n\t\t\t\tif err := coll.Get(ctx, got); err != nil {\n\t\t\t\t\tb.Fatal(err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc benchmarkActionListPut(b *testing.B, n int, coll *docstore.Collection) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tconst baseKey = \"benchmarkactionlist-put-\"\n\tvar nextID uint32\n\n\tb.ResetTimer()\n\tb.RunParallel(func(pb *testing.PB) {\n\t\tfor pb.Next() {\n\t\t\tactions := coll.Actions()\n\t\t\tfor range n {\n\t\t\t\tkey := fmt.Sprintf(\"%s%d\", baseKey, atomic.AddUint32(&nextID, 1))\n\t\t\t\tdoc := docmap{KeyField: key, \"S\": key}\n\t\t\t\tactions.Put(doc)\n\t\t\t}\n\t\t\tif err := actions.Do(ctx); err != nil {\n\t\t\t\tb.Error(err)\n\t\t\t}\n\t\t}\n\t})\n}\n\nfunc benchmarkActionListGet(b *testing.B, n int, coll *docstore.Collection) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tconst baseKey = \"benchmarkactionlist-get-\"\n\tdocs := make([]docmap, n)\n\tputs := coll.Actions()\n\tfor i := range n {\n\t\tdocs[i] = docmap{KeyField: baseKey + strconv.Itoa(i), \"n\": i}\n\t\tputs.Put(docs[i])\n\t}\n\tif err := puts.Do(ctx); err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\tb.ResetTimer()\n\tb.RunParallel(func(pb *testing.PB) {\n\t\tfor pb.Next() {\n\t\t\tgets := coll.Actions()\n\t\t\tfor _, doc := range docs {\n\t\t\t\tgot := docmap{KeyField: doc[KeyField]}\n\t\t\t\tgets.Get(got)\n\t\t\t}\n\t\t\tif err := gets.Do(ctx); err != nil {\n\t\t\t\tb.Fatal(err)\n\t\t\t}\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "docstore/drivertest/drivertest.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package drivertest provides a conformance test for implementations of\n// driver.\npackage drivertest // import \"gocloud.dev/docstore/drivertest\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"maps\"\n\t\"math\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"github.com/google/uuid\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"google.golang.org/protobuf/proto\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\n// ByteArray is an array of 2 bytes.\ntype ByteArray [2]byte\n\n// CollectionKind describes the kind of testing collection to create.\ntype CollectionKind int\n\nconst (\n\t// SingleKey is collection with a single primary key field of type string named\n\t// drivertest.KeyField.\n\tSingleKey CollectionKind = iota\n\n\t// TwoKey is a  collection that will consist entirely of HighScore structs (see below),\n\t// whose two primary key fields are \"Game\" and \"Player\", both strings. Use\n\t// drivertest.HighScoreKey as the key function.\n\tTwoKey\n\n\t// AltRev is a collection that behaves like a SingleKey collection, except\n\t// that the revision field should be drivertest.AlternateRevisionField.\n\tAltRev\n\n\t// NoRev is a collection whose documents will not have a revision field.\n\tNoRev\n)\n\n// Harness descibes the functionality test harnesses must provide to run\n// conformance tests.\ntype Harness interface {\n\t// MakeCollection makes a driver.Collection for testing.\n\tMakeCollection(context.Context, CollectionKind) (driver.Collection, error)\n\n\t// BeforeDoTypes should return a list of values whose types are valid for the as\n\t// function given to BeforeDo. For example, if the driver converts Get actions\n\t// to *GetRequests and write actions to *WriteRequests, then BeforeDoTypes should\n\t// return []interface{}{&GetRequest{}, &WriteRequest{}}.\n\t// TODO(jba): consider splitting these by action kind.\n\tBeforeDoTypes() []any\n\n\t// BeforeQueryTypes should return a list of values whose types are valid for the as\n\t// function given to BeforeQuery.\n\tBeforeQueryTypes() []any\n\n\t// RevisionsEqual reports whether two revisions are equal.\n\tRevisionsEqual(rev1, rev2 any) bool\n\n\t// SupportsAtomicWrites should report if a collection supports atomic writes\n\tSupportsAtomicWrites() bool\n\n\t// Close closes resources used by the harness.\n\tClose()\n}\n\n// HarnessMaker describes functions that construct a harness for running tests.\n// It is called exactly once per test; Harness.Close() will be called when the test is complete.\ntype HarnessMaker func(ctx context.Context, t *testing.T) (Harness, error)\n\n// UnsupportedType is an enum for types not supported by native codecs. We chose\n// to describe this negatively (types that aren't supported rather than types\n// that are) to make the more inclusive cases easier to write. A driver can\n// return nil for CodecTester.UnsupportedTypes, then add values from this enum\n// one by one until all tests pass.\ntype UnsupportedType int\n\n// These are known unsupported types by one or more driver. Each of them\n// corresponses to an unsupported type specific test which if the driver\n// actually supports.\nconst (\n\t// Native codec doesn't support any unsigned integer type\n\tUint UnsupportedType = iota\n\t// Native codec doesn't support arrays\n\tArrays\n\t// Native codec doesn't support full time precision\n\tNanosecondTimes\n\t// Native codec doesn't support [][]byte\n\tBinarySet\n)\n\n// CodecTester describes functions that encode and decode values using both the\n// docstore codec for a driver, and that driver's own \"native\" codec.\ntype CodecTester interface {\n\tUnsupportedTypes() []UnsupportedType\n\tNativeEncode(any) (any, error)\n\tNativeDecode(value, dest any) error\n\tDocstoreEncode(any) (any, error)\n\tDocstoreDecode(value, dest any) error\n}\n\n// AsTest represents a test of As functionality.\ntype AsTest interface {\n\t// Name should return a descriptive name for the test.\n\tName() string\n\t// CollectionCheck will be called to allow verification of Collection.As.\n\tCollectionCheck(coll *docstore.Collection) error\n\t// QueryCheck will be called after calling Query. It should call it.As and\n\t// verify the results.\n\tQueryCheck(it *docstore.DocumentIterator) error\n\t// ErrorCheck is called to allow verification of Collection.ErrorAs.\n\tErrorCheck(c *docstore.Collection, err error) error\n}\n\ntype verifyAsFailsOnNil struct{}\n\nfunc (verifyAsFailsOnNil) Name() string {\n\treturn \"verify As returns false when passed nil\"\n}\n\nfunc (verifyAsFailsOnNil) CollectionCheck(coll *docstore.Collection) error {\n\tif coll.As(nil) {\n\t\treturn errors.New(\"want Collection.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) QueryCheck(it *docstore.DocumentIterator) error {\n\tif it.As(nil) {\n\t\treturn errors.New(\"want DocumentIterator.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (v verifyAsFailsOnNil) ErrorCheck(c *docstore.Collection, err error) (ret error) {\n\tdefer func() {\n\t\tif recover() == nil {\n\t\t\tret = errors.New(\"want ErrorAs to panic when passed nil\")\n\t\t}\n\t}()\n\tc.ErrorAs(err, nil)\n\treturn nil\n}\n\n// RunConformanceTests runs conformance tests for driver implementations of docstore.\nfunc RunConformanceTests(t *testing.T, newHarness HarnessMaker, ct CodecTester, asTests []AsTest) {\n\tt.Helper()\n\n\tt.Run(\"TypeDrivenCodec\", func(t *testing.T) { testTypeDrivenDecode(t, ct) })\n\tt.Run(\"BlindCodec\", func(t *testing.T) { testBlindDecode(t, ct) })\n\n\tt.Run(\"Create\", func(t *testing.T) { withRevCollections(t, newHarness, testCreate) })\n\tt.Run(\"AtomicWrites\", func(t *testing.T) { withRevCollections(t, newHarness, testAtomicWrites) })\n\tt.Run(\"AtomicWritesFail\", func(t *testing.T) { withRevCollections(t, newHarness, testAtomicWritesFail) })\n\tt.Run(\"Put\", func(t *testing.T) { withRevCollections(t, newHarness, testPut) })\n\tt.Run(\"Replace\", func(t *testing.T) { withRevCollections(t, newHarness, testReplace) })\n\tt.Run(\"Get\", func(t *testing.T) { withRevCollections(t, newHarness, testGet) })\n\tt.Run(\"Delete\", func(t *testing.T) { withRevCollections(t, newHarness, testDelete) })\n\tt.Run(\"Update\", func(t *testing.T) { withRevCollections(t, newHarness, testUpdate) })\n\tt.Run(\"Data\", func(t *testing.T) { withCollection(t, newHarness, SingleKey, testData) })\n\tt.Run(\"Proto\", func(t *testing.T) { withCollection(t, newHarness, SingleKey, testProto) })\n\tt.Run(\"MultipleActions\", func(t *testing.T) { withRevCollections(t, newHarness, testMultipleActions) })\n\tt.Run(\"GetQueryKeyField\", func(t *testing.T) { withRevCollections(t, newHarness, testGetQueryKeyField) })\n\tt.Run(\"SerializeRevision\", func(t *testing.T) { withCollection(t, newHarness, SingleKey, testSerializeRevision) })\n\tt.Run(\"ActionsOnStructNoRev\", func(t *testing.T) {\n\t\twithCollection(t, newHarness, NoRev, testActionsOnStructNoRev)\n\t})\n\tt.Run(\"ActionsWithCompositeID\", func(t *testing.T) { withCollection(t, newHarness, TwoKey, testActionsWithCompositeID) })\n\tt.Run(\"GetQuery\", func(t *testing.T) { withCollection(t, newHarness, TwoKey, testGetQuery) })\n\n\tt.Run(\"ExampleInDoc\", func(t *testing.T) { withCollection(t, newHarness, NoRev, testExampleInDoc) })\n\n\tt.Run(\"BeforeDo\", func(t *testing.T) { testBeforeDo(t, newHarness) })\n\tt.Run(\"BeforeQuery\", func(t *testing.T) { testBeforeQuery(t, newHarness) })\n\n\tasTests = append(asTests, verifyAsFailsOnNil{})\n\tt.Run(\"As\", func(t *testing.T) {\n\t\tfor _, st := range asTests {\n\t\t\tif st.Name() == \"\" {\n\t\t\t\tt.Fatalf(\"AsTest.Name is required\")\n\t\t\t}\n\t\t\tt.Run(st.Name(), func(t *testing.T) {\n\t\t\t\twithCollection(t, newHarness, TwoKey, func(t *testing.T, _ Harness, coll *docstore.Collection) {\n\t\t\t\t\tt.Helper()\n\n\t\t\t\t\ttestAs(t, coll, st)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t})\n}\n\n// withCollection calls f with a fresh harness and an empty collection of the given kind.\nfunc withCollection(t *testing.T, newHarness HarnessMaker, kind CollectionKind, f func(*testing.T, Harness, *docstore.Collection)) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\twithColl(t, h, kind, f)\n}\n\n// withRevCollections calls f twice: once with the SingleKey collection, using documents and code that expect\n// the standard revision field; and once with the AltRev collection, that uses an alternative revisionf field\n// name.\nfunc withRevCollections(t *testing.T, newHarness HarnessMaker, f func(*testing.T, *docstore.Collection, string)) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tif strings.Contains(t.Name(), \"AtomicWrites\") && !h.SupportsAtomicWrites() {\n\t\tt.Skip()\n\t}\n\n\tt.Run(\"StdRev\", func(t *testing.T) {\n\t\twithColl(t, h, SingleKey, func(t *testing.T, _ Harness, coll *docstore.Collection) {\n\t\t\tt.Helper()\n\n\t\t\tf(t, coll, docstore.DefaultRevisionField)\n\t\t})\n\t})\n\tt.Run(\"AltRev\", func(t *testing.T) {\n\t\twithColl(t, h, AltRev, func(t *testing.T, _ Harness, coll *docstore.Collection) {\n\t\t\tt.Helper()\n\n\t\t\tf(t, coll, AlternateRevisionField)\n\t\t})\n\t})\n}\n\n// withColl calls f with h and an empty collection of the given kind. It takes care of closing\n// the collection after f returns.\nfunc withColl(t *testing.T, h Harness, kind CollectionKind, f func(*testing.T, Harness, *docstore.Collection)) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tdc, err := h.MakeCollection(ctx, kind)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcoll := docstore.NewCollection(dc)\n\tdefer coll.Close()\n\tClearCollection(t, coll)\n\tf(t, h, coll)\n}\n\n// KeyField is the primary key field for the main test collection.\nconst KeyField = \"name\"\n\n// AlternateRevisionField is used for testing the option to provide a different\n// name for the revision field.\nconst AlternateRevisionField = \"Etag\"\n\ntype docmap = map[string]any\n\nfunc newDoc(doc any) any {\n\tswitch v := doc.(type) {\n\tcase docmap:\n\t\treturn docmap{KeyField: v[KeyField]}\n\tcase *docstruct:\n\t\treturn &docstruct{Name: v.Name}\n\t}\n\treturn nil\n}\n\nfunc key(doc any) any {\n\tswitch d := doc.(type) {\n\tcase docmap:\n\t\treturn d[KeyField]\n\tcase *docstruct:\n\t\treturn d.Name\n\t}\n\treturn nil\n}\n\nfunc setKey(doc, key any) {\n\tswitch d := doc.(type) {\n\tcase docmap:\n\t\td[KeyField] = key\n\tcase *docstruct:\n\t\td.Name = key\n\t}\n}\n\nfunc revision(doc any, revField string) any {\n\tswitch d := doc.(type) {\n\tcase docmap:\n\t\treturn d[revField]\n\tcase *docstruct:\n\t\tif revField == docstore.DefaultRevisionField {\n\t\t\treturn d.DocstoreRevision\n\t\t}\n\t\treturn d.Etag\n\t}\n\treturn nil\n}\n\nfunc setRevision(doc, rev any, revField string) {\n\tswitch d := doc.(type) {\n\tcase docmap:\n\t\td[revField] = rev\n\tcase *docstruct:\n\t\tif revField == docstore.DefaultRevisionField {\n\t\t\td.DocstoreRevision = rev\n\t\t} else {\n\t\t\td.Etag = rev\n\t\t}\n\t}\n}\n\ntype docstruct struct {\n\tName             any `docstore:\"name\"`\n\tDocstoreRevision any\n\tEtag             any\n\n\tI  int\n\tU  uint\n\tF  float64\n\tSt string\n\tB  bool\n\tM  map[string]any\n}\n\nfunc nonexistentDoc() docmap { return docmap{KeyField: \"doesNotExist\"} }\n\nfunc testCreate(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\tdoc     any\n\t\twantErr gcerrors.ErrorCode\n\t}{\n\t\t{\n\t\t\tname: \"named map\",\n\t\t\tdoc:  docmap{KeyField: \"testCreateMap\", \"b\": true, revField: nil},\n\t\t},\n\t\t{\n\t\t\tname:    \"existing\",\n\t\t\tdoc:     docmap{KeyField: \"testCreateMap\", revField: nil},\n\t\t\twantErr: gcerrors.AlreadyExists,\n\t\t},\n\t\t{\n\t\t\tname: \"unnamed map\",\n\t\t\tdoc:  docmap{\"b\": true, revField: nil},\n\t\t},\n\t\t{\n\t\t\tname: \"named struct\",\n\t\t\tdoc:  &docstruct{Name: \"testCreateStruct\", B: true},\n\t\t},\n\t\t{\n\t\t\tname: \"unnamed struct\",\n\t\t\tdoc:  &docstruct{B: true},\n\t\t},\n\t\t{\n\t\t\tname: \"empty named struct\",\n\t\t\tdoc:  &docstruct{Name: \"\", B: true},\n\t\t},\n\t\t{\n\t\t\tname:    \"with non-nil revision\",\n\t\t\tdoc:     docmap{KeyField: \"testCreate2\", revField: 0},\n\t\t\twantErr: gcerrors.InvalidArgument,\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif tc.wantErr == gcerrors.OK {\n\t\t\t\tcheckNoRevisionField(t, tc.doc, revField)\n\t\t\t\tif err := coll.Create(ctx, tc.doc); err != nil {\n\t\t\t\t\tt.Fatalf(\"Create: %v\", err)\n\t\t\t\t}\n\t\t\t\tcheckHasRevisionField(t, tc.doc, revField)\n\n\t\t\t\tgot := newDoc(tc.doc)\n\t\t\t\tif err := coll.Get(ctx, got); err != nil {\n\t\t\t\t\tt.Fatalf(\"Get: %v\", err)\n\t\t\t\t}\n\t\t\t\tif diff := cmpDiff(got, tc.doc); diff != \"\" {\n\t\t\t\t\tt.Fatal(diff)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr := coll.Create(ctx, tc.doc)\n\t\t\t\tcheckCode(t, err, tc.wantErr)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc testPut(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\tvar maprev, strmap any\n\n\tfor _, tc := range []struct {\n\t\tname string\n\t\tdoc  any\n\t\trev  bool\n\t}{\n\t\t{\n\t\t\tname: \"create map\",\n\t\t\tdoc:  docmap{KeyField: \"testPutMap\", \"b\": true, revField: nil},\n\t\t},\n\t\t{\n\t\t\tname: \"create struct\",\n\t\t\tdoc:  &docstruct{Name: \"testPutStruct\", B: true},\n\t\t},\n\t\t{\n\t\t\tname: \"replace map\",\n\t\t\tdoc:  docmap{KeyField: \"testPutMap\", \"b\": false, revField: nil},\n\t\t\trev:  true,\n\t\t},\n\t\t{\n\t\t\tname: \"replace struct\",\n\t\t\tdoc:  &docstruct{Name: \"testPutStruct\", B: false},\n\t\t\trev:  true,\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tcheckNoRevisionField(t, tc.doc, revField)\n\t\t\tmust(coll.Put(ctx, tc.doc))\n\t\t\tcheckHasRevisionField(t, tc.doc, revField)\n\t\t\tgot := newDoc(tc.doc)\n\t\t\tmust(coll.Get(ctx, got))\n\t\t\tif diff := cmpDiff(got, tc.doc); diff != \"\" {\n\t\t\t\tt.Fatal(diff)\n\t\t\t}\n\t\t\tif tc.rev {\n\t\t\t\tswitch v := tc.doc.(type) {\n\t\t\t\tcase docmap:\n\t\t\t\t\tmaprev = v[revField]\n\t\t\t\tcase *docstruct:\n\t\t\t\t\tif revField == docstore.DefaultRevisionField {\n\t\t\t\t\t\tstrmap = v.DocstoreRevision\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstrmap = v.Etag\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t// Putting a doc with a revision field is the same as replace, meaning\n\t// it will fail if the document doesn't exist.\n\tfor _, tc := range []struct {\n\t\tname string\n\t\tdoc  any\n\t}{\n\t\t{\n\t\t\tname: \"replace map wrong key\",\n\t\t\tdoc:  docmap{KeyField: \"testPutMap2\", revField: maprev},\n\t\t},\n\t\t{\n\t\t\tname: \"replace struct wrong key\",\n\t\t\tdoc:  &docstruct{Name: \"testPutStruct2\", DocstoreRevision: strmap, Etag: strmap},\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\terr := coll.Put(ctx, tc.doc)\n\t\t\tif c := gcerrors.Code(err); c != gcerrors.NotFound && c != gcerrors.FailedPrecondition {\n\t\t\t\tt.Errorf(\"got %v, want NotFound or FailedPrecondition\", err)\n\t\t\t}\n\t\t})\n\t}\n\n\tt.Run(\"revision\", func(t *testing.T) {\n\t\ttestRevisionField(t, coll, revField, func(doc any) error {\n\t\t\treturn coll.Put(ctx, doc)\n\t\t})\n\t})\n\n\terr := coll.Put(ctx, &docstruct{Name: \"\"})\n\tcheckCode(t, err, gcerrors.InvalidArgument)\n}\n\nfunc testReplace(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname       string\n\t\tdoc1, doc2 any\n\t}{\n\t\t{\n\t\t\tname: \"replace map\",\n\t\t\tdoc1: docmap{KeyField: \"testReplaceMap\", \"s\": \"a\", revField: nil},\n\t\t\tdoc2: docmap{KeyField: \"testReplaceMap\", \"s\": \"b\", revField: nil},\n\t\t},\n\t\t{\n\t\t\tname: \"replace struct\",\n\t\t\tdoc1: &docstruct{Name: \"testReplaceStruct\", St: \"a\"},\n\t\t\tdoc2: &docstruct{Name: \"testReplaceStruct\", St: \"b\"},\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tmust(coll.Put(ctx, tc.doc1))\n\t\t\tcheckNoRevisionField(t, tc.doc2, revField)\n\t\t\tmust(coll.Replace(ctx, tc.doc2))\n\t\t\tcheckHasRevisionField(t, tc.doc2, revField)\n\t\t\tgot := newDoc(tc.doc2)\n\t\t\tmust(coll.Get(ctx, got))\n\t\t\tif diff := cmpDiff(got, tc.doc2); diff != \"\" {\n\t\t\t\tt.Fatal(diff)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Can't replace a nonexistent doc.\n\tcheckCode(t, coll.Replace(ctx, nonexistentDoc()), gcerrors.NotFound)\n\n\tt.Run(\"revision\", func(t *testing.T) {\n\t\ttestRevisionField(t, coll, revField, func(doc any) error {\n\t\t\treturn coll.Replace(ctx, doc)\n\t\t})\n\t})\n}\n\n// Check that doc does not have a revision field (or has a nil one).\nfunc checkNoRevisionField(t *testing.T, doc any, revField string) {\n\tt.Helper()\n\tddoc, err := driver.NewDocument(doc)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif rev, _ := ddoc.GetField(revField); rev != nil {\n\t\tt.Fatal(\"doc has revision field\")\n\t}\n}\n\n// Check that doc has a non-nil revision field.\nfunc checkHasRevisionField(t *testing.T, doc any, revField string) {\n\tt.Helper()\n\n\tddoc, err := driver.NewDocument(doc)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif rev, err := ddoc.GetField(revField); err != nil || rev == nil {\n\t\tt.Fatalf(\"doc missing revision field (error = %v)\", err)\n\t}\n}\n\nfunc testGet(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname string\n\t\tdoc  any\n\t\tfps  []docstore.FieldPath\n\t\twant any\n\t}{\n\t\t// If Get is called with no field paths, the full document is populated.\n\t\t{\n\t\t\tname: \"get map\",\n\t\t\tdoc: docmap{\n\t\t\t\tKeyField: \"testGetMap\",\n\t\t\t\t\"s\":      \"a string\",\n\t\t\t\t\"i\":      int64(95),\n\t\t\t\t\"f\":      32.3,\n\t\t\t\t\"m\":      map[string]any{\"a\": \"one\", \"b\": \"two\"},\n\t\t\t\trevField: nil,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get struct\",\n\t\t\tdoc: &docstruct{\n\t\t\t\tName: \"testGetStruct\",\n\t\t\t\tSt:   \"a string\",\n\t\t\t\tI:    95,\n\t\t\t\tF:    32.3,\n\t\t\t\tM:    map[string]any{\"a\": \"one\", \"b\": \"two\"},\n\t\t\t},\n\t\t},\n\t\t// If Get is called with field paths, the resulting document has only those fields.\n\t\t{\n\t\t\tname: \"get map with field path\",\n\t\t\tdoc: docmap{\n\t\t\t\tKeyField: \"testGetMapFP\",\n\t\t\t\t\"s\":      \"a string\",\n\t\t\t\t\"i\":      int64(95),\n\t\t\t\t\"f\":      32.3,\n\t\t\t\t\"m\":      map[string]any{\"a\": \"one\", \"b\": \"two\"},\n\t\t\t\trevField: nil,\n\t\t\t},\n\t\t\tfps: []docstore.FieldPath{\"f\", \"m.b\", docstore.FieldPath(revField)},\n\t\t\twant: docmap{\n\t\t\t\tKeyField: \"testGetMapFP\",\n\t\t\t\t\"f\":      32.3,\n\t\t\t\t\"m\":      map[string]any{\"b\": \"two\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get struct with field path\",\n\t\t\tdoc: &docstruct{\n\t\t\t\tName: \"testGetStructFP\",\n\t\t\t\tSt:   \"a string\",\n\t\t\t\tI:    95,\n\t\t\t\tF:    32.3,\n\t\t\t\tM:    map[string]any{\"a\": \"one\", \"b\": \"two\"},\n\t\t\t},\n\t\t\tfps: []docstore.FieldPath{\"St\", \"M.a\", docstore.FieldPath(revField)},\n\t\t\twant: &docstruct{\n\t\t\t\tName: \"testGetStructFP\",\n\t\t\t\tSt:   \"a string\",\n\t\t\t\tM:    map[string]any{\"a\": \"one\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"get struct wrong case\",\n\t\t\tdoc: &docstruct{\n\t\t\t\tName: \"testGetStructWC\",\n\t\t\t\tSt:   \"a string\",\n\t\t\t\tI:    95,\n\t\t\t\tF:    32.3,\n\t\t\t\tM:    map[string]any{\"a\": \"one\", \"b\": \"two\"},\n\t\t\t},\n\t\t\tfps: []docstore.FieldPath{\"st\", \"m.a\"},\n\t\t\twant: &docstruct{\n\t\t\t\tName: \"testGetStructWC\",\n\t\t\t},\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tmust(coll.Put(ctx, tc.doc))\n\t\t\tgot := newDoc(tc.doc)\n\t\t\tmust(coll.Get(ctx, got, tc.fps...))\n\t\t\tif tc.want == nil {\n\t\t\t\ttc.want = tc.doc\n\t\t\t}\n\t\t\tsetRevision(tc.want, revision(got, revField), revField)\n\t\t\tif diff := cmpDiff(got, tc.want); diff != \"\" {\n\t\t\t\tt.Error(\"Get with field paths:\\n\", diff)\n\t\t\t}\n\t\t})\n\t}\n\n\terr := coll.Get(ctx, nonexistentDoc())\n\tcheckCode(t, err, gcerrors.NotFound)\n\n\terr = coll.Get(ctx, &docstruct{Name: \"\"})\n\tcheckCode(t, err, gcerrors.InvalidArgument)\n}\n\nfunc testDelete(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tvar rev any\n\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\tdoc     any\n\t\twantErr gcerrors.ErrorCode\n\t}{\n\t\t{\n\t\t\tname: \"delete map\",\n\t\t\tdoc:  docmap{KeyField: \"testDeleteMap\", revField: nil},\n\t\t},\n\t\t{\n\t\t\tname:    \"delete map wrong rev\",\n\t\t\tdoc:     docmap{KeyField: \"testDeleteMap\", \"b\": true, revField: nil},\n\t\t\twantErr: gcerrors.FailedPrecondition,\n\t\t},\n\t\t{\n\t\t\tname: \"delete struct\",\n\t\t\tdoc:  &docstruct{Name: \"testDeleteStruct\"},\n\t\t},\n\t\t{\n\t\t\tname:    \"delete struct wrong rev\",\n\t\t\tdoc:     &docstruct{Name: \"testDeleteStruct\", B: true},\n\t\t\twantErr: gcerrors.FailedPrecondition,\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif err := coll.Put(ctx, tc.doc); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tif tc.wantErr == gcerrors.OK {\n\t\t\t\trev = revision(tc.doc, revField)\n\t\t\t\tif err := coll.Delete(ctx, tc.doc); err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\t// The document should no longer exist.\n\t\t\t\tif err := coll.Get(ctx, tc.doc); err == nil {\n\t\t\t\t\tt.Error(\"want error, got nil\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsetRevision(tc.doc, rev, revField)\n\t\t\t\tcheckCode(t, coll.Delete(ctx, tc.doc), gcerrors.FailedPrecondition)\n\t\t\t}\n\t\t})\n\t}\n\t// Delete doesn't fail if the doc doesn't exist.\n\tif err := coll.Delete(ctx, nonexistentDoc()); err != nil {\n\t\tt.Errorf(\"delete nonexistent doc: want nil, got %v\", err)\n\t}\n\n\terr := coll.Delete(ctx, &docstruct{Name: \"\"})\n\tcheckCode(t, err, gcerrors.InvalidArgument)\n}\n\nfunc testUpdate(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tfor _, tc := range []struct {\n\t\tname string\n\t\tdoc  any\n\t\tmods docstore.Mods\n\t\twant any\n\t}{\n\t\t{\n\t\t\tname: \"update map\",\n\t\t\tdoc:  docmap{KeyField: \"testUpdateMap\", \"a\": \"A\", \"b\": \"B\", \"n\": 3.5, \"i\": 1, revField: nil},\n\t\t\tmods: docstore.Mods{\n\t\t\t\t\"a\": \"X\",\n\t\t\t\t\"b\": nil,\n\t\t\t\t\"c\": \"C\",\n\t\t\t\t\"n\": docstore.Increment(-1),\n\t\t\t\t\"i\": nil,\n\t\t\t\t\"m\": 3,\n\t\t\t},\n\t\t\twant: docmap{KeyField: \"testUpdateMap\", \"a\": \"X\", \"c\": \"C\", \"n\": 2.5, \"m\": int64(3)},\n\t\t},\n\t\t{\n\t\t\tname: \"update map overwrite only\",\n\t\t\tdoc:  docmap{KeyField: \"testUpdateMapWrt\", \"a\": \"A\", revField: nil},\n\t\t\tmods: docstore.Mods{\n\t\t\t\t\"a\": \"X\",\n\t\t\t\t\"b\": nil,\n\t\t\t\t\"m\": 3,\n\t\t\t},\n\t\t\twant: docmap{KeyField: \"testUpdateMapWrt\", \"a\": \"X\", \"m\": int64(3)},\n\t\t},\n\t\t{\n\t\t\tname: \"update map increment only\",\n\t\t\tdoc:  docmap{KeyField: \"testUpdateMapInc\", \"a\": \"A\", \"n\": 3.5, \"i\": 1, revField: nil},\n\t\t\tmods: docstore.Mods{\n\t\t\t\t\"n\": docstore.Increment(-1),\n\t\t\t\t\"i\": docstore.Increment(2.5),\n\t\t\t\t\"m\": docstore.Increment(3),\n\t\t\t},\n\t\t\twant: docmap{KeyField: \"testUpdateMapInc\", \"a\": \"A\", \"n\": 2.5, \"i\": 3.5, \"m\": int64(3)},\n\t\t},\n\t\t{\n\t\t\tname: \"update struct\",\n\t\t\tdoc:  &docstruct{Name: \"testUpdateStruct\", St: \"st\", I: 1, F: 3.5},\n\t\t\tmods: docstore.Mods{\n\t\t\t\t\"St\": \"str\",\n\t\t\t\t\"I\":  nil,\n\t\t\t\t\"U\":  4,\n\t\t\t\t\"F\":  docstore.Increment(-3),\n\t\t\t},\n\t\t\twant: &docstruct{Name: \"testUpdateStruct\", St: \"str\", U: 4, F: 0.5},\n\t\t},\n\t\t{\n\t\t\tname: \"update struct overwrite only\",\n\t\t\tdoc:  &docstruct{Name: \"testUpdateStructWrt\", St: \"st\", I: 1},\n\t\t\tmods: docstore.Mods{\n\t\t\t\t\"St\": \"str\",\n\t\t\t\t\"I\":  nil,\n\t\t\t\t\"U\":  4,\n\t\t\t},\n\t\t\twant: &docstruct{Name: \"testUpdateStructWrt\", St: \"str\", U: 4},\n\t\t},\n\t\t{\n\t\t\tname: \"update struct increment only\",\n\t\t\tdoc:  &docstruct{Name: \"testUpdateStructInc\", St: \"st\", I: 1, F: 3.5},\n\t\t\tmods: docstore.Mods{\n\t\t\t\t\"U\": docstore.Increment(4),\n\t\t\t\t\"F\": docstore.Increment(-3),\n\t\t\t},\n\t\t\twant: &docstruct{Name: \"testUpdateStructInc\", St: \"st\", U: 4, I: 1, F: 0.5},\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif err := coll.Put(ctx, tc.doc); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tsetRevision(tc.doc, nil, revField)\n\t\t\tgot := newDoc(tc.doc)\n\t\t\tcheckNoRevisionField(t, tc.doc, revField)\n\t\t\terrs := coll.Actions().Update(tc.doc, tc.mods).Get(got).Do(ctx)\n\t\t\tif errs != nil {\n\t\t\t\tt.Fatal(errs)\n\t\t\t}\n\t\t\tcheckHasRevisionField(t, tc.doc, revField)\n\t\t\tsetRevision(tc.want, revision(got, revField), revField)\n\t\t\tif diff := cmp.Diff(got, tc.want, cmpopts.IgnoreUnexported(tspb.Timestamp{})); diff != \"\" {\n\t\t\t\tt.Error(diff)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Can't update a nonexistent doc.\n\tif err := coll.Update(ctx, nonexistentDoc(), docstore.Mods{\"x\": \"y\"}); err == nil {\n\t\tt.Error(\"nonexistent document: got nil, want error\")\n\t}\n\n\t// Bad increment value.\n\terr := coll.Update(ctx, docmap{KeyField: \"update invalid\"}, docstore.Mods{\"x\": docstore.Increment(\"3\")})\n\tcheckCode(t, err, gcerrors.InvalidArgument)\n\n\tt.Run(\"revision\", func(t *testing.T) {\n\t\ttestRevisionField(t, coll, revField, func(doc any) error {\n\t\t\treturn coll.Update(ctx, doc, docstore.Mods{\"s\": \"c\"})\n\t\t})\n\t})\n}\n\n// Test that:\n// - Writing a document with a revision field succeeds if the document hasn't changed.\n// - Writing a document with a revision field fails if the document has changed.\nfunc testRevisionField(t *testing.T, coll *docstore.Collection, revField string, write func(any) error) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\tfor _, tc := range []struct {\n\t\tname string\n\t\tdoc  any\n\t}{\n\t\t{\n\t\t\tname: \"map revision\",\n\t\t\tdoc:  docmap{KeyField: \"testRevisionMap\", \"s\": \"a\", revField: nil},\n\t\t},\n\t\t{\n\t\t\tname: \"struct revision\",\n\t\t\tdoc:  &docstruct{Name: \"testRevisionStruct\", St: \"a\"},\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tmust(coll.Put(ctx, tc.doc))\n\t\t\tgot := newDoc(tc.doc)\n\t\t\tmust(coll.Get(ctx, got))\n\t\t\trev := revision(got, revField)\n\t\t\tif rev == nil {\n\t\t\t\tt.Fatal(\"missing revision field\")\n\t\t\t}\n\t\t\t// A write should succeed, because the document hasn't changed since it was gotten.\n\t\t\tif err := write(tc.doc); err != nil {\n\t\t\t\tt.Fatalf(\"write with revision field got %v, want nil\", err)\n\t\t\t}\n\t\t\t// This write should fail: got's revision field hasn't changed, but the stored document has.\n\t\t\terr := write(got)\n\t\t\tif c := gcerrors.Code(err); c != gcerrors.FailedPrecondition && c != gcerrors.NotFound {\n\t\t\t\tt.Errorf(\"write with old revision field: got %v, wanted FailedPrecondition or NotFound\", err)\n\t\t\t}\n\t\t})\n\t}\n}\n\n// Verify that the driver can serialize and deserialize revisions.\nfunc testSerializeRevision(t *testing.T, h Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tdoc := docmap{KeyField: \"testSerializeRevision\", \"x\": 1, docstore.DefaultRevisionField: nil}\n\tif err := coll.Create(ctx, doc); err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := doc[docstore.DefaultRevisionField]\n\tif want == nil {\n\t\tt.Fatal(\"nil revision\")\n\t}\n\ts, err := coll.RevisionToString(want)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tgot, err := coll.StringToRevision(s)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !h.RevisionsEqual(got, want) {\n\t\tt.Fatalf(\"got %v, want %v\", got, want)\n\t}\n}\n\n// Test all Go integer types are supported, and they all come back as int64.\nfunc testData(t *testing.T, _ Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tfor _, test := range []struct {\n\t\tin, want any\n\t}{\n\t\t{int(-1), int64(-1)},\n\t\t{int8(-8), int64(-8)},\n\t\t{int16(-16), int64(-16)},\n\t\t{int32(-32), int64(-32)},\n\t\t{int64(-64), int64(-64)},\n\t\t{uint(1), int64(1)},\n\t\t{uint8(8), int64(8)},\n\t\t{uint16(16), int64(16)},\n\t\t{uint32(32), int64(32)},\n\t\t{uint64(64), int64(64)},\n\t\t{float32(3.5), float64(3.5)},\n\t\t{[]byte{0, 1, 2}, []byte{0, 1, 2}},\n\t} {\n\t\tdoc := docmap{KeyField: \"testData\", \"val\": test.in}\n\t\tgot := docmap{KeyField: doc[KeyField]}\n\t\tif errs := coll.Actions().Put(doc).Get(got).Do(ctx); errs != nil {\n\t\t\tt.Fatal(errs)\n\t\t}\n\t\twant := docmap{\n\t\t\t\"val\":    test.want,\n\t\t\tKeyField: doc[KeyField],\n\t\t}\n\t\tif len(got) != len(want) {\n\t\t\tt.Errorf(\"%v: got %v, want %v\", test.in, got, want)\n\t\t} else if g := got[\"val\"]; !cmp.Equal(g, test.want) {\n\t\t\tt.Errorf(\"%v: got %v (%T), want %v (%T)\", test.in, g, g, test.want, test.want)\n\t\t}\n\t}\n\n\t// TODO: strings: valid vs. invalid unicode\n}\n\nvar (\n\t// A time with non-zero milliseconds, but zero nanoseconds.\n\tmilliTime = time.Date(2019, time.March, 27, 0, 0, 0, 5*1e6, time.UTC)\n\t// A time with non-zero nanoseconds.\n\tnanoTime = time.Date(2019, time.March, 27, 0, 0, 0, 5*1e6+7, time.UTC)\n)\n\n// Test that encoding from a struct and then decoding into the same struct works properly.\n// The decoding is \"type-driven\" because the decoder knows the expected type of the value\n// it is decoding--it is the type of a struct field.\nfunc testTypeDrivenDecode(t *testing.T, ct CodecTester) {\n\tt.Helper()\n\n\tif ct == nil {\n\t\tt.Skip(\"no CodecTester\")\n\t}\n\tcheck := func(in, dec any, encode func(any) (any, error), decode func(any, any) error) {\n\t\tt.Helper()\n\t\tenc, err := encode(in)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"%+v\", err)\n\t\t}\n\t\tif err := decode(enc, dec); err != nil {\n\t\t\tt.Fatalf(\"%+v\", err)\n\t\t}\n\t\tif diff := cmp.Diff(in, dec); diff != \"\" {\n\t\t\tt.Error(diff)\n\t\t}\n\t}\n\n\ts := \"bar\"\n\tdsrt := &docstoreRoundTrip{\n\t\tN:  nil,\n\t\tI:  1,\n\t\tU:  2,\n\t\tF:  2.5,\n\t\tSt: \"foo\",\n\t\tB:  true,\n\t\tL:  []int{3, 4, 5},\n\t\tA:  [2]int{6, 7},\n\t\tA2: [2]int8{1, 2},\n\t\tAt: ByteArray{1, 2},\n\t\tUu: uuid.NameSpaceDNS,\n\t\tM:  map[string]bool{\"a\": true, \"b\": false},\n\t\tBy: []byte{6, 7, 8},\n\t\tP:  &s,\n\t\tT:  milliTime,\n\t}\n\n\tcheck(dsrt, &docstoreRoundTrip{}, ct.DocstoreEncode, ct.DocstoreDecode)\n\n\t// Test native-to-docstore and docstore-to-native round trips with a smaller set\n\t// of types.\n\tnm := &nativeMinimal{\n\t\tN:  nil,\n\t\tI:  1,\n\t\tF:  2.5,\n\t\tSt: \"foo\",\n\t\tB:  true,\n\t\tL:  []int{3, 4, 5},\n\t\tA:  [2]int{6, 7},\n\t\tA2: [2]int8{6, 7},\n\t\tAt: ByteArray{1, 2},\n\t\tM:  map[string]bool{\"a\": true, \"b\": false},\n\t\tBy: []byte{6, 7, 8},\n\t\tP:  &s,\n\t\tT:  milliTime,\n\t\tLF: []float64{18.8, -19.9, 20},\n\t\tLS: []string{\"foo\", \"bar\"},\n\t}\n\tcheck(nm, &nativeMinimal{}, ct.DocstoreEncode, ct.NativeDecode)\n\tcheck(nm, &nativeMinimal{}, ct.NativeEncode, ct.DocstoreDecode)\n\n\t// Test various other types, unless they are unsupported.\n\tunsupported := map[UnsupportedType]bool{}\n\tfor _, u := range ct.UnsupportedTypes() {\n\t\tunsupported[u] = true\n\t}\n\n\t// Unsigned integers.\n\tif !unsupported[Uint] {\n\t\ttype Uint struct {\n\t\t\tU uint\n\t\t}\n\t\tu := &Uint{10}\n\t\tcheck(u, &Uint{}, ct.DocstoreEncode, ct.NativeDecode)\n\t\tcheck(u, &Uint{}, ct.NativeEncode, ct.DocstoreDecode)\n\t}\n\n\t// Arrays.\n\tif !unsupported[Arrays] {\n\t\ttype Arrays struct {\n\t\t\tA [2]int\n\t\t}\n\t\ta := &Arrays{[2]int{13, 14}}\n\t\tcheck(a, &Arrays{}, ct.DocstoreEncode, ct.NativeDecode)\n\t\tcheck(a, &Arrays{}, ct.NativeEncode, ct.DocstoreDecode)\n\t}\n\t// Nanosecond-precision time.\n\ttype NT struct {\n\t\tT time.Time\n\t}\n\n\tnt := &NT{nanoTime}\n\tif unsupported[NanosecondTimes] {\n\t\t// Expect rounding to the nearest millisecond.\n\t\tcheck := func(encode func(any) (any, error), decode func(any, any) error) {\n\t\t\tenc, err := encode(nt)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"%+v\", err)\n\t\t\t}\n\t\t\tvar got NT\n\t\t\tif err := decode(enc, &got); err != nil {\n\t\t\t\tt.Fatalf(\"%+v\", err)\n\t\t\t}\n\t\t\twant := nt.T.Round(time.Millisecond)\n\t\t\tif !got.T.Equal(want) {\n\t\t\t\tt.Errorf(\"got %v, want %v\", got.T, want)\n\t\t\t}\n\t\t}\n\t\tcheck(ct.DocstoreEncode, ct.NativeDecode)\n\t\tcheck(ct.NativeEncode, ct.DocstoreDecode)\n\t} else {\n\t\t// Expect perfect round-tripping of nanosecond times.\n\t\tcheck(nt, &NT{}, ct.DocstoreEncode, ct.NativeDecode)\n\t\tcheck(nt, &NT{}, ct.NativeEncode, ct.DocstoreDecode)\n\t}\n\n\t// Binary sets.\n\tif !unsupported[BinarySet] {\n\t\ttype BinarySet struct {\n\t\t\tB [][]byte\n\t\t}\n\t\tb := &BinarySet{[][]byte{{15}, {16}, {17}}}\n\t\tcheck(b, &BinarySet{}, ct.DocstoreEncode, ct.NativeDecode)\n\t\tcheck(b, &BinarySet{}, ct.NativeEncode, ct.DocstoreDecode)\n\t}\n}\n\n// Test decoding into an interface{}, where the decoder doesn't know the type of the\n// result and must return some Go type that accurately represents the value.\n// This is implemented by the AsInterface method of driver.Decoder.\n// Since it's fine for different drivers to return different types in this case,\n// each test case compares against a list of possible values.\nfunc testBlindDecode(t *testing.T, ct CodecTester) {\n\tt.Helper()\n\n\tif ct == nil {\n\t\tt.Skip(\"no CodecTester\")\n\t}\n\tt.Run(\"DocstoreEncode\", func(t *testing.T) { testBlindDecode1(t, ct.DocstoreEncode, ct.DocstoreDecode) })\n\tt.Run(\"NativeEncode\", func(t *testing.T) { testBlindDecode1(t, ct.NativeEncode, ct.DocstoreDecode) })\n}\n\nfunc testBlindDecode1(t *testing.T, encode func(any) (any, error), decode func(_, _ any) error) {\n\tt.Helper()\n\n\t// Encode and decode expect a document, so use this struct to hold the values.\n\ttype S struct{ X any }\n\n\tfor _, test := range []struct {\n\t\tin    any // the value to be encoded\n\t\twant  any // one possibility\n\t\twant2 any // a second possibility\n\t}{\n\t\t{in: nil, want: nil},\n\t\t{in: true, want: true},\n\t\t{in: \"foo\", want: \"foo\"},\n\t\t{in: 'c', want: 'c', want2: int64('c')},\n\t\t{in: int(3), want: int32(3), want2: int64(3)},\n\t\t{in: int8(3), want: int32(3), want2: int64(3)},\n\t\t{in: int(-3), want: int32(-3), want2: int64(-3)},\n\t\t{in: int64(math.MaxInt32 + 1), want: int64(math.MaxInt32 + 1)},\n\t\t{in: float32(1.5), want: float64(1.5)},\n\t\t{in: float64(1.5), want: float64(1.5)},\n\t\t{in: []byte{1, 2}, want: []byte{1, 2}},\n\t\t{\n\t\t\tin:    []int{1, 2},\n\t\t\twant:  []any{int32(1), int32(2)},\n\t\t\twant2: []any{int64(1), int64(2)},\n\t\t},\n\t\t{in: []float32{1.5, 2.5}, want: []any{float64(1.5), float64(2.5)}},\n\t\t{in: []float64{1.5, 2.5}, want: []any{float64(1.5), float64(2.5)}},\n\t\t{in: milliTime, want: milliTime, want2: \"2019-03-27T00:00:00.005Z\"},\n\t\t{\n\t\t\tin:    []time.Time{milliTime},\n\t\t\twant:  []any{milliTime},\n\t\t\twant2: []any{\"2019-03-27T00:00:00.005Z\"},\n\t\t},\n\t\t{\n\t\t\tin:    map[string]int{\"a\": 1},\n\t\t\twant:  map[string]any{\"a\": int64(1)},\n\t\t\twant2: map[string]any{\"a\": int32(1)},\n\t\t},\n\t\t{in: map[string][]byte{\"a\": {1, 2}}, want: map[string]any{\"a\": []byte{1, 2}}},\n\t} {\n\t\tenc, err := encode(&S{test.in})\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"encoding %T: %v\", test.in, err)\n\t\t}\n\t\tvar got S\n\t\tif err := decode(enc, &got); err != nil {\n\t\t\tt.Fatalf(\"decoding %T: %v\", test.in, err)\n\t\t}\n\t\tmatched := false\n\t\twants := []any{test.want}\n\t\tif test.want2 != nil {\n\t\t\twants = append(wants, test.want2)\n\t\t}\n\t\tfor _, w := range wants {\n\t\t\tif cmp.Equal(got.X, w) {\n\t\t\t\tmatched = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !matched {\n\t\t\tt.Errorf(\"%T: got %#v (%T), not equal to %#v or %#v\", test.in, got.X, got.X, test.want, test.want2)\n\t\t}\n\t}\n}\n\n// A round trip with the docstore codec should work for all docstore-supported types,\n// regardless of native driver support.\ntype docstoreRoundTrip struct {\n\tN  *int\n\tI  int\n\tU  uint\n\tF  float64\n\tSt string\n\tB  bool\n\tBy []byte\n\tL  []int\n\tA  [2]int\n\tA2 [2]int8\n\tAt ByteArray\n\tUu uuid.UUID\n\tM  map[string]bool\n\tP  *string\n\tT  time.Time\n}\n\n// TODO(jba): add more fields: structs; embedding.\n\n// All native codecs should support these types. If one doesn't, remove it from this\n// struct and make a new single-field struct for it.\ntype nativeMinimal struct {\n\tN  *int\n\tI  int\n\tF  float64\n\tSt string\n\tB  bool\n\tBy []byte\n\tL  []int\n\tA  [2]int\n\tA2 [2]int8\n\tAt ByteArray\n\tM  map[string]bool\n\tP  *string\n\tT  time.Time\n\tLF []float64\n\tLS []string\n}\n\n// testProto tests encoding/decoding of a document with protocol buffer\n// and pointer-to-protocol-buffer fields.\nfunc testProto(t *testing.T, _ Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\tctx := context.Background()\n\ttype protoStruct struct {\n\t\tName             string `docstore:\"name\"`\n\t\tProto            tspb.Timestamp\n\t\tPtrToProto       *tspb.Timestamp\n\t\tDocstoreRevision any\n\t}\n\tdoc := &protoStruct{\n\t\tName:       \"testing\",\n\t\tProto:      tspb.Timestamp{Seconds: 42},\n\t\tPtrToProto: &tspb.Timestamp{Seconds: 43},\n\t}\n\n\terr := coll.Create(ctx, doc)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tgot := &protoStruct{}\n\terr = coll.Query().Get(ctx).Next(ctx, got)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif diff := cmp.Diff(got, doc, cmpopts.IgnoreUnexported(tspb.Timestamp{})); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\n// The following is the schema for the collection where the ID is composed from\n// multiple fields instead of one. It can be used for query testing.\n// It is loosely borrowed from the DynamoDB documentation.\n// It is rich enough to require indexes for some drivers.\n\n// A HighScore records one user's high score in a particular game.\n// The primary key fields are Game and Player.\ntype HighScore struct {\n\tGame             string\n\tPlayer           string\n\tScore            int\n\tTime             time.Time\n\tWithGlitch       bool\n\tDocstoreRevision any\n}\n\nfunc newHighScore() any { return &HighScore{} }\n\n// HighScoreKey constructs a single primary key from a HighScore struct or a map\n// with the same fields by concatenating the Game and Player fields.\nfunc HighScoreKey(doc docstore.Document) any {\n\tswitch d := doc.(type) {\n\tcase *HighScore:\n\t\treturn d.key()\n\tcase map[string]any:\n\t\treturn barConcat(d[\"Game\"], d[\"Player\"])\n\tdefault:\n\t\tpanic(\"bad arg\")\n\t}\n}\n\nfunc (h *HighScore) key() string {\n\tif h.Game == \"\" || h.Player == \"\" {\n\t\treturn \"\"\n\t}\n\treturn barConcat(h.Game, h.Player)\n}\n\nfunc barConcat(a, b any) string { return fmt.Sprintf(\"%v|%v\", a, b) }\n\nfunc highScoreLess(h1, h2 *HighScore) bool { return h1.key() < h2.key() }\n\nfunc (h *HighScore) String() string {\n\treturn fmt.Sprintf(\"%s=%d@%s\", h.key(), h.Score, h.Time.Format(\"01/02\"))\n}\n\nfunc date(month, day int) time.Time {\n\treturn time.Date(2019, time.Month(month), day, 0, 0, 0, 0, time.UTC)\n}\n\nconst (\n\tgame1 = \"Praise All Monsters\"\n\tgame2 = \"Zombie DMV\"\n\tgame3 = \"Days Gone\"\n)\n\nvar highScores = []*HighScore{\n\t{game1, \"pat\", 49, date(3, 13), false, nil},\n\t{game1, \"mel\", 60, date(4, 10), false, nil},\n\t{game1, \"andy\", 81, date(2, 1), false, nil},\n\t{game1, \"fran\", 33, date(3, 19), false, nil},\n\t{game2, \"pat\", 120, date(4, 1), true, nil},\n\t{game2, \"billie\", 111, date(4, 10), false, nil},\n\t{game2, \"mel\", 190, date(4, 18), true, nil},\n\t{game2, \"fran\", 33, date(3, 20), false, nil},\n}\n\nfunc addHighScores(t *testing.T, coll *docstore.Collection) {\n\tt.Helper()\n\n\talist := coll.Actions()\n\tfor _, doc := range highScores {\n\t\td := *doc\n\t\talist.Put(&d)\n\t}\n\tif err := alist.Do(context.Background()); err != nil {\n\t\tt.Fatalf(\"%+v\", err)\n\t}\n}\n\nfunc testGetQueryKeyField(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\t// Query the key field of a collection that has one.\n\t// (The collection used for testGetQuery uses a key function rather than a key field.)\n\tctx := context.Background()\n\tdocs := []docmap{\n\t\t{KeyField: \"qkf1\", \"a\": \"one\", revField: nil},\n\t\t{KeyField: \"qkf2\", \"a\": \"two\", revField: nil},\n\t\t{KeyField: \"qkf3\", \"a\": \"three\", revField: nil},\n\t}\n\tal := coll.Actions()\n\tfor _, d := range docs {\n\t\tal.Put(d)\n\t}\n\tif err := al.Do(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\titer := coll.Query().Where(KeyField, \"<\", \"qkf3\").Get(ctx)\n\tdefer iter.Stop()\n\tgot := mustCollect(ctx, t, iter)\n\twant := docs[:2]\n\tdiff := cmpDiff(got, want, cmpopts.SortSlices(sortByKeyField))\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n\n\t// Test that queries with selected fields always return the key.\n\titer = coll.Query().Get(ctx, \"a\", docstore.FieldPath(revField))\n\tdefer iter.Stop()\n\tgot = mustCollect(ctx, t, iter)\n\tfor _, d := range docs {\n\t\tcheckHasRevisionField(t, d, revField)\n\t}\n\tdiff = cmpDiff(got, docs, cmpopts.SortSlices(sortByKeyField))\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\nfunc sortByKeyField(d1, d2 docmap) bool { return d1[KeyField].(string) < d2[KeyField].(string) }\n\n// TODO(shantuo): consider add this test to all action tests, like the AltRev\n// ones.\nfunc testActionsWithCompositeID(t *testing.T, _ Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\tctx := context.Background()\n\t// Create cannot generate an ID for the document when using IDFunc.\n\tcheckCode(t, coll.Create(ctx, &HighScore{}), gcerrors.InvalidArgument)\n\tcheckCode(t, coll.Get(ctx, &HighScore{}), gcerrors.InvalidArgument)\n\n\t// Put\n\taddHighScores(t, coll)\n\t// Get\n\tgots := make([]*HighScore, len(highScores))\n\tactions := coll.Actions()\n\tfor i, doc := range highScores {\n\t\tgots[i] = &HighScore{Game: doc.Game, Player: doc.Player}\n\t\tactions.Get(gots[i])\n\t}\n\tif err := actions.Do(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor i, got := range gots {\n\t\tif got.DocstoreRevision == nil {\n\t\t\tt.Errorf(\"%v missing DocstoreRevision\", got)\n\t\t} else {\n\t\t\tgot.DocstoreRevision = nil\n\t\t}\n\t\tif diff := cmp.Diff(got, highScores[i]); diff != \"\" {\n\t\t\tt.Error(diff)\n\t\t}\n\t}\n}\n\nfunc testGetQuery(t *testing.T, _ Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\tctx := context.Background()\n\taddHighScores(t, coll)\n\n\t// Query filters should have the same behavior when doing string and number\n\t// comparison.\n\ttests := []struct {\n\t\tname   string\n\t\tq      *docstore.Query\n\t\tfields []docstore.FieldPath       // fields to get\n\t\twant   func(*HighScore) bool      // filters highScores\n\t\tbefore func(x, y *HighScore) bool // if present, checks result order\n\t}{\n\t\t{\n\t\t\tname: \"All\",\n\t\t\tq:    coll.Query(),\n\t\t\twant: func(*HighScore) bool { return true },\n\t\t},\n\t\t{\n\t\t\tname: \"Game\",\n\t\t\tq:    coll.Query().Where(\"Game\", \"=\", game2),\n\t\t\twant: func(h *HighScore) bool { return h.Game == game2 },\n\t\t},\n\t\t{\n\t\t\tname: \"Score\",\n\t\t\tq:    coll.Query().Where(\"Score\", \">\", 100),\n\t\t\twant: func(h *HighScore) bool { return h.Score > 100 },\n\t\t},\n\t\t{\n\t\t\tname: \"Player\",\n\t\t\tq:    coll.Query().Where(\"Player\", \"=\", \"billie\"),\n\t\t\twant: func(h *HighScore) bool { return h.Player == \"billie\" },\n\t\t},\n\t\t{\n\t\t\tname: \"GamePlayer\",\n\t\t\tq:    coll.Query().Where(\"Player\", \"=\", \"andy\").Where(\"Game\", \"=\", game1),\n\t\t\twant: func(h *HighScore) bool { return h.Player == \"andy\" && h.Game == game1 },\n\t\t},\n\t\t{\n\t\t\tname: \"PlayerScore\",\n\t\t\tq:    coll.Query().Where(\"Player\", \"=\", \"pat\").Where(\"Score\", \"<\", 100),\n\t\t\twant: func(h *HighScore) bool { return h.Player == \"pat\" && h.Score < 100 },\n\t\t},\n\t\t{\n\t\t\tname: \"GameScore\",\n\t\t\tq:    coll.Query().Where(\"Game\", \"=\", game1).Where(\"Score\", \">=\", 50),\n\t\t\twant: func(h *HighScore) bool { return h.Game == game1 && h.Score >= 50 },\n\t\t},\n\t\t{\n\t\t\tname: \"PlayerTime\",\n\t\t\tq:    coll.Query().Where(\"Player\", \"=\", \"mel\").Where(\"Time\", \">\", date(4, 1)),\n\t\t\twant: func(h *HighScore) bool { return h.Player == \"mel\" && h.Time.After(date(4, 1)) },\n\t\t},\n\t\t{\n\t\t\tname: \"ScoreTime\",\n\t\t\tq:    coll.Query().Where(\"Score\", \">=\", 50).Where(\"Time\", \">\", date(4, 1)),\n\t\t\twant: func(h *HighScore) bool { return h.Score >= 50 && h.Time.After(date(4, 1)) },\n\t\t},\n\t\t{\n\t\t\tname: \"PlayerIn\",\n\t\t\tq:    coll.Query().Where(\"Player\", \"in\", []string{\"pat\", \"billie\"}),\n\t\t\twant: func(h *HighScore) bool { return h.Player == \"pat\" || h.Player == \"billie\" },\n\t\t},\n\t\t{\n\t\t\tname: \"PlayerNotIn\",\n\t\t\tq:    coll.Query().Where(\"Player\", \"not-in\", []string{\"pat\", \"billie\"}),\n\t\t\twant: func(h *HighScore) bool { return h.Player != \"pat\" && h.Player != \"billie\" },\n\t\t},\n\t\t{\n\t\t\tname: \"WithGlitch\",\n\t\t\tq:    coll.Query().Where(\"WithGlitch\", \"=\", true),\n\t\t\twant: func(h *HighScore) bool { return h.WithGlitch },\n\t\t},\n\t\t{\n\t\t\tname: \"WithGlitchIn\",\n\t\t\tq:    coll.Query().Where(\"WithGlitch\", \"in\", []bool{true}),\n\t\t\twant: func(h *HighScore) bool { return h.WithGlitch },\n\t\t},\n\t\t{\n\t\t\tname: \"WithGlitchNotIn\",\n\t\t\tq:    coll.Query().Where(\"WithGlitch\", \"not-in\", []bool{true}),\n\t\t\twant: func(h *HighScore) bool { return !h.WithGlitch },\n\t\t},\n\t\t{\n\t\t\tname:   \"AllByPlayerAsc\",\n\t\t\tq:      coll.Query().OrderBy(\"Player\", docstore.Ascending),\n\t\t\twant:   func(h *HighScore) bool { return true },\n\t\t\tbefore: func(h1, h2 *HighScore) bool { return h1.Player < h2.Player },\n\t\t},\n\t\t{\n\t\t\tname:   \"AllByPlayerDesc\",\n\t\t\tq:      coll.Query().OrderBy(\"Player\", docstore.Descending),\n\t\t\twant:   func(h *HighScore) bool { return true },\n\t\t\tbefore: func(h1, h2 *HighScore) bool { return h1.Player > h2.Player },\n\t\t},\n\t\t{\n\t\t\tname: \"GameByPlayerAsc\",\n\t\t\t// We need a filter on Player, and it can't be the empty string (DynamoDB limitation).\n\t\t\t// So pick any string that sorts less than all valid player names.\n\t\t\tq: coll.Query().Where(\"Game\", \"=\", game1).Where(\"Player\", \">\", \".\").\n\t\t\t\tOrderBy(\"Player\", docstore.Ascending),\n\t\t\twant:   func(h *HighScore) bool { return h.Game == game1 },\n\t\t\tbefore: func(h1, h2 *HighScore) bool { return h1.Player < h2.Player },\n\t\t},\n\t\t{\n\t\t\t// Same as above, but descending.\n\t\t\tname: \"GameByPlayerDesc\",\n\t\t\tq: coll.Query().Where(\"Game\", \"=\", game1).Where(\"Player\", \">\", \".\").\n\t\t\t\tOrderBy(\"Player\", docstore.Descending),\n\t\t\twant:   func(h *HighScore) bool { return h.Game == game1 },\n\t\t\tbefore: func(h1, h2 *HighScore) bool { return h1.Player > h2.Player },\n\t\t},\n\t\t// TODO(jba): add more OrderBy tests.\n\t\t{\n\t\t\tname:   \"AllWithKeyFields\",\n\t\t\tq:      coll.Query(),\n\t\t\tfields: []docstore.FieldPath{\"Game\", \"Player\", docstore.FieldPath(docstore.DefaultRevisionField)},\n\t\t\twant: func(h *HighScore) bool {\n\t\t\t\th.Score = 0\n\t\t\t\th.Time = time.Time{}\n\t\t\t\th.WithGlitch = false\n\t\t\t\treturn true\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname:   \"AllWithScore\",\n\t\t\tq:      coll.Query(),\n\t\t\tfields: []docstore.FieldPath{\"Game\", \"Player\", \"Score\", \"WithGlitch\", docstore.FieldPath(docstore.DefaultRevisionField)},\n\t\t\twant: func(h *HighScore) bool {\n\t\t\t\th.Time = time.Time{}\n\t\t\t\treturn true\n\t\t\t},\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tgot, err := collectHighScores(ctx, tc.q.Get(ctx, tc.fields...))\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tfor _, g := range got {\n\t\t\t\tif g.DocstoreRevision == nil {\n\t\t\t\t\tt.Errorf(\"%v missing DocstoreRevision\", g)\n\t\t\t\t} else {\n\t\t\t\t\tg.DocstoreRevision = nil\n\t\t\t\t}\n\t\t\t}\n\t\t\twant := filterHighScores(highScores, tc.want)\n\t\t\t_, err = tc.q.Plan()\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdiff := cmp.Diff(got, want, cmpopts.SortSlices(highScoreLess))\n\t\t\tif diff != \"\" {\n\t\t\t\tt.Fatal(diff)\n\t\t\t}\n\t\t\tif tc.before != nil {\n\t\t\t\t// Verify that the results are sorted according to tc.less.\n\t\t\t\tfor i := 1; i < len(got); i++ {\n\t\t\t\t\tif tc.before(got[i], got[i-1]) {\n\t\t\t\t\t\tt.Errorf(\"%s at %d sorts before previous %s\", got[i], i, got[i-1])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// We can't assume anything about the query plan. Just verify that Plan returns\n\t\t\t// successfully.\n\t\t\tif _, err := tc.q.Plan(KeyField); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t})\n\t}\n\tt.Run(\"OffsetAndLimitCounts\", func(t *testing.T) {\n\t\tnDocs := len(highScores) // 8\n\t\ttests := []struct {\n\t\t\tname     string\n\t\t\toffset   int\n\t\t\tlimit    int\n\t\t\texpected int\n\t\t}{\n\t\t\t{\n\t\t\t\tname:     \"LimitOnly\",\n\t\t\t\toffset:   0,\n\t\t\t\tlimit:    2,\n\t\t\t\texpected: 2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetOnly\",\n\t\t\t\toffset:   2,\n\t\t\t\tlimit:    nDocs,\n\t\t\t\texpected: nDocs - 2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetAndLimit\",\n\t\t\t\toffset:   2,\n\t\t\t\tlimit:    2,\n\t\t\t\texpected: 2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetEqualToFirstPage\",\n\t\t\t\toffset:   nDocs,\n\t\t\t\tlimit:    2,\n\t\t\t\texpected: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetLessThanFirstPage\",\n\t\t\t\toffset:   nDocs - 1,\n\t\t\t\tlimit:    2,\n\t\t\t\texpected: 1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetGreaterThanFirstPage\",\n\t\t\t\toffset:   nDocs + 1,\n\t\t\t\tlimit:    2,\n\t\t\t\texpected: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetIsZero\",\n\t\t\t\toffset:   0,\n\t\t\t\tlimit:    2,\n\t\t\t\texpected: 2,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetAndLimitGreaterThanPageSize\",\n\t\t\t\toffset:   nDocs + 1,\n\t\t\t\tlimit:    nDocs + 1,\n\t\t\t\texpected: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname:     \"OffsetLessThanPageSizeAndLimitGreaterThanPageSize\",\n\t\t\t\toffset:   nDocs - 1,\n\t\t\t\tlimit:    nDocs + 1,\n\t\t\t\texpected: 1,\n\t\t\t},\n\t\t\t// Scenarios covered elsewhere:\n\t\t\t// - /go-cloud/docstore/query_test.go#TestInvalidQuery:\n\t\t\t//    - NegativeLimit\n\t\t\t//    - ZeroLimit\n\t\t\t//    - TwoLimits\n\t\t\t//    - NegativeOffset\n\t\t\t//    - TwoOffsets\n\t\t\t//    - ZeroOffsetAndLimit\n\t\t\t//    - NegativeOffsetAndLimit\n\t\t\t//    - ZeroOffsetAndNegativeLimit\n\t\t}\n\t\tfor _, tt := range tests {\n\t\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t\toffsetLimitQ := coll.Query().Offset(tt.offset).Limit(tt.limit)\n\t\t\t\tgot := mustCollectHighScores(ctx, t, offsetLimitQ.Get(ctx))\n\n\t\t\t\tif len(got) != tt.expected {\n\t\t\t\t\tt.Errorf(\"got %v, wanted %v documents\", len(got), tt.expected)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t})\n\tt.Run(\"EOF\", func(t *testing.T) {\n\t\t// To address this issue https://github.com/google/go-cloud/issues/3405#issue-2193025645\n\t\tq := coll.Query()\n\t\tit := q.Get(context.Background())\n\t\tdefer it.Stop()\n\t\th := &HighScore{}\n\t\tfor {\n\t\t\terr := it.Next(context.Background(), h)\n\t\t\tif err == io.EOF {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"unexpected error: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\t// Call Next again to trigger io.EOF\n\t\terr := it.Next(context.Background(), h)\n\t\tif err != io.EOF {\n\t\t\tt.Errorf(\"expected io.EOF, got %v\", err)\n\t\t}\n\t})\n}\n\nfunc filterHighScores(hs []*HighScore, f func(*HighScore) bool) []*HighScore {\n\tvar res []*HighScore\n\tfor _, h := range hs {\n\t\tc := *h // Copy in case f modifies its argument.\n\t\tif f(&c) {\n\t\t\tres = append(res, &c)\n\t\t}\n\t}\n\treturn res\n}\n\n// ClearCollection delete all documents from this collection after test.\nfunc ClearCollection(fataler interface {\n\tHelper()\n\tFatalf(string, ...any)\n}, coll *docstore.Collection,\n) {\n\tfataler.Helper()\n\n\tctx := context.Background()\n\titer := coll.Query().Get(ctx)\n\tdels := coll.Actions()\n\tfor {\n\t\tdoc := map[string]any{}\n\t\terr := iter.Next(ctx, doc)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tfataler.Fatalf(\"%+v\", err)\n\t\t}\n\t\tdels.Delete(doc)\n\t}\n\tif err := dels.Do(ctx); err != nil {\n\t\tfataler.Fatalf(\"%+v\", err)\n\t}\n}\n\nfunc forEach(ctx context.Context, iter *docstore.DocumentIterator, create func() any, handle func(any) error) error {\n\tfor {\n\t\tdoc := create()\n\t\terr := iter.Next(ctx, doc)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := handle(doc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc mustCollect(ctx context.Context, t *testing.T, iter *docstore.DocumentIterator) []docmap {\n\tt.Helper()\n\n\tvar ms []docmap\n\tnewDocmap := func() any { return docmap{} }\n\tcollect := func(m any) error { ms = append(ms, m.(docmap)); return nil }\n\tif err := forEach(ctx, iter, newDocmap, collect); err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn ms\n}\n\nfunc mustCollectHighScores(ctx context.Context, t *testing.T, iter *docstore.DocumentIterator) []*HighScore {\n\tt.Helper()\n\n\ths, err := collectHighScores(ctx, iter)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn hs\n}\n\nfunc collectHighScores(ctx context.Context, iter *docstore.DocumentIterator) ([]*HighScore, error) {\n\tvar hs []*HighScore\n\tcollect := func(h any) error { hs = append(hs, h.(*HighScore)); return nil }\n\tif err := forEach(ctx, iter, newHighScore, collect); err != nil {\n\t\treturn nil, err\n\t}\n\treturn hs, nil\n}\n\nfunc testMultipleActions(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\tvar docs []docmap\n\tfor i := range 9 {\n\t\tdocs = append(docs, docmap{\n\t\t\tKeyField: fmt.Sprintf(\"testUnorderedActions%d\", i),\n\t\t\t\"s\":      fmt.Sprint(i),\n\t\t\trevField: nil,\n\t\t})\n\t}\n\n\tcompare := func(gots, wants []docmap) {\n\t\tt.Helper()\n\t\tfor i := range gots {\n\t\t\tgot := gots[i]\n\t\t\twant := clone(wants[i])\n\t\t\twant[revField] = got[revField]\n\t\t\tif !cmp.Equal(got, want, cmpopts.IgnoreUnexported(tspb.Timestamp{})) {\n\t\t\t\tt.Errorf(\"index #%d:\\ngot  %v\\nwant %v\", i, got, want)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Put the first three docs.\n\tactions := coll.Actions()\n\tfor i := range 6 {\n\t\tactions.Create(docs[i])\n\t}\n\tmust(actions.Do(ctx))\n\n\t// Replace the first three and put six more.\n\tactions = coll.Actions()\n\tfor i := range 3 {\n\t\tdocs[i][\"s\"] = fmt.Sprintf(\"%d'\", i)\n\t\tactions.Replace(docs[i])\n\t}\n\tfor i := 3; i < 9; i++ {\n\t\tactions.Put(docs[i])\n\t}\n\tmust(actions.Do(ctx))\n\n\t// Delete the first three, get the second three, and put three more.\n\tgdocs := []docmap{\n\t\t{KeyField: docs[3][KeyField]},\n\t\t{KeyField: docs[4][KeyField]},\n\t\t{KeyField: docs[5][KeyField]},\n\t}\n\tactions = coll.Actions()\n\tactions.Update(docs[6], docstore.Mods{\"s\": \"6'\", \"n\": docstore.Increment(1)})\n\tactions.Get(gdocs[0])\n\tactions.Delete(docs[0])\n\tactions.Delete(docs[1])\n\tactions.Update(docs[7], docstore.Mods{\"s\": \"7'\"})\n\tactions.Get(gdocs[1])\n\tactions.Delete(docs[2])\n\tactions.Get(gdocs[2])\n\tactions.Update(docs[8], docstore.Mods{\"n\": docstore.Increment(-1)})\n\tmust(actions.Do(ctx))\n\tcompare(gdocs, docs[3:6])\n\n\t// At this point, the existing documents are 3 - 9.\n\n\t// Get the first four, try to create one that already exists, delete a\n\t// nonexistent doc, and put one. Only the Get of #3, the Delete and the Put\n\t// should succeed.\n\tactions = coll.Actions()\n\tfor _, doc := range []docmap{\n\t\t{KeyField: docs[0][KeyField]},\n\t\t{KeyField: docs[1][KeyField]},\n\t\t{KeyField: docs[2][KeyField]},\n\t\t{KeyField: docs[3][KeyField]},\n\t} {\n\t\tactions.Get(doc)\n\t}\n\tdocs[4][revField] = nil\n\tactions.Create(docs[4]) // create existing doc\n\tactions.Put(docs[5])\n\t// TODO(jba): Understand why the following line is necessary for dynamo but not the others.\n\tdocs[0][revField] = nil\n\tactions.Delete(docs[0]) // delete nonexistent doc\n\terr := actions.Do(ctx)\n\tif err == nil {\n\t\tt.Fatal(\"want error, got nil\")\n\t}\n\talerr, ok := err.(docstore.ActionListError)\n\tif !ok {\n\t\tt.Fatalf(\"got %v (%T), want ActionListError\", alerr, alerr)\n\t}\n\tfor _, e := range alerr {\n\t\tswitch i := e.Index; i {\n\t\tcase 3, 5, 6:\n\t\t\tt.Errorf(\"index %d: got %v, want nil\", i, e.Err)\n\n\t\tcase 4, -1: // -1 for mongodb issue, see https://jira.mongodb.org/browse/GODRIVER-1028\n\t\t\tif ec := gcerrors.Code(e.Err); ec != gcerrors.AlreadyExists &&\n\t\t\t\tec != gcerrors.FailedPrecondition { // TODO(shantuo): distinguish this case for dyanmo\n\t\t\t\tt.Errorf(\"index 4: create an existing document: got %v, want error\", e.Err)\n\t\t\t}\n\n\t\tdefault:\n\t\t\tif gcerrors.Code(e.Err) != gcerrors.NotFound {\n\t\t\t\tt.Errorf(\"index %d: got %v, want NotFound\", i, e.Err)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc testAtomicWrites(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\tvar docs []docmap\n\tfor i := range 9 {\n\t\tdocs = append(docs, docmap{\n\t\t\tKeyField: fmt.Sprintf(\"testAtomicWrites%d\", i),\n\t\t\t\"s\":      fmt.Sprint(i),\n\t\t\trevField: nil,\n\t\t})\n\t}\n\n\tcompare := func(gots, wants []docmap) {\n\t\tt.Helper()\n\t\tfor i := range gots {\n\t\t\tgot := gots[i]\n\t\t\twant := clone(wants[i])\n\t\t\twant[revField] = got[revField]\n\t\t\tif !cmp.Equal(got, want, cmpopts.IgnoreUnexported(tspb.Timestamp{})) {\n\t\t\t\tt.Errorf(\"index #%d:\\ngot  %v\\nwant %v\", i, got, want)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Put the nine docs.\n\tactions := coll.Actions()\n\tfor i := range 9 {\n\t\tactions.Create(docs[i])\n\t}\n\tmust(actions.Do(ctx))\n\n\t// Delete the first three, get the second three, and update last three in transaction.\n\tgdocs := []docmap{\n\t\t{KeyField: docs[3][KeyField]},\n\t\t{KeyField: docs[4][KeyField]},\n\t\t{KeyField: docs[5][KeyField]},\n\t}\n\tactions = coll.Actions()\n\tactions.Get(gdocs[0])\n\tactions.Delete(docs[0])\n\tactions.Delete(docs[1])\n\tactions.Get(gdocs[1])\n\tactions.Delete(docs[2])\n\tactions.Get(gdocs[2])\n\tactions.AtomicWrites()\n\tactions.Update(docs[6], docstore.Mods{\"s\": \"66\"})\n\tactions.Update(docs[7], docstore.Mods{\"s\": \"77\"})\n\tactions.Update(docs[8], docstore.Mods{\"s\": \"88\"})\n\n\tmust(actions.Do(ctx))\n\tcompare(gdocs, docs[3:6])\n\n\t// Get the docs updated as part of atomic writes and verify that the values were updated successfully.\n\tactions = coll.Actions()\n\n\tdoc := docmap{KeyField: docs[6][KeyField]}\n\t_ = coll.Get(ctx, doc)\n\tif diff := cmpDiff(\"66\", doc[\"s\"]); diff != \"\" {\n\t\tt.Fatal(diff)\n\t}\n\n\tdoc = docmap{KeyField: docs[7][KeyField]}\n\t_ = coll.Get(ctx, doc)\n\tif diff := cmpDiff(\"77\", doc[\"s\"]); diff != \"\" {\n\t\tt.Fatal(diff)\n\t}\n\n\tdoc = docmap{KeyField: docs[8][KeyField]}\n\t_ = coll.Get(ctx, doc)\n\tif diff := cmpDiff(\"88\", doc[\"s\"]); diff != \"\" {\n\t\tt.Fatal(diff)\n\t}\n}\n\nfunc testAtomicWritesFail(t *testing.T, coll *docstore.Collection, revField string) {\n\tt.Helper()\n\n\tctx := context.Background()\n\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\tvar docs []docmap\n\tfor i := range 9 {\n\t\tdocs = append(docs, docmap{\n\t\t\tKeyField: fmt.Sprintf(\"testAtomicWrites%d\", i),\n\t\t\t\"s\":      fmt.Sprint(i),\n\t\t\trevField: nil,\n\t\t})\n\t}\n\n\tcompare := func(gots, wants []docmap) {\n\t\tt.Helper()\n\t\tfor i := range gots {\n\t\t\tgot := gots[i]\n\t\t\twant := clone(wants[i])\n\t\t\twant[revField] = got[revField]\n\t\t\tif !cmp.Equal(got, want, cmpopts.IgnoreUnexported(tspb.Timestamp{})) {\n\t\t\t\tt.Errorf(\"index #%d:\\ngot  %v\\nwant %v\", i, got, want)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Put the first eight docs.\n\tactions := coll.Actions()\n\tfor i := range 8 {\n\t\tactions.Create(docs[i])\n\t}\n\tmust(actions.Do(ctx))\n\n\t// Delete the first three, get the second three, and update last three in transaction.\n\tgdocs := []docmap{\n\t\t{KeyField: docs[3][KeyField]},\n\t\t{KeyField: docs[4][KeyField]},\n\t\t{KeyField: docs[5][KeyField]},\n\t}\n\tactions = coll.Actions()\n\tactions.Get(gdocs[0])\n\tactions.Delete(docs[0])\n\tactions.Delete(docs[1])\n\tactions.Get(gdocs[1])\n\tactions.Delete(docs[2])\n\tactions.Get(gdocs[2])\n\tactions.AtomicWrites()\n\tactions.Update(docs[6], docstore.Mods{\"s\": \"66\"})\n\tactions.Update(docs[7], docstore.Mods{\"s\": \"77\"})\n\t// this document doesn't exist so it will fail the transaction\n\tactions.Update(docs[8], docstore.Mods{\"s\": \"88\"})\n\n\terr := actions.Do(ctx)\n\tif err == nil {\n\t\tt.Fatal(\"want transaction to fail\")\n\t}\n\tcompare(gdocs, docs[3:6])\n\n\t// validate that the values still remains the original\n\tdoc := docmap{KeyField: docs[6][KeyField]}\n\t_ = coll.Get(ctx, doc)\n\tif diff := cmpDiff(\"6\", doc[\"s\"]); diff != \"\" {\n\t\tt.Fatal(diff)\n\t}\n\n\tdoc = docmap{KeyField: docs[7][KeyField]}\n\t_ = coll.Get(ctx, doc)\n\tif diff := cmpDiff(\"7\", doc[\"s\"]); diff != \"\" {\n\t\tt.Fatal(diff)\n\t}\n}\n\nfunc testActionsOnStructNoRev(t *testing.T, _ Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\ttype item struct {\n\t\tName string `docstore:\"name\"`\n\t\tI    int\n\t}\n\tdoc1 := item{Name: \"createandreplace\"}\n\tdoc2 := item{Name: \"putandupdate\"}\n\tctx := context.Background()\n\n\tgot1 := item{Name: doc1.Name}\n\tgot2 := map[string]any{\"name\": doc2.Name}\n\tif err := coll.Actions().\n\t\tCreate(&doc1).Put(&doc2).\n\t\tGet(&got1).Get(got2).\n\t\tDo(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcheckNoRevisionField(t, got2, docstore.DefaultRevisionField)\n\n\tgot3 := map[string]any{\"name\": doc1.Name}\n\tgot4 := item{Name: doc2.Name}\n\tif err := coll.Actions().\n\t\tReplace(&doc1).Update(&item{Name: doc2.Name}, docstore.Mods{\"I\": 1}).\n\t\tGet(got3, \"I\").Get(&got4, \"I\").\n\t\tDo(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcheckNoRevisionField(t, got3, docstore.DefaultRevisionField)\n}\n\nfunc testExampleInDoc(t *testing.T, _ Harness, coll *docstore.Collection) {\n\tt.Helper()\n\n\ttype Name struct {\n\t\tFirst, Last string\n\t}\n\ttype Book struct {\n\t\tTitle            string `docstore:\"name\"`\n\t\tAuthor           Name   `docstore:\"author\"`\n\t\tPublicationYears []int  `docstore:\"pub_years,omitempty\"`\n\t\tNumPublications  int    `docstore:\"-\"`\n\t}\n\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\tcheckFieldEqual := func(got, want any, field string) {\n\t\tt.Helper()\n\t\tfvg, err := MustDocument(got).GetField(field)\n\t\tmust(err)\n\t\tfvw, err := MustDocument(want).GetField(field)\n\t\tmust(err)\n\t\tif !cmp.Equal(fvg, fvw) {\n\t\t\tt.Errorf(\"%s: got %v want %v\", field, fvg, fvw)\n\t\t}\n\t}\n\n\tdoc1 := &Book{\n\t\tTitle: \"The Master and Margarita\",\n\t\tAuthor: Name{\n\t\t\tFirst: \"Mikhail\",\n\t\t\tLast:  \"Bulgakov\",\n\t\t},\n\t\tPublicationYears: []int{1967, 1973},\n\t\tNumPublications:  2,\n\t}\n\n\tdoc2 := map[string]any{\n\t\tKeyField: \"The Heart of a Dog\",\n\t\t\"author\": map[string]any{\n\t\t\t\"First\": \"Mikhail\",\n\t\t\t\"Last\":  \"Bulgakov\",\n\t\t},\n\t\t\"pub_years\": []int{1968, 1987},\n\t}\n\n\tctx := context.Background()\n\tmust(coll.Actions().Create(doc1).Put(doc2).Do(ctx))\n\tgot1 := &Book{Title: doc1.Title}\n\tgot2 := &Book{Title: doc2[KeyField].(string)}\n\tmust(coll.Actions().Get(got1).Get(got2).Do(ctx))\n\n\tif got1.NumPublications != 0 {\n\t\tt.Errorf(\"docstore:\\\"-\\\" tagged field isn't ignored\")\n\t}\n\tcheckFieldEqual(got1, doc1, \"author\")\n\tcheckFieldEqual(got2, doc2, \"pub_years\")\n\n\tgots := mustCollect(ctx, t, coll.Query().Where(\"author.Last\", \"=\", \"Bulgakov\").Get(ctx))\n\tif len(gots) != 2 {\n\t\tt.Errorf(\"got %v want all two results\", gots)\n\t}\n\tmust(coll.Actions().Delete(doc1).Delete(doc2).Do(ctx))\n}\n\n// Verify that BeforeDo is invoked, and its as function behaves as expected.\nfunc testBeforeDo(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\twithCollection(t, newHarness, SingleKey, func(t *testing.T, h Harness, coll *docstore.Collection) {\n\t\tt.Helper()\n\n\t\tvar called bool\n\t\tbeforeDo := func(asFunc func(any) bool) error {\n\t\t\tcalled = true\n\t\t\tif asFunc(nil) {\n\t\t\t\treturn errors.New(\"asFunc returned true when called with nil, want false\")\n\t\t\t}\n\t\t\t// At least one of the expected types must return true. Special case: if\n\t\t\t// there are no types, then the as function never returns true, so skip the\n\t\t\t// check.\n\t\t\tif len(h.BeforeDoTypes()) > 0 {\n\t\t\t\tfound := false\n\t\t\t\tfor _, b := range h.BeforeDoTypes() {\n\t\t\t\t\tv := reflect.New(reflect.TypeOf(b)).Interface()\n\t\t\t\t\tif asFunc(v) {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\t\treturn errors.New(\"none of the BeforeDoTypes works with the as function\")\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\tcheck := func(f func(*docstore.ActionList)) {\n\t\t\tt.Helper()\n\t\t\t// First, verify that if a BeforeDo function returns an error, so does ActionList.Do.\n\t\t\t// We depend on that for the rest of the test.\n\t\t\tal := coll.Actions().BeforeDo(func(func(any) bool) error { return errors.New(\"\") })\n\t\t\tf(al)\n\t\t\tif err := al.Do(ctx); err == nil {\n\t\t\t\tt.Error(\"beforeDo returning error: got nil from Do, want error\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcalled = false\n\t\t\tal = coll.Actions().BeforeDo(beforeDo)\n\t\t\tf(al)\n\t\t\tif err := al.Do(ctx); err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !called {\n\t\t\t\tt.Error(\"BeforeDo function never called\")\n\t\t\t}\n\t\t}\n\n\t\tdoc := docmap{KeyField: \"testBeforeDo\"}\n\t\tcheck(func(l *docstore.ActionList) { l.Create(doc) })\n\t\tcheck(func(l *docstore.ActionList) { l.Replace(doc) })\n\t\tcheck(func(l *docstore.ActionList) { l.Put(doc) })\n\t\tcheck(func(l *docstore.ActionList) { l.Update(doc, docstore.Mods{\"a\": 1}) })\n\t\tcheck(func(l *docstore.ActionList) { l.Get(doc) })\n\t\tcheck(func(l *docstore.ActionList) { l.Delete(doc) })\n\t})\n}\n\n// Verify that BeforeQuery is invoked, and its as function behaves as expected.\nfunc testBeforeQuery(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\twithCollection(t, newHarness, SingleKey, func(t *testing.T, h Harness, coll *docstore.Collection) {\n\t\tt.Helper()\n\n\t\tvar called bool\n\t\tbeforeQuery := func(asFunc func(any) bool) error {\n\t\t\tcalled = true\n\t\t\tif asFunc(nil) {\n\t\t\t\treturn errors.New(\"asFunc returned true when called with nil, want false\")\n\t\t\t}\n\t\t\t// At least one of the expected types must return true. Special case: if\n\t\t\t// there are no types, then the as function never returns true, so skip the\n\t\t\t// check.\n\t\t\tif len(h.BeforeQueryTypes()) > 0 {\n\t\t\t\tfound := false\n\t\t\t\tfor _, b := range h.BeforeQueryTypes() {\n\t\t\t\t\tv := reflect.New(reflect.TypeOf(b)).Interface()\n\t\t\t\t\tif asFunc(v) {\n\t\t\t\t\t\tfound = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif !found {\n\t\t\t\t\treturn errors.New(\"none of the BeforeQueryTypes works with the as function\")\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\titer := coll.Query().BeforeQuery(beforeQuery).Get(ctx)\n\t\tif err := iter.Next(ctx, docmap{}); err != io.EOF {\n\t\t\tt.Fatalf(\"got %v, wanted io.EOF\", err)\n\t\t}\n\t\tif !called {\n\t\t\tt.Error(\"BeforeQuery function never called for Get\")\n\t\t}\n\t})\n}\n\nfunc testAs(t *testing.T, coll *docstore.Collection, st AsTest) {\n\tt.Helper()\n\n\t// Verify Collection.As\n\tif err := st.CollectionCheck(coll); err != nil {\n\t\tt.Error(err)\n\t}\n\n\tctx := context.Background()\n\n\t// Query\n\tqs := []*docstore.Query{\n\t\tcoll.Query().Where(\"Game\", \"=\", game3),\n\t\t// Note: don't use filter on Player, the test table has Player as the\n\t\t// partition key of a Global Secondary Index, which doesn't support\n\t\t// ConsistentRead mode, which is what the As test does in its BeforeQuery\n\t\t// function.\n\t\tcoll.Query().Where(\"Score\", \">\", 50),\n\t}\n\tfor _, q := range qs {\n\t\titer := q.Get(ctx)\n\t\tif err := st.QueryCheck(iter); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}\n\n\t// ErrorCheck\n\tdoc := &HighScore{game3, \"steph\", 24, date(4, 25), false, nil}\n\tif err := coll.Create(ctx, doc); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdoc.DocstoreRevision = nil\n\tif err := coll.Create(ctx, doc); err == nil {\n\t\tt.Fatal(\"got nil error from creating an existing item, want an error\")\n\t} else {\n\t\tif alerr, ok := err.(docstore.ActionListError); ok {\n\t\t\tfor _, aerr := range alerr {\n\t\t\t\tif checkerr := st.ErrorCheck(coll, aerr.Err); checkerr != nil {\n\t\t\t\t\tt.Error(checkerr)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if checkerr := st.ErrorCheck(coll, err); checkerr != nil {\n\t\t\tt.Error(checkerr)\n\t\t}\n\t}\n}\n\nfunc clone(m docmap) docmap {\n\tr := docmap{}\n\tmaps.Copy(r, m)\n\treturn r\n}\n\nfunc cmpDiff(a, b any, opts ...cmp.Option) string {\n\t// Firestore revisions can be protos.\n\treturn cmp.Diff(a, b, append([]cmp.Option{cmp.Comparer(proto.Equal)}, opts...)...)\n}\n\nfunc checkCode(t *testing.T, err error, code gcerrors.ErrorCode) {\n\tt.Helper()\n\tif gcerrors.Code(err) != code {\n\t\tt.Errorf(\"got %v, want %s\", err, code)\n\t}\n}\n"
  },
  {
    "path": "docstore/drivertest/util.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage drivertest\n\nimport (\n\t\"math/rand\"\n\t\"sync\"\n\n\t\"github.com/google/uuid\"\n\t\"gocloud.dev/docstore/driver\"\n)\n\n// MakeUniqueStringDeterministicForTesting uses a specified seed value to\n// produce the same sequence of values in driver.UniqueString for testing.\n//\n// Call when running tests that will be replayed.\nfunc MakeUniqueStringDeterministicForTesting(seed int64) {\n\tr := &randReader{r: rand.New(rand.NewSource(seed))}\n\tuuid.SetRand(r)\n}\n\ntype randReader struct {\n\tmu sync.Mutex\n\tr  *rand.Rand\n}\n\nfunc (r *randReader) Read(buf []byte) (int, error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\treturn r.r.Read(buf)\n}\n\n// MustDocument is like driver.NewDocument, but panics on error.\nfunc MustDocument(doc any) driver.Document {\n\tdd, err := driver.NewDocument(doc)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn dd\n}\n"
  },
  {
    "path": "docstore/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"time\"\n\n\tfirestore \"cloud.google.com/go/firestore/apiv1\"\n\t\"github.com/aws/smithy-go\"\n\t\"gocloud.dev/docstore\"\n\t_ \"gocloud.dev/docstore/awsdynamodb/v2\"\n\t_ \"gocloud.dev/docstore/gcpfirestore\"\n\t\"gocloud.dev/docstore/memdocstore\"\n\t\"gocloud.dev/gcerrors\"\n)\n\ntype Player struct {\n\tName             string\n\tScore            int\n\tDocstoreRevision any\n}\n\nfunc ExampleCollection_Actions_bulkWrite() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar coll *docstore.Collection\n\n\t// Build an ActionList to create several new players, then execute it.\n\t// The actions may happen in any order.\n\tnewPlayers := []string{\"Pat\", \"Mel\", \"Fran\"}\n\tactionList := coll.Actions()\n\tfor _, p := range newPlayers {\n\t\tactionList.Create(&Player{Name: p, Score: 0})\n\t}\n\tif err := actionList.Do(ctx); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc ExampleCollection_Actions_getAfterWrite() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar coll *docstore.Collection\n\n\t// Add a document to the collection, then retrieve it.\n\t// Because both the Put and the Get refer to the same document,\n\t// they happen in order.\n\tgot := Player{Name: \"Pat\"}\n\terr := coll.Actions().Put(&Player{Name: \"Pat\", Score: 88}).Get(&got).Do(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(got.Name, got.Score)\n}\n\nfunc ExampleCollection_Update() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar coll *docstore.Collection\n\n\t// Create a player.\n\tpat := &Player{Name: \"Pat\", Score: 0}\n\tif err := coll.Create(ctx, pat); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Set the score to a new value.\n\tpat2 := &Player{Name: \"Pat\"}\n\terr := coll.Actions().Update(pat, docstore.Mods{\"Score\": 15}).Get(pat2).Do(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Increment the score.\n\terr = coll.Actions().Update(pat, docstore.Mods{\"Score\": docstore.Increment(5)}).Get(pat2).Do(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc ExampleOpenCollection() {\n\tctx := context.Background()\n\t// Open a collection using the gcpfirestore package.\n\t// You will need to blank-import the package for this to work:\n\t//   import _ \"gocloud.dev/docstore/gcpfirestore\"\n\tcoll, err := docstore.OpenCollection(ctx, \"firestore://my-collection\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\n\t_ = coll // Use the collection.\n}\n\nfunc ExampleCollection_As() {\n\t// This example is specific to the gcpfirestore implementation; it demonstrates\n\t// access to the underlying *cloud.google.com/go/firestore/apiv1.Client.\n\n\t// You will need to blank-import the package for this to work:\n\t//   import _ \"gocloud.dev/docstore/gcpfirestore\"\n\n\t// The types exposed for As by gcpfirestore are documented in\n\t// https://godoc.org/gocloud.dev/docstore/gcpfirestore#hdr-As\n\n\t// This URL will open the collection using default credentials.\n\tctx := context.Background()\n\tcoll, err := docstore.OpenCollection(ctx,\n\t\t\"firestore://projects/myproject/databases/(default)/documents/mycollection?name_field=myID\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\n\t// Try to access and use the underlying mongo.Collection.\n\tvar fsClient *firestore.Client\n\tif coll.As(&fsClient) {\n\t\t_ = fsClient // TODO: Use the client.\n\t} else {\n\t\tlog.Println(\"Unable to access firestore.Client through Collection.As\")\n\t}\n}\n\nfunc ExampleCollection_ErrorAs() {\n\t// This example is specific to the awsdynamodb implementation.\n\t// You will need to blank-import the package for this to work:\n\t//   import _ \"gocloud.dev/docstore/awsdynamodb/v2\"\n\n\t// The types exposed for As by mongodocstore are documented in\n\t// https://godoc.org/gocloud.dev/docstore/mongodocstore#hdr-As\n\n\t// This URL will open the collection using default credentials.\n\tctx := context.Background()\n\tcoll, err := docstore.OpenCollection(ctx, \"dynamodb://mytable?partition_key=partkey\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\n\tdoc := map[string]any{\"_id\": \"a\"}\n\tif err := coll.Create(ctx, doc); err != nil {\n\t\tvar aerr smithy.APIError\n\t\tif coll.ErrorAs(err, &aerr) {\n\t\t\tfmt.Println(\"got\", aerr)\n\t\t} else {\n\t\t\tfmt.Println(\"could not convert error\")\n\t\t}\n\t}\n}\n\nfunc ExampleQuery_Get() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar coll *docstore.Collection\n\n\t// Ask for all players with scores at least 20.\n\titer := coll.Query().Where(\"Score\", \">=\", 20).OrderBy(\"Score\", docstore.Descending).Get(ctx)\n\tdefer iter.Stop()\n\n\t// Query.Get returns an iterator. Call Next on it until io.EOF.\n\tfor {\n\t\tvar p Player\n\t\terr := iter.Next(ctx, &p)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\tlog.Fatal(err)\n\t\t} else {\n\t\t\tfmt.Printf(\"%s: %d\\n\", p.Name, p.Score)\n\t\t}\n\t}\n}\n\nfunc ExampleQuery_Get_full() {\n\tctx := context.Background()\n\tcoll, err := memdocstore.OpenCollection(\"Name\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\n\t// Add some documents to the collection.\n\terr = coll.Actions().\n\t\tPut(&Player{Name: \"Pat\", Score: 10}).\n\t\tPut(&Player{Name: \"Mel\", Score: 20}).\n\t\tPut(&Player{Name: \"Fran\", Score: 30}).\n\t\tDo(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Ask for all players with scores at least 20.\n\titer := coll.Query().Where(\"Score\", \">=\", 20).OrderBy(\"Score\", docstore.Descending).Get(ctx)\n\tdefer iter.Stop()\n\n\t// Query.Get returns an iterator. Call Next on it until io.EOF.\n\tfor {\n\t\tvar p Player\n\t\terr := iter.Next(ctx, &p)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t} else if err != nil {\n\t\t\tlog.Fatal(err)\n\t\t} else {\n\t\t\tfmt.Printf(\"%s: %d\\n\", p.Name, p.Score)\n\t\t}\n\t}\n\n\t// Output:\n\t// Fran: 30\n\t// Mel: 20\n}\n\nfunc Example_optimisticLocking() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tcoll, err := memdocstore.OpenCollection(\"Name\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\n\t// Create a player.\n\tpat := &Player{Name: \"Pat\", Score: 7}\n\tif err := coll.Create(ctx, pat); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(pat) // memdocstore revisions are deterministic, so we can check the output.\n\n\t// Double a player's score. We cannot use Update to multiply, so we use optimistic\n\t// locking instead.\n\n\t// We may have to retry a few times; put a time limit on that.\n\tctx, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tfor {\n\t\t// Get the document.\n\t\tplayer := &Player{Name: \"Pat\"}\n\t\tif err := coll.Get(ctx, player); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\t// player.DocstoreRevision is set to the document's revision.\n\n\t\t// Modify the document locally.\n\t\tplayer.Score *= 2\n\n\t\t// Replace the document. player.DocstoreRevision will be checked against\n\t\t// the stored document's revision.\n\t\terr := coll.Replace(ctx, player)\n\t\tif err != nil {\n\t\t\tcode := gcerrors.Code(err)\n\t\t\t// On FailedPrecondition or NotFound, try again.\n\t\t\tif code == gcerrors.FailedPrecondition || code == gcerrors.NotFound {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\tfmt.Println(player)\n\t\tbreak\n\t}\n\n\t// Output:\n\t// &{Pat 7 1}\n\t// &{Pat 14 2}\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/codec.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\n// Encoding and decoding between supported docstore types and Firestore protos.\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"path\"\n\t\"reflect\"\n\t\"time\"\n\n\tpb \"cloud.google.com/go/firestore/apiv1/firestorepb\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"google.golang.org/genproto/googleapis/type/latlng\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\n// encodeDoc encodes a driver.Document into Firestore's representation.\n// A Firestore document (*pb.Document) is just a Go map from strings to *pb.Values.\nfunc encodeDoc(doc driver.Document, nameField string) (*pb.Document, error) {\n\tvar e encoder\n\tif err := doc.Encode(&e); err != nil {\n\t\treturn nil, err\n\t}\n\tfields := e.pv.GetMapValue().Fields\n\t// Do not put the name field in the document itself.\n\tif nameField != \"\" {\n\t\tdelete(fields, nameField)\n\t}\n\treturn &pb.Document{Fields: fields}, nil\n}\n\n// encodeValue encodes a Go value as a Firestore Value.\n// The Firestore proto definition for Value is a oneof of various types,\n// including basic types like string as well as lists and maps.\nfunc encodeValue(x any) (*pb.Value, error) {\n\tvar e encoder\n\tif err := driver.Encode(reflect.ValueOf(x), &e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.pv, nil\n}\n\n// encoder implements driver.Encoder. Its job is to encode a single Firestore value.\ntype encoder struct {\n\tpv *pb.Value\n}\n\nvar nullValue = &pb.Value{ValueType: &pb.Value_NullValue{}}\n\nfunc (e *encoder) EncodeNil()            { e.pv = nullValue }\nfunc (e *encoder) EncodeBool(x bool)     { e.pv = &pb.Value{ValueType: &pb.Value_BooleanValue{x}} }\nfunc (e *encoder) EncodeInt(x int64)     { e.pv = &pb.Value{ValueType: &pb.Value_IntegerValue{x}} }\nfunc (e *encoder) EncodeUint(x uint64)   { e.pv = &pb.Value{ValueType: &pb.Value_IntegerValue{int64(x)}} }\nfunc (e *encoder) EncodeBytes(x []byte)  { e.pv = &pb.Value{ValueType: &pb.Value_BytesValue{x}} }\nfunc (e *encoder) EncodeFloat(x float64) { e.pv = floatval(x) }\nfunc (e *encoder) EncodeString(x string) { e.pv = &pb.Value{ValueType: &pb.Value_StringValue{x}} }\n\nfunc (e *encoder) ListIndex(int) { panic(\"impossible\") }\nfunc (e *encoder) MapKey(string) { panic(\"impossible\") }\n\nfunc (e *encoder) EncodeList(n int) driver.Encoder {\n\ts := make([]*pb.Value, n)\n\te.pv = &pb.Value{ValueType: &pb.Value_ArrayValue{&pb.ArrayValue{Values: s}}}\n\treturn &listEncoder{s: s}\n}\n\nfunc (e *encoder) EncodeMap(n int) driver.Encoder {\n\tm := make(map[string]*pb.Value, n)\n\te.pv = &pb.Value{ValueType: &pb.Value_MapValue{&pb.MapValue{Fields: m}}}\n\treturn &mapEncoder{m: m}\n}\n\nvar (\n\ttypeOfGoTime         = reflect.TypeFor[time.Time]()\n\ttypeOfProtoTimestamp = reflect.TypeFor[*tspb.Timestamp]()\n\ttypeOfLatLng         = reflect.TypeFor[*latlng.LatLng]()\n)\n\n// Encode time.Time, latlng.LatLng, and ts.Timestamp specially, because the Go Firestore\n// client does.\nfunc (e *encoder) EncodeSpecial(v reflect.Value) (bool, error) {\n\tswitch v.Type() {\n\tcase typeOfGoTime:\n\t\tts := tspb.New(v.Interface().(time.Time))\n\t\te.pv = &pb.Value{ValueType: &pb.Value_TimestampValue{ts}}\n\t\treturn true, nil\n\tcase typeOfProtoTimestamp:\n\t\tif v.IsNil() {\n\t\t\te.pv = nullValue\n\t\t} else {\n\t\t\te.pv = &pb.Value{ValueType: &pb.Value_TimestampValue{v.Interface().(*tspb.Timestamp)}}\n\t\t}\n\t\treturn true, nil\n\tcase typeOfLatLng:\n\t\tif v.IsNil() {\n\t\t\te.pv = nullValue\n\t\t} else {\n\t\t\te.pv = &pb.Value{ValueType: &pb.Value_GeoPointValue{v.Interface().(*latlng.LatLng)}}\n\t\t}\n\t\treturn true, nil\n\tdefault:\n\t\treturn false, nil\n\t}\n}\n\ntype listEncoder struct {\n\ts []*pb.Value\n\tencoder\n}\n\nfunc (e *listEncoder) ListIndex(i int) { e.s[i] = e.pv }\n\ntype mapEncoder struct {\n\tm map[string]*pb.Value\n\tencoder\n}\n\nfunc (e *mapEncoder) MapKey(k string) { e.m[k] = e.pv }\n\nfunc floatval(x float64) *pb.Value { return &pb.Value{ValueType: &pb.Value_DoubleValue{x}} }\n\n////////////////////////////////////////////////////////////////\n\n// decodeDoc decodes a Firestore document into a driver.Document.\nfunc decodeDoc(pdoc *pb.Document, ddoc driver.Document, nameField, revField string) error {\n\tif pdoc.Fields == nil {\n\t\tpdoc.Fields = map[string]*pb.Value{}\n\t}\n\tif nameField != \"\" {\n\t\tpdoc.Fields[nameField] = &pb.Value{ValueType: &pb.Value_StringValue{StringValue: path.Base(pdoc.Name)}}\n\t}\n\tmv := &pb.Value{ValueType: &pb.Value_MapValue{&pb.MapValue{Fields: pdoc.Fields}}}\n\tif err := ddoc.Decode(decoder{mv}); err != nil {\n\t\treturn err\n\t}\n\t// Set the revision field in the document, if it exists, to the update time.\n\tif ddoc.HasField(revField) && pdoc.UpdateTime != nil {\n\t\treturn ddoc.SetField(revField, pdoc.UpdateTime)\n\t}\n\treturn nil\n}\n\ntype decoder struct {\n\tpv *pb.Value\n}\n\nfunc (d decoder) String() string { // for debugging\n\treturn fmt.Sprint(d.pv)\n}\n\nfunc (d decoder) AsNull() bool {\n\t_, ok := d.pv.ValueType.(*pb.Value_NullValue)\n\treturn ok\n}\n\nfunc (d decoder) AsBool() (bool, bool) {\n\tif b, ok := d.pv.ValueType.(*pb.Value_BooleanValue); ok {\n\t\treturn b.BooleanValue, true\n\t}\n\treturn false, false\n}\n\nfunc (d decoder) AsString() (string, bool) {\n\tif s, ok := d.pv.ValueType.(*pb.Value_StringValue); ok {\n\t\treturn s.StringValue, true\n\t}\n\treturn \"\", false\n}\n\nfunc (d decoder) AsInt() (int64, bool) {\n\tif i, ok := d.pv.ValueType.(*pb.Value_IntegerValue); ok {\n\t\treturn i.IntegerValue, true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) AsUint() (uint64, bool) {\n\tif i, ok := d.pv.ValueType.(*pb.Value_IntegerValue); ok {\n\t\treturn uint64(i.IntegerValue), true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) AsFloat() (float64, bool) {\n\tif f, ok := d.pv.ValueType.(*pb.Value_DoubleValue); ok {\n\t\treturn f.DoubleValue, true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) AsBytes() ([]byte, bool) {\n\tif bs, ok := d.pv.ValueType.(*pb.Value_BytesValue); ok {\n\t\treturn bs.BytesValue, true\n\t}\n\treturn nil, false\n}\n\n// AsInterface decodes the value in d into the most appropriate Go type.\nfunc (d decoder) AsInterface() (any, error) {\n\treturn decodeValue(d.pv)\n}\n\nfunc decodeValue(v *pb.Value) (any, error) {\n\tswitch v := v.ValueType.(type) {\n\tcase *pb.Value_NullValue:\n\t\treturn nil, nil\n\tcase *pb.Value_BooleanValue:\n\t\treturn v.BooleanValue, nil\n\tcase *pb.Value_IntegerValue:\n\t\treturn v.IntegerValue, nil\n\tcase *pb.Value_DoubleValue:\n\t\treturn v.DoubleValue, nil\n\tcase *pb.Value_StringValue:\n\t\treturn v.StringValue, nil\n\tcase *pb.Value_BytesValue:\n\t\treturn v.BytesValue, nil\n\tcase *pb.Value_TimestampValue:\n\t\t// Return TimestampValue as time.Time.\n\t\treturn v.TimestampValue.AsTime(), nil\n\tcase *pb.Value_ReferenceValue:\n\t\t// TODO(jba): support references\n\t\treturn nil, errors.New(\"references are not currently supported\")\n\tcase *pb.Value_GeoPointValue:\n\t\t// Return GeoPointValue as *latlng.LatLng.\n\t\treturn v.GeoPointValue, nil\n\tcase *pb.Value_ArrayValue:\n\t\ts := make([]any, len(v.ArrayValue.Values))\n\t\tfor i, pv := range v.ArrayValue.Values {\n\t\t\te, err := decodeValue(pv)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\ts[i] = e\n\t\t}\n\t\treturn s, nil\n\tcase *pb.Value_MapValue:\n\t\tm := make(map[string]any, len(v.MapValue.Fields))\n\t\tfor k, pv := range v.MapValue.Fields {\n\t\t\te, err := decodeValue(pv)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tm[k] = e\n\t\t}\n\t\treturn m, nil\n\t}\n\treturn nil, fmt.Errorf(\"unknown firestore value type %T\", v)\n}\n\nfunc (d decoder) ListLen() (int, bool) {\n\ta := d.pv.GetArrayValue()\n\tif a == nil {\n\t\treturn 0, false\n\t}\n\treturn len(a.Values), true\n}\n\nfunc (d decoder) DecodeList(f func(int, driver.Decoder) bool) {\n\tfor i, e := range d.pv.GetArrayValue().Values {\n\t\tif !f(i, decoder{e}) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (d decoder) MapLen() (int, bool) {\n\tm := d.pv.GetMapValue()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\treturn len(m.Fields), true\n}\n\nfunc (d decoder) DecodeMap(f func(string, driver.Decoder, bool) bool) {\n\tfor k, v := range d.pv.GetMapValue().Fields {\n\t\tif !f(k, decoder{v}, true) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (d decoder) AsSpecial(v reflect.Value) (bool, any, error) {\n\tswitch v.Type() {\n\tcase typeOfGoTime:\n\t\tif ts, ok := d.pv.ValueType.(*pb.Value_TimestampValue); ok {\n\t\t\tif ts.TimestampValue == nil {\n\t\t\t\treturn true, time.Time{}, nil\n\t\t\t}\n\t\t\treturn true, ts.TimestampValue.AsTime(), nil\n\t\t}\n\t\treturn true, nil, fmt.Errorf(\"expected TimestampValue for time.Time, got %+v\", d.pv.ValueType)\n\tcase typeOfProtoTimestamp:\n\t\tif ts, ok := d.pv.ValueType.(*pb.Value_TimestampValue); ok {\n\t\t\treturn true, ts.TimestampValue, nil\n\t\t}\n\t\treturn true, nil, fmt.Errorf(\"expected TimestampValue for *ts.Timestamp, got %+v\", d.pv.ValueType)\n\n\tcase typeOfLatLng:\n\t\tif ll, ok := d.pv.ValueType.(*pb.Value_GeoPointValue); ok {\n\t\t\treturn true, ll.GeoPointValue, nil\n\t\t}\n\t\treturn true, nil, fmt.Errorf(\"expected GeoPointValue for *latlng.LatLng, got %+v\", d.pv.ValueType)\n\n\tdefault:\n\t\treturn false, nil, nil\n\t}\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/codec_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"google.golang.org/genproto/googleapis/type/latlng\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\n// Test that special types round-trip.\n// These aren't tested in the docstore-wide conformance tests.\nfunc TestCodecSpecial(t *testing.T) {\n\tconst nameField = \"Name\"\n\n\ttype S struct {\n\t\tName    string\n\t\tT       time.Time\n\t\tTS, TSn *tspb.Timestamp\n\t\tLL, LLn *latlng.LatLng\n\t}\n\ttm := time.Date(2019, 3, 14, 0, 0, 0, 0, time.UTC)\n\tts := tspb.New(tm)\n\tin := &S{\n\t\tName: \"name\",\n\t\tT:    tm,\n\t\tTS:   ts,\n\t\tTSn:  nil,\n\t\tLL:   &latlng.LatLng{Latitude: 3, Longitude: 4},\n\t\tLLn:  nil,\n\t}\n\tvar got S\n\n\tenc, err := encodeDoc(drivertest.MustDocument(in), nameField)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tenc.Name = \"collPath/\" + in.Name\n\tgotdoc := drivertest.MustDocument(&got)\n\t// Test type-driven decoding (where the types of the struct fields are available).\n\tif err := decodeDoc(enc, gotdoc, nameField, docstore.DefaultRevisionField); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif diff := cmp.Diff(&got, in, cmpopts.IgnoreUnexported(tspb.Timestamp{}, latlng.LatLng{})); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n\n\t// Test type-blind decoding.\n\tgotmap := map[string]any{}\n\tgotmapdoc := drivertest.MustDocument(gotmap)\n\tif err := decodeDoc(enc, gotmapdoc, nameField, docstore.DefaultRevisionField); err != nil {\n\t\tt.Fatal(err)\n\t}\n\twantmap := map[string]any{\n\t\t\"Name\": \"name\",\n\t\t\"T\":    in.T,\n\t\t\"TS\":   in.T, // timestamps always decode as time.Time\n\t\t\"TSn\":  nil,\n\t\t\"LL\":   in.LL,\n\t\t\"LLn\":  nil,\n\t}\n\tif diff := cmp.Diff(gotmap, wantmap, cmpopts.IgnoreUnexported(latlng.LatLng{})); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/create_indexes.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Creates the Firestore indexes needed for tests.\n# Takes one argument: the GCP project ID.\n#\n# If an index already exists, this script will fail. To re-create the index, delete\n# it from the UI at https://firebase.corp.google.com/project/$project_id/database/firestore/indexes.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\n# Except we want to keep going if there is a failure, and x is too verbose.\nset -uo pipefail\n\nproject_id=\"${1:-}\"\nif [[ -z \"$project_id\" ]]; then\n  echo \"usage: create_indexes.sh PROJECT\" 1>&2\n  exit 64\nfi\n\necho \"Creating indexes for $project_id\"\necho \"UI at https://firebase.corp.google.com/project/$project_id/database/firestore/indexes\"\n\ncollection=docstore-test-2\n\nfunction create_index() {\n   gcloud --project \"$project_id\" beta firestore indexes composite create --collection-group \"$collection\" \\\n    --field-config field-path=$1,order=$2 --field-config field-path=$3,order=$4\n}\n\nset -x\n\ncreate_index Player ascending Score ascending\ncreate_index Game   ascending Score ascending\ncreate_index Player ascending Time  ascending\ncreate_index Game   ascending Player ascending\ncreate_index Game   ascending Player descending\n"
  },
  {
    "path": "docstore/gcpfirestore/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/gcpfirestore\"\n\t\"gocloud.dev/gcp\"\n)\n\nfunc ExampleOpenCollection() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tclient, _, err := gcpfirestore.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tresourceID := gcpfirestore.CollectionResourceID(\"my-project\", \"my-collection\")\n\tcoll, err := gcpfirestore.OpenCollection(client, resourceID, \"userID\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n\nfunc ExampleOpenCollectionWithNameFunc() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\ttype HighScore struct {\n\t\tGame   string\n\t\tPlayer string\n\t}\n\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tclient, _, err := gcpfirestore.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// The name of a document is constructed from the Game and Player fields.\n\tnameFromDocument := func(doc docstore.Document) string {\n\t\ths := doc.(*HighScore)\n\t\treturn hs.Game + \"|\" + hs.Player\n\t}\n\n\tresourceID := gcpfirestore.CollectionResourceID(\"my-project\", \"my-collection\")\n\tcoll, err := gcpfirestore.OpenCollectionWithNameFunc(client, resourceID, nameFromDocument, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n\nfunc Example_openCollectionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/docstore/gcpfirestore\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// docstore.OpenCollection creates a *docstore.Collection from a URL.\n\tconst url = \"firestore://projects/my-project/databases/(default)/documents/my-collection?name_field=userID\"\n\tcoll, err := docstore.OpenCollection(ctx, url)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/fs.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcpfirestore provides a docstore implementation backed by Google Cloud\n// Firestore.\n// Use OpenCollection to construct a *docstore.Collection.\n//\n// Docstore types not supported by the Go firestore client, cloud.google.com/go/firestore:\n//   - unsigned integers: encoded is int64s\n//   - arrays: encoded as Firestore array values\n//\n// Firestore types not supported by Docstore:\n//   - Document reference (a pointer to another Firestore document)\n//\n// # URLs\n//\n// For docstore.OpenCollection, gcpfirestore registers for the scheme\n// \"firestore\".\n// The default URL opener will create a connection using default credentials\n// from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// gcpfirestore exposes the following types for as functions.\n// The pb package is google.golang.org/genproto/googleapis/firestore/v1.\n// The firestore  package is cloud.google.com/go/firestore/apiv1.\n//   - Collection.As: *firestore.Client\n//   - ActionList.BeforeDo: *pb.BatchGetDocumentsRequest or *pb.CommitRequest.\n//   - Query.BeforeQuery: *pb.RunQueryRequest\n//   - DocumentIterator: firestore.Firestore_RunQueryClient\n//   - Error: *google.golang.org/grpc/status.Status\n//\n// # Queries\n//\n// Firestore allows only one field in a query to be compared with an inequality\n// operator (one other than \"=\"). This driver selects the first field in a Where\n// clause with an inequality to pass to Firestore and handles the rest locally. For\n// example, if the query specifies the three clauses A > 1, B > 2 and A < 3, then\n// A > 1 and A < 3 will be sent to Firestore, and the results will be filtered by\n// B > 2 in this driver.\n//\n// Firestore requires a composite index if a query contains both an equality and an\n// inequality comparison. This driver returns an error if the necessary index does\n// not exist. You must create the index manually. See\n// https://cloud.google.com/firestore/docs/query-data/indexing for details.\n//\n// See https://cloud.google.com/firestore/docs/query-data/queries for more information on Firestore queries.\npackage gcpfirestore // import \"gocloud.dev/docstore/gcpfirestore\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\n\tvkit \"cloud.google.com/go/firestore/apiv1\"\n\tpb \"cloud.google.com/go/firestore/apiv1/firestorepb\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\t\"google.golang.org/grpc/metadata\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/protobuf/proto\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\n// Dial returns a client to use with Firestore and a clean-up function to close\n// the client after used.\n// If the 'FIRESTORE_EMULATOR_HOST' environment variable is set the client connects\n// to the GCP firestore emulator by overriding the default endpoint.\nfunc Dial(ctx context.Context, ts gcp.TokenSource) (*vkit.Client, func(), error) {\n\topts := []option.ClientOption{\n\t\tuseragent.ClientOption(\"docstore\"),\n\t}\n\tif host := os.Getenv(\"FIRESTORE_EMULATOR_HOST\"); host != \"\" {\n\t\tconn, err := grpc.DialContext(ctx, host,\n\t\t\tgrpc.WithTransportCredentials(insecure.NewCredentials()))\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\topts = append(opts,\n\t\t\toption.WithEndpoint(host),\n\t\t\toption.WithGRPCConn(conn),\n\t\t)\n\t} else {\n\t\topts = append(opts, option.WithTokenSource(ts))\n\t}\n\tc, err := vkit.NewClient(ctx, opts...)\n\treturn c, func() { c.Close() }, err\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\ntype collection struct {\n\tnameField string\n\tnameFunc  func(docstore.Document) string\n\tclient    *vkit.Client\n\tdbPath    string // e.g. \"projects/P/databases/(default)\"\n\tcollPath  string // e.g. \"projects/P/databases/(default)/documents/States/Wisconsin/cities\"\n\topts      *Options\n}\n\n// Options contains optional arguments to the OpenCollection functions.\ntype Options struct {\n\t// If true, allow queries that require client-side evaluation of filters (Where clauses)\n\t// to run.\n\tAllowLocalFilters bool\n\t// The name of the field holding the document revision.\n\t// Defaults to docstore.DefaultRevisionField.\n\tRevisionField string\n\n\t// The maximum number of RPCs that can be in progress for a single call to\n\t// ActionList.Do.\n\t// If less than 1, there is no limit.\n\tMaxOutstandingActionRPCs int\n}\n\n// CollectionResourceID constructs a resource ID for a collection from the project ID and the collection path.\n// See the OpenCollection example for use.\nfunc CollectionResourceID(projectID, collPath string) string {\n\treturn fmt.Sprintf(\"projects/%s/databases/(default)/documents/%s\", projectID, collPath)\n}\n\n// CollectResoureceIDWithDatabase constructs a resource ID for a collection from the project ID, database ID, and the collection path.\n// See the OpenCollection example for use.\nfunc CollectionResourceIDWithDatabase(projectID, databaseID, collPath string) string {\n\treturn fmt.Sprintf(\"projects/%s/databases/%s/documents/%s\", projectID, databaseID, collPath)\n}\n\n// OpenCollection creates a *docstore.Collection representing a Firestore collection.\n//\n// collResourceID must be of the form \"project/<projectID>/databases/(default)/documents/<collPath>\".\n// <collPath> may be a top-level collection, like \"States\", or it may be a path to a nested\n// collection, like \"States/Wisconsin/Cities\".\n// See https://cloud.google.com/firestore/docs/reference/rest/ for more detail.\n//\n// gcpfirestore requires that a single field, nameField, be designated the primary\n// key. Its values must be strings, and must be unique over all documents in the\n// collection. The primary key must be provided to retrieve a document.\nfunc OpenCollection(client *vkit.Client, collResourceID, nameField string, opts *Options) (*docstore.Collection, error) {\n\tc, err := newCollection(client, collResourceID, nameField, nil, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(c), nil\n}\n\n// OpenCollectionWithNameFunc creates a *docstore.Collection representing a Firestore collection.\n//\n// collResourceID must be of the form \"project/<projectID>/databases/(default)/documents/<collPath>\".\n// <collPath> may be a top-level collection, like \"States\", or it may be a path to a nested\n// collection, like \"States/Wisconsin/Cities\".\n//\n// The nameFunc argument is function that accepts a document and returns the value to\n// be used for the document's primary key. It should return the empty string if the\n// document is missing the information to construct a name. This will cause all\n// actions, even Create, to fail.\n//\n// Providing a function to construct the primary key is useful in two situations: if\n// your desired primary key field is not a string, or if there is more than one field\n// you want to use as a primary key.\n//\n// For the collection to be usable with Query.Delete and Query.Update, nameFunc\n// must work with both map and struct types representing the same underlying\n// data structure. See gocloud.dev/docstore/drivertest.HighScoreKey for an example.\nfunc OpenCollectionWithNameFunc(client *vkit.Client, collResourceID string, nameFunc func(docstore.Document) string, opts *Options) (*docstore.Collection, error) {\n\tc, err := newCollection(client, collResourceID, \"\", nameFunc, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(c), nil\n}\n\nvar resourceIDRE = regexp.MustCompile(`^(projects/[^/]+/databases/[^/]+)/documents/.+`)\n\nfunc newCollection(client *vkit.Client, collResourceID, nameField string, nameFunc func(docstore.Document) string, opts *Options) (*collection, error) {\n\tif nameField == \"\" && nameFunc == nil {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"one of nameField or nameFunc must be provided\")\n\t}\n\tmatches := resourceIDRE.FindStringSubmatch(collResourceID)\n\tif matches == nil {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"bad collection resource ID %q; must match %v\",\n\t\t\tcollResourceID, resourceIDRE)\n\t}\n\tdbPath := matches[1]\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif opts.RevisionField == \"\" {\n\t\topts.RevisionField = docstore.DefaultRevisionField\n\t}\n\treturn &collection{\n\t\tclient:    client,\n\t\tnameField: nameField,\n\t\tnameFunc:  nameFunc,\n\t\tdbPath:    dbPath,\n\t\tcollPath:  collResourceID,\n\t\topts:      opts,\n\t}, nil\n}\n\n// Key returns the document key, if present. This is either the value of the field\n// called c.nameField, or the result of calling c.nameFunc.\nfunc (c *collection) Key(doc driver.Document) (any, error) {\n\tif c.nameField != \"\" {\n\t\tname, err := doc.GetField(c.nameField)\n\t\tvn := reflect.ValueOf(name)\n\t\tif err != nil || name == nil || driver.IsEmptyValue(vn) {\n\t\t\t// missing field is not an error\n\t\t\treturn nil, nil\n\t\t}\n\t\t// Check that the reflect kind is String so we can support any type whose underlying type\n\t\t// is string. E.g. \"type DocName string\".\n\t\tif vn.Kind() != reflect.String {\n\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"key field %q with value %v is not a string\",\n\t\t\t\tc.nameField, name)\n\t\t}\n\t\tsname := vn.String()\n\t\tif sname == \"\" { // empty string is the same as missing\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn sname, nil\n\t}\n\tsname := c.nameFunc(doc.Origin)\n\tif sname == \"\" {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"missing document key\")\n\t}\n\treturn sname, nil\n}\n\nfunc (c *collection) RevisionField() string {\n\treturn c.opts.RevisionField\n}\n\n// RunActions implements driver.RunActions.\nfunc (c *collection) RunActions(ctx context.Context, actions []*driver.Action, opts *driver.RunActionsOptions) driver.ActionListError {\n\terrs := make([]error, len(actions))\n\tbeforeGets, gets, writes, writesTx, afterGets := driver.GroupActions(actions)\n\tcalls := c.buildCommitCalls(writes, errs)\n\tatomicWritesCall := c.buildAtomicWritesCommitCall(writesTx, errs)\n\t// runGets does not issue concurrent RPCs, so it doesn't need a throttle.\n\tc.runGets(ctx, beforeGets, errs, opts)\n\tt := driver.NewThrottle(c.opts.MaxOutstandingActionRPCs)\n\tfor _, call := range calls {\n\t\tt.Acquire()\n\t\tgo func() {\n\t\t\tdefer t.Release()\n\t\t\tc.doCommitCall(ctx, call, errs, opts)\n\t\t}()\n\t}\n\t// commit the atomic writes\n\tif atomicWritesCall != nil && len(atomicWritesCall.actions) > 0 {\n\t\tt.Acquire()\n\t\tgo func() {\n\t\t\tdefer t.Release()\n\t\t\tc.doCommitCall(ctx, atomicWritesCall, errs, opts)\n\t\t}()\n\t}\n\n\tt.Acquire()\n\tc.runGets(ctx, gets, errs, opts)\n\tt.Release()\n\tt.Wait()\n\tc.runGets(ctx, afterGets, errs, opts)\n\treturn driver.NewActionListError(errs)\n}\n\n// runGets executes a group of Get actions by calling the BatchGetDocuments RPC.\n// It may make several calls, because all gets in a single RPC must have the same set of field paths.\nfunc (c *collection) runGets(ctx context.Context, actions []*driver.Action, errs []error, opts *driver.RunActionsOptions) {\n\tfor _, group := range driver.GroupByFieldPath(actions) {\n\t\tc.batchGet(ctx, group, errs, opts)\n\t}\n}\n\n// Run a single BatchGet RPC with the given Get actions, all of which have the same set of field paths.\n// Populate errs, a slice of per-action errors indexed by the original action list position.\nfunc (c *collection) batchGet(ctx context.Context, gets []*driver.Action, errs []error, opts *driver.RunActionsOptions) {\n\tsetErr := func(err error) {\n\t\tfor _, g := range gets {\n\t\t\terrs[g.Index] = err\n\t\t}\n\t}\n\n\treq, err := c.newGetRequest(gets)\n\tif err != nil {\n\t\tsetErr(err)\n\t\treturn\n\t}\n\tindexByPath := map[string]int{} // from document path to index in gets\n\tfor i, path := range req.Documents {\n\t\tindexByPath[path] = i\n\t}\n\tif opts.BeforeDo != nil {\n\t\tif err := opts.BeforeDo(driver.AsFunc(req)); err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t}\n\t}\n\tstreamClient, err := c.client.BatchGetDocuments(withResourceHeader(ctx, req.Database), req)\n\tif err != nil {\n\t\tsetErr(err)\n\t\treturn\n\t}\n\tfor {\n\t\tresp, err := streamClient.Recv()\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t}\n\t\tswitch r := resp.Result.(type) {\n\t\tcase *pb.BatchGetDocumentsResponse_Found:\n\t\t\tpdoc := r.Found\n\t\t\ti, ok := indexByPath[pdoc.Name]\n\t\t\tif !ok {\n\t\t\t\tsetErr(gcerr.Newf(gcerr.Internal, nil, \"no index for path %s\", pdoc.Name))\n\t\t\t} else {\n\t\t\t\terrs[gets[i].Index] = decodeDoc(pdoc, gets[i].Doc, c.nameField, c.opts.RevisionField)\n\t\t\t}\n\t\tcase *pb.BatchGetDocumentsResponse_Missing:\n\t\t\ti := indexByPath[r.Missing]\n\t\t\terrs[gets[i].Index] = gcerr.Newf(gcerr.NotFound, nil, \"document at path %q is missing\", r.Missing)\n\t\tdefault:\n\t\t\tsetErr(gcerr.Newf(gcerr.Internal, nil, \"unknown BatchGetDocumentsResponse result type\"))\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (c *collection) newGetRequest(gets []*driver.Action) (*pb.BatchGetDocumentsRequest, error) {\n\treq := &pb.BatchGetDocumentsRequest{Database: c.dbPath}\n\tfor _, a := range gets {\n\t\treq.Documents = append(req.Documents, c.collPath+\"/\"+a.Key.(string))\n\t}\n\t// groupActions has already made sure that all the actions have the same field paths,\n\t// so just use the first one.\n\tvar fps []string // field paths that will go in the mask\n\tfor _, fp := range gets[0].FieldPaths {\n\t\tfps = append(fps, toServiceFieldPath(fp))\n\t}\n\tif fps != nil {\n\t\treq.Mask = &pb.DocumentMask{FieldPaths: fps}\n\t}\n\treturn req, nil\n}\n\n// commitCall holds information needed to make a Commit RPC and to follow up after it is done.\ntype commitCall struct {\n\twrites   []*pb.Write      // writes to commit\n\tactions  []*driver.Action // actions corresponding to those writes\n\tnewNames []string         // new names for Create; parallel to actions\n}\n\n// Construct a set of concurrently runnable calls to Commit.\nfunc (c *collection) buildCommitCalls(actions []*driver.Action, errs []error) []*commitCall {\n\t// Convert each action to one or more writes, collecting names for newly created\n\t// documents along the way. Divide writes into those with preconditions and those without.\n\t// Writes without preconditions can't fail, so we can execute them all in one Commit RPC.\n\t// All other writes must be run as separate Commits.\n\tvar (\n\t\tnCall  = &commitCall{} // for writes without preconditions\n\t\tpCalls []*commitCall   // for writes with preconditions\n\t)\n\tfor _, a := range actions {\n\t\tws, nn, err := c.actionToWrites(a)\n\t\tif err != nil {\n\t\t\terrs[a.Index] = err\n\t\t} else if ws[0].CurrentDocument == nil { // no precondition\n\t\t\tnCall.writes = append(nCall.writes, ws...)\n\t\t\tnCall.actions = append(nCall.actions, a)\n\t\t\tnCall.newNames = append(nCall.newNames, nn)\n\t\t} else { // writes have a precondition\n\t\t\tpCalls = append(pCalls, &commitCall{\n\t\t\t\twrites:   ws,\n\t\t\t\tactions:  []*driver.Action{a},\n\t\t\t\tnewNames: []string{nn},\n\t\t\t})\n\t\t}\n\t}\n\tif len(nCall.writes) == 0 {\n\t\treturn pCalls\n\t}\n\treturn append(pCalls, nCall)\n}\n\n// Construct a commit call with all the atomic writes\nfunc (c *collection) buildAtomicWritesCommitCall(actions []*driver.Action, errs []error) *commitCall {\n\tatomicWritesCommitCall := &commitCall{}\n\tfor _, a := range actions {\n\t\tws, nn, err := c.actionToWrites(a)\n\t\tif err != nil {\n\t\t\terrs[a.Index] = err\n\t\t\treturn nil\n\t\t} else {\n\t\t\tatomicWritesCommitCall.writes = append(atomicWritesCommitCall.writes, ws...)\n\t\t\tatomicWritesCommitCall.actions = append(atomicWritesCommitCall.actions, a)\n\t\t\tatomicWritesCommitCall.newNames = append(atomicWritesCommitCall.newNames, nn)\n\t\t}\n\t}\n\treturn atomicWritesCommitCall\n}\n\n// Convert an action to one or more Firestore Write protos.\nfunc (c *collection) actionToWrites(a *driver.Action) ([]*pb.Write, string, error) {\n\tvar (\n\t\tw       *pb.Write\n\t\tws      []*pb.Write\n\t\terr     error\n\t\tdocName string\n\t\tnewName string // for Create with no name\n\t)\n\tif a.Key != nil {\n\t\tdocName = a.Key.(string)\n\t}\n\tswitch a.Kind {\n\tcase driver.Create:\n\t\t// Make a name for this document if it doesn't have one.\n\t\tif a.Key == nil {\n\t\t\tdocName = driver.UniqueString()\n\t\t\tnewName = docName\n\t\t}\n\t\tw, err = c.putWrite(a.Doc, docName, &pb.Precondition{ConditionType: &pb.Precondition_Exists{Exists: false}})\n\n\tcase driver.Replace:\n\t\t// If the given document has a revision, use it as the precondition (it implies existence).\n\t\tpc, perr := c.revisionPrecondition(a.Doc)\n\t\tif perr != nil {\n\t\t\treturn nil, \"\", perr\n\t\t}\n\t\t// Otherwise, just require that the document exists.\n\t\tif pc == nil {\n\t\t\tpc = &pb.Precondition{ConditionType: &pb.Precondition_Exists{Exists: true}}\n\t\t}\n\t\tw, err = c.putWrite(a.Doc, docName, pc)\n\n\tcase driver.Put:\n\t\tpc, perr := c.revisionPrecondition(a.Doc)\n\t\tif perr != nil {\n\t\t\treturn nil, \"\", perr\n\t\t}\n\t\tw, err = c.putWrite(a.Doc, docName, pc)\n\n\tcase driver.Update:\n\t\tws, err = c.updateWrites(a.Doc, docName, a.Mods)\n\n\tcase driver.Delete:\n\t\tw, err = c.deleteWrite(a.Doc, docName)\n\n\tdefault:\n\t\terr = gcerr.Newf(gcerr.Internal, nil, \"bad action %+v\", a)\n\t}\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tif ws == nil {\n\t\tws = []*pb.Write{w}\n\t}\n\treturn ws, newName, nil\n}\n\nfunc (c *collection) putWrite(doc driver.Document, docName string, pc *pb.Precondition) (*pb.Write, error) {\n\tpdoc, err := encodeDoc(doc, c.nameField)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpdoc.Name = c.collPath + \"/\" + docName\n\treturn &pb.Write{\n\t\tOperation:       &pb.Write_Update{Update: pdoc},\n\t\tCurrentDocument: pc,\n\t}, nil\n}\n\nfunc (c *collection) deleteWrite(doc driver.Document, docName string) (*pb.Write, error) {\n\tpc, err := c.revisionPrecondition(doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &pb.Write{\n\t\tOperation:       &pb.Write_Delete{Delete: c.collPath + \"/\" + docName},\n\t\tCurrentDocument: pc,\n\t}, nil\n}\n\n// updateWrites returns a slice of writes because we may need two: one for setting\n// and deleting values, the other for transforms.\nfunc (c *collection) updateWrites(doc driver.Document, docName string, mods []driver.Mod) ([]*pb.Write, error) {\n\tts, err := c.revisionTimestamp(doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfields, paths, transforms, err := processMods(mods)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newUpdateWrites(c.collPath+\"/\"+docName, ts, fields, paths, transforms)\n}\n\nfunc newUpdateWrites(docPath string, ts *tspb.Timestamp, fields map[string]*pb.Value, paths []string, transforms []*pb.DocumentTransform_FieldTransform) ([]*pb.Write, error) {\n\tpc := preconditionFromTimestamp(ts)\n\t// If there is no revision in the document, add a precondition that the document exists.\n\tif pc == nil {\n\t\tpc = &pb.Precondition{ConditionType: &pb.Precondition_Exists{Exists: true}}\n\t}\n\tvar ws []*pb.Write\n\tif len(fields) > 0 || len(paths) > 0 {\n\t\tws = []*pb.Write{{\n\t\t\tOperation: &pb.Write_Update{Update: &pb.Document{\n\t\t\t\tName:   docPath,\n\t\t\t\tFields: fields,\n\t\t\t}},\n\t\t\tUpdateMask:      &pb.DocumentMask{FieldPaths: paths},\n\t\t\tCurrentDocument: pc,\n\t\t}}\n\t\tpc = nil // If the precondition is in the write, we don't need it in the transform.\n\t}\n\tif len(transforms) > 0 {\n\t\tws = append(ws, &pb.Write{\n\t\t\tOperation: &pb.Write_Transform{\n\t\t\t\tTransform: &pb.DocumentTransform{\n\t\t\t\t\tDocument:        docPath,\n\t\t\t\t\tFieldTransforms: transforms,\n\t\t\t\t},\n\t\t\t},\n\t\t\tCurrentDocument: pc,\n\t\t})\n\t}\n\treturn ws, nil\n}\n\n// To update a document, we need to send:\n// - A document with all the fields we want to add or change.\n// - A mask with the field paths of all the fields we want to add, change or delete.\n// processMods converts the mods into the fields for the document, and a list of\n// valid Firestore field paths for the mask.\nfunc processMods(mods []driver.Mod) (fields map[string]*pb.Value, maskPaths []string, transforms []*pb.DocumentTransform_FieldTransform, err error) {\n\tfields = map[string]*pb.Value{}\n\tfor _, m := range mods {\n\t\tsfp := toServiceFieldPath(m.FieldPath)\n\t\t// If m.Value is nil, we want to delete it. In that case, we put the field in\n\t\t// the mask but not in the doc.\n\t\tif inc, ok := m.Value.(driver.IncOp); ok {\n\t\t\tpv, err := encodeValue(inc.Amount)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, nil, err\n\t\t\t}\n\t\t\ttransforms = append(transforms, &pb.DocumentTransform_FieldTransform{\n\t\t\t\tFieldPath: sfp,\n\t\t\t\tTransformType: &pb.DocumentTransform_FieldTransform_Increment{\n\t\t\t\t\tIncrement: pv,\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\t// The field path of every other mod belongs in the mask.\n\t\t\tmaskPaths = append(maskPaths, sfp)\n\t\t\tif m.Value != nil {\n\t\t\t\tpv, err := encodeValue(m.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, nil, nil, err\n\t\t\t\t}\n\t\t\t\tif err := setAtFieldPath(fields, m.FieldPath, pv); err != nil {\n\t\t\t\t\treturn nil, nil, nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn fields, maskPaths, transforms, nil\n}\n\n// doCommitCall Calls the Commit RPC with a list of writes, and handles the results.\nfunc (c *collection) doCommitCall(ctx context.Context, call *commitCall, errs []error, opts *driver.RunActionsOptions) {\n\twrs, err := c.commit(ctx, call.writes, opts)\n\tif err != nil {\n\t\tfor _, a := range call.actions {\n\t\t\terrs[a.Index] = err\n\t\t}\n\t\treturn\n\t}\n\t// Set the revision fields of the documents.\n\t// The actions and writes may not correspond, because Update actions may require\n\t// two writes. We can tell which writes correspond to actions by the type of write.\n\tj := 0\n\tfor i, a := range call.actions {\n\t\twr := wrs[j]\n\t\tif a.Doc.HasField(c.opts.RevisionField) {\n\t\t\tif err := a.Doc.SetField(c.opts.RevisionField, wr.UpdateTime); err != nil {\n\t\t\t\terrs[a.Index] = err\n\t\t\t}\n\t\t}\n\t\tif call.newNames[i] != \"\" {\n\t\t\t// c.nameField should not be empty since we only create new names when there\n\t\t\t// is a nameField.\n\t\t\t_ = a.Doc.SetField(c.nameField, call.newNames[i])\n\t\t}\n\t\tif hasFollowingTransform(call.writes, j) {\n\t\t\tj = j + 2\n\t\t} else {\n\t\t\tj++\n\t\t}\n\t}\n}\n\nfunc hasFollowingTransform(writes []*pb.Write, i int) bool {\n\tif i >= len(writes)-1 {\n\t\treturn false\n\t}\n\tcurr, ok := writes[i].Operation.(*pb.Write_Update)\n\tif !ok {\n\t\treturn false\n\t}\n\tnext, ok := writes[i+1].Operation.(*pb.Write_Transform)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn curr.Update.Name == next.Transform.Document\n}\n\nfunc (c *collection) commit(ctx context.Context, ws []*pb.Write, opts *driver.RunActionsOptions) ([]*pb.WriteResult, error) {\n\treq := &pb.CommitRequest{\n\t\tDatabase: c.dbPath,\n\t\tWrites:   ws,\n\t}\n\tif opts.BeforeDo != nil {\n\t\tif err := opts.BeforeDo(driver.AsFunc(req)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tres, err := c.client.Commit(withResourceHeader(ctx, req.Database), req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(res.WriteResults) != len(ws) {\n\t\treturn nil, gcerr.Newf(gcerr.Internal, nil, \"wrong number of WriteResults from firestore commit\")\n\t}\n\treturn res.WriteResults, nil\n}\n\n///////////////\n// From memdocstore/mem.go.\n\n// setAtFieldPath sets m's value at fp to val. It creates intermediate maps as\n// needed. It returns an error if a non-final component of fp does not denote a map.\nfunc setAtFieldPath(m map[string]*pb.Value, fp []string, val *pb.Value) error {\n\tm2, err := getParentMap(m, fp, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm2[fp[len(fp)-1]] = val\n\treturn nil\n}\n\n// getParentMap returns the map that directly contains the given field path;\n// that is, the value of m at the field path that excludes the last component\n// of fp. If a non-map is encountered along the way, an InvalidArgument error is\n// returned. If nil is encountered, nil is returned unless create is true, in\n// which case a map is added at that point.\nfunc getParentMap(m map[string]*pb.Value, fp []string, create bool) (map[string]*pb.Value, error) {\n\tfor _, k := range fp[:len(fp)-1] {\n\t\tif m[k] == nil {\n\t\t\tif !create {\n\t\t\t\treturn nil, nil\n\t\t\t}\n\t\t\tm[k] = &pb.Value{ValueType: &pb.Value_MapValue{&pb.MapValue{Fields: map[string]*pb.Value{}}}}\n\t\t}\n\t\tmv := m[k].GetMapValue()\n\t\tif mv == nil {\n\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"invalid field path %q at %q\", strings.Join(fp, \".\"), k)\n\t\t}\n\t\tm = mv.Fields\n\t}\n\treturn m, nil\n}\n\n////////////////\n// From fieldpath.go in cloud.google.com/go/firestore.\n\n// Convert a docstore field path, which is a []string, into the kind of field path\n// that the Firestore service expects: a string of dot-separated components, some of\n// which may be quoted.\nfunc toServiceFieldPath(fp []string) string {\n\tcs := make([]string, len(fp))\n\tfor i, c := range fp {\n\t\tcs[i] = toServiceFieldPathComponent(c)\n\t}\n\treturn strings.Join(cs, \".\")\n}\n\n// Google SQL syntax for an unquoted field.\nvar unquotedFieldRE = regexp.MustCompile(\"^[A-Za-z_][A-Za-z_0-9]*$\")\n\n// toServiceFieldPathComponent returns a string that represents key and is a valid\n// Firestore field path component. Components must be quoted with backticks if\n// they don't match the above regexp.\nfunc toServiceFieldPathComponent(key string) string {\n\tif unquotedFieldRE.MatchString(key) {\n\t\treturn key\n\t}\n\tvar buf bytes.Buffer\n\tbuf.WriteRune('`')\n\tfor _, r := range key {\n\t\tif r == '`' || r == '\\\\' {\n\t\t\tbuf.WriteRune('\\\\')\n\t\t}\n\t\tbuf.WriteRune(r)\n\t}\n\tbuf.WriteRune('`')\n\treturn buf.String()\n}\n\n// revisionPrecondition returns a Firestore precondition that asserts that the stored document's\n// revision matches the revision of doc.\nfunc (c *collection) revisionPrecondition(doc driver.Document) (*pb.Precondition, error) {\n\trev, err := c.revisionTimestamp(doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn preconditionFromTimestamp(rev), nil\n}\n\n// revisionTimestamp extracts the timestamp from the revision field of doc, if there is one.\n// It only returns an error if the revision field is present and does not contain the right type.\nfunc (c *collection) revisionTimestamp(doc driver.Document) (*tspb.Timestamp, error) {\n\tv, err := doc.GetField(c.opts.RevisionField)\n\tif err != nil { // revision field not present\n\t\treturn nil, nil\n\t}\n\tif v == nil { // revision field is present, but nil\n\t\treturn nil, nil\n\t}\n\trev, ok := v.(*tspb.Timestamp)\n\tif !ok {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil,\n\t\t\t\"%s field contains wrong type: got %T, want proto Timestamp\",\n\t\t\tc.opts.RevisionField, v)\n\t}\n\treturn rev, nil\n}\n\nfunc preconditionFromTimestamp(ts *tspb.Timestamp) *pb.Precondition {\n\tif ts == nil || (ts.Seconds == 0 && ts.Nanos == 0) { // ignore a missing or zero revision\n\t\treturn nil\n\t}\n\treturn &pb.Precondition{ConditionType: &pb.Precondition_UpdateTime{ts}}\n}\n\nfunc (c *collection) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\n// resourcePrefixHeader is the name of the metadata header used to indicate\n// the resource being operated on.\nconst resourcePrefixHeader = \"google-cloud-resource-prefix\"\n\n// withResourceHeader returns a new context that includes resource in a special header.\n// Firestore uses the resource header for routing.\nfunc withResourceHeader(ctx context.Context, resource string) context.Context {\n\tmd, _ := metadata.FromOutgoingContext(ctx)\n\tmd = md.Copy()\n\tmd[resourcePrefixHeader] = []string{resource}\n\treturn metadata.NewOutgoingContext(ctx, md)\n}\n\n// RevisionToBytes implements driver.RevisionToBytes.\nfunc (c *collection) RevisionToBytes(rev any) ([]byte, error) {\n\tr, ok := rev.(*tspb.Timestamp)\n\tif !ok {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"revision %v of type %[1]T is not a proto Timestamp\", rev)\n\t}\n\treturn proto.Marshal(r)\n}\n\n// BytesToRevision implements driver.BytesToRevision.\nfunc (c *collection) BytesToRevision(b []byte) (any, error) {\n\tvar ts tspb.Timestamp\n\tif err := proto.Unmarshal(b, &ts); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &ts, nil\n}\n\nfunc (c *collection) As(i any) bool {\n\tp, ok := i.(**vkit.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = c.client\n\treturn true\n}\n\n// ErrorAs implements driver.Collection.ErrorAs.\nfunc (c *collection) ErrorAs(err error, i any) bool {\n\ts, ok := status.FromError(err)\n\tif !ok {\n\t\treturn false\n\t}\n\tp, ok := i.(**status.Status)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s\n\treturn true\n}\n\n// Close implements driver.Collection.Close.\nfunc (c *collection) Close() error { return nil }\n"
  },
  {
    "path": "docstore/gcpfirestore/fs_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\n\tvkit \"cloud.google.com/go/firestore/apiv1\"\n\tpb \"cloud.google.com/go/firestore/apiv1/firestorepb\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc/status\"\n\t\"google.golang.org/protobuf/proto\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\nconst (\n\t// projectID is the project ID that was used during the last test run using --record.\n\tprojectID       = \"go-cloud-test-216917\"\n\tcollectionName1 = \"docstore-test-1\"\n\tcollectionName2 = \"docstore-test-2\"\n\tcollectionName3 = \"docstore-test-3\"\n\tendPoint        = \"firestore.googleapis.com:443\"\n)\n\ntype harness struct {\n\tclient *vkit.Client\n\tdone   func()\n}\n\nfunc (h *harness) SupportsAtomicWrites() bool {\n\treturn true\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tconn, done := setup.NewGCPgRPCConn(ctx, t, endPoint, \"docstore\")\n\tclient, err := vkit.NewClient(ctx, option.WithGRPCConn(conn))\n\tif err != nil {\n\t\tdone()\n\t\treturn nil, err\n\t}\n\treturn &harness{client, done}, nil\n}\n\nfunc (h *harness) MakeCollection(_ context.Context, kind drivertest.CollectionKind) (driver.Collection, error) {\n\tswitch kind {\n\tcase drivertest.SingleKey, drivertest.NoRev:\n\t\treturn newCollection(h.client, CollectionResourceID(projectID, collectionName1), drivertest.KeyField, nil, nil)\n\tcase drivertest.TwoKey:\n\t\treturn newCollection(h.client, CollectionResourceID(projectID, collectionName2), \"\",\n\t\t\tfunc(doc docstore.Document) string {\n\t\t\t\treturn drivertest.HighScoreKey(doc).(string)\n\t\t\t}, &Options{AllowLocalFilters: true})\n\tcase drivertest.AltRev:\n\t\treturn newCollection(h.client, CollectionResourceID(projectID, collectionName1), drivertest.KeyField, nil,\n\t\t\t&Options{RevisionField: drivertest.AlternateRevisionField})\n\tdefault:\n\t\tpanic(\"bad kind\")\n\t}\n}\n\nfunc (*harness) BeforeDoTypes() []any {\n\treturn []any{&pb.BatchGetDocumentsRequest{}, &pb.CommitRequest{}}\n}\n\nfunc (*harness) BeforeQueryTypes() []any {\n\treturn []any{&pb.RunQueryRequest{}}\n}\n\nfunc (*harness) RevisionsEqual(rev1, rev2 any) bool {\n\treturn proto.Equal(rev1.(*tspb.Timestamp), rev2.(*tspb.Timestamp))\n}\n\nfunc (h *harness) Close() {\n\t_ = h.client.Close()\n\th.done()\n}\n\n// codecTester implements drivertest.CodecTester.\ntype codecTester struct {\n\tnc *nativeCodec\n}\n\nfunc (*codecTester) UnsupportedTypes() []drivertest.UnsupportedType {\n\treturn []drivertest.UnsupportedType{drivertest.Uint, drivertest.Arrays}\n}\n\nfunc (c *codecTester) NativeEncode(x any) (any, error) {\n\treturn c.nc.Encode(x)\n}\n\nfunc (c *codecTester) NativeDecode(value, dest any) error {\n\treturn c.nc.Decode(value.(*pb.Document), dest)\n}\n\nfunc (c *codecTester) DocstoreEncode(x any) (any, error) {\n\tvar e encoder\n\tif err := drivertest.MustDocument(x).Encode(&e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &pb.Document{\n\t\tName:   \"projects/P/databases/(default)/documents/C/D\",\n\t\tFields: e.pv.GetMapValue().Fields,\n\t}, nil\n}\n\nfunc (c *codecTester) DocstoreDecode(value, dest any) error {\n\tmv := &pb.Value{ValueType: &pb.Value_MapValue{MapValue: &pb.MapValue{\n\t\tFields: value.(*pb.Document).Fields,\n\t}}}\n\treturn drivertest.MustDocument(dest).Decode(decoder{mv})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) CollectionCheck(coll *docstore.Collection) error {\n\tvar fc *vkit.Client\n\tif !coll.As(&fc) {\n\t\treturn errors.New(\"Collection.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) QueryCheck(it *docstore.DocumentIterator) error {\n\tvar c pb.Firestore_RunQueryClient\n\tif !it.As(&c) {\n\t\treturn errors.New(\"DocumentIterator.As failed\")\n\t}\n\t_, err := c.Header()\n\treturn err\n}\n\nfunc (v verifyAs) ErrorCheck(c *docstore.Collection, err error) error {\n\tvar s *status.Status\n\tif !c.ErrorAs(err, &s) {\n\t\treturn errors.New(\"Collection.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.MakeUniqueStringDeterministicForTesting(1)\n\tnc, err := newNativeCodec()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdrivertest.RunConformanceTests(t, newHarness, &codecTester{nc}, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc BenchmarkConformance(b *testing.B) {\n\tctx := context.Background()\n\tclient, err := vkit.NewClient(ctx)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tcoll, err := newCollection(client, CollectionResourceID(projectID, collectionName3), drivertest.KeyField, nil, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, docstore.NewCollection(coll))\n}\n\n// gcpfirestore-specific tests.\n\nfunc TestResourceIDRegexp(t *testing.T) {\n\tfor _, good := range []string{\n\t\t\"projects/abc-_.309/databases/(default)/documents/C\",\n\t\t\"projects/P/databases/(default)/documents/C/D/E\",\n\t\t\"projects/P/databases/mydb/documents/E/F/G\",\n\t} {\n\t\tif !resourceIDRE.MatchString(good) {\n\t\t\tt.Errorf(\"%q did not match but should have\", good)\n\t\t}\n\t}\n\n\tfor _, bad := range []string{\n\t\t\"\",\n\t\t\"Projects/P/databases/(default)/documents/C\",\n\t\t\"P/databases/(default)/documents/C\",\n\t\t\"projects/P/Q/databases/(default)/documents/C\",\n\t\t\"projects/P/databases/(default)/C\",\n\t\t\"projects/P/databases/(default)/documents/\",\n\t\t\"projects/P/databases/(default)\",\n\t} {\n\t\tif resourceIDRE.MatchString(bad) {\n\t\t\tt.Errorf(\"%q matched but should not have\", bad)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/native_codec_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"net\"\n\t\"testing\"\n\n\t\"cloud.google.com/go/firestore\"\n\tpb \"cloud.google.com/go/firestore/apiv1/firestorepb\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\t\"google.golang.org/grpc/metadata\"\n\ttspb \"google.golang.org/protobuf/types/known/timestamppb\"\n)\n\n// A nativeCodec encodes and decodes structs using the cloud.google.com/go/firestore\n// client. Since that package doesn't export its codec, we have to go behind the\n// scenes and intercept traffic at the gRPC level. We use interceptors to do that. (A\n// mock server would have worked too.)\ntype nativeCodec struct {\n\tclient *firestore.Client\n\tdoc    *pb.Document\n}\n\nfunc newNativeCodec() (*nativeCodec, error) {\n\t// Establish a gRPC server, just so we have a connection to hang the interceptors on.\n\tsrv := grpc.NewServer()\n\tl, err := net.Listen(\"tcp\", \"127.0.0.1:0\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo func() {\n\t\tif err := srv.Serve(l); err != nil {\n\t\t\tpanic(err) // we should never get an error because we just connect and stop\n\t\t}\n\t}()\n\tnc := &nativeCodec{}\n\n\tconn, err := grpc.Dial(l.Addr().String(),\n\t\tgrpc.WithTransportCredentials(insecure.NewCredentials()),\n\t\tgrpc.WithBlock(),\n\t\tgrpc.WithUnaryInterceptor(nc.interceptUnary),\n\t\tgrpc.WithStreamInterceptor(nc.interceptStream))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tconn.Close()\n\tsrv.Stop()\n\tnc.client, err = firestore.NewClient(context.Background(), \"P\", option.WithGRPCConn(conn))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn nc, nil\n}\n\n// Intercept all unary (non-streaming) RPCs. The only one we should ever get is a Commit, for\n// the Create call in Encode.\n// If this completes successfully, the encoded *pb.Document will be in c.doc.\nfunc (c *nativeCodec) interceptUnary(_ context.Context, method string, req, res any, _ *grpc.ClientConn, _ grpc.UnaryInvoker, _ ...grpc.CallOption) error {\n\tc.doc = req.(*pb.CommitRequest).Writes[0].GetUpdate()\n\tres.(*pb.CommitResponse).WriteResults = []*pb.WriteResult{{}}\n\treturn nil\n}\n\n// Intercept all streaming RPCs. The only one we should ever get is a BatchGet, for the Get\n// call in Decode.\n// Before this is called, c.doc must be set to the *pb.Document to be returned from the call.\nfunc (c *nativeCodec) interceptStream(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {\n\treturn &clientStream{ctx: ctx, doc: c.doc}, nil\n}\n\n// clientStream is a fake client stream. It returns a single document, then terminates.\ntype clientStream struct {\n\tctx context.Context\n\tdoc *pb.Document\n}\n\nfunc (cs *clientStream) RecvMsg(m any) error {\n\tif cs.doc != nil {\n\t\tcs.doc.CreateTime = &tspb.Timestamp{}\n\t\tcs.doc.UpdateTime = &tspb.Timestamp{}\n\t\tm.(*pb.BatchGetDocumentsResponse).Result = &pb.BatchGetDocumentsResponse_Found{Found: cs.doc}\n\t\tcs.doc = nil\n\t\treturn nil\n\t}\n\treturn io.EOF\n}\n\nfunc (cs *clientStream) Context() context.Context     { return cs.ctx }\nfunc (cs *clientStream) SendMsg(m any) error          { return nil }\nfunc (cs *clientStream) Header() (metadata.MD, error) { return nil, nil }\nfunc (cs *clientStream) Trailer() metadata.MD         { return nil }\nfunc (cs *clientStream) CloseSend() error             { return nil }\n\n// Encode a Go value into a Firestore proto document.\nfunc (c *nativeCodec) Encode(x any) (*pb.Document, error) {\n\t_, err := c.client.Collection(\"C\").Doc(\"D\").Create(context.Background(), x)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn c.doc, nil\n}\n\n// Decode value, which must be a *pb.Document, into dest.\nfunc (c *nativeCodec) Decode(value *pb.Document, dest any) error {\n\tc.doc = value\n\tdocsnap, err := c.client.Collection(\"C\").Doc(\"D\").Get(context.Background())\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn docsnap.DataTo(dest)\n}\n\nfunc TestNativeCodec(t *testing.T) {\n\tnc, err := newNativeCodec()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttype S struct {\n\t\tA int\n\t}\n\twant := S{3}\n\tfields, err := nc.Encode(&want)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tvar got S\n\tif err := nc.Decode(fields, &got); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %+v, want %+v\", got, want)\n\t}\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/query.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// TODO(jba): figure out how to get filters with uints to work: since they are represented as\n// int64s, the sign is wrong.\n\npackage gcpfirestore\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"math\"\n\t\"path\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\tpb \"cloud.google.com/go/firestore/apiv1/firestorepb\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"google.golang.org/protobuf/types/known/wrapperspb\"\n)\n\nfunc (c *collection) RunGetQuery(ctx context.Context, q *driver.Query) (driver.DocumentIterator, error) {\n\treturn c.newDocIterator(ctx, q)\n}\n\nfunc (c *collection) newDocIterator(ctx context.Context, q *driver.Query) (*docIterator, error) {\n\tsq, localFilters, err := c.queryToProto(q)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq := &pb.RunQueryRequest{\n\t\tParent:    path.Dir(c.collPath),\n\t\tQueryType: &pb.RunQueryRequest_StructuredQuery{sq},\n\t}\n\tif q.BeforeQuery != nil {\n\t\tif err := q.BeforeQuery(driver.AsFunc(req)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tctx, cancel := context.WithCancel(ctx)\n\tsc, err := c.client.RunQuery(withResourceHeader(ctx, c.dbPath), req)\n\tif err != nil {\n\t\tcancel()\n\t\treturn nil, err\n\t}\n\treturn &docIterator{\n\t\tstreamClient: sc,\n\t\tnameField:    c.nameField,\n\t\trevField:     c.opts.RevisionField,\n\t\tlocalFilters: localFilters,\n\t\tcancel:       cancel,\n\t}, nil\n}\n\n// //////////////////////////////////////////////////////////////\n// The code below is adapted from cloud.google.com/go/firestore.\n\ntype docIterator struct {\n\tstreamClient        pb.Firestore_RunQueryClient\n\tnameField, revField string\n\tlocalFilters        []driver.Filter\n\t// We call cancel to make sure the stream client doesn't leak resources.\n\t// We don't need to call it if Recv() returns a non-nil error.\n\t// See https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.\n\tcancel func()\n}\n\nfunc (it *docIterator) Next(ctx context.Context, doc driver.Document) error {\n\tres, err := it.nextResponse(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn decodeDoc(res.Document, doc, it.nameField, it.revField)\n}\n\nfunc (it *docIterator) nextResponse(ctx context.Context) (*pb.RunQueryResponse, error) {\n\tfor {\n\t\tres, err := it.streamClient.Recv()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// No document => partial progress; keep receiving.\n\t\tif res.Document == nil {\n\t\t\tcontinue\n\t\t}\n\t\tmatch, err := it.evaluateLocalFilters(res.Document)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif match {\n\t\t\treturn res, nil\n\t\t}\n\t}\n}\n\n// Report whether the filters are true of the document.\nfunc (it *docIterator) evaluateLocalFilters(pdoc *pb.Document) (bool, error) {\n\tif len(it.localFilters) == 0 {\n\t\treturn true, nil\n\t}\n\t// TODO(jba): optimization: evaluate the filter directly on the proto document, without decoding.\n\tm := map[string]any{}\n\tdoc, err := driver.NewDocument(m)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tif err := decodeDoc(pdoc, doc, it.nameField, it.revField); err != nil {\n\t\treturn false, err\n\t}\n\tfor _, f := range it.localFilters {\n\t\tif !evaluateFilter(f, doc) {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\treturn true, nil\n}\n\nfunc evaluateFilter(f driver.Filter, doc driver.Document) bool {\n\tval, err := doc.Get(f.FieldPath)\n\tif err != nil {\n\t\t// Treat a missing field as false.\n\t\treturn false\n\t}\n\t// Compare times.\n\tif t1, ok := val.(time.Time); ok {\n\t\tif t2, ok := f.Value.(time.Time); ok {\n\t\t\treturn applyComparison(f.Op, driver.CompareTimes(t1, t2))\n\t\t}\n\t\treturn false\n\t}\n\tlhs := reflect.ValueOf(val)\n\trhs := reflect.ValueOf(f.Value)\n\tif lhs.Kind() == reflect.String {\n\t\tif rhs.Kind() != reflect.String {\n\t\t\treturn false\n\t\t}\n\t\treturn applyComparison(f.Op, strings.Compare(lhs.String(), rhs.String()))\n\t}\n\n\tif lhs.Kind() == reflect.Bool {\n\t\tif rhs.Kind() != reflect.Bool {\n\t\t\treturn false\n\t\t}\n\t\tcmp := 0\n\t\tif lhs.Bool() != rhs.Bool() {\n\t\t\tcmp = -1\n\t\t}\n\t\treturn applyComparison(f.Op, cmp)\n\t}\n\n\tcmp, err := driver.CompareNumbers(lhs, rhs)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn applyComparison(f.Op, cmp)\n}\n\n// op is one of the five permitted docstore operators (\"=\", \"<\", etc.)\n// c is the result of strings.Compare or the like.\nfunc applyComparison(op string, c int) bool {\n\tswitch op {\n\tcase driver.EqualOp:\n\t\treturn c == 0\n\tcase \">\":\n\t\treturn c > 0\n\tcase \"<\":\n\t\treturn c < 0\n\tcase \">=\":\n\t\treturn c >= 0\n\tcase \"<=\":\n\t\treturn c <= 0\n\tdefault:\n\t\tpanic(\"bad op\")\n\t}\n}\n\nfunc (it *docIterator) Stop() { it.cancel() }\n\nfunc (it *docIterator) As(i any) bool {\n\tp, ok := i.(*pb.Firestore_RunQueryClient)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = it.streamClient\n\treturn true\n}\n\n// Converts the query to a Firestore proto. Also returns filters that need to be\n// evaluated on the client.\nfunc (c *collection) queryToProto(q *driver.Query) (*pb.StructuredQuery, []driver.Filter, error) {\n\t// The collection ID is the last component of the collection path.\n\tcollID := path.Base(c.collPath)\n\tp := &pb.StructuredQuery{\n\t\tFrom: []*pb.StructuredQuery_CollectionSelector{{CollectionId: collID}},\n\t}\n\tif len(q.FieldPaths) > 0 {\n\t\tp.Select = &pb.StructuredQuery_Projection{}\n\t\tfor _, fp := range q.FieldPaths {\n\t\t\tp.Select.Fields = append(p.Select.Fields, fieldRef(fp))\n\t\t}\n\t}\n\t// Apply offset.\n\tif q.Offset > 0 {\n\t\tp.Offset = int32(q.Offset)\n\t}\n\t// Apply limit.\n\tif q.Limit > 0 {\n\t\tp.Limit = &wrapperspb.Int32Value{Value: int32(q.Limit)}\n\t}\n\n\t// TODO(jba): make sure we retrieve the fields needed for local filters.\n\tsendFilters, localFilters := splitFilters(q.Filters)\n\tif len(localFilters) > 0 && !c.opts.AllowLocalFilters {\n\t\treturn nil, nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"query requires local filters; set Options.AllowLocalFilters to true to enable\")\n\t}\n\n\t// If there is only one filter, use it directly. Otherwise, construct\n\t// a CompositeFilter.\n\tvar pfs []*pb.StructuredQuery_Filter\n\tfor _, f := range sendFilters {\n\t\tpf, err := c.filterToProto(f)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tpfs = append(pfs, pf)\n\t}\n\tif len(pfs) == 1 {\n\t\tp.Where = pfs[0]\n\t} else if len(pfs) > 1 {\n\t\tp.Where = &pb.StructuredQuery_Filter{\n\t\t\tFilterType: &pb.StructuredQuery_Filter_CompositeFilter{&pb.StructuredQuery_CompositeFilter{\n\t\t\t\tOp:      pb.StructuredQuery_CompositeFilter_AND,\n\t\t\t\tFilters: pfs,\n\t\t\t}},\n\t\t}\n\t}\n\n\tif q.OrderByField != \"\" {\n\t\t// TODO(jba): reorder filters so order-by one is first of inequalities?\n\t\t// TODO(jba): see if it's OK if filter inequality direction differs from sort direction.\n\t\tfref := []string{q.OrderByField}\n\t\tif q.OrderByField == c.nameField {\n\t\t\tfref[0] = \"__name__\"\n\t\t}\n\t\tvar dir pb.StructuredQuery_Direction\n\t\tif q.OrderAscending {\n\t\t\tdir = pb.StructuredQuery_ASCENDING\n\t\t} else {\n\t\t\tdir = pb.StructuredQuery_DESCENDING\n\t\t}\n\t\tp.OrderBy = []*pb.StructuredQuery_Order{{Field: fieldRef(fref), Direction: dir}}\n\t}\n\n\t// TODO(jba): cursors (start/end)\n\treturn p, localFilters, nil\n}\n\n// splitFilters separates the list of query filters into those we can send to the Firestore service,\n// and those we must evaluate here on the client.\nfunc splitFilters(fs []driver.Filter) (sendToFirestore, evaluateLocally []driver.Filter) {\n\t// Enforce that only one field can have an inequality.\n\tvar rangeFP []string\n\tfor _, f := range fs {\n\t\tif f.Op == driver.EqualOp {\n\t\t\tsendToFirestore = append(sendToFirestore, f)\n\t\t} else {\n\t\t\tif rangeFP == nil || driver.FieldPathsEqual(rangeFP, f.FieldPath) {\n\t\t\t\t// Multiple inequality filters on the same field are OK.\n\t\t\t\trangeFP = f.FieldPath\n\t\t\t\tsendToFirestore = append(sendToFirestore, f)\n\t\t\t} else {\n\t\t\t\tevaluateLocally = append(evaluateLocally, f)\n\t\t\t}\n\t\t}\n\t}\n\treturn sendToFirestore, evaluateLocally\n}\n\nfunc (c *collection) filterToProto(f driver.Filter) (*pb.StructuredQuery_Filter, error) {\n\t// Treat filters on the name field specially.\n\tif c.nameField != \"\" && driver.FieldPathEqualsField(f.FieldPath, c.nameField) {\n\t\tv := reflect.ValueOf(f.Value)\n\t\tif v.Kind() != reflect.String {\n\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil,\n\t\t\t\t\"name field filter value %v of type %[1]T is not a string\", f.Value)\n\t\t}\n\t\treturn newFieldFilter([]string{\"__name__\"}, f.Op,\n\t\t\t&pb.Value{ValueType: &pb.Value_ReferenceValue{c.collPath + \"/\" + v.String()}})\n\t}\n\t// \"= nil\" and \"= NaN\" are handled specially.\n\tif uop, ok := unaryOpFor(f.Value); ok {\n\t\tif f.Op != driver.EqualOp {\n\t\t\treturn nil, fmt.Errorf(\"firestore: must use '=' when comparing %v\", f.Value)\n\t\t}\n\t\treturn &pb.StructuredQuery_Filter{\n\t\t\tFilterType: &pb.StructuredQuery_Filter_UnaryFilter{\n\t\t\t\tUnaryFilter: &pb.StructuredQuery_UnaryFilter{\n\t\t\t\t\tOperandType: &pb.StructuredQuery_UnaryFilter_Field{\n\t\t\t\t\t\tField: fieldRef(f.FieldPath),\n\t\t\t\t\t},\n\t\t\t\t\tOp: uop,\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil\n\t}\n\tpv, err := encodeValue(f.Value)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newFieldFilter(f.FieldPath, f.Op, pv)\n}\n\nfunc unaryOpFor(value any) (pb.StructuredQuery_UnaryFilter_Operator, bool) {\n\tswitch {\n\tcase value == nil:\n\t\treturn pb.StructuredQuery_UnaryFilter_IS_NULL, true\n\tcase isNaN(value):\n\t\treturn pb.StructuredQuery_UnaryFilter_IS_NAN, true\n\tdefault:\n\t\treturn pb.StructuredQuery_UnaryFilter_OPERATOR_UNSPECIFIED, false\n\t}\n}\n\nfunc isNaN(x any) bool {\n\tswitch x := x.(type) {\n\tcase float32:\n\t\treturn math.IsNaN(float64(x))\n\tcase float64:\n\t\treturn math.IsNaN(x)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc fieldRef(fp []string) *pb.StructuredQuery_FieldReference {\n\treturn &pb.StructuredQuery_FieldReference{FieldPath: toServiceFieldPath(fp)}\n}\n\nfunc newFieldFilter(fp []string, op string, val *pb.Value) (*pb.StructuredQuery_Filter, error) {\n\tvar fop pb.StructuredQuery_FieldFilter_Operator\n\tswitch op {\n\tcase \"<\":\n\t\tfop = pb.StructuredQuery_FieldFilter_LESS_THAN\n\tcase \"<=\":\n\t\tfop = pb.StructuredQuery_FieldFilter_LESS_THAN_OR_EQUAL\n\tcase \">\":\n\t\tfop = pb.StructuredQuery_FieldFilter_GREATER_THAN\n\tcase \">=\":\n\t\tfop = pb.StructuredQuery_FieldFilter_GREATER_THAN_OR_EQUAL\n\tcase driver.EqualOp:\n\t\tfop = pb.StructuredQuery_FieldFilter_EQUAL\n\tcase \"in\":\n\t\tfop = pb.StructuredQuery_FieldFilter_IN\n\tcase \"not-in\":\n\t\tfop = pb.StructuredQuery_FieldFilter_NOT_IN\n\t// TODO(jba): can we support array-contains portably?\n\t// case \"array-contains\":\n\t// \tfop = pb.StructuredQuery_FieldFilter_ARRAY_CONTAINS\n\tdefault:\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"invalid operator: %q\", op)\n\t}\n\treturn &pb.StructuredQuery_Filter{\n\t\tFilterType: &pb.StructuredQuery_Filter_FieldFilter{\n\t\t\tFieldFilter: &pb.StructuredQuery_FieldFilter{\n\t\t\t\tField: fieldRef(fp),\n\t\t\t\tOp:    fop,\n\t\t\t\tValue: val,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\nfunc (c *collection) QueryPlan(q *driver.Query) (string, error) {\n\treturn \"unknown\", nil\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/query_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\nimport (\n\t\"math\"\n\t\"testing\"\n\t\"time\"\n\n\tpb \"cloud.google.com/go/firestore/apiv1/firestorepb\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"google.golang.org/protobuf/proto\"\n)\n\nfunc TestFilterToProto(t *testing.T) {\n\tc := &collection{nameField: \"name\", collPath: \"collPath\"}\n\tfor _, test := range []struct {\n\t\tin   driver.Filter\n\t\twant *pb.StructuredQuery_Filter\n\t}{\n\t\t{\n\t\t\tdriver.Filter{[]string{\"a\"}, \">\", 1},\n\t\t\t&pb.StructuredQuery_Filter{FilterType: &pb.StructuredQuery_Filter_FieldFilter{\n\t\t\t\tFieldFilter: &pb.StructuredQuery_FieldFilter{\n\t\t\t\t\tField: &pb.StructuredQuery_FieldReference{FieldPath: \"a\"},\n\t\t\t\t\tOp:    pb.StructuredQuery_FieldFilter_GREATER_THAN,\n\t\t\t\t\tValue: &pb.Value{ValueType: &pb.Value_IntegerValue{1}},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tdriver.Filter{[]string{\"a\"}, driver.EqualOp, nil},\n\t\t\t&pb.StructuredQuery_Filter{FilterType: &pb.StructuredQuery_Filter_UnaryFilter{\n\t\t\t\tUnaryFilter: &pb.StructuredQuery_UnaryFilter{\n\t\t\t\t\tOperandType: &pb.StructuredQuery_UnaryFilter_Field{\n\t\t\t\t\t\tField: &pb.StructuredQuery_FieldReference{FieldPath: \"a\"},\n\t\t\t\t\t},\n\t\t\t\t\tOp: pb.StructuredQuery_UnaryFilter_IS_NULL,\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tdriver.Filter{[]string{\"a\"}, driver.EqualOp, math.NaN()},\n\t\t\t&pb.StructuredQuery_Filter{FilterType: &pb.StructuredQuery_Filter_UnaryFilter{\n\t\t\t\tUnaryFilter: &pb.StructuredQuery_UnaryFilter{\n\t\t\t\t\tOperandType: &pb.StructuredQuery_UnaryFilter_Field{\n\t\t\t\t\t\tField: &pb.StructuredQuery_FieldReference{FieldPath: \"a\"},\n\t\t\t\t\t},\n\t\t\t\t\tOp: pb.StructuredQuery_UnaryFilter_IS_NAN,\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t\t{\n\t\t\tdriver.Filter{[]string{\"name\"}, \"<\", \"foo\"},\n\t\t\t&pb.StructuredQuery_Filter{FilterType: &pb.StructuredQuery_Filter_FieldFilter{\n\t\t\t\tFieldFilter: &pb.StructuredQuery_FieldFilter{\n\t\t\t\t\tField: &pb.StructuredQuery_FieldReference{FieldPath: \"__name__\"},\n\t\t\t\t\tOp:    pb.StructuredQuery_FieldFilter_LESS_THAN,\n\t\t\t\t\tValue: &pb.Value{ValueType: &pb.Value_ReferenceValue{\"collPath/foo\"}},\n\t\t\t\t},\n\t\t\t}},\n\t\t},\n\t} {\n\t\tgot, err := c.filterToProto(test.in)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif diff := cmp.Diff(got, test.want, cmp.Comparer(proto.Equal)); diff != \"\" {\n\t\t\tt.Errorf(\"%+v: %s\", test.in, diff)\n\t\t}\n\t}\n}\n\nfunc TestSplitFilters(t *testing.T) {\n\taEqual := driver.Filter{[]string{\"a\"}, \"=\", 1}\n\taLess := driver.Filter{[]string{\"a\"}, \"<\", 1}\n\taGreater := driver.Filter{[]string{\"a\"}, \">\", 1}\n\tbEqual := driver.Filter{[]string{\"b\"}, \"=\", 1}\n\tbLess := driver.Filter{[]string{\"b\"}, \"<\", 1}\n\n\tfor _, test := range []struct {\n\t\tin                  []driver.Filter\n\t\twantSend, wantLocal []driver.Filter\n\t}{\n\t\t{\n\t\t\tin:        nil,\n\t\t\twantSend:  nil,\n\t\t\twantLocal: nil,\n\t\t},\n\t\t{\n\t\t\tin:        []driver.Filter{aEqual},\n\t\t\twantSend:  []driver.Filter{aEqual},\n\t\t\twantLocal: nil,\n\t\t},\n\t\t{\n\t\t\tin:        []driver.Filter{aLess},\n\t\t\twantSend:  []driver.Filter{aLess},\n\t\t\twantLocal: nil,\n\t\t},\n\t\t{\n\t\t\tin:        []driver.Filter{aLess, aGreater},\n\t\t\twantSend:  []driver.Filter{aLess, aGreater},\n\t\t\twantLocal: nil,\n\t\t},\n\t\t{\n\t\t\tin:        []driver.Filter{aLess, bEqual, aGreater},\n\t\t\twantSend:  []driver.Filter{aLess, bEqual, aGreater},\n\t\t\twantLocal: nil,\n\t\t},\n\t\t{\n\t\t\tin:        []driver.Filter{aLess, bLess, aGreater},\n\t\t\twantSend:  []driver.Filter{aLess, aGreater},\n\t\t\twantLocal: []driver.Filter{bLess},\n\t\t},\n\t\t{\n\t\t\tin:        []driver.Filter{aEqual, aLess, bLess, aGreater, bEqual},\n\t\t\twantSend:  []driver.Filter{aEqual, aLess, aGreater, bEqual},\n\t\t\twantLocal: []driver.Filter{bLess},\n\t\t},\n\t} {\n\t\tgotSend, gotLocal := splitFilters(test.in)\n\t\tif diff := cmp.Diff(gotSend, test.wantSend); diff != \"\" {\n\t\t\tt.Errorf(\"%v, send:\\n%s\", test.in, diff)\n\t\t}\n\t\tif diff := cmp.Diff(gotLocal, test.wantLocal); diff != \"\" {\n\t\t\tt.Errorf(\"%v, local:\\n%s\", test.in, diff)\n\t\t}\n\t}\n}\n\nfunc TestEvaluateFilter(t *testing.T) {\n\tm := map[string]any{\n\t\t\"i\":  32,\n\t\t\"f\":  5.5,\n\t\t\"f2\": 5.0,\n\t\t\"s\":  \"32\",\n\t\t\"t\":  time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),\n\t\t\"b\":  true,\n\t\t\"mi\": int64(math.MaxInt64),\n\t}\n\tdoc := drivertest.MustDocument(m)\n\tfor _, test := range []struct {\n\t\tfield, op string\n\t\tvalue     any\n\t\twant      bool\n\t}{\n\t\t// Firestore compares numbers to each other ignoring type (int vs. float).\n\t\t// Just a few simple tests here; see driver.TestCompareNumbers for more.\n\t\t{\"i\", \"=\", 32, true},\n\t\t{\"i\", \">\", 32, false},\n\t\t{\"i\", \"<\", 32, false},\n\t\t{\"i\", \"=\", 32.0, true},\n\t\t{\"i\", \">\", 32.0, false},\n\t\t{\"i\", \"<\", 32.0, false},\n\t\t{\"f\", \"=\", 5.5, true},\n\t\t{\"f\", \"<\", 5.5, false},\n\t\t{\"f2\", \"=\", 5, true},\n\t\t{\"f2\", \">\", 5, false},\n\t\t// Firestore compares strings to each other, but not to numbers.\n\t\t{\"s\", \"=\", \"32\", true},\n\t\t{\"s\", \">\", \"32\", false},\n\t\t{\"s\", \"<\", \"32\", false},\n\t\t{\"s\", \">\", \"3\", true},\n\t\t{\"i\", \"=\", \"32\", false},\n\t\t{\"i\", \">\", \"32\", false},\n\t\t{\"i\", \"<\", \"32\", false},\n\t\t{\"f\", \"=\", \"5.5\", false},\n\t\t{\"f\", \">\", \"5.5\", false},\n\t\t{\"f\", \"<\", \"5.5\", false},\n\t\t// Firestore compares times to each other.\n\t\t{\"t\", \"<\", time.Date(2014, 1, 1, 0, 0, 0, 0, time.UTC), true},\n\t\t// Comparisons with other types fail.\n\t\t{\"b\", \"=\", \"true\", false},\n\t\t{\"b\", \">\", \"true\", false},\n\t\t{\"b\", \"<\", \"true\", false},\n\t\t{\"t\", \"=\", 0, false},\n\t\t{\"t\", \">\", 0, false},\n\t\t{\"t\", \"<\", 0, false},\n\t} {\n\t\tf := driver.Filter{FieldPath: []string{test.field}, Op: test.op, Value: test.value}\n\t\tgot := evaluateFilter(f, doc)\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"%s %s %v: got %t, want %t\", test.field, test.op, test.value, got, test.want)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/urls.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"sync\"\n\n\tvkit \"cloud.google.com/go/firestore/apiv1\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/gcp\"\n)\n\nfunc init() {\n\tdocstore.DefaultURLMux().RegisterCollection(Scheme, &lazyCredsOpener{})\n}\n\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenCollectionURL(ctx context.Context, u *url.URL) (*docstore.Collection, error) {\n\to.init.Do(func() {\n\t\tvar tokenSource gcp.TokenSource\n\t\tif e := os.Getenv(\"FIRESTORE_EMULATOR_HOST\"); e == \"\" {\n\t\t\t// Connect to the GCP default endpoint if the 'FIRESTORE_EMULATOR_HOST' environment variable is not set.\n\t\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttokenSource = creds.TokenSource\n\t\t}\n\t\tclient, _, err := Dial(ctx, tokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open collection %s: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenCollectionURL(ctx, u)\n}\n\n// Scheme is the URL scheme firestore registers its URLOpener under on\n// docstore.DefaultMux.\nconst Scheme = \"firestore\"\n\n// URLOpener opens firestore URLs like\n// \"firestore://projects/myproject/databases/(default)/documents/mycollection?name_field=myID\".\n//\n// See https://firebase.google.com/docs/firestore/data-model for more details.\n//\n// The following query parameters are supported:\n//\n//   - name_field (required): gcpfirestore requires that a single string field,\n//\n// name_field, be designated the primary key. Its values must be unique over all\n// documents in the collection, and the primary key must be provided to retrieve\n// a document.\ntype URLOpener struct {\n\t// Client must be set to a non-nil client authenticated with Cloud Firestore\n\t// scope or equivalent.\n\tClient *vkit.Client\n}\n\n// OpenCollectionURL opens a docstore.Collection based on u.\nfunc (o *URLOpener) OpenCollectionURL(ctx context.Context, u *url.URL) (*docstore.Collection, error) {\n\tq := u.Query()\n\toptions := &Options{\n\t\tRevisionField: q.Get(\"revision_field\"),\n\t}\n\n\tnameField := q.Get(\"name_field\")\n\tif nameField == \"\" {\n\t\treturn nil, errors.New(\"open collection %s: name_field is required to open a collection\")\n\t}\n\tq.Del(\"name_field\")\n\tq.Del(\"revision_field\")\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open collection %s: invalid query parameter %q\", u, param)\n\t}\n\tcollResourceID := path.Join(u.Host, u.Path)\n\treturn OpenCollection(o.Client, collResourceID, nameField, options)\n}\n"
  },
  {
    "path": "docstore/gcpfirestore/urls_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpfirestore\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\nfunc TestOpenCollectionFromURL(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"firestore://projects/myproject/databases/(default)/documents/mycoll?name_field=_id\", false},\n\t\t// OK, hierarchical collection.\n\t\t{\"firestore://projects/myproject/databases/(default)/documents/mycoll/mydoc/subcoll?name_field=_id\", false},\n\t\t// Missing project ID.\n\t\t{\"firestore:///mycoll?name_field=_id\", true},\n\t\t// Empty collection.\n\t\t{\"firestore://projects/myproject/\", true},\n\t\t// Missing name field.\n\t\t{\"firestore://projects/myproject/databases/(default)/documents/mycoll\", true},\n\t\t// Passing revision field.\n\t\t{\"firestore://projects/myproject/databases/(default)/documents/mycoll?name_field=_id&revision_field=123\", false},\n\t\t// Invalid param.\n\t\t{\"firestore://projects/myproject/databases/(default)/documents/mycoll?name_field=_id&param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\td, err := docstore.OpenCollection(ctx, test.URL)\n\t\tif d != nil {\n\t\t\tdefer d.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/internal/fields/README.md",
    "content": "This package is copied from cloud.google.com/go/internal/fields.\n"
  },
  {
    "path": "docstore/internal/fields/fields.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package fields provides a view of the fields of a struct that follows the Go\n// rules, amended to consider tags and case insensitivity.\n//\n// # Usage\n//\n// First define a function that interprets tags:\n//\n//\tfunc parseTag(st reflect.StructTag) (name string, keep bool, other interface{}, err error) { ... }\n//\n// The function's return values describe whether to ignore the field\n// completely or provide an alternate name, as well as other data from the\n// parse that is stored to avoid re-parsing.\n//\n// Then define a function to validate the type:\n//\n//\tfunc validate(t reflect.Type) error { ... }\n//\n// Then, if necessary, define a function to specify leaf types - types\n// which should be considered one field and not be recursed into:\n//\n//\tfunc isLeafType(t reflect.Type) bool { ... }\n//\n// eg:\n//\n//\tfunc isLeafType(t reflect.Type) bool {\n//\t   return t == reflect.TypeOf(time.Time{})\n//\t}\n//\n// Next, construct a Cache, passing your functions. As its name suggests, a\n// Cache remembers validation and field information for a type, so subsequent\n// calls with the same type are very fast.\n//\n//\tcache := fields.NewCache(parseTag, validate, isLeafType)\n//\n// To get the fields of a struct type as determined by the above rules, call\n// the Fields method:\n//\n//\tfields, err := cache.Fields(reflect.TypeOf(MyStruct{}))\n//\n// The return value can be treated as a slice of Fields.\n//\n// Given a string, such as a key or column name obtained during unmarshalling,\n// call Match on the list of fields to find a field whose name is the best\n// match:\n//\n//\tfield := fields.Match(name)\n//\n// Match looks for an exact match first, then falls back to a case-insensitive\n// comparison.\npackage fields\n\nimport (\n\t\"bytes\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// A Field records information about a struct field.\ntype Field struct {\n\tName        string       // effective field name\n\tNameFromTag bool         // did Name come from a tag?\n\tType        reflect.Type // field type\n\tIndex       []int        // index sequence, for reflect.Value.FieldByIndex\n\tParsedTag   any          // third return value of the parseTag function\n\n\tnameBytes []byte\n\tequalFold func(s, t []byte) bool\n}\n\n// ParseTagFunc is a function that accepts a struct tag and returns four values: an alternative name for the field\n// extracted from the tag, a boolean saying whether to keep the field or ignore  it, additional data that is stored\n// with the field information to avoid having to parse the tag again, and an error.\ntype ParseTagFunc func(reflect.StructTag) (name string, keep bool, other any, err error)\n\n// ValidateFunc is a function that accepts a reflect.Type and returns an error if the struct type is invalid in any\n// way.\ntype ValidateFunc func(reflect.Type) error\n\n// LeafTypesFunc is a function that accepts a reflect.Type and returns true if the struct type a leaf, or false if not.\n// TODO(deklerk) is this description accurate?\ntype LeafTypesFunc func(reflect.Type) bool\n\n// A Cache records information about the fields of struct types.\n//\n// A Cache is safe for use by multiple goroutines.\ntype Cache struct {\n\tparseTag  ParseTagFunc\n\tvalidate  ValidateFunc\n\tleafTypes LeafTypesFunc\n\tcache     sync.Map // from reflect.Type to cacheValue\n}\n\n// NewCache constructs a Cache.\n//\n// Its first argument should be a function that accepts\n// a struct tag and returns four values: an alternative name for the field\n// extracted from the tag, a boolean saying whether to keep the field or ignore\n// it, additional data that is stored with the field information to avoid\n// having to parse the tag again, and an error.\n//\n// Its second argument should be a function that accepts a reflect.Type and\n// returns an error if the struct type is invalid in any way. For example, it\n// may check that all of the struct field tags are valid, or that all fields\n// are of an appropriate type.\nfunc NewCache(parseTag ParseTagFunc, validate ValidateFunc, leafTypes LeafTypesFunc) *Cache {\n\tif parseTag == nil {\n\t\tparseTag = func(reflect.StructTag) (string, bool, any, error) {\n\t\t\treturn \"\", true, nil, nil\n\t\t}\n\t}\n\tif validate == nil {\n\t\tvalidate = func(reflect.Type) error {\n\t\t\treturn nil\n\t\t}\n\t}\n\tif leafTypes == nil {\n\t\tleafTypes = func(reflect.Type) bool {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn &Cache{\n\t\tparseTag:  parseTag,\n\t\tvalidate:  validate,\n\t\tleafTypes: leafTypes,\n\t}\n}\n\n// A fieldScan represents an item on the fieldByNameFunc scan work list.\ntype fieldScan struct {\n\ttyp   reflect.Type\n\tindex []int\n}\n\n// Fields returns all the exported fields of t, which must be a struct type. It\n// follows the standard Go rules for embedded fields, modified by the presence\n// of tags. The result is sorted lexicographically by index.\n//\n// These rules apply in the absence of tags:\n// Anonymous struct fields are treated as if their inner exported fields were\n// fields in the outer struct (embedding). The result includes all fields that\n// aren't shadowed by fields at higher level of embedding. If more than one\n// field with the same name exists at the same level of embedding, it is\n// excluded. An anonymous field that is not of struct type is treated as having\n// its type as its name.\n//\n// Tags modify these rules as follows:\n// A field's tag is used as its name.\n// An anonymous struct field with a name given in its tag is treated as\n// a field having that name, rather than an embedded struct (the struct's\n// fields will not be returned).\n// If more than one field with the same name exists at the same level of embedding,\n// but exactly one of them is tagged, then the tagged field is reported and the others\n// are ignored.\nfunc (c *Cache) Fields(t reflect.Type) (List, error) {\n\tif t.Kind() != reflect.Struct {\n\t\tpanic(\"fields: Fields of non-struct type\")\n\t}\n\treturn c.cachedTypeFields(t)\n}\n\n// A List is a list of Fields.\ntype List []Field\n\n// MatchExact returns the field in the list with the given name, or nil if there is\n// none.\nfunc (l List) MatchExact(name string) *Field {\n\treturn l.MatchExactBytes([]byte(name))\n}\n\n// MatchExactBytes is identical to MatchExact, except that the argument is a byte slice.\nfunc (l List) MatchExactBytes(name []byte) *Field {\n\tfor _, f := range l {\n\t\tif bytes.Equal(f.nameBytes, name) {\n\t\t\treturn &f\n\t\t}\n\t}\n\treturn nil\n}\n\n// MatchFold returns the field in the list whose name best matches the supplied\n// name, nor nil if no field does. If there is a field with the exact name, it\n// is returned. Otherwise the first field (sorted by index) whose name matches\n// case-insensitively is returned.\nfunc (l List) MatchFold(name string) *Field {\n\treturn l.MatchFoldBytes([]byte(name))\n}\n\n// MatchFoldBytes is identical to MatchFold, except that the argument is a byte slice.\nfunc (l List) MatchFoldBytes(name []byte) *Field {\n\tvar f *Field\n\tfor i := range l {\n\t\tff := &l[i]\n\t\tif bytes.Equal(ff.nameBytes, name) {\n\t\t\treturn ff\n\t\t}\n\t\tif f == nil && ff.equalFold(ff.nameBytes, name) {\n\t\t\tf = ff\n\t\t}\n\t}\n\treturn f\n}\n\ntype cacheValue struct {\n\tfields List\n\terr    error\n}\n\n// cachedTypeFields is like typeFields but uses a cache to avoid repeated work.\n// This code has been copied and modified from\n// https://go.googlesource.com/go/+/go1.7.3/src/encoding/json/encode.go.\nfunc (c *Cache) cachedTypeFields(t reflect.Type) (List, error) {\n\tvar cv cacheValue\n\tx, ok := c.cache.Load(t)\n\tif ok {\n\t\tcv = x.(cacheValue)\n\t} else {\n\t\tif err := c.validate(t); err != nil {\n\t\t\tcv = cacheValue{nil, err}\n\t\t} else {\n\t\t\tf, err := c.typeFields(t)\n\t\t\tcv = cacheValue{List(f), err}\n\t\t}\n\t\tc.cache.Store(t, cv)\n\t}\n\treturn cv.fields, cv.err\n}\n\nfunc (c *Cache) typeFields(t reflect.Type) ([]Field, error) {\n\tfields, err := c.listFields(t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsort.Sort(byName(fields))\n\t// Delete all fields that are hidden by the Go rules for embedded fields.\n\n\t// The fields are sorted in primary order of name, secondary order of field\n\t// index length. So the first field with a given name is the dominant one.\n\tvar out []Field\n\tfor advance, i := 0, 0; i < len(fields); i += advance {\n\t\t// One iteration per name.\n\t\t// Find the sequence of fields with the name of this first field.\n\t\tfi := fields[i]\n\t\tname := fi.Name\n\t\tfor advance = 1; i+advance < len(fields); advance++ {\n\t\t\tfj := fields[i+advance]\n\t\t\tif fj.Name != name {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Find the dominant field, if any, out of all fields that have the same name.\n\t\tdominant, ok := dominantField(fields[i : i+advance])\n\t\tif ok {\n\t\t\tout = append(out, dominant)\n\t\t}\n\t}\n\tsort.Sort(byIndex(out))\n\treturn out, nil\n}\n\nfunc (c *Cache) listFields(t reflect.Type) ([]Field, error) {\n\t// This uses the same condition that the Go language does: there must be a unique instance\n\t// of the match at a given depth level. If there are multiple instances of a match at the\n\t// same depth, they annihilate each other and inhibit any possible match at a lower level.\n\t// The algorithm is breadth first search, one depth level at a time.\n\n\t// The current and next slices are work queues:\n\t// current lists the fields to visit on this depth level,\n\t// and next lists the fields on the next lower level.\n\tcurrent := []fieldScan{}\n\tnext := []fieldScan{{typ: t}}\n\n\t// nextCount records the number of times an embedded type has been\n\t// encountered and considered for queueing in the 'next' slice.\n\t// We only queue the first one, but we increment the count on each.\n\t// If a struct type T can be reached more than once at a given depth level,\n\t// then it annihilates itself and need not be considered at all when we\n\t// process that next depth level.\n\tvar nextCount map[reflect.Type]int\n\n\t// visited records the structs that have been considered already.\n\t// Embedded pointer fields can create cycles in the graph of\n\t// reachable embedded types; visited avoids following those cycles.\n\t// It also avoids duplicated effort: if we didn't find the field in an\n\t// embedded type T at level 2, we won't find it in one at level 4 either.\n\tvisited := map[reflect.Type]bool{}\n\n\tvar fields []Field // Fields found.\n\n\tfor len(next) > 0 {\n\t\tcurrent, next = next, current[:0]\n\t\tcount := nextCount\n\t\tnextCount = nil\n\n\t\t// Process all the fields at this depth, now listed in 'current'.\n\t\t// The loop queues embedded fields found in 'next', for processing during the next\n\t\t// iteration. The multiplicity of the 'current' field counts is recorded\n\t\t// in 'count'; the multiplicity of the 'next' field counts is recorded in 'nextCount'.\n\t\tfor _, scan := range current {\n\t\t\tt := scan.typ\n\t\t\tif visited[t] {\n\t\t\t\t// We've looked through this type before, at a higher level.\n\t\t\t\t// That higher level would shadow the lower level we're now at,\n\t\t\t\t// so this one can't be useful to us. Ignore it.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvisited[t] = true\n\t\t\tfor i := 0; i < t.NumField(); i++ {\n\t\t\t\tf := t.Field(i)\n\n\t\t\t\texported := (f.PkgPath == \"\")\n\n\t\t\t\t// If a named field is unexported, ignore it. An anonymous\n\t\t\t\t// unexported field is processed, because it may contain\n\t\t\t\t// exported fields, which are visible.\n\t\t\t\tif !exported && !f.Anonymous {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Examine the tag.\n\t\t\t\ttagName, keep, other, err := c.parseTag(f.Tag)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tif !keep {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif c.leafTypes(f.Type) {\n\t\t\t\t\tfields = append(fields, newField(f, tagName, other, scan.index, i))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tvar ntyp reflect.Type\n\t\t\t\tif f.Anonymous {\n\t\t\t\t\t// Anonymous field of type T or *T.\n\t\t\t\t\tntyp = f.Type\n\t\t\t\t\tif ntyp.Kind() == reflect.Pointer {\n\t\t\t\t\t\tntyp = ntyp.Elem()\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Record fields with a tag name, non-anonymous fields, or\n\t\t\t\t// anonymous non-struct fields.\n\t\t\t\tif tagName != \"\" || ntyp == nil || ntyp.Kind() != reflect.Struct {\n\t\t\t\t\tif !exported {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfields = append(fields, newField(f, tagName, other, scan.index, i))\n\t\t\t\t\tif count[t] > 1 {\n\t\t\t\t\t\t// If there were multiple instances, add a second,\n\t\t\t\t\t\t// so that the annihilation code will see a duplicate.\n\t\t\t\t\t\tfields = append(fields, fields[len(fields)-1])\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Queue embedded struct fields for processing with next level,\n\t\t\t\t// but only if the embedded types haven't already been queued.\n\t\t\t\tif nextCount[ntyp] > 0 {\n\t\t\t\t\tnextCount[ntyp] = 2 // exact multiple doesn't matter\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif nextCount == nil {\n\t\t\t\t\tnextCount = map[reflect.Type]int{}\n\t\t\t\t}\n\t\t\t\tnextCount[ntyp] = 1\n\t\t\t\tif count[t] > 1 {\n\t\t\t\t\tnextCount[ntyp] = 2 // exact multiple doesn't matter\n\t\t\t\t}\n\t\t\t\tvar index []int\n\t\t\t\tindex = append(index, scan.index...)\n\t\t\t\tindex = append(index, i)\n\t\t\t\tnext = append(next, fieldScan{ntyp, index})\n\t\t\t}\n\t\t}\n\t}\n\treturn fields, nil\n}\n\nfunc newField(f reflect.StructField, tagName string, other any, index []int, i int) Field {\n\tname := tagName\n\tif name == \"\" {\n\t\tname = f.Name\n\t}\n\tsf := Field{\n\t\tName:        name,\n\t\tNameFromTag: tagName != \"\",\n\t\tType:        f.Type,\n\t\tParsedTag:   other,\n\t\tnameBytes:   []byte(name),\n\t}\n\tsf.equalFold = foldFunc(sf.nameBytes)\n\tsf.Index = append(sf.Index, index...)\n\tsf.Index = append(sf.Index, i)\n\treturn sf\n}\n\n// byName sorts fields using the following criteria, in order:\n// 1. name\n// 2. embedding depth\n// 3. tag presence (preferring a tagged field)\n// 4. index sequence.\ntype byName []Field\n\nfunc (x byName) Len() int { return len(x) }\n\nfunc (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byName) Less(i, j int) bool {\n\tif x[i].Name != x[j].Name {\n\t\treturn x[i].Name < x[j].Name\n\t}\n\tif len(x[i].Index) != len(x[j].Index) {\n\t\treturn len(x[i].Index) < len(x[j].Index)\n\t}\n\tif x[i].NameFromTag != x[j].NameFromTag {\n\t\treturn x[i].NameFromTag\n\t}\n\treturn byIndex(x).Less(i, j)\n}\n\n// byIndex sorts field by index sequence.\ntype byIndex []Field\n\nfunc (x byIndex) Len() int { return len(x) }\n\nfunc (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] }\n\nfunc (x byIndex) Less(i, j int) bool {\n\txi := x[i].Index\n\txj := x[j].Index\n\tln := len(xi)\n\tif l := len(xj); l < ln {\n\t\tln = l\n\t}\n\tfor k := 0; k < ln; k++ {\n\t\tif xi[k] != xj[k] {\n\t\t\treturn xi[k] < xj[k]\n\t\t}\n\t}\n\treturn len(xi) < len(xj)\n}\n\n// dominantField looks through the fields, all of which are known to have the\n// same name, to find the single field that dominates the others using Go's\n// embedding rules, modified by the presence of tags. If there are multiple\n// top-level fields, the boolean will be false: This condition is an error in\n// Go and we skip all the fields.\nfunc dominantField(fs []Field) (Field, bool) {\n\t// The fields are sorted in increasing index-length order, then by presence of tag.\n\t// That means that the first field is the dominant one. We need only check\n\t// for error cases: two fields at top level, either both tagged or neither tagged.\n\tif len(fs) > 1 && len(fs[0].Index) == len(fs[1].Index) && fs[0].NameFromTag == fs[1].NameFromTag {\n\t\treturn Field{}, false\n\t}\n\treturn fs[0], true\n}\n\n// ParseStandardTag extracts the sub-tag named by key, then parses it using the\n// de facto standard format introduced in encoding/json:\n//\n//\t\"-\" means \"ignore this tag\", unless it has options (that is, is followed by a comma),\n//\t    in which case it is treated a name.\n//\t\"<name>\" provides an alternative name for the field\n//\t\"<name>,opt1,opt2,...\" specifies options after the name.\n//\n// The options are returned as a []string.\nfunc ParseStandardTag(key string, t reflect.StructTag) (name string, keep bool, options []string) {\n\ts := t.Get(key)\n\tparts := strings.Split(s, \",\")\n\tif parts[0] == \"-\" && len(parts) == 1 {\n\t\treturn \"\", false, nil\n\t}\n\tif len(parts) > 1 {\n\t\toptions = parts[1:]\n\t}\n\treturn parts[0], true, options\n}\n"
  },
  {
    "path": "docstore/internal/fields/fields_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fields\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n)\n\ntype embed1 struct {\n\tEm1    int\n\tDup    int // annihilates with embed2.Dup\n\tShadow int\n\tembed3\n}\n\ntype embed2 struct {\n\tDup int\n\tembed3\n\tembed4\n}\n\ntype embed3 struct {\n\tEm3 int // annihilated because embed3 is in both embed1 and embed2\n\tembed5\n}\n\ntype embed4 struct {\n\tEm4     int\n\tDup     int // annihilation of Dup in embed1, embed2 hides this Dup\n\t*embed1     // ignored because it occurs at a higher level\n}\n\ntype embed5 struct {\n\tx int\n}\n\ntype Anonymous int\n\ntype S1 struct {\n\tExported   int\n\tunexported int\n\tShadow     int // shadows S1.Shadow\n\tembed1\n\t*embed2\n\tAnonymous\n}\n\ntype Time struct {\n\ttime.Time\n}\n\nvar intType = reflect.TypeFor[int]()\n\nfunc field(name string, tval any, index ...int) *Field {\n\treturn &Field{\n\t\tName:      name,\n\t\tType:      reflect.TypeOf(tval),\n\t\tIndex:     index,\n\t\tParsedTag: []string(nil),\n\t}\n}\n\nfunc tfield(name string, tval any, index ...int) *Field {\n\treturn &Field{\n\t\tName:        name,\n\t\tType:        reflect.TypeOf(tval),\n\t\tIndex:       index,\n\t\tNameFromTag: true,\n\t\tParsedTag:   []string(nil),\n\t}\n}\n\nfunc TestFieldsNoTags(t *testing.T) {\n\tc := NewCache(nil, nil, nil)\n\tgot, err := c.Fields(reflect.TypeFor[S1]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := []*Field{\n\t\tfield(\"Exported\", int(0), 0),\n\t\tfield(\"Shadow\", int(0), 2),\n\t\tfield(\"Em1\", int(0), 3, 0),\n\t\tfield(\"Em4\", int(0), 4, 2, 0),\n\t\tfield(\"Anonymous\", Anonymous(0), 5),\n\t}\n\tfor _, f := range want {\n\t\tf.ParsedTag = nil\n\t}\n\tif msg, ok := compareFields(got, want); !ok {\n\t\tt.Error(msg)\n\t}\n}\n\nfunc TestAgainstJSONEncodingNoTags(t *testing.T) {\n\t// Demonstrates that this package produces the same set of fields as encoding/json.\n\ts1 := S1{\n\t\tExported:   1,\n\t\tunexported: 2,\n\t\tShadow:     3,\n\t\tembed1: embed1{\n\t\t\tEm1:    4,\n\t\t\tDup:    5,\n\t\t\tShadow: 6,\n\t\t\tembed3: embed3{\n\t\t\t\tEm3:    7,\n\t\t\t\tembed5: embed5{x: 8},\n\t\t\t},\n\t\t},\n\t\tembed2: &embed2{\n\t\t\tDup: 9,\n\t\t\tembed3: embed3{\n\t\t\t\tEm3:    10,\n\t\t\t\tembed5: embed5{x: 11},\n\t\t\t},\n\t\t\tembed4: embed4{\n\t\t\t\tEm4:    12,\n\t\t\t\tDup:    13,\n\t\t\t\tembed1: &embed1{Em1: 14},\n\t\t\t},\n\t\t},\n\t\tAnonymous: Anonymous(15),\n\t}\n\tvar want S1\n\twant.embed2 = &embed2{} // need this because reflection won't create it\n\tjsonRoundTrip(t, s1, &want)\n\tvar got S1\n\tgot.embed2 = &embed2{}\n\tfields, err := NewCache(nil, nil, nil).Fields(reflect.TypeFor[S1]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tsetFields(fields, &got, s1)\n\tif !cmp.Equal(got, want,\n\t\tcmp.AllowUnexported(S1{}, embed1{}, embed2{}, embed3{}, embed4{}, embed5{})) {\n\t\tt.Errorf(\"got\\n%+v\\nwant\\n%+v\", got, want)\n\t}\n}\n\n// Tests use of LeafTypes parameter to NewCache\nfunc TestAgainstJSONEncodingEmbeddedTime(t *testing.T) {\n\ttimeLeafFn := func(t reflect.Type) bool {\n\t\treturn t == reflect.TypeFor[time.Time]()\n\t}\n\t// Demonstrates that this package can produce the same set of\n\t// fields as encoding/json for a struct with an embedded time.Time.\n\tnow := time.Now().UTC()\n\tmyt := Time{\n\t\tnow,\n\t}\n\tvar want Time\n\tjsonRoundTrip(t, myt, &want)\n\tvar got Time\n\tfields, err := NewCache(nil, nil, timeLeafFn).Fields(reflect.TypeFor[Time]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tsetFields(fields, &got, myt)\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got\\n%+v\\nwant\\n%+v\", got, want)\n\t}\n}\n\ntype S2 struct {\n\tNoTag      int\n\tXXX        int           `json:\"tag\"` // tag name takes precedence\n\tAnonymous  `json:\"anon\"` // anonymous non-structs also get their name from the tag\n\tunexported int           `json:\"tag\"`\n\tEmbed      `json:\"em\"`   // embedded structs with tags become fields\n\tTag        int\n\tYYY        int `json:\"Tag\"` // tag takes precedence over untagged field of the same name\n\tEmpty      int `json:\"\"`    // empty tag is noop\n\ttEmbed1\n\ttEmbed2\n}\n\ntype Embed struct {\n\tEm int\n}\n\ntype tEmbed1 struct {\n\tDup int\n\tX   int `json:\"Dup2\"`\n}\n\ntype tEmbed2 struct {\n\tY int `json:\"Dup\"`  // takes precedence over tEmbed1.Dup because it is tagged\n\tZ int `json:\"Dup2\"` // same name as tEmbed1.X and both tagged, so ignored\n}\n\nfunc jsonTagParser(t reflect.StructTag) (name string, keep bool, other any, err error) {\n\tn, k, o := ParseStandardTag(\"json\", t)\n\treturn n, k, o, nil\n}\n\nfunc validateFunc(t reflect.Type) (err error) {\n\tif t.Kind() != reflect.Struct {\n\t\treturn errors.New(\"non-struct type used\")\n\t}\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tif t.Field(i).Type.Kind() == reflect.Slice {\n\t\t\treturn fmt.Errorf(\"slice field found at field %s on struct %s\", t.Field(i).Name, t.Name())\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc TestFieldsWithTags(t *testing.T) {\n\tgot, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S2]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := []*Field{\n\t\tfield(\"NoTag\", int(0), 0),\n\t\ttfield(\"tag\", int(0), 1),\n\t\ttfield(\"anon\", Anonymous(0), 2),\n\t\ttfield(\"em\", Embed{}, 4),\n\t\ttfield(\"Tag\", int(0), 6),\n\t\tfield(\"Empty\", int(0), 7),\n\t\ttfield(\"Dup\", int(0), 8, 0),\n\t}\n\tif msg, ok := compareFields(got, want); !ok {\n\t\tt.Error(msg)\n\t}\n}\n\nfunc TestAgainstJSONEncodingWithTags(t *testing.T) {\n\t// Demonstrates that this package produces the same set of fields as encoding/json.\n\ts2 := S2{\n\t\tNoTag:     1,\n\t\tXXX:       2,\n\t\tAnonymous: 3,\n\t\tEmbed: Embed{\n\t\t\tEm: 4,\n\t\t},\n\t\ttEmbed1: tEmbed1{\n\t\t\tDup: 5,\n\t\t\tX:   6,\n\t\t},\n\t\ttEmbed2: tEmbed2{\n\t\t\tY: 7,\n\t\t\tZ: 8,\n\t\t},\n\t}\n\tvar want S2\n\tjsonRoundTrip(t, s2, &want)\n\tvar got S2\n\tfields, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S2]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tsetFields(fields, &got, s2)\n\tif !cmp.Equal(got, want, cmp.AllowUnexported(S2{})) {\n\t\tt.Errorf(\"got\\n%+v\\nwant\\n%+v\", got, want)\n\t}\n}\n\nfunc TestUnexportedAnonymousNonStruct(t *testing.T) {\n\t// An unexported anonymous non-struct field should not be recorded.\n\t// This is currently a bug in encoding/json.\n\t// https://github.com/golang/go/issues/18009\n\ttype (\n\t\tu int\n\t\tv int\n\t\tS struct {\n\t\t\tu\n\t\t\tv `json:\"x\"`\n\t\t\tint\n\t\t}\n\t)\n\n\tgot, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(got) != 0 {\n\t\tt.Errorf(\"got %d fields, want 0\", len(got))\n\t}\n}\n\nfunc TestUnexportedAnonymousStruct(t *testing.T) {\n\t// An unexported anonymous struct with a tag is ignored.\n\t// This is currently a bug in encoding/json.\n\t// https://github.com/golang/go/issues/18009\n\ttype (\n\t\ts1 struct{ X int }\n\t\tS2 struct {\n\t\t\ts1 `json:\"Y\"`\n\t\t}\n\t)\n\tgot, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S2]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(got) != 0 {\n\t\tt.Errorf(\"got %d fields, want 0\", len(got))\n\t}\n}\n\nfunc TestDominantField(t *testing.T) {\n\t// With fields sorted by index length and then by tag presence,\n\t// the dominant field is always the first. Make sure all error\n\t// cases are caught.\n\tfor _, test := range []struct {\n\t\tfields []Field\n\t\twantOK bool\n\t}{\n\t\t// A single field is OK.\n\t\t{[]Field{{Index: []int{0}}}, true},\n\t\t{[]Field{{Index: []int{0}, NameFromTag: true}}, true},\n\t\t// A single field at top level is OK.\n\t\t{[]Field{{Index: []int{0}}, {Index: []int{1, 0}}}, true},\n\t\t{[]Field{{Index: []int{0}}, {Index: []int{1, 0}, NameFromTag: true}}, true},\n\t\t{[]Field{{Index: []int{0}, NameFromTag: true}, {Index: []int{1, 0}, NameFromTag: true}}, true},\n\t\t// A single tagged field is OK.\n\t\t{[]Field{{Index: []int{0}, NameFromTag: true}, {Index: []int{1}}}, true},\n\t\t// Two untagged fields at the same level is an error.\n\t\t{[]Field{{Index: []int{0}}, {Index: []int{1}}}, false},\n\t\t// Two tagged fields at the same level is an error.\n\t\t{[]Field{{Index: []int{0}, NameFromTag: true}, {Index: []int{1}, NameFromTag: true}}, false},\n\t} {\n\t\t_, gotOK := dominantField(test.fields)\n\t\tif gotOK != test.wantOK {\n\t\t\tt.Errorf(\"%v: got %t, want %t\", test.fields, gotOK, test.wantOK)\n\t\t}\n\t}\n}\n\nfunc TestIgnore(t *testing.T) {\n\ttype S struct {\n\t\tX int `json:\"-\"`\n\t\tY int `json:\"-,\"` // field with name \"-\"\n\t}\n\tgot, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif len(got) != 1 {\n\t\tt.Errorf(\"got %d fields, want 1\", len(got))\n\t}\n}\n\nfunc TestParsedTag(t *testing.T) {\n\ttype S struct {\n\t\tX int `json:\"name,omitempty\"`\n\t}\n\tgot, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := []*Field{\n\t\t{\n\t\t\tName: \"name\", NameFromTag: true, Type: intType,\n\t\t\tIndex: []int{0}, ParsedTag: []string{\"omitempty\"},\n\t\t},\n\t}\n\tif msg, ok := compareFields(got, want); !ok {\n\t\tt.Error(msg)\n\t}\n}\n\nfunc TestValidateFunc(t *testing.T) {\n\ttype MyInvalidStruct struct {\n\t\tA string\n\t\tB []int\n\t}\n\n\t_, err := NewCache(nil, validateFunc, nil).Fields(reflect.TypeFor[MyInvalidStruct]())\n\tif err == nil {\n\t\tt.Fatal(\"expected error, got nil\")\n\t}\n\n\ttype MyValidStruct struct {\n\t\tA string\n\t\tB int\n\t}\n\t_, err = NewCache(nil, validateFunc, nil).Fields(reflect.TypeFor[MyValidStruct]())\n\tif err != nil {\n\t\tt.Fatalf(\"expected nil, got error: %s\\n\", err)\n\t}\n}\n\nfunc compareFields(got []Field, want []*Field) (msg string, ok bool) {\n\tif len(got) != len(want) {\n\t\treturn fmt.Sprintf(\"got %d fields, want %d\", len(got), len(want)), false\n\t}\n\tfor i, g := range got {\n\t\tw := *want[i]\n\t\tif !fieldsEqual(&g, &w) {\n\t\t\treturn fmt.Sprintf(\"got\\n%+v\\nwant\\n%+v\", g, w), false\n\t\t}\n\t}\n\treturn \"\", true\n}\n\n// Need this because Field contains a function, which cannot be compared.\nfunc fieldsEqual(f1, f2 *Field) bool {\n\tif f1 == nil || f2 == nil {\n\t\treturn f1 == f2\n\t}\n\treturn f1.Name == f2.Name &&\n\t\tf1.NameFromTag == f2.NameFromTag &&\n\t\tf1.Type == f2.Type &&\n\t\tcmp.Equal(f1.ParsedTag, f2.ParsedTag)\n}\n\n// Set the fields of dst from those of src.\n// dst must be a pointer to a struct value.\n// src must be a struct value.\nfunc setFields(fields []Field, dst, src any) {\n\tvsrc := reflect.ValueOf(src)\n\tvdst := reflect.ValueOf(dst).Elem()\n\tfor _, f := range fields {\n\t\tfdst := vdst.FieldByIndex(f.Index)\n\t\tfsrc := vsrc.FieldByIndex(f.Index)\n\t\tfdst.Set(fsrc)\n\t}\n}\n\nfunc jsonRoundTrip(t *testing.T, in, out any) {\n\tt.Helper()\n\n\tbytes, err := json.Marshal(in)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := json.Unmarshal(bytes, out); err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n\ntype S3 struct {\n\tS4\n\tAbc        int\n\tAbC        int\n\tTag        int\n\tX          int `json:\"Tag\"`\n\tunexported int\n}\n\ntype S4 struct {\n\tABc int\n\tY   int `json:\"Abc\"` // ignored because of top-level Abc\n}\n\nfunc TestMatchExact(t *testing.T) {\n\tfields, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S3]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, test := range []struct {\n\t\tname string\n\t\twant *Field\n\t}{\n\t\t// Exact match wins.\n\t\t{\"Abc\", field(\"Abc\", int(0), 1)},\n\t\t{\"AbC\", field(\"AbC\", int(0), 2)},\n\t\t{\"ABc\", field(\"ABc\", int(0), 0, 0)},\n\t\t// Matches must be exact.\n\t\t{\"abc\", nil},\n\t\t// Tag name takes precedence over untagged field of the same name.\n\t\t{\"Tag\", tfield(\"Tag\", int(0), 4)},\n\t\t// Unexported fields disappear.\n\t\t{\"unexported\", nil},\n\t\t// Untagged embedded structs disappear.\n\t\t{\"S4\", nil},\n\t} {\n\t\tif got := fields.MatchExact(test.name); !fieldsEqual(got, test.want) {\n\t\t\tt.Errorf(\"match %q:\\ngot  %+v\\nwant %+v\", test.name, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestMatchFold(t *testing.T) {\n\tfields, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S3]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, test := range []struct {\n\t\tname string\n\t\twant *Field\n\t}{\n\t\t// Exact match wins.\n\t\t{\"Abc\", field(\"Abc\", int(0), 1)},\n\t\t{\"AbC\", field(\"AbC\", int(0), 2)},\n\t\t{\"ABc\", field(\"ABc\", int(0), 0, 0)},\n\t\t// If there are multiple matches but no exact match or tag,\n\t\t// the first field wins, lexicographically by index.\n\t\t// Here, \"ABc\" is at a deeper embedding level, but since S4 appears\n\t\t// first in S3, its index precedes the other fields of S3.\n\t\t{\"abc\", field(\"ABc\", int(0), 0, 0)},\n\t\t// Tag name takes precedence over untagged field of the same name.\n\t\t{\"Tag\", tfield(\"Tag\", int(0), 4)},\n\t\t// Unexported fields disappear.\n\t\t{\"unexported\", nil},\n\t\t// Untagged embedded structs disappear.\n\t\t{\"S4\", nil},\n\t} {\n\t\tif got := fields.MatchFold(test.name); !fieldsEqual(got, test.want) {\n\t\t\tt.Errorf(\"match %q:\\ngot  %+v\\nwant %+v\", test.name, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestAgainstJSONMatchingField(t *testing.T) {\n\ts3 := S3{\n\t\tS4:         S4{ABc: 1, Y: 2},\n\t\tAbc:        3,\n\t\tAbC:        4,\n\t\tTag:        5,\n\t\tX:          6,\n\t\tunexported: 7,\n\t}\n\tvar want S3\n\tjsonRoundTrip(t, s3, &want)\n\tv := reflect.ValueOf(want)\n\tfields, err := NewCache(jsonTagParser, nil, nil).Fields(reflect.TypeFor[S3]())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tfor _, test := range []struct {\n\t\tname string\n\t\tgot  int\n\t}{\n\t\t{\"Abc\", 3},\n\t\t{\"AbC\", 4},\n\t\t{\"ABc\", 1},\n\t\t{\"abc\", 1},\n\t\t{\"Tag\", 6},\n\t} {\n\t\tf := fields.MatchFold(test.name)\n\t\tif f == nil {\n\t\t\tt.Fatalf(\"%s: no match\", test.name)\n\t\t}\n\t\tw := v.FieldByIndex(f.Index).Interface()\n\t\tif test.got != w {\n\t\t\tt.Errorf(\"%s: got %d, want %d\", test.name, test.got, w)\n\t\t}\n\t}\n}\n\nfunc TestTagErrors(t *testing.T) {\n\tcalled := false\n\tc := NewCache(func(t reflect.StructTag) (string, bool, any, error) {\n\t\tcalled = true\n\t\ts := t.Get(\"f\")\n\t\tif s == \"bad\" {\n\t\t\treturn \"\", false, nil, errors.New(\"error\")\n\t\t}\n\t\treturn s, true, nil, nil\n\t}, nil, nil)\n\n\ttype T struct {\n\t\tX int `f:\"ok\"`\n\t\tY int `f:\"bad\"`\n\t}\n\n\t_, err := c.Fields(reflect.TypeFor[T]())\n\tif !called {\n\t\tt.Fatal(\"tag parser not called\")\n\t}\n\tif err == nil {\n\t\tt.Error(\"want error, got nil\")\n\t}\n\t// Second time, we should cache the error.\n\tcalled = false\n\t_, err = c.Fields(reflect.TypeFor[T]())\n\tif called {\n\t\tt.Fatal(\"tag parser called on second time\")\n\t}\n\tif err == nil {\n\t\tt.Error(\"want error, got nil\")\n\t}\n}\n"
  },
  {
    "path": "docstore/internal/fields/fold.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fields\n\n// This file was copied from https://go.googlesource.com/go/+/go1.7.3/src/encoding/json/fold.go.\n// Only the license and package were changed.\n\nimport (\n\t\"bytes\"\n\t\"unicode/utf8\"\n)\n\nconst (\n\tcaseMask     = ^byte(0x20) // Mask to ignore case in ASCII.\n\tkelvin       = '\\u212a'\n\tsmallLongEss = '\\u017f'\n)\n\n// foldFunc returns one of four different case folding equivalence\n// functions, from most general (and slow) to fastest:\n//\n// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8\n// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S')\n// 3) asciiEqualFold, no special, but includes non-letters (including _)\n// 4) simpleLetterEqualFold, no specials, no non-letters.\n//\n// The letters S and K are special because they map to 3 runes, not just 2:\n//   - S maps to s and to U+017F 'ſ' Latin small letter long s\n//   - k maps to K and to U+212A 'K' Kelvin sign\n//\n// See https://play.golang.org/p/tTxjOc0OGo\n//\n// The returned function is specialized for matching against s and\n// should only be given s. It's not curried for performance reasons.\nfunc foldFunc(s []byte) func(s, t []byte) bool {\n\tnonLetter := false\n\tspecial := false // special letter\n\tfor _, b := range s {\n\t\tif b >= utf8.RuneSelf {\n\t\t\treturn bytes.EqualFold\n\t\t}\n\t\tupper := b & caseMask\n\t\tif upper < 'A' || upper > 'Z' {\n\t\t\tnonLetter = true\n\t\t} else if upper == 'K' || upper == 'S' {\n\t\t\t// See above for why these letters are special.\n\t\t\tspecial = true\n\t\t}\n\t}\n\tif special {\n\t\treturn equalFoldRight\n\t}\n\tif nonLetter {\n\t\treturn asciiEqualFold\n\t}\n\treturn simpleLetterEqualFold\n}\n\n// equalFoldRight is a specialization of bytes.EqualFold when s is\n// known to be all ASCII (including punctuation), but contains an 's',\n// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t.\n// See comments on foldFunc.\nfunc equalFoldRight(s, t []byte) bool {\n\tfor _, sb := range s {\n\t\tif len(t) == 0 {\n\t\t\treturn false\n\t\t}\n\t\ttb := t[0]\n\t\tif tb < utf8.RuneSelf {\n\t\t\tif sb != tb {\n\t\t\t\tsbUpper := sb & caseMask\n\t\t\t\tif 'A' <= sbUpper && sbUpper <= 'Z' {\n\t\t\t\t\tif sbUpper != tb&caseMask {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tt = t[1:]\n\t\t\tcontinue\n\t\t}\n\t\t// sb is ASCII and t is not. t must be either kelvin\n\t\t// sign or long s; sb must be s, S, k, or K.\n\t\ttr, size := utf8.DecodeRune(t)\n\t\tswitch sb {\n\t\tcase 's', 'S':\n\t\t\tif tr != smallLongEss {\n\t\t\t\treturn false\n\t\t\t}\n\t\tcase 'k', 'K':\n\t\t\tif tr != kelvin {\n\t\t\t\treturn false\n\t\t\t}\n\t\tdefault:\n\t\t\treturn false\n\t\t}\n\t\tt = t[size:]\n\n\t}\n\treturn len(t) <= 0\n}\n\n// asciiEqualFold is a specialization of bytes.EqualFold for use when\n// s is all ASCII (but may contain non-letters) and contains no\n// special-folding letters.\n// See comments on foldFunc.\nfunc asciiEqualFold(s, t []byte) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i, sb := range s {\n\t\ttb := t[i]\n\t\tif sb == tb {\n\t\t\tcontinue\n\t\t}\n\t\tif ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') {\n\t\t\tif sb&caseMask != tb&caseMask {\n\t\t\t\treturn false\n\t\t\t}\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// simpleLetterEqualFold is a specialization of bytes.EqualFold for\n// use when s is all ASCII letters (no underscores, etc) and also\n// doesn't contain 'k', 'K', 's', or 'S'.\n// See comments on foldFunc.\nfunc simpleLetterEqualFold(s, t []byte) bool {\n\tif len(s) != len(t) {\n\t\treturn false\n\t}\n\tfor i, b := range s {\n\t\tif b&caseMask != t[i]&caseMask {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "docstore/internal/fields/fold_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage fields\n\n// This file was copied from https://go.googlesource.com/go/+/go1.7.3/src/encoding/json/fold_test.go.\n// Only the license and package were changed.\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"testing\"\n\t\"unicode/utf8\"\n)\n\nvar foldTests = []struct {\n\tfn   func(s, t []byte) bool\n\ts, t string\n\twant bool\n}{\n\t{equalFoldRight, \"\", \"\", true},\n\t{equalFoldRight, \"a\", \"a\", true},\n\t{equalFoldRight, \"\", \"a\", false},\n\t{equalFoldRight, \"a\", \"\", false},\n\t{equalFoldRight, \"a\", \"A\", true},\n\t{equalFoldRight, \"AB\", \"ab\", true},\n\t{equalFoldRight, \"AB\", \"ac\", false},\n\t{equalFoldRight, \"sbkKc\", \"ſbKKc\", true},\n\t{equalFoldRight, \"SbKkc\", \"ſbKKc\", true},\n\t{equalFoldRight, \"SbKkc\", \"ſbKK\", false},\n\t{equalFoldRight, \"e\", \"é\", false},\n\t{equalFoldRight, \"s\", \"S\", true},\n\n\t{simpleLetterEqualFold, \"\", \"\", true},\n\t{simpleLetterEqualFold, \"abc\", \"abc\", true},\n\t{simpleLetterEqualFold, \"abc\", \"ABC\", true},\n\t{simpleLetterEqualFold, \"abc\", \"ABCD\", false},\n\t{simpleLetterEqualFold, \"abc\", \"xxx\", false},\n\n\t{asciiEqualFold, \"a_B\", \"A_b\", true},\n\t{asciiEqualFold, \"aa@\", \"aa`\", false}, // verify 0x40 and 0x60 aren't case-equivalent\n}\n\nfunc TestFold(t *testing.T) {\n\tfor i, tt := range foldTests {\n\t\tif got := tt.fn([]byte(tt.s), []byte(tt.t)); got != tt.want {\n\t\t\tt.Errorf(\"%d. %q, %q = %v; want %v\", i, tt.s, tt.t, got, tt.want)\n\t\t}\n\t\ttruth := strings.EqualFold(tt.s, tt.t)\n\t\tif truth != tt.want {\n\t\t\tt.Errorf(\"strings.EqualFold doesn't agree with case %d\", i)\n\t\t}\n\t}\n}\n\nfunc TestFoldAgainstUnicode(t *testing.T) {\n\tconst bufSize = 5\n\tbuf1 := make([]byte, 0, bufSize)\n\tbuf2 := make([]byte, 0, bufSize)\n\tvar runes []rune\n\tfor i := 0x20; i <= 0x7f; i++ {\n\t\trunes = append(runes, rune(i))\n\t}\n\trunes = append(runes, kelvin, smallLongEss)\n\n\tfuncs := []struct {\n\t\tname   string\n\t\tfold   func(s, t []byte) bool\n\t\tletter bool // must be ASCII letter\n\t\tsimple bool // must be simple ASCII letter (not 'S' or 'K')\n\t}{\n\t\t{\n\t\t\tname: \"equalFoldRight\",\n\t\t\tfold: equalFoldRight,\n\t\t},\n\t\t{\n\t\t\tname:   \"asciiEqualFold\",\n\t\t\tfold:   asciiEqualFold,\n\t\t\tsimple: true,\n\t\t},\n\t\t{\n\t\t\tname:   \"simpleLetterEqualFold\",\n\t\t\tfold:   simpleLetterEqualFold,\n\t\t\tsimple: true,\n\t\t\tletter: true,\n\t\t},\n\t}\n\n\tfor _, ff := range funcs {\n\t\tfor _, r := range runes {\n\t\t\tif r >= utf8.RuneSelf {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif ff.letter && !isASCIILetter(byte(r)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif ff.simple && (r == 's' || r == 'S' || r == 'k' || r == 'K') {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, r2 := range runes {\n\t\t\t\tbuf1 := append(buf1[:0], 'x')\n\t\t\t\tbuf2 := append(buf2[:0], 'x')\n\t\t\t\tbuf1 = buf1[:1+utf8.EncodeRune(buf1[1:bufSize], r)]\n\t\t\t\tbuf2 = buf2[:1+utf8.EncodeRune(buf2[1:bufSize], r2)]\n\t\t\t\tbuf1 = append(buf1, 'x')\n\t\t\t\tbuf2 = append(buf2, 'x')\n\t\t\t\twant := bytes.EqualFold(buf1, buf2)\n\t\t\t\tif got := ff.fold(buf1, buf2); got != want {\n\t\t\t\t\tt.Errorf(\"%s(%q, %q) = %v; want %v\", ff.name, buf1, buf2, got, want)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc isASCIILetter(b byte) bool {\n\treturn ('A' <= b && b <= 'Z') || ('a' <= b && b <= 'z')\n}\n"
  },
  {
    "path": "docstore/memdocstore/codec.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n\n\t\"gocloud.dev/docstore/driver\"\n)\n\n// encodeDoc encodes a driver.Document as a storedDoc.\nfunc encodeDoc(doc driver.Document) (storedDoc, error) {\n\tvar e encoder\n\tif err := doc.Encode(&e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn storedDoc(e.val.(map[string]any)), nil\n}\n\nfunc encodeValue(v any) (any, error) {\n\tvar e encoder\n\tif err := driver.Encode(reflect.ValueOf(v), &e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.val, nil\n}\n\ntype encoder struct {\n\tval any\n}\n\nfunc (e *encoder) EncodeNil()            { e.val = nil }\nfunc (e *encoder) EncodeBool(x bool)     { e.val = x }\nfunc (e *encoder) EncodeInt(x int64)     { e.val = x }\nfunc (e *encoder) EncodeUint(x uint64)   { e.val = int64(x) }\nfunc (e *encoder) EncodeBytes(x []byte)  { e.val = x }\nfunc (e *encoder) EncodeFloat(x float64) { e.val = x }\nfunc (e *encoder) EncodeString(x string) { e.val = x }\nfunc (e *encoder) ListIndex(int)         { panic(\"impossible\") }\nfunc (e *encoder) MapKey(string)         { panic(\"impossible\") }\n\nvar typeOfGoTime = reflect.TypeFor[time.Time]()\n\nfunc (e *encoder) EncodeSpecial(v reflect.Value) (bool, error) {\n\tif v.Type() == typeOfGoTime {\n\t\te.val = v.Interface()\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\nfunc (e *encoder) EncodeList(n int) driver.Encoder {\n\t// All slices and arrays are encoded as []interface{}\n\ts := make([]any, n)\n\te.val = s\n\treturn &listEncoder{s: s}\n}\n\ntype listEncoder struct {\n\ts []any\n\tencoder\n}\n\nfunc (e *listEncoder) ListIndex(i int) { e.s[i] = e.val }\n\ntype mapEncoder struct {\n\tm map[string]any\n\tencoder\n}\n\nfunc (e *encoder) EncodeMap(n int) driver.Encoder {\n\tm := make(map[string]any, n)\n\te.val = m\n\treturn &mapEncoder{m: m}\n}\n\nfunc (e *mapEncoder) MapKey(k string) { e.m[k] = e.val }\n\n////////////////////////////////////////////////////////////////\n\n// decodeDoc decodes m into ddoc.\nfunc decodeDoc(m storedDoc, ddoc driver.Document, fps [][]string) error {\n\tvar m2 map[string]any\n\tif len(fps) == 0 {\n\t\tm2 = m\n\t} else {\n\t\t// Make a document to decode from that has only the field paths.\n\t\t// (We don't need the key field because ddoc must already have it.)\n\t\tm2 = map[string]any{}\n\t\tfor _, fp := range fps {\n\t\t\tval, err := getAtFieldPath(m, fp, false)\n\t\t\tif err != nil {\n\t\t\t\tif gcerrors.Code(err) == gcerrors.NotFound {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif err := setAtFieldPath(m2, fp, val); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn ddoc.Decode(decoder{m2})\n}\n\ntype decoder struct {\n\tval any\n}\n\nfunc (d decoder) String() string {\n\treturn fmt.Sprint(d.val)\n}\n\nfunc (d decoder) AsNull() bool {\n\treturn d.val == nil\n}\n\nfunc (d decoder) AsBool() (bool, bool) {\n\tb, ok := d.val.(bool)\n\treturn b, ok\n}\n\nfunc (d decoder) AsString() (string, bool) {\n\ts, ok := d.val.(string)\n\treturn s, ok\n}\n\nfunc (d decoder) AsInt() (int64, bool) {\n\ti, ok := d.val.(int64)\n\treturn i, ok\n}\n\nfunc (d decoder) AsUint() (uint64, bool) {\n\ti, ok := d.val.(int64)\n\treturn uint64(i), ok\n}\n\nfunc (d decoder) AsFloat() (float64, bool) {\n\tf, ok := d.val.(float64)\n\treturn f, ok\n}\n\nfunc (d decoder) AsBytes() ([]byte, bool) {\n\tbs, ok := d.val.([]byte)\n\treturn bs, ok\n}\n\nfunc (d decoder) AsInterface() (any, error) {\n\treturn d.val, nil\n}\n\nfunc (d decoder) ListLen() (int, bool) {\n\tif s, ok := d.val.([]any); ok {\n\t\treturn len(s), true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) DecodeList(f func(i int, d2 driver.Decoder) bool) {\n\tfor i, e := range d.val.([]any) {\n\t\tif !f(i, decoder{e}) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (d decoder) MapLen() (int, bool) {\n\tif m, ok := d.val.(map[string]any); ok {\n\t\treturn len(m), true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) DecodeMap(f func(key string, d2 driver.Decoder, _ bool) bool) {\n\tfor k, v := range d.val.(map[string]any) {\n\t\tif !f(k, decoder{v}, true) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (d decoder) AsSpecial(v reflect.Value) (bool, any, error) {\n\tif v.Type() == typeOfGoTime {\n\t\treturn true, d.val, nil\n\t}\n\treturn false, nil, nil\n}\n"
  },
  {
    "path": "docstore/memdocstore/codec_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/docstore/drivertest\"\n)\n\ntype aStruct struct {\n\tX int\n\tembed\n\tZ *bool\n\tW uint\n\tT time.Time\n\tL []int\n\tF float32\n\tB []byte\n}\n\ntype embed struct {\n\tY string\n}\n\nfunc TestEncodeDoc(t *testing.T) {\n\tvar b bool = true\n\ttm := time.Now()\n\tfor _, test := range []struct {\n\t\tin   any\n\t\twant storedDoc\n\t}{\n\t\t{\n\t\t\tin: map[string]any{\n\t\t\t\t\"x\": map[int]any{\n\t\t\t\t\t1: \"a\",\n\t\t\t\t\t2: 17,\n\t\t\t\t\t3: []float32{1.0, 2.5},\n\t\t\t\t\t4: map[string]bool{\"false\": false, \"true\": true},\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: storedDoc{\n\t\t\t\t\"x\": map[string]any{\n\t\t\t\t\t\"1\": \"a\",\n\t\t\t\t\t\"2\": int64(17),\n\t\t\t\t\t\"3\": []any{float64(1.0), float64(2.5)},\n\t\t\t\t\t\"4\": map[string]any{\"false\": false, \"true\": true},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tin: &aStruct{\n\t\t\t\tX:     3,\n\t\t\t\tembed: embed{Y: \"y\"},\n\t\t\t\tZ:     &b,\n\t\t\t\tW:     33,\n\t\t\t\tT:     tm,\n\t\t\t\tL:     []int{4, 5},\n\t\t\t\tF:     2.5,\n\t\t\t\tB:     []byte(\"abc\"),\n\t\t\t},\n\t\t\twant: storedDoc{\n\t\t\t\t\"X\": int64(3),\n\t\t\t\t\"Y\": \"y\",\n\t\t\t\t\"Z\": true,\n\t\t\t\t\"W\": int64(33),\n\t\t\t\t\"T\": tm,\n\t\t\t\t\"L\": []any{int64(4), int64(5)},\n\t\t\t\t\"F\": 2.5,\n\t\t\t\t\"B\": []byte(\"abc\"),\n\t\t\t},\n\t\t},\n\t} {\n\t\tdoc := drivertest.MustDocument(test.in)\n\t\tgot, err := encodeDoc(doc)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif diff := cmp.Diff(got, test.want); diff != \"\" {\n\t\t\tt.Errorf(\"%+v: %s\", test.in, diff)\n\t\t}\n\t}\n}\n\nfunc TestDecodeDoc(t *testing.T) {\n\tvar b bool = true\n\ttm := time.Now()\n\tfor _, test := range []struct {\n\t\tin   storedDoc\n\t\tval  any\n\t\twant any\n\t}{\n\t\t{\n\t\t\tstoredDoc{\n\t\t\t\t\"x\": map[string]any{\n\t\t\t\t\t\"1\": \"a\",\n\t\t\t\t\t\"2\": int64(17),\n\t\t\t\t\t\"3\": []any{float64(1.0), float64(2.5)},\n\t\t\t\t\t\"4\": map[string]any{\"false\": false, \"true\": true},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]any{},\n\t\t\tmap[string]any{\n\t\t\t\t\"x\": map[string]any{\n\t\t\t\t\t\"1\": \"a\",\n\t\t\t\t\t\"2\": int64(17),\n\t\t\t\t\t\"3\": []any{1.0, 2.5},\n\t\t\t\t\t\"4\": map[string]any{\"false\": false, \"true\": true},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tstoredDoc{\n\t\t\t\t\"X\": int64(3),\n\t\t\t\t\"Y\": \"y\",\n\t\t\t\t\"Z\": true,\n\t\t\t\t\"W\": int64(33),\n\t\t\t\t\"T\": tm,\n\t\t\t\t\"L\": []any{int64(4), int64(5)},\n\t\t\t\t\"F\": 2.5,\n\t\t\t\t\"B\": []byte(\"abc\"),\n\t\t\t},\n\t\t\t&aStruct{},\n\t\t\t&aStruct{\n\t\t\t\tX:     3,\n\t\t\t\tembed: embed{Y: \"y\"},\n\t\t\t\tZ:     &b,\n\t\t\t\tW:     33,\n\t\t\t\tT:     tm,\n\t\t\t\tL:     []int{4, 5},\n\t\t\t\tF:     2.5,\n\t\t\t\tB:     []byte(\"abc\"),\n\t\t\t},\n\t\t},\n\t} {\n\t\tgot := test.val\n\t\tdoc := drivertest.MustDocument(test.val)\n\t\tif err := decodeDoc(test.in, doc, nil); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif diff := cmp.Diff(got, test.want, cmp.AllowUnexported(aStruct{})); diff != \"\" {\n\t\t\tt.Errorf(\"%+v: %s\", test.in, diff)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/memdocstore/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/memdocstore\"\n)\n\nfunc ExampleOpenCollection() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\tcoll, err := memdocstore.OpenCollection(\"keyField\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\t// Output:\n}\n\nfunc ExampleOpenCollectionWithKeyFunc() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\ttype HighScore struct {\n\t\tGame   string\n\t\tPlayer string\n\t}\n\n\t// The name of a document is constructed from the Game and Player fields.\n\tnameFromDocument := func(doc docstore.Document) any {\n\t\ths := doc.(*HighScore)\n\t\treturn hs.Game + \"|\" + hs.Player\n\t}\n\n\tcoll, err := memdocstore.OpenCollectionWithKeyFunc(nameFromDocument, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\t// Output:\n}\n\nfunc Example_openCollectionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/docstore/memdocstore\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// docstore.OpenCollection creates a *docstore.Collection from a URL.\n\tcoll, err := docstore.OpenCollection(ctx, \"mem://collection/keyField\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\t// Output:\n}\n"
  },
  {
    "path": "docstore/memdocstore/mem.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package memdocstore provides an in-process in-memory implementation of the docstore\n// API. It is suitable for local development and testing.\n//\n// Every document in a memdocstore collection has a unique primary key. The primary\n// key values need not be strings; they may be any comparable Go value.\n//\n// # Action Lists\n//\n// Action lists are executed concurrently. Each action in an action list is executed\n// in a separate goroutine.\n//\n// memdocstore supports atomic writes. When using AtomicWrites(), all write actions\n// in the action list are executed atomically - either all succeed or all fail together.\n//\n// memdocstore calls the BeforeDo function of an ActionList once before executing the\n// actions. Its As function never returns true.\n//\n// # URLs\n//\n// For docstore.OpenCollection, memdocstore registers for the scheme\n// \"mem\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\npackage memdocstore // import \"gocloud.dev/docstore/memdocstore\"\n\nimport (\n\t\"context\"\n\t\"encoding/gob\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// Options are optional arguments to the OpenCollection functions.\ntype Options struct {\n\t// The name of the field holding the document revision.\n\t// Defaults to docstore.DefaultRevisionField.\n\tRevisionField string\n\n\t// The maximum number of concurrent goroutines started for a single call to\n\t// ActionList.Do. If less than 1, there is no limit.\n\tMaxOutstandingActions int\n\n\t// The filename associated with this collection.\n\t// When a collection is opened with a non-nil filename, the collection\n\t// is loaded from the file if it exists. Otherwise, an empty collection is created.\n\t// When the collection is closed, its contents are saved to the file.\n\tFilename string\n\n\t// AllowNestedSliceQueries allows querying into nested slices.\n\t// If true queries for a field path which points to a slice will return\n\t// true if any element of the slice has a value that validates with the operator.\n\t// This makes the memdocstore more compatible with MongoDB,\n\t// but other providers may not support this feature.\n\tAllowNestedSliceQueries bool\n\n\t// Call this function when the collection is closed.\n\t// For internal use only.\n\tonClose func()\n}\n\n// TODO(jba): make this package thread-safe.\n\n// OpenCollection creates a *docstore.Collection backed by memory. keyField is the\n// document field holding the primary key of the collection.\nfunc OpenCollection(keyField string, opts *Options) (*docstore.Collection, error) {\n\tc, err := newCollection(keyField, nil, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(c), nil\n}\n\n// OpenCollectionWithKeyFunc creates a *docstore.Collection backed by memory. keyFunc takes\n// a document and returns the document's primary key. It should return nil if the\n// document is missing the information to construct a key. This will cause all\n// actions, even Create, to fail.\n//\n// For the collection to be usable with Query.Delete and Query.Update,\n// keyFunc must work with map[string]interface{} as well as whatever\n// struct type the collection normally uses (if any).\nfunc OpenCollectionWithKeyFunc(keyFunc func(docstore.Document) any, opts *Options) (*docstore.Collection, error) {\n\tc, err := newCollection(\"\", keyFunc, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(c), nil\n}\n\nfunc newCollection(keyField string, keyFunc func(docstore.Document) any, opts *Options) (driver.Collection, error) {\n\tif keyField == \"\" && keyFunc == nil {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"must provide either keyField or keyFunc\")\n\t}\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif opts.RevisionField == \"\" {\n\t\topts.RevisionField = docstore.DefaultRevisionField\n\t}\n\tdocs, err := loadDocs(opts.Filename)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &collection{\n\t\tkeyField:    keyField,\n\t\tkeyFunc:     keyFunc,\n\t\tdocs:        docs,\n\t\topts:        opts,\n\t\tcurRevision: 0,\n\t}, nil\n}\n\n// A storedDoc is a document that is stored in a collection.\n//\n// We store documents as maps from keys to values. Even if the user is using\n// map[string]interface{}, we make our own copy.\n//\n// Using a separate helps distinguish documents coming from a user (those \"on\n// the client,\" in a more typical driver that acts as a network client) from\n// those stored in a collection (those \"on the server\").\ntype storedDoc map[string]any\n\ntype collection struct {\n\tkeyField    string\n\tkeyFunc     func(docstore.Document) any\n\topts        *Options\n\tmu          sync.Mutex\n\tdocs        map[any]storedDoc\n\tcurRevision int64 // incremented on each write\n}\n\nfunc (c *collection) Key(doc driver.Document) (any, error) {\n\tif c.keyField != \"\" {\n\t\tkey, _ := doc.GetField(c.keyField) // no error on missing key, and it will be nil\n\t\treturn key, nil\n\t}\n\tkey := c.keyFunc(doc.Origin)\n\tif key == nil || driver.IsEmptyValue(reflect.ValueOf(key)) {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"missing document key\")\n\t}\n\treturn key, nil\n}\n\nfunc (c *collection) RevisionField() string {\n\treturn c.opts.RevisionField\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (c *collection) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerrors.Code(err)\n}\n\n// RunActions implements driver.RunActions.\nfunc (c *collection) RunActions(ctx context.Context, actions []*driver.Action, opts *driver.RunActionsOptions) driver.ActionListError {\n\terrs := make([]error, len(actions))\n\n\t// Run the actions concurrently with each other.\n\trun := func(as []*driver.Action) {\n\t\tt := driver.NewThrottle(c.opts.MaxOutstandingActions)\n\t\tfor _, a := range as {\n\t\t\tt.Acquire()\n\t\t\tgo func() {\n\t\t\t\tdefer t.Release()\n\t\t\t\terrs[a.Index] = c.runAction(ctx, a)\n\t\t\t}()\n\t\t}\n\t\tt.Wait()\n\t}\n\n\tif opts.BeforeDo != nil {\n\t\tif err := opts.BeforeDo(func(any) bool { return false }); err != nil {\n\t\t\tfor i := range errs {\n\t\t\t\terrs[i] = err\n\t\t\t}\n\t\t\treturn driver.NewActionListError(errs)\n\t\t}\n\t}\n\n\tbeforeGets, gets, writes, writesTx, afterGets := driver.GroupActions(actions)\n\trun(beforeGets)\n\trun(gets)\n\trun(writes)\n\n\t// Handle atomic writes separately to ensure they are truly atomic\n\tif len(writesTx) > 0 {\n\t\tc.runAtomicWrites(ctx, writesTx, errs)\n\t}\n\n\trun(afterGets)\n\treturn driver.NewActionListError(errs)\n}\n\n// runAtomicWrites executes multiple write actions atomically.\n// All writes either succeed or all fail together.\nfunc (c *collection) runAtomicWrites(ctx context.Context, actions []*driver.Action, errs []error) {\n\t// Stop if the context is done.\n\tif ctx.Err() != nil {\n\t\tfor _, a := range actions {\n\t\t\terrs[a.Index] = ctx.Err()\n\t\t}\n\t\treturn\n\t}\n\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\n\t// First, validate all actions and collect current documents\n\ttype actionInfo struct {\n\t\taction  *driver.Action\n\t\tcurrent storedDoc\n\t\texists  bool\n\t}\n\n\tactionInfos := make([]actionInfo, len(actions))\n\tfor i, a := range actions {\n\t\tinfo := &actionInfos[i]\n\t\tinfo.action = a\n\n\t\tif a.Key != nil {\n\t\t\tinfo.current, info.exists = c.docs[a.Key]\n\t\t}\n\n\t\t// Check for NotFound errors\n\t\tif !info.exists && (a.Kind == driver.Replace || a.Kind == driver.Update || a.Kind == driver.Get) {\n\t\t\tfor _, a2 := range actions {\n\t\t\t\terrs[a2.Index] = gcerr.Newf(gcerr.NotFound, nil, \"document with key %v does not exist\", a.Key)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Check revision conflicts\n\t\tif err := c.checkRevision(a.Doc, info.current); err != nil {\n\t\t\tfor _, a2 := range actions {\n\t\t\t\terrs[a2.Index] = err\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Now execute all actions atomically\n\tfor _, info := range actionInfos {\n\t\tif err := c.executeAction(info.action, info.current, info.exists); err != nil {\n\t\t\t// If any action fails, mark all actions as failed\n\t\t\tfor _, a2 := range actions {\n\t\t\t\terrs[a2.Index] = err\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// runAction executes a single action.\nfunc (c *collection) runAction(ctx context.Context, a *driver.Action) error {\n\t// Stop if the context is done.\n\tif ctx.Err() != nil {\n\t\treturn ctx.Err()\n\t}\n\t// Get the key from the doc so we can look it up in the map.\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\t// If there is a key, get the current document with that key.\n\tvar (\n\t\tcurrent storedDoc\n\t\texists  bool\n\t)\n\tif a.Key != nil {\n\t\tcurrent, exists = c.docs[a.Key]\n\t}\n\t// Check for a NotFound error.\n\tif !exists && (a.Kind == driver.Replace || a.Kind == driver.Update || a.Kind == driver.Get) {\n\t\treturn gcerr.Newf(gcerr.NotFound, nil, \"document with key %v does not exist\", a.Key)\n\t}\n\n\t// Check revision conflicts\n\tif a.Kind != driver.Get && a.Kind != driver.Create {\n\t\tif err := c.checkRevision(a.Doc, current); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Execute the action for Get\n\tif a.Kind == driver.Get {\n\t\t// Handle Get separately since it doesn't modify the document.\n\t\t// We've already retrieved the document into current, above.\n\t\t// Now we copy its fields into the user-provided document.\n\t\treturn decodeDoc(current, a.Doc, a.FieldPaths)\n\t}\n\n\treturn c.executeAction(a, current, exists)\n}\n\n// executeAction executes a single action. Must be called with the lock held.\n// This method is shared between runAction and runAtomicWrites to eliminate code duplication.\nfunc (c *collection) executeAction(a *driver.Action, current storedDoc, exists bool) error {\n\tswitch a.Kind {\n\tcase driver.Create:\n\t\t// It is an error to attempt to create an existing document.\n\t\tif exists {\n\t\t\treturn gcerr.Newf(gcerr.AlreadyExists, nil, \"Create: document with key %v exists\", a.Key)\n\t\t}\n\t\t// If the user didn't supply a value for the key field, create a new one.\n\t\tif a.Key == nil {\n\t\t\ta.Key = driver.UniqueString()\n\t\t\t// Set the new key in the document.\n\t\t\tif err := a.Doc.SetField(c.keyField, a.Key); err != nil {\n\t\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"cannot set key field %q\", c.keyField)\n\t\t\t}\n\t\t}\n\t\tfallthrough\n\n\tcase driver.Replace, driver.Put:\n\t\tdoc, err := encodeDoc(a.Doc)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif a.Doc.HasField(c.opts.RevisionField) {\n\t\t\tc.changeRevision(doc)\n\t\t\tif err := a.Doc.SetField(c.opts.RevisionField, doc[c.opts.RevisionField]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tc.docs[a.Key] = doc\n\n\tcase driver.Delete:\n\t\tdelete(c.docs, a.Key)\n\n\tcase driver.Update:\n\t\tif err := c.update(current, a.Mods); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif a.Doc.HasField(c.opts.RevisionField) {\n\t\t\tc.changeRevision(current)\n\t\t\tif err := a.Doc.SetField(c.opts.RevisionField, current[c.opts.RevisionField]); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\tdefault:\n\t\treturn gcerr.Newf(gcerr.Internal, nil, \"unknown kind %v\", a.Kind)\n\t}\n\treturn nil\n}\n\n// Must be called with the lock held.\n// Does not change the stored doc's revision field; that is up to the caller.\nfunc (c *collection) update(doc storedDoc, mods []driver.Mod) error {\n\t// Sort mods by first field path element so tests are deterministic.\n\tsort.Slice(mods, func(i, j int) bool { return mods[i].FieldPath[0] < mods[j].FieldPath[0] })\n\n\t// To make update atomic, we first convert the actions into a form that can't\n\t// fail.\n\ttype guaranteedMod struct {\n\t\tparentMap    map[string]any // the map holding the key to be modified\n\t\tkey          string\n\t\tencodedValue any // the value after encoding\n\t}\n\n\tgmods := make([]guaranteedMod, len(mods))\n\tvar err error\n\tfor i, mod := range mods {\n\t\tgmod := &gmods[i]\n\t\t// Check that the field path is valid. That is, every component of the path\n\t\t// but the last refers to a map, and no component along the way is nil.\n\t\tif gmod.parentMap, err = getParentMap(doc, mod.FieldPath, false); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgmod.key = mod.FieldPath[len(mod.FieldPath)-1]\n\t\tif inc, ok := mod.Value.(driver.IncOp); ok {\n\t\t\tamt, err := encodeValue(inc.Amount)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif gmod.encodedValue, err = add(gmod.parentMap[gmod.key], amt); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else if mod.Value != nil {\n\t\t\t// Make sure the value encodes successfully.\n\t\t\tif gmod.encodedValue, err = encodeValue(mod.Value); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\t// Now execute the guaranteed mods.\n\tfor _, m := range gmods {\n\t\tif m.encodedValue == nil {\n\t\t\tdelete(m.parentMap, m.key)\n\t\t} else {\n\t\t\tm.parentMap[m.key] = m.encodedValue\n\t\t}\n\t}\n\treturn nil\n}\n\n// Add two encoded numbers.\n// Since they're encoded, they are either int64 or float64.\n// Allow adding a float to an int, producing a float.\n// TODO(jba): see how other drivers handle that.\nfunc add(x, y any) (any, error) {\n\tif x == nil {\n\t\treturn y, nil\n\t}\n\tswitch x := x.(type) {\n\tcase int64:\n\t\tswitch y := y.(type) {\n\t\tcase int64:\n\t\t\treturn x + y, nil\n\t\tcase float64:\n\t\t\treturn float64(x) + y, nil\n\t\tdefault:\n\t\t\t// This shouldn't happen because it should be checked by docstore.\n\t\t\treturn nil, gcerr.Newf(gcerr.Internal, nil, \"bad increment aount type %T\", y)\n\t\t}\n\tcase float64:\n\t\tswitch y := y.(type) {\n\t\tcase int64:\n\t\t\treturn x + float64(y), nil\n\t\tcase float64:\n\t\t\treturn x + y, nil\n\t\tdefault:\n\t\t\t// This shouldn't happen because it should be checked by docstore.\n\t\t\treturn nil, gcerr.Newf(gcerr.Internal, nil, \"bad increment aount type %T\", y)\n\t\t}\n\tdefault:\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"value %v being incremented not int64 or float64\", x)\n\t}\n}\n\n// Must be called with the lock held.\nfunc (c *collection) changeRevision(doc storedDoc) {\n\tc.curRevision++\n\tdoc[c.opts.RevisionField] = c.curRevision\n}\n\nfunc (c *collection) checkRevision(arg driver.Document, current storedDoc) error {\n\tif current == nil {\n\t\treturn nil // no existing document or the incoming doc has no revision\n\t}\n\tcurRev, ok := current[c.opts.RevisionField]\n\tif !ok {\n\t\treturn nil // there is no revision to check\n\t}\n\tcurRev = curRev.(int64)\n\tr, err := arg.GetField(c.opts.RevisionField)\n\tif err != nil || r == nil {\n\t\treturn nil // no incoming revision information: nothing to check\n\t}\n\twantRev, ok := r.(int64)\n\tif !ok {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"revision field %s is not an int64\", c.opts.RevisionField)\n\t}\n\tif wantRev != curRev {\n\t\treturn gcerr.Newf(gcerr.FailedPrecondition, nil, \"mismatched revisions: want %d, current %d\", wantRev, curRev)\n\t}\n\treturn nil\n}\n\n// getAtFieldPath gets the value of m at fp. It returns an error if fp is invalid.\n// If nested is true compare against all elements of a slice, see AllowNestedSliceQueries\n// (see getParentMap).\nfunc getAtFieldPath(m map[string]any, fp []string, nested bool) (result any, err error) {\n\tvar get func(m any, name string) any\n\tget = func(m any, name string) any {\n\t\tswitch m := m.(type) {\n\t\tcase map[string]any:\n\t\t\treturn m[name]\n\t\tcase []any:\n\t\t\tif !nested {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tvar result []any\n\t\t\tfor _, e := range m {\n\t\t\t\tnext := get(e, name)\n\t\t\t\t// If we have slices within slices the compare function does not see the nested slices.\n\t\t\t\t// Changing the compare function to be recursive would be more effort than flattening the slices here.\n\t\t\t\tsliced, ok := next.([]any)\n\t\t\t\tif ok {\n\t\t\t\t\tresult = append(result, sliced...)\n\t\t\t\t} else {\n\t\t\t\t\tresult = append(result, next)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\treturn nil\n\t}\n\tresult = m\n\tfor _, k := range fp {\n\t\tnext := get(result, k)\n\t\tif next == nil {\n\t\t\treturn nil, gcerr.Newf(gcerr.NotFound, nil, \"field %s not found\", strings.Join(fp, \".\"))\n\t\t}\n\t\tresult = next\n\t}\n\treturn result, nil\n}\n\n// setAtFieldPath sets m's value at fp to val. It creates intermediate maps as\n// needed. It returns an error if a non-final component of fp does not denote a map.\nfunc setAtFieldPath(m map[string]any, fp []string, val any) error {\n\tm2, err := getParentMap(m, fp, true)\n\tif err != nil {\n\t\treturn err\n\t}\n\tm2[fp[len(fp)-1]] = val\n\treturn nil\n}\n\n// getParentMap returns the map that directly contains the given field path;\n// that is, the value of m at the field path that excludes the last component\n// of fp. If a non-map is encountered along the way, an InvalidArgument error is\n// returned. If nil is encountered, nil is returned unless create is true, in\n// which case a map is added at that point.\nfunc getParentMap(m map[string]any, fp []string, create bool) (map[string]any, error) {\n\tvar ok bool\n\tfor _, k := range fp[:len(fp)-1] {\n\t\tif m[k] == nil {\n\t\t\tif !create {\n\t\t\t\treturn nil, nil\n\t\t\t}\n\t\t\tm[k] = map[string]any{}\n\t\t}\n\t\tm, ok = m[k].(map[string]any)\n\t\tif !ok {\n\t\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"invalid field path %q at %q\", strings.Join(fp, \".\"), k)\n\t\t}\n\t}\n\treturn m, nil\n}\n\n// RevisionToBytes implements driver.RevisionToBytes.\nfunc (c *collection) RevisionToBytes(rev any) ([]byte, error) {\n\tr, ok := rev.(int64)\n\tif !ok {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"revision %v of type %[1]T is not an int64\", rev)\n\t}\n\treturn strconv.AppendInt(nil, r, 10), nil\n}\n\n// BytesToRevision implements driver.BytesToRevision.\nfunc (c *collection) BytesToRevision(b []byte) (any, error) {\n\treturn strconv.ParseInt(string(b), 10, 64)\n}\n\n// As implements driver.As.\nfunc (c *collection) As(i any) bool { return false }\n\n// As implements driver.Collection.ErrorAs.\nfunc (c *collection) ErrorAs(err error, i any) bool { return false }\n\n// Close implements driver.Collection.Close.\n// If the collection was created with a Filename option, Close writes the\n// collection's documents to the file.\nfunc (c *collection) Close() error {\n\tif c.opts.onClose != nil {\n\t\tc.opts.onClose()\n\t}\n\treturn saveDocs(c.opts.Filename, c.docs)\n}\n\ntype mapOfDocs = map[any]storedDoc\n\n// Read a map from the filename if is is not empty and the file exists.\n// Otherwise return an empty (not nil) map.\nfunc loadDocs(filename string) (mapOfDocs, error) {\n\tif filename == \"\" {\n\t\treturn mapOfDocs{}, nil\n\t}\n\tf, err := os.Open(filename)\n\tif err != nil {\n\t\tif !os.IsNotExist(err) {\n\t\t\treturn nil, err\n\t\t}\n\t\t// If the file doesn't exist, return an empty map without error.\n\t\treturn mapOfDocs{}, nil\n\t}\n\tdefer f.Close()\n\tvar m mapOfDocs\n\tif err := gob.NewDecoder(f).Decode(&m); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to decode from %q: %v\", filename, err)\n\t}\n\treturn m, nil\n}\n\n// saveDocs saves m to filename if filename is not empty.\nfunc saveDocs(filename string, m mapOfDocs) error {\n\tif filename == \"\" {\n\t\treturn nil\n\t}\n\tf, err := os.Create(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := gob.NewEncoder(f).Encode(m); err != nil {\n\t\t_ = f.Close()\n\t\treturn fmt.Errorf(\"failed to encode to %q: %v\", filename, err)\n\t}\n\treturn f.Close()\n}\n"
  },
  {
    "path": "docstore/memdocstore/mem_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"slices\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n)\n\ntype harness struct{}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\treturn &harness{}, nil\n}\n\nfunc (h *harness) MakeCollection(_ context.Context, kind drivertest.CollectionKind) (driver.Collection, error) {\n\tswitch kind {\n\tcase drivertest.SingleKey, drivertest.NoRev:\n\t\treturn newCollection(drivertest.KeyField, nil, nil)\n\tcase drivertest.TwoKey:\n\t\treturn newCollection(\"\", drivertest.HighScoreKey, nil)\n\tcase drivertest.AltRev:\n\t\treturn newCollection(drivertest.KeyField, nil, &Options{RevisionField: drivertest.AlternateRevisionField})\n\tdefault:\n\t\tpanic(\"bad kind\")\n\t}\n}\n\nfunc (*harness) BeforeDoTypes() []any    { return nil }\nfunc (*harness) BeforeQueryTypes() []any { return nil }\n\nfunc (*harness) RevisionsEqual(rev1, rev2 any) bool { return rev1 == rev2 }\n\nfunc (*harness) SupportsAtomicWrites() bool { return true }\n\nfunc (*harness) Close() {}\n\nfunc TestConformance(t *testing.T) {\n\t// CodecTester is nil because memdocstore has no native representation.\n\tdrivertest.RunConformanceTests(t, newHarness, nil, nil)\n}\n\ntype docmap = map[string]any\n\n// memdocstore-specific tests.\n\n// The following tests test memdocstore's backend implementation.\n\nfunc TestUpdateEncodesValues(t *testing.T) {\n\t// Check that update encodes the values in mods.\n\tctx := context.Background()\n\tdc, err := newCollection(drivertest.KeyField, nil, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcoll := docstore.NewCollection(dc)\n\tdefer coll.Close()\n\tdoc := docmap{drivertest.KeyField: \"testUpdateEncodes\", \"a\": 1, dc.RevisionField(): nil}\n\tif err := coll.Put(ctx, doc); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := coll.Update(ctx, doc, docstore.Mods{\"a\": 2}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tgot := docmap{drivertest.KeyField: doc[drivertest.KeyField]}\n\t// This Get will fail if the int value 2 in the above mod was not encoded to an int64.\n\tif err := coll.Get(ctx, got); err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := docmap{\n\t\tdrivertest.KeyField: doc[drivertest.KeyField],\n\t\t\"a\":                 int64(2),\n\t\tdc.RevisionField():  got[dc.RevisionField()],\n\t}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t}\n}\n\nfunc TestUpdateAtomic(t *testing.T) {\n\t// Check that update is atomic.\n\tctx := context.Background()\n\tdc, err := newCollection(drivertest.KeyField, nil, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcoll := docstore.NewCollection(dc)\n\tdefer coll.Close()\n\tdoc := docmap{drivertest.KeyField: \"testUpdateAtomic\", \"a\": \"A\", \"b\": \"B\", dc.RevisionField(): nil}\n\n\tmods := docstore.Mods{\"a\": \"Y\", \"b.c\": \"Z\"} // \"b\" is not a map, so \"b.c\" is an error\n\tif err := coll.Put(ctx, doc); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif errs := coll.Actions().Update(doc, mods).Do(ctx); errs == nil {\n\t\tt.Fatal(\"got nil, want errors\")\n\t}\n\tgot := docmap{drivertest.KeyField: doc[drivertest.KeyField]}\n\tif err := coll.Get(ctx, got); err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := docmap{\n\t\tdrivertest.KeyField: doc[drivertest.KeyField],\n\t\tdc.RevisionField():  got[dc.RevisionField()],\n\t\t\"a\":                 \"A\",\n\t\t\"b\":                 \"B\",\n\t}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t}\n}\n\nfunc TestQueryNested(t *testing.T) {\n\tctx := context.Background()\n\n\tdc, err := newCollection(drivertest.KeyField, nil, &Options{AllowNestedSliceQueries: true})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcoll := docstore.NewCollection(dc)\n\tdefer coll.Close()\n\n\t// Set up test documents\n\ttestDocs := []docmap{{\n\t\tdrivertest.KeyField: \"TestQueryNested\",\n\t\t\"list\":              []any{docmap{\"a\": \"A\"}},\n\t\t\"map\":               docmap{\"b\": \"B\"},\n\t\t\"listOfMaps\":        []any{docmap{\"id\": \"1\"}, docmap{\"id\": \"2\"}, docmap{\"id\": \"3\"}},\n\t\t\"mapOfLists\":        docmap{\"ids\": []any{\"1\", \"2\", \"3\"}},\n\t\t\"deep\":              []any{docmap{\"nesting\": []any{docmap{\"of\": docmap{\"elements\": \"yes\"}}}}},\n\t\t\"listOfLists\":       []any{docmap{\"items\": []any{docmap{\"price\": 10}, docmap{\"price\": 20}}}},\n\t\tdc.RevisionField():  nil,\n\t}, {\n\t\tdrivertest.KeyField: \"CheapItems\",\n\t\t\"items\":             []any{docmap{\"price\": 10}, docmap{\"price\": 1}},\n\t\tdc.RevisionField():  nil,\n\t}, {\n\t\tdrivertest.KeyField: \"ExpensiveItems\",\n\t\t\"items\":             []any{docmap{\"price\": 50}, docmap{\"price\": 100}},\n\t\tdc.RevisionField():  nil,\n\t}}\n\n\tfor _, testDoc := range testDocs {\n\t\terr = coll.Put(ctx, testDoc)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\ttests := []struct {\n\t\tname     string\n\t\twhere    []any\n\t\twantKeys []string\n\t}{\n\t\t{\n\t\t\tname:     \"list field match\",\n\t\t\twhere:    []any{\"list.a\", \"=\", \"A\"},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:  \"list field no match\",\n\t\t\twhere: []any{\"list.a\", \"=\", \"missing\"},\n\t\t}, {\n\t\t\tname:     \"map field match\",\n\t\t\twhere:    []any{\"map.b\", \"=\", \"B\"},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"list of maps field match\",\n\t\t\twhere:    []any{\"listOfMaps.id\", \"=\", \"2\"},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"map of lists field match\",\n\t\t\twhere:    []any{\"mapOfLists.ids\", \"=\", \"1\"},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"deep nested field match\",\n\t\t\twhere:    []any{\"deep.nesting.of.elements\", \"=\", \"yes\"},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"list of lists exact price 10\",\n\t\t\twhere:    []any{\"listOfLists.items.price\", \"=\", 10},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"list of lists exact price 20\",\n\t\t\twhere:    []any{\"listOfLists.items.price\", \"=\", 20},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"list of lists price less than or equal to 20\",\n\t\t\twhere:    []any{\"listOfLists.items.price\", \"<=\", 20},\n\t\t\twantKeys: []string{\"TestQueryNested\"},\n\t\t}, {\n\t\t\tname:     \"items price equals 1\",\n\t\t\twhere:    []any{\"items.price\", \"=\", 1},\n\t\t\twantKeys: []string{\"CheapItems\"},\n\t\t}, {\n\t\t\tname:  \"items price equals 5 (no match)\",\n\t\t\twhere: []any{\"items.price\", \"=\", 5},\n\t\t}, {\n\t\t\tname:     \"items price greater than or equal to 1\",\n\t\t\twhere:    []any{\"items.price\", \">=\", 1},\n\t\t\twantKeys: []string{\"CheapItems\", \"ExpensiveItems\"},\n\t\t}, {\n\t\t\tname:     \"items price greater than or equal to 5\",\n\t\t\twhere:    []any{\"items.price\", \">=\", 5},\n\t\t\twantKeys: []string{\"CheapItems\", \"ExpensiveItems\"},\n\t\t}, {\n\t\t\tname:     \"items price greater than or equal to 10\",\n\t\t\twhere:    []any{\"items.price\", \">=\", 10},\n\t\t\twantKeys: []string{\"CheapItems\", \"ExpensiveItems\"},\n\t\t}, {\n\t\t\tname:     \"items price less than or equal to 50\",\n\t\t\twhere:    []any{\"items.price\", \"<=\", 50},\n\t\t\twantKeys: []string{\"CheapItems\", \"ExpensiveItems\"},\n\t\t},\n\t}\n\n\tfor _, tc := range tests {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\titer := coll.Query().Where(docstore.FieldPath(tc.where[0].(string)), tc.where[1].(string), tc.where[2]).Get(ctx)\n\t\t\tvar got []docmap\n\t\t\tfor {\n\t\t\t\tdoc := docmap{}\n\t\t\t\terr := iter.Next(ctx, doc)\n\t\t\t\tif err != nil {\n\t\t\t\t\tif err == io.EOF {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tgot = append(got, doc)\n\t\t\t}\n\n\t\t\t// Extract keys from results\n\t\t\tvar gotKeys []string\n\t\t\tfor _, d := range got {\n\t\t\t\tif key, ok := d[drivertest.KeyField].(string); ok {\n\t\t\t\t\tgotKeys = append(gotKeys, key)\n\t\t\t\t}\n\t\t\t}\n\t\t\tslices.Sort(gotKeys)\n\n\t\t\tdiff := cmp.Diff(gotKeys, tc.wantKeys)\n\t\t\tif diff != \"\" {\n\t\t\t\tt.Errorf(\"query results mismatch (-got +want):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestSortDocs(t *testing.T) {\n\tnewDocs := func() []storedDoc {\n\t\treturn []storedDoc{\n\t\t\t{\"a\": int64(1), \"b\": \"1\", \"c\": 3.0},\n\t\t\t{\"a\": int64(2), \"b\": \"2\", \"c\": 4.0},\n\t\t\t{\"a\": int64(3), \"b\": \"3\"}, // missing \"c\"\n\t\t}\n\t}\n\tinorder := newDocs()\n\treversed := newDocs()\n\tfor i := 0; i < len(reversed)/2; i++ {\n\t\tj := len(reversed) - i - 1\n\t\treversed[i], reversed[j] = reversed[j], reversed[i]\n\t}\n\n\tfor _, test := range []struct {\n\t\tfield     string\n\t\tascending bool\n\t\twant      []storedDoc\n\t}{\n\t\t{\"a\", true, inorder},\n\t\t{\"a\", false, reversed},\n\t\t{\"b\", true, inorder},\n\t\t{\"b\", false, reversed},\n\t\t{\"c\", true, inorder},\n\t\t{\"c\", false, []storedDoc{inorder[1], inorder[0], inorder[2]}},\n\t} {\n\t\tgot := newDocs()\n\t\tsortDocs(got, test.field, test.ascending)\n\t\tif diff := cmp.Diff(got, test.want); diff != \"\" {\n\t\t\tt.Errorf(\"%q, asc=%t:\\n%s\", test.field, test.ascending, diff)\n\t\t}\n\t}\n}\n\nfunc TestSaveAndLoad(t *testing.T) {\n\tdir := t.TempDir()\n\n\t// Load from nonexistent file should return empty data.\n\tf := filepath.Join(dir, \"saveAndLoad\")\n\tgot, err := loadDocs(f)\n\tif err != nil {\n\t\tt.Fatalf(\"loading from nonexistent file, got %v, want nil\", err)\n\t}\n\tif len(got) != 0 {\n\t\tt.Fatalf(\"loading from nonexistent file, got %v, want empty map\", got)\n\t}\n\n\t// Save some data into the file.\n\tdocs := map[any]storedDoc{\n\t\t\"k1\": {\"key\": \"k1\", \"a\": 1},\n\t\t\"k2\": {\"key\": \"k2\", \"b\": 2},\n\t}\n\tif err := saveDocs(f, docs); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// File should exist now.\n\tif _, err := os.Lstat(f); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Reload the data.\n\tgot, err = loadDocs(f)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !cmp.Equal(got, docs) {\n\t\tt.Errorf(\"\\ngot  %v\\nwant %v\", got, docs)\n\t}\n}\n"
  },
  {
    "path": "docstore/memdocstore/query.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gocloud.dev/docstore/driver\"\n)\n\nfunc (c *collection) RunGetQuery(_ context.Context, q *driver.Query) (driver.DocumentIterator, error) {\n\tif q.BeforeQuery != nil {\n\t\tif err := q.BeforeQuery(func(any) bool { return false }); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\n\tvar resultDocs []storedDoc\n\tfor _, doc := range c.docs {\n\t\tif filtersMatch(q.Filters, doc, c.opts.AllowNestedSliceQueries) {\n\t\t\tresultDocs = append(resultDocs, doc)\n\t\t}\n\t}\n\tif q.OrderByField != \"\" {\n\t\tsortDocs(resultDocs, q.OrderByField, q.OrderAscending)\n\t}\n\n\t// Apply offset\n\tif q.Offset > 0 {\n\t\tif q.Offset >= len(resultDocs) {\n\t\t\tresultDocs = []storedDoc{} // If offset is larger than or equal to the length, result should be an empty slice\n\t\t} else {\n\t\t\tresultDocs = resultDocs[q.Offset:]\n\t\t}\n\t}\n\n\t// Apply limit\n\tif q.Limit > 0 && len(resultDocs) > q.Limit {\n\t\tresultDocs = resultDocs[:q.Limit]\n\t}\n\n\t// Include the key field in the field paths if there is one.\n\tvar fps [][]string\n\tif len(q.FieldPaths) > 0 && c.keyField != \"\" {\n\t\tfps = append([][]string{{c.keyField}}, q.FieldPaths...)\n\t} else {\n\t\tfps = q.FieldPaths\n\t}\n\n\treturn &docIterator{\n\t\tdocs:       resultDocs,\n\t\tfieldPaths: fps,\n\t\trevField:   c.opts.RevisionField,\n\t}, nil\n}\n\nfunc filtersMatch(fs []driver.Filter, doc storedDoc, nested bool) bool {\n\tfor _, f := range fs {\n\t\tif !filterMatches(f, doc, nested) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc filterMatches(f driver.Filter, doc storedDoc, nested bool) bool {\n\tdocval, err := getAtFieldPath(doc, f.FieldPath, nested)\n\t// missing or bad field path => no match\n\tif err != nil {\n\t\treturn false\n\t}\n\tc, ok := compare(docval, f.Value, f.Op)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn applyComparison(f.Op, c)\n}\n\n// op is one of the permitted docstore operators (\"=\", \"<\", etc.)\n// c is the result of strings.Compare or the like.\n// TODO(jba): dedup from gcpfirestore/query?\nfunc applyComparison(op string, c int) bool {\n\tswitch op {\n\tcase driver.EqualOp:\n\t\treturn c == 0\n\tcase \">\":\n\t\treturn c > 0\n\tcase \"<\":\n\t\treturn c < 0\n\tcase \">=\":\n\t\treturn c >= 0\n\tcase \"<=\":\n\t\treturn c <= 0\n\tcase \"in\":\n\t\treturn c == 0\n\tcase \"not-in\":\n\t\treturn c != 0\n\tdefault:\n\t\tpanic(\"bad op\")\n\t}\n}\n\nfunc compare(x1, x2 any, op string) (int, bool) {\n\tv1 := reflect.ValueOf(x1)\n\tv2 := reflect.ValueOf(x2)\n\t// For in/not-in queries. Otherwise this should only be reached with AllowNestedSliceQueries set.\n\t// Return 0 if x1 is in slice x2, -1 if not.\n\tif v2.Kind() == reflect.Slice {\n\t\tfor i := range v2.Len() {\n\t\t\tif c, ok := compare(x1, v2.Index(i).Interface(), op); ok {\n\t\t\t\tif c == 0 {\n\t\t\t\t\treturn 0, true\n\t\t\t\t}\n\t\t\t\tif op != \"in\" && op != \"not-in\" {\n\t\t\t\t\treturn c, true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn -1, true\n\t}\n\t// See Options.AllowNestedSliceQueries\n\t// When querying for x2 in the document and x1 is a list of values we only need one value to match\n\t// the comparison value depends on the operator.\n\tif v1.Kind() == reflect.Slice {\n\t\tv2Greater := false\n\t\tv2Less := false\n\t\tfor i := range v1.Len() {\n\t\t\tif c, ok := compare(x2, v1.Index(i).Interface(), op); ok {\n\t\t\t\tif c == 0 {\n\t\t\t\t\treturn 0, true\n\t\t\t\t}\n\t\t\t\tv2Greater = v2Greater || c > 0\n\t\t\t\tv2Less = v2Less || c < 0\n\t\t\t}\n\t\t}\n\t\tif op[0] == '>' && v2Less {\n\t\t\treturn 1, true\n\t\t} else if op[0] == '<' && v2Greater {\n\t\t\treturn -1, true\n\t\t}\n\t\treturn 0, false\n\t}\n\tif v1.Kind() == reflect.String && v2.Kind() == reflect.String {\n\t\treturn strings.Compare(v1.String(), v2.String()), true\n\t}\n\tif cmp, err := driver.CompareNumbers(v1, v2); err == nil {\n\t\treturn cmp, true\n\t}\n\tif t1, ok := x1.(time.Time); ok {\n\t\tif t2, ok := x2.(time.Time); ok {\n\t\t\treturn driver.CompareTimes(t1, t2), true\n\t\t}\n\t}\n\tif v1.Kind() == reflect.Bool && v2.Kind() == reflect.Bool {\n\t\tif v1.Bool() == v2.Bool() {\n\t\t\treturn 0, true\n\t\t}\n\t\treturn -1, true\n\t}\n\treturn 0, false\n}\n\nfunc sortDocs(docs []storedDoc, field string, asc bool) {\n\tsort.Slice(docs, func(i, j int) bool {\n\t\tc, ok := compare(docs[i][field], docs[j][field], \">\")\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tif asc {\n\t\t\treturn c < 0\n\t\t}\n\t\treturn c > 0\n\t})\n}\n\ntype docIterator struct {\n\tdocs       []storedDoc\n\tfieldPaths [][]string\n\trevField   string\n\terr        error\n}\n\nfunc (it *docIterator) Next(ctx context.Context, doc driver.Document) error {\n\tif it.err != nil {\n\t\treturn it.err\n\t}\n\tif len(it.docs) == 0 {\n\t\tit.err = io.EOF\n\t\treturn it.err\n\t}\n\tif err := decodeDoc(it.docs[0], doc, it.fieldPaths); err != nil {\n\t\tit.err = err\n\t\treturn it.err\n\t}\n\tit.docs = it.docs[1:]\n\treturn nil\n}\n\nfunc (it *docIterator) Stop() { it.err = io.EOF }\n\nfunc (it *docIterator) As(i any) bool { return false }\n\nfunc (c *collection) QueryPlan(q *driver.Query) (string, error) {\n\treturn \"\", nil\n}\n"
  },
  {
    "path": "docstore/memdocstore/urls.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"gocloud.dev/docstore\"\n)\n\nfunc init() {\n\tdocstore.DefaultURLMux().RegisterCollection(Scheme, &URLOpener{})\n}\n\n// Scheme is the URL scheme memdocstore registers its URLOpener under on\n// docstore.DefaultMux.\nconst Scheme = \"mem\"\n\n// URLOpener opens URLs like \"mem://collection/_id\".\n//\n// The URL's host is the name of the collection.\n// The URL's path is used as the keyField.\n//\n// The following query parameters are supported:\n//\n//   - revision_field (optional): the name of the revision field.\n//   - filename (optional): the filename to store the collection in.\ntype URLOpener struct {\n\tmu          sync.Mutex\n\tcollections map[string]urlColl\n}\n\ntype urlColl struct {\n\tkeyName string\n\tcoll    *docstore.Collection\n}\n\n// OpenCollectionURL opens a docstore.Collection based on u.\nfunc (o *URLOpener) OpenCollectionURL(ctx context.Context, u *url.URL) (*docstore.Collection, error) {\n\tq := u.Query()\n\tcollName := u.Host\n\tif collName == \"\" {\n\t\treturn nil, fmt.Errorf(\"open collection %v: empty collection name\", u)\n\t}\n\tkeyName := u.Path\n\tkeyName = strings.TrimPrefix(keyName, \"/\")\n\tif keyName == \"\" || strings.ContainsRune(keyName, '/') {\n\t\treturn nil, fmt.Errorf(\"open collection %v: invalid key name %q (must be non-empty and have no slashes)\", u, keyName)\n\t}\n\n\toptions := &Options{\n\t\tRevisionField:           q.Get(\"revision_field\"),\n\t\tFilename:                q.Get(\"filename\"),\n\t\tAllowNestedSliceQueries: q.Get(\"allow_nested_slice_queries\") == \"true\",\n\t\tonClose: func() {\n\t\t\to.mu.Lock()\n\t\t\tdelete(o.collections, collName)\n\t\t\to.mu.Unlock()\n\t\t},\n\t}\n\tq.Del(\"revision_field\")\n\tq.Del(\"filename\")\n\tq.Del(\"allow_nested_slice_queries\")\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open collection %v: invalid query parameter %q\", u, param)\n\t}\n\n\to.mu.Lock()\n\tdefer o.mu.Unlock()\n\tif o.collections == nil {\n\t\to.collections = map[string]urlColl{}\n\t}\n\tucoll, ok := o.collections[collName]\n\tif !ok {\n\t\tcoll, err := OpenCollection(keyName, options)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\to.collections[collName] = urlColl{keyName, coll}\n\t\treturn coll, nil\n\t}\n\tif ucoll.keyName != keyName {\n\t\treturn nil, fmt.Errorf(\"open collection %v: key name %q does not equal existing key name %q\",\n\t\t\tu, keyName, ucoll.keyName)\n\t}\n\treturn ucoll.coll, nil\n}\n"
  },
  {
    "path": "docstore/memdocstore/urls_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage memdocstore\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"gocloud.dev/docstore\"\n)\n\nfunc TestOpenCollectionFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\twantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"mem://coll/_id\", false},\n\t\t// \"coll\" already has key \"_id\".\n\t\t{\"mem://coll/foo.bar\", true},\n\t\t{\"mem://coll2/foo.bar\", false},\n\t\t// Missing collection.\n\t\t{\"mem://\", true},\n\t\t// Missing key.\n\t\t{\"mem://coll\", true},\n\t\t// Key with slash.\n\t\t{\"mem://coll/my/key\", true},\n\t\t// Passing revision field.\n\t\t{\"mem://coll/_id?revision_field=123\", false},\n\t\t// Passing filename.\n\t\t{\"mem://coll/_id?filename=foo.out\", false},\n\t\t// Invalid parameter.\n\t\t{\"mem://coll/key?param=value\", true},\n\t}\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\td, err := docstore.OpenCollection(ctx, test.URL)\n\t\tif d != nil {\n\t\t\tdefer d.Close()\n\t\t}\n\t\tif (err != nil) != test.wantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.wantErr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/mongodocstore/awsdocdb/main.tf",
    "content": "# Specify the provider and access details\nprovider \"aws\" {\n  version = \"~> 2.0\"\n  region  = \"${var.aws_region}\"\n}\n\nresource \"aws_security_group\" \"docdbtest\" {\n  name_prefix = \"docdbtest\"\n  description = \"Test mongo driver on docdb\"\n  vpc_id      = \"${var.vpc_id}\"\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Public SSH access\"\n  }\n\n  ingress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    self        = true\n    description = \"Allow traffic within the security group for port forwarding\"\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n  }\n}\n\n# Provisioning a DocumentDB cluster with an instance.\n\nresource \"aws_docdb_cluster_instance\" \"docdbtest\" {\n  cluster_identifier = \"${aws_docdb_cluster.docdbtest.id}\"\n  identifier_prefix  = \"${aws_docdb_cluster.docdbtest.id}\"\n  instance_class     = \"db.r5.large\"\n  apply_immediately  = true\n}\n\nresource \"aws_docdb_cluster\" \"docdbtest\" {\n  cluster_identifier = \"docstore-test-cluster\"\n  master_username    = \"${var.db_username}\"\n  master_password    = \"${var.db_password}\"\n\n  db_cluster_parameter_group_name = \"docstore-test-pg\"\n  vpc_security_group_ids          = [\"${aws_security_group.docdbtest.id}\"]\n\n  skip_final_snapshot = true\n}\n\n# Provisioning an EC2 instance within the same VPC group for port forwarding.\n\nresource \"aws_key_pair\" \"docdbtest\" {\n  key_name_prefix = \"docdbtest\"\n  public_key      = \"${var.ssh_public_key}\"\n}\n\ndata \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n\n  filter {\n    name   = \"name\"\n    values = [\"ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*\"]\n  }\n\n  filter {\n    name   = \"virtualization-type\"\n    values = [\"hvm\"]\n  }\n\n  owners = [\"099720109477\"]\n}\n\nresource \"aws_instance\" \"docdbtest\" {\n  ami                    = \"${data.aws_ami.ubuntu.id}\"\n  instance_type          = \"t2.micro\"\n  vpc_security_group_ids = [\"${aws_security_group.docdbtest.id}\"]\n  key_name                    = \"${aws_key_pair.docdbtest.key_name}\"\n  associate_public_ip_address = true\n}\n"
  },
  {
    "path": "docstore/mongodocstore/awsdocdb/outputs.tf",
    "content": "output \"setup_ssh_tunnel\" {\n  value = \"ssh -L 27019:${aws_docdb_cluster.docdbtest.endpoint}:27017 ubuntu@${aws_instance.docdbtest.public_dns} -N\"\n}\n"
  },
  {
    "path": "docstore/mongodocstore/awsdocdb/variables.tf",
    "content": "variable \"aws_region\" {\n  description = \"The AWS region to create docdb cluster and ec2 instance in.\"\n  default     = \"us-east-2\"\n}\n\nvariable \"vpc_id\" {\n  description = \"The ID of the default VPC used by docdb cluster and ec2 instance.\"\n}\n\nvariable \"ssh_public_key\" {\n  description = \"A public key line in .ssh/authorized_keys format to use to authenticate to your instance. This must be added to your SSH agent for provisioning to succeed.\"\n}\n\nvariable \"db_username\" {\n  description = \"The master username to login docdb\"\n}\n\nvariable \"db_password\" {\n  description = \"The master password to login docdb\"\n}\n"
  },
  {
    "path": "docstore/mongodocstore/codec.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"go.mongodb.org/mongo-driver/bson/primitive\"\n\t\"gocloud.dev/docstore/driver\"\n)\n\n// Encode and decode to map[string]interface{}.\n// This isn't ideal, because the mongo client encodes/decodes a second time.\n// TODO(jba): Benchmark the double decode to see if it's worth trying to avoid it.\n\n// This code is copied from memdocstore/codec.go, except for special treatment of\n// primitive.Binary.\n\nfunc encodeDoc(doc driver.Document, lowercaseFields bool) (map[string]interface{}, error) {\n\te := encoder{lowercaseFields: lowercaseFields}\n\tif err := doc.Encode(&e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.val.(map[string]interface{}), nil\n}\n\nfunc encodeValue(x interface{}) (interface{}, error) {\n\tvar e encoder\n\tif err := driver.Encode(reflect.ValueOf(x), &e); err != nil {\n\t\treturn nil, err\n\t}\n\treturn e.val, nil\n}\n\ntype encoder struct {\n\tval             interface{}\n\tlowercaseFields bool\n}\n\nfunc (e *encoder) EncodeNil()            { e.val = nil }\nfunc (e *encoder) EncodeBool(x bool)     { e.val = x }\nfunc (e *encoder) EncodeInt(x int64)     { e.val = x }\nfunc (e *encoder) EncodeUint(x uint64)   { e.val = int64(x) }\nfunc (e *encoder) EncodeBytes(x []byte)  { e.val = x }\nfunc (e *encoder) EncodeFloat(x float64) { e.val = x }\nfunc (e *encoder) EncodeString(x string) { e.val = x }\nfunc (e *encoder) ListIndex(int)         { panic(\"impossible\") }\nfunc (e *encoder) MapKey(string)         { panic(\"impossible\") }\n\nvar (\n\ttypeOfGoTime   = reflect.TypeOf(time.Time{})\n\ttypeOfObjectID = reflect.TypeOf(primitive.ObjectID{})\n)\n\nfunc (e *encoder) EncodeSpecial(v reflect.Value) (bool, error) {\n\t// Treat time specially as itself (otherwise its BinaryMarshal method will be called).\n\t// Also, ObjectIDs are already encoded.\n\tif v.Type() == typeOfGoTime || v.Type() == typeOfObjectID {\n\t\te.val = v.Interface()\n\t\treturn true, nil\n\t}\n\treturn false, nil\n}\n\nfunc (e *encoder) EncodeList(n int) driver.Encoder {\n\t// All slices and arrays are encoded as []interface{}\n\ts := make([]interface{}, n)\n\te.val = s\n\treturn &listEncoder{s: s, encoder: encoder{lowercaseFields: e.lowercaseFields}}\n}\n\ntype listEncoder struct {\n\ts []interface{}\n\tencoder\n}\n\nfunc (e *listEncoder) ListIndex(i int) { e.s[i] = e.val }\n\ntype mapEncoder struct {\n\tm        map[string]interface{}\n\tisStruct bool\n\tencoder\n}\n\nfunc (e *encoder) EncodeMap(n int) driver.Encoder {\n\tm := make(map[string]interface{}, n)\n\te.val = m\n\treturn &mapEncoder{m: m, encoder: encoder{lowercaseFields: e.lowercaseFields}}\n}\n\nfunc (e *mapEncoder) MapKey(k string) {\n\tif e.lowercaseFields {\n\t\tk = strings.ToLower(k)\n\t}\n\te.m[k] = e.val\n}\n\n////////////////////////////////////////////////////////////////\n\n// decodeDoc decodes m into ddoc.\nfunc decodeDoc(m map[string]interface{}, ddoc driver.Document, idField string, lowercaseFields bool) error {\n\tswitch idField {\n\tcase mongoIDField: // do nothing\n\tcase \"\": // user uses idFunc\n\t\tdelete(m, mongoIDField)\n\tdefault: // user documents have a different ID field\n\t\tm[idField] = m[mongoIDField]\n\t\tdelete(m, mongoIDField)\n\t}\n\treturn ddoc.Decode(decoder{val: m, lowercaseFields: lowercaseFields})\n}\n\ntype decoder struct {\n\tval             interface{}\n\tlowercaseFields bool\n}\n\nfunc (d decoder) String() string {\n\treturn fmt.Sprint(d.val)\n}\n\nfunc (d decoder) AsNull() bool {\n\treturn d.val == nil\n}\n\nfunc (d decoder) AsBool() (bool, bool) {\n\tb, ok := d.val.(bool)\n\treturn b, ok\n}\n\nfunc (d decoder) AsString() (string, bool) {\n\ts, ok := d.val.(string)\n\treturn s, ok\n}\n\nfunc (d decoder) AsInt() (int64, bool) {\n\tswitch v := d.val.(type) {\n\tcase int64:\n\t\treturn v, true\n\tcase int32:\n\t\treturn int64(v), true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\n\nfunc (d decoder) AsUint() (uint64, bool) {\n\ti, ok := d.val.(int64)\n\treturn uint64(i), ok\n}\n\nfunc (d decoder) AsFloat() (float64, bool) {\n\tf, ok := d.val.(float64)\n\treturn f, ok\n}\n\nfunc (d decoder) AsBytes() ([]byte, bool) {\n\tswitch v := d.val.(type) {\n\tcase []byte:\n\t\treturn v, true\n\tcase primitive.Binary:\n\t\treturn v.Data, true\n\tdefault:\n\t\treturn nil, false\n\t}\n}\n\nfunc (d decoder) AsInterface() (interface{}, error) {\n\treturn toGoValue(d.val)\n}\n\nfunc toGoValue(v interface{}) (interface{}, error) {\n\tswitch v := v.(type) {\n\tcase primitive.A:\n\t\tr := make([]interface{}, len(v))\n\t\tfor i, e := range v {\n\t\t\td, err := toGoValue(e)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tr[i] = d\n\t\t}\n\t\treturn r, nil\n\tcase primitive.Binary:\n\t\treturn v.Data, nil\n\tcase primitive.DateTime:\n\t\treturn bsonDateTimeToTime(v), nil\n\tcase map[string]interface{}:\n\t\tr := map[string]interface{}{}\n\t\tfor k, e := range v {\n\t\t\td, err := toGoValue(e)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tr[k] = d\n\t\t}\n\t\treturn r, nil\n\tdefault:\n\t\treturn v, nil\n\t}\n}\n\nfunc (d decoder) ListLen() (int, bool) {\n\tif s, ok := d.val.(primitive.A); ok {\n\t\treturn len(s), true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) DecodeList(f func(i int, d2 driver.Decoder) bool) {\n\tfor i, e := range d.val.(primitive.A) {\n\t\tif !f(i, decoder{e, d.lowercaseFields}) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (d decoder) MapLen() (int, bool) {\n\tif m, ok := d.val.(map[string]interface{}); ok {\n\t\treturn len(m), true\n\t}\n\treturn 0, false\n}\n\nfunc (d decoder) DecodeMap(f func(key string, d2 driver.Decoder, exactMatch bool) bool) {\n\tfor k, v := range d.val.(map[string]interface{}) {\n\t\tif !f(k, decoder{v, d.lowercaseFields}, !d.lowercaseFields) {\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (d decoder) AsSpecial(v reflect.Value) (bool, interface{}, error) {\n\tswitch v := d.val.(type) {\n\tcase primitive.DateTime:\n\t\t// A DateTime represents milliseconds since the Unix epoch.\n\t\treturn true, bsonDateTimeToTime(v), nil\n\tdefault:\n\t\treturn false, nil, nil\n\t}\n}\n\nfunc bsonDateTimeToTime(dt primitive.DateTime) time.Time {\n\treturn time.Unix(int64(dt)/1000, int64(dt)%1000*1e6)\n}\n"
  },
  {
    "path": "docstore/mongodocstore/cosmos_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"testing\"\n\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\n// Run conformance tests on Azure Cosmos.\n\n// See https://docs.microsoft.com/en-us/azure/cosmos-db/connect-mongodb-account\n// on how to get a MongoDB connection string for Azure Cosmos.\nvar cosmosConnString = os.Getenv(\"COSMOS_CONNECTION_STRING\")\n\nfunc TestConformanceCosmos(t *testing.T) {\n\tif !*setup.Record {\n\t\tt.Skip(\"replaying is not yet supported for Azure Cosmos\")\n\t}\n\tif cosmosConnString == \"\" {\n\t\tt.Fatal(\"test harness requires COSMOS_CONNECTION_STRING environment variable to run\")\n\t}\n\n\tctx := context.Background()\n\tclient, err := Dial(ctx, cosmosConnString)\n\tif err != nil {\n\t\tt.Fatalf(\"dialing to %s: %v\", cosmosConnString, err)\n\t}\n\tif err := client.Ping(ctx, nil); err != nil {\n\t\tt.Fatalf(\"connecting to %s: %v\", cosmosConnString, err)\n\t}\n\tdefer func() {\n\t\t// Cleanup any resource to avoid wastes.\n\t\tclient.Database(dbName).Drop(ctx)\n\t\tclient.Disconnect(ctx)\n\t}()\n\n\tnewHarness := func(context.Context, *testing.T) (drivertest.Harness, error) {\n\t\treturn &harness{client.Database(dbName), true}, nil\n\t}\n\tdrivertest.RunConformanceTests(t, newHarness, codecTester{}, []drivertest.AsTest{verifyAs{}})\n}\n"
  },
  {
    "path": "docstore/mongodocstore/docdb_test.go",
    "content": "package mongodocstore\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"go.mongodb.org/mongo-driver/mongo\"\n\t\"go.mongodb.org/mongo-driver/mongo/options\"\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\nconst connectionStringTemplate = \"mongodb://%s:%s@%s/?connect=direct&connectTimeoutMS=3000\"\n\n// To run the conformance tests against Amazon DocumentDB:\n//\n//  1. Run `terraform apply` in awsdocdb directory to provision a docdb cluster and an EC2 instance.\n//  2. Run the command provided by the terraform output string to setup port-forwarding.\n//  3. Set the following environment variables and run this test with `-record` flag.\n\nvar (\n\tusername = os.Getenv(\"AWSDOCDB_USERNAME\")\n\tpassword = os.Getenv(\"AWSDOCDB_PASSWORD\")\n\tendpoint = os.Getenv(\"AWSDOCDB_ENDPOINT\") // optional, default to localhost:27019\n)\n\nfunc TestConformanceDocDB(t *testing.T) {\n\tif !*setup.Record {\n\t\tt.Skip(\"replaying is not yet supported for Amazon DocumentDB\")\n\t}\n\tif username == \"\" || password == \"\" {\n\t\tt.Fatal(\"environment not setup to run DocDB test\")\n\t}\n\n\tclient := newDocDBTestClient(t)\n\tdefer client.Disconnect(context.Background())\n\n\tnewHarness := func(context.Context, *testing.T) (drivertest.Harness, error) {\n\t\treturn &harness{db: client.Database(dbName)}, nil\n\t}\n\tdrivertest.RunConformanceTests(t, newHarness, codecTester{}, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc newDocDBTestClient(t *testing.T) *mongo.Client {\n\tctx := context.Background()\n\tif endpoint == \"\" {\n\t\tendpoint = \"localhost:27019\"\n\t}\n\tconnectionURI := fmt.Sprintf(connectionStringTemplate, username, password, endpoint)\n\n\to := options.Client().ApplyURI(connectionURI)\n\tif err := o.Validate(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tclient, err := mongo.NewClient(o)\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to create client: %v\", err)\n\t}\n\n\terr = client.Connect(ctx)\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to connect to cluster: %v\", err)\n\t}\n\n\t// Force a connection to verify our connection string\n\terr = client.Ping(ctx, nil)\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to ping cluster: %v\", err)\n\t}\n\treturn client\n}\n"
  },
  {
    "path": "docstore/mongodocstore/docker-compose.yml",
    "content": "version: '3.8'\nservices:\n  mongo:\n    image: mongo:4.4\n    container_name: mongo\n    restart: always\n    volumes:\n      - mongo_data:/data/db\n    ports:\n      - \"27017:27017\"\n    command: [\"--replSet\", \"dbrs\", \"--bind_ip_all\"]\n\n  mongosetup:\n    image: mongo:4.4\n    container_name: mongosetup\n    depends_on:\n      - mongo\n    entrypoint: >\n      bash -c \"sleep 5 &&\n      mongo --host mongo:27017 --eval '\n        rs.initiate({\n          _id: \\\"dbrs\\\",\n          members: [\n            { _id: 0, host: \\\"mongo:27017\\\"}\n          ]\n        })\n      '\"\n\nvolumes:\n  mongo_data:"
  },
  {
    "path": "docstore/mongodocstore/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/mongodocstore\"\n)\n\nfunc ExampleOpenCollection() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tclient, err := mongodocstore.Dial(ctx, \"mongodb://my-host\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tmcoll := client.Database(\"my-db\").Collection(\"my-coll\")\n\tcoll, err := mongodocstore.OpenCollection(mcoll, \"userID\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n\nfunc ExampleOpenCollectionWithIDFunc() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\ttype HighScore struct {\n\t\tGame   string\n\t\tPlayer string\n\t}\n\n\tclient, err := mongodocstore.Dial(ctx, \"mongodb://my-host\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tmcoll := client.Database(\"my-db\").Collection(\"my-coll\")\n\n\t// The name of a document is constructed from the Game and Player fields.\n\tnameFromDocument := func(doc docstore.Document) interface{} {\n\t\ths := doc.(*HighScore)\n\t\treturn hs.Game + \"|\" + hs.Player\n\t}\n\n\tcoll, err := mongodocstore.OpenCollectionWithIDFunc(mcoll, nameFromDocument, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n\nfunc Example_openCollectionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/docstore/mongodocstore\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// docstore.OpenCollection creates a *docstore.Collection from a URL.\n\tcoll, err := docstore.OpenCollection(ctx, \"mongo://my-db/my-collection?id_field=userID\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer coll.Close()\n}\n"
  },
  {
    "path": "docstore/mongodocstore/go.mod",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/docstore/mongodocstore\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/wire v0.7.0\n\tgo.mongodb.org/mongo-driver v1.17.9\n\tgocloud.dev v0.45.0\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang/snappy v1.0.0 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/klauspost/compress v1.18.4 // indirect\n\tgithub.com/montanaflynn/stats v0.8.2 // indirect\n\tgithub.com/xdg-go/pbkdf2 v1.0.0 // indirect\n\tgithub.com/xdg-go/scram v1.2.0 // indirect\n\tgithub.com/xdg-go/stringprep v1.0.4 // indirect\n\tgithub.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "docstore/mongodocstore/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/firestore v1.21.0 h1:BhopUsx7kh6NFx77ccRsHhrtkbJUmDAxNY3uapWdjcM=\ncloud.google.com/go/firestore v1.21.0/go.mod h1:1xH6HNcnkf/gGyR8udd6pFO4Z7GWJSwLKQMx/u6UrP4=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35 h1:CQ2kB9Q4xQ2PDBmn+KCr/pw1DvK7pH6NkR2nl2KV7ng=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35/go.mod h1:ypTMB9nZhpqfMeRVesGj4dEknIg0YS+aXGtLMidw/Ek=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35 h1:qxsbiWRtwChp/rrSHMfYoosVDVWRICoYXoDdczaLFiI=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35/go.mod h1:SomvXQRUKYBML53k4LqIgszKJKz8TdUwi/Zwig7JhfU=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2 h1:xi/ECwajy2mixviBD7bKAlGGSwzEaFKX2wIhrZt9NGw=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2/go.mod h1:dLREOeW66eVaaGIOi2ZlLHDgkR3nuJ02rd00j0YSlBE=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13 h1:xQ9dX2jxVm14uNVe0WomcCSza832ytYWt1ZBu2LrBLM=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13/go.mod h1:D5up2/CMSP4sF8ESBWla6gJvIMySJi8dYYAaED4oTCc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20 h1:ru+seMuylHiNZlvgZei83eD8h37hRjm1XIMOEmcV0BU=\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20/go.mod h1:ihZMtPTKoX/ugQRHbui6zNdSgVYN1KY2Dgwb2d3hXlc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=\ngithub.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=\ngithub.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/montanaflynn/stats v0.8.2 h1:52wnefTJnPI5FoHif1DQh2soKRw0yYs+4AVyvtcZCH0=\ngithub.com/montanaflynn/stats v0.8.2/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=\ngithub.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=\ngithub.com/xdg-go/scram v1.2.0 h1:bYKF2AEwG5rqd1BumT4gAnvwU/M9nBp2pTSxeZw7Wvs=\ngithub.com/xdg-go/scram v1.2.0/go.mod h1:3dlrS0iBaWKYVt2ZfA4cj48umJZ+cAEbR6/SjLA88I8=\ngithub.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=\ngithub.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=\ngithub.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=\ngithub.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.mongodb.org/mongo-driver v1.17.9 h1:IexDdCuuNJ3BHrELgBlyaH9p60JXAvdzWR128q+U5tU=\ngo.mongodb.org/mongo-driver v1.17.9/go.mod h1:LlOhpH5NUEfhxcAwG0UEkMqwYcc4JU18gtCdGudk/tQ=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "docstore/mongodocstore/localmongo.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts two local MongoDB instances (v3 and v4) via Docker listening on two\n# different ports.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\necho \"Starting MongoDB v4 listening on 27017...\"\ndocker rm -f mongo4 mongosetup &> /dev/null || :\ndocker compose -f ./docstore/mongodocstore/docker-compose.yml up --wait &> /dev/null\nsleep 3\necho \"...done. Run \\\"docker rm -f mongo4 mongosetup\\\" to clean up the container.\"\necho\n\necho \"Starting MongoDB v3 listening on 27020...\"\ndocker rm -f mongo3 &> /dev/null || :\ndocker run -d --name mongo3  -p 27020:27017 mongo:3 &> /dev/null\necho \"...done. Run \\\"docker rm -f mongo3\\\" to clean up the container.\"\necho\n\n"
  },
  {
    "path": "docstore/mongodocstore/mongo.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package mongodocstore provides a docstore implementation for MongoDB\n// and MongoDB-compatible services hosted on-premise or by cloud providers,\n// including Amazon DocumentDB and Azure Cosmos DB.\n//\n// # URLs\n//\n// For docstore.OpenCollection, mongodocstore registers for the scheme \"mongo\".\n// The default URL opener will dial a Mongo server using the environment\n// variable \"MONGO_SERVER_URL\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Action Lists\n//\n// mongodocstore uses the unordered BulkWrite call of the underlying driver for writes, and uses Find with a list of document IDs for Get.\n// (These implementation choices are subject to change.)\n// It calls the BeforeDo function once before each call to the underlying driver. The as function passed\n// to the BeforeDo function exposes the following types:\n//   - Gets: *options.FindOptions\n//   - writes: []mongo.WriteModel and *options.BulkWriteOptions\n//\n// # As\n//\n// mongodocstore exposes the following types for As:\n//   - Collection: *mongo.Collection\n//   - Query.BeforeQuery: *options.FindOptions or bson.D (the filter for Delete and Update queries)\n//   - DocumentIterator: *mongo.Cursor\n//   - Error: mongo.CommandError, mongo.BulkWriteError, mongo.BulkWriteException\n//\n// # Special Considerations\n//\n// MongoDB represents times to millisecond precision, while Go's time.Time type has\n// nanosecond precision. To save time.Times to MongoDB without loss of precision,\n// save the result of calling UnixNano on the time.\n//\n// The official Go driver for MongoDB, go.mongodb.org/mongo-driver/mongo, lowercases\n// struct field names; other docstore drivers do not. This means that you have to choose\n// between interoperating with the MongoDB driver and interoperating with other docstore drivers.\n// See Options.LowercaseFields for more information.\npackage mongodocstore // import \"gocloud.dev/docstore/mongodocstore\"\n\n// MongoDB reference manual: https://docs.mongodb.com/manual\n// Client documentation: https://godoc.org/go.mongodb.org/mongo-driver/mongo\n//\n// The client methods accept a document of type interface{},\n// which is marshaled by the go.mongodb.org/mongo-driver/bson package.\n\nimport (\n\t\"context\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"github.com/google/wire\"\n\t\"go.mongodb.org/mongo-driver/bson\"\n\t\"go.mongodb.org/mongo-driver/bson/primitive\"\n\t\"go.mongodb.org/mongo-driver/mongo\"\n\t\"go.mongodb.org/mongo-driver/mongo/options\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// Dial returns a new mongoDB client that is connected to the server URI.\nfunc Dial(ctx context.Context, uri string) (*mongo.Client, error) {\n\topts := options.Client().ApplyURI(uri)\n\tif err := opts.Validate(); err != nil {\n\t\treturn nil, err\n\t}\n\tclient, err := mongo.NewClient(opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := client.Connect(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\treturn client, nil\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\ntype collection struct {\n\tcoll          *mongo.Collection\n\tidField       string\n\tidFunc        func(docstore.Document) interface{}\n\trevisionField string\n\topts          *Options\n}\n\n// Options holds various options.\ntype Options struct {\n\t// Lowercase all field names for document encoding, field selection, update\n\t// modifications and queries.\n\t//\n\t// If false (the default), then struct fields and MongoDB document fields will\n\t// have the same names. For example, a struct field F will correspond to a\n\t// MongoDB document field \"F\". This setting matches the behavior of other\n\t// docstore drivers, making code portable across services.\n\t//\n\t// If true, all fields correspond to lower-cased MongoDB document fields. The\n\t// field name F will correspond to the MongoDB document field \"f\", for\n\t// instance. Use this to make code that uses this package interoperate with\n\t// code that uses the official Go client for MongoDB,\n\t// go.mongodb.org/mongo-driver/mongo, which lowercases field names.\n\tLowercaseFields bool\n\t// The name of the field holding the document revision.\n\t// Defaults to docstore.DefaultRevisionField.\n\tRevisionField string\n\t// Whether Query.Update writes a new revision into the updated documents.\n\t// The default is false, meaning that a revision will be written to all\n\t// documents that satisfy the query's conditions. Set to true if and only if\n\t// the collection's documents do not have revision fields.\n\tNoWriteQueryUpdateRevisions bool\n}\n\n// OpenCollection opens a MongoDB collection for use with Docstore.\n// The idField argument is the name of the document field to use for the document ID\n// (MongoDB's _id field). If it is empty, the field \"_id\" will be used.\nfunc OpenCollection(mcoll *mongo.Collection, idField string, opts *Options) (*docstore.Collection, error) {\n\tdc, err := newCollection(mcoll, idField, nil, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(dc), nil\n}\n\n// OpenCollectionWithIDFunc opens a MongoDB collection for use with Docstore.\n// The idFunc argument is function that accepts a document and returns the value to\n// be used for the document ID (MongoDB's _id field). IDFunc should return nil if the\n// document is missing the information to construct an ID. This will cause all\n// actions, even Create, to fail.\nfunc OpenCollectionWithIDFunc(mcoll *mongo.Collection, idFunc func(docstore.Document) interface{}, opts *Options) (*docstore.Collection, error) {\n\tdc, err := newCollection(mcoll, \"\", idFunc, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn docstore.NewCollection(dc), nil\n}\n\nfunc newCollection(mcoll *mongo.Collection, idField string, idFunc func(docstore.Document) interface{}, opts *Options) (*collection, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif opts.RevisionField == \"\" {\n\t\topts.RevisionField = docstore.DefaultRevisionField\n\t}\n\tc := &collection{\n\t\tcoll:          mcoll,\n\t\tidField:       idField,\n\t\tidFunc:        idFunc,\n\t\trevisionField: opts.RevisionField,\n\t\topts:          opts,\n\t}\n\tif c.idField == \"\" && c.idFunc == nil {\n\t\tc.idField = mongoIDField\n\t}\n\n\tif opts.LowercaseFields {\n\t\tc.idField = strings.ToLower(c.idField)\n\t\tc.revisionField = strings.ToLower(c.revisionField)\n\t}\n\treturn c, nil\n}\n\nfunc (c *collection) Key(doc driver.Document) (interface{}, error) {\n\tif c.idField != \"\" {\n\t\tid, _ := doc.GetField(c.idField)\n\t\treturn id, nil // missing field is not an error\n\t}\n\tid := c.idFunc(doc.Origin)\n\tif id == nil || driver.IsEmptyValue(reflect.ValueOf(id)) {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"missing document key\")\n\t}\n\treturn id, nil\n}\n\nfunc (c *collection) RevisionField() string {\n\treturn c.opts.RevisionField\n}\n\n// From https://docs.mongodb.com/manual/core/document: \"The field name _id is\n// reserved for use as a primary key; its value must be unique in the collection, is\n// immutable, and may be of any type other than an array.\"\nconst mongoIDField = \"_id\"\n\nfunc (c *collection) RunActions(ctx context.Context, actions []*driver.Action, opts *driver.RunActionsOptions) driver.ActionListError {\n\terrs := make([]error, len(actions))\n\tbeforeGets, gets, writes, writesTx, afterGets := driver.GroupActions(actions)\n\tc.runGets(ctx, beforeGets, errs, opts)\n\tch := make(chan []error)\n\tgo func() { ch <- c.bulkWrite(ctx, writes, errs, opts) }()\n\tch2 := make(chan []error)\n\tgo func() { ch2 <- c.txWrite(ctx, writesTx, errs, opts) }()\n\tc.runGets(ctx, gets, errs, opts)\n\twriteErrs := <-ch\n\t<-ch2\n\tc.runGets(ctx, afterGets, errs, opts)\n\talerr := driver.NewActionListError(errs)\n\tfor _, werr := range writeErrs {\n\t\talerr = append(alerr, indexedError{-1, werr})\n\t}\n\treturn alerr\n}\n\ntype indexedError = struct {\n\tIndex int\n\tErr   error\n}\n\nfunc (c *collection) runGets(ctx context.Context, gets []*driver.Action, errs []error, opts *driver.RunActionsOptions) {\n\t// TODO(shantuo): figure out a reasonable batch size, there is no hard limit on\n\t// the item number or filter string length. The limit for bulk write batch size\n\t// is 100,000.\n\tfor _, group := range driver.GroupByFieldPath(gets) {\n\t\tc.bulkFind(ctx, group, errs, opts)\n\t}\n}\n\nfunc (c *collection) bulkFind(ctx context.Context, gets []*driver.Action, errs []error, dopts *driver.RunActionsOptions) {\n\t// errors need to be mapped to the actions' indices.\n\tsetErr := func(err error) {\n\t\tfor _, get := range gets {\n\t\t\tif errs[get.Index] == nil {\n\t\t\t\terrs[get.Index] = err\n\t\t\t}\n\t\t}\n\t}\n\n\topts := options.Find()\n\tif len(gets[0].FieldPaths) > 0 {\n\t\topts.Projection = c.projectionDoc(gets[0].FieldPaths)\n\t}\n\tids := bson.A{}\n\tidToAction := map[interface{}]*driver.Action{}\n\tfor _, a := range gets {\n\t\tid, err := encodeValue(a.Key)\n\t\tif err != nil {\n\t\t\terrs[a.Index] = err\n\t\t} else {\n\t\t\tids = append(ids, id)\n\t\t\tidToAction[id] = a\n\t\t}\n\t}\n\tif dopts.BeforeDo != nil {\n\t\tif err := dopts.BeforeDo(driver.AsFunc(opts)); err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn\n\t\t}\n\t}\n\tcursor, err := c.coll.Find(ctx, bson.D{bson.E{Key: mongoIDField, Value: bson.D{{Key: \"$in\", Value: ids}}}}, opts)\n\tif err != nil {\n\t\tsetErr(err)\n\t\treturn\n\t}\n\tdefer cursor.Close(ctx)\n\n\tfound := make(map[*driver.Action]bool)\n\tfor cursor.Next(ctx) {\n\t\tvar m map[string]interface{}\n\t\tif err := cursor.Decode(&m); err != nil {\n\t\t\tcontinue\n\t\t}\n\t\ta := idToAction[m[mongoIDField]]\n\t\terrs[a.Index] = decodeDoc(m, a.Doc, c.idField, c.opts.LowercaseFields)\n\t\tfound[a] = true\n\t}\n\tfor _, a := range gets {\n\t\tif !found[a] {\n\t\t\terrs[a.Index] = gcerr.Newf(gcerr.NotFound, nil, \"item with key %v not found\", a.Key)\n\t\t}\n\t}\n}\n\n// Construct a mongo \"projection document\" from field paths.\n// Always include the revision field.\nfunc (c *collection) projectionDoc(fps [][]string) bson.D {\n\tproj := bson.D{{Key: c.revisionField, Value: 1}}\n\tfor _, fp := range fps {\n\t\tpath := c.toMongoFieldPath(fp)\n\t\tif path != c.revisionField {\n\t\t\tproj = append(proj, bson.E{Key: path, Value: 1})\n\t\t}\n\t}\n\treturn proj\n}\n\nfunc (c *collection) toMongoFieldPath(fp []string) string {\n\tif c.opts.LowercaseFields {\n\t\tsliceToLower(fp)\n\t}\n\treturn strings.Join(fp, \".\")\n}\n\nfunc sliceToLower(s []string) {\n\tfor i, e := range s {\n\t\ts[i] = strings.ToLower(e)\n\t}\n}\n\nfunc (c *collection) prepareCreate(a *driver.Action) (mdoc, createdID interface{}, rev string, err error) {\n\tid := a.Key\n\tif id == nil {\n\t\t// Create a unique ID here. (The MongoDB Go client does this for us when calling InsertOne,\n\t\t// but not for BulkWrite.)\n\t\tid = primitive.NewObjectID()\n\t\tcreatedID = id\n\t} else {\n\t\tid, err = encodeValue(id)\n\t\tif err != nil {\n\t\t\treturn nil, nil, \"\", err\n\t\t}\n\t}\n\tmdoc, rev, err = c.encodeDoc(a.Doc, id)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\treturn mdoc, createdID, rev, nil\n}\n\nfunc (c *collection) prepareReplace(a *driver.Action) (filter bson.D, mdoc map[string]interface{}, rev string, err error) {\n\tid, err := encodeValue(a.Key)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\tfilter, _, err = c.makeFilter(id, a.Doc)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\tmdoc, rev, err = c.encodeDoc(a.Doc, id)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\treturn filter, mdoc, rev, nil\n}\n\n// encodeDoc encodes doc and sets its ID to the encoded value id. It also creates a new revision and sets it.\n// It returns the encoded document and the new revision.\nfunc (c *collection) encodeDoc(doc driver.Document, id interface{}) (map[string]interface{}, string, error) {\n\tmdoc, err := encodeDoc(doc, c.opts.LowercaseFields)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tif id != nil {\n\t\tif c.idField != \"\" {\n\t\t\tdelete(mdoc, c.idField)\n\t\t}\n\t\tmdoc[mongoIDField] = id\n\t}\n\tvar rev string\n\tif c.hasField(doc, c.revisionField) {\n\t\trev = driver.UniqueString()\n\t\tmdoc[c.revisionField] = rev\n\t}\n\treturn mdoc, rev, nil\n}\n\nfunc (c *collection) prepareUpdate(a *driver.Action) (filter bson.D, updateDoc map[string]bson.D, rev string, err error) {\n\tid, err := encodeValue(a.Key)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\tfilter, _, err = c.makeFilter(id, a.Doc)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\tupdateDoc, rev, err = c.newUpdateDoc(a.Mods, c.hasField(a.Doc, c.revisionField))\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\treturn filter, updateDoc, rev, nil\n}\n\nfunc (c *collection) newUpdateDoc(mods []driver.Mod, writeRevision bool) (map[string]bson.D, string, error) {\n\tvar (\n\t\tsets   bson.D\n\t\tunsets bson.D\n\t\tincs   bson.D\n\t)\n\tfor _, m := range mods {\n\t\tkey := c.toMongoFieldPath(m.FieldPath)\n\t\tif m.Value == nil {\n\t\t\tunsets = append(unsets, bson.E{Key: key, Value: \"\"})\n\t\t} else if inc, ok := m.Value.(driver.IncOp); ok {\n\t\t\tval, err := encodeValue(inc.Amount)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, \"\", err\n\t\t\t}\n\t\t\tincs = append(incs, bson.E{Key: key, Value: val})\n\t\t} else {\n\t\t\tval, err := encodeValue(m.Value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, \"\", err\n\t\t\t}\n\t\t\tsets = append(sets, bson.E{Key: key, Value: val})\n\t\t}\n\t}\n\tupdateDoc := map[string]bson.D{}\n\tvar rev string\n\tif writeRevision {\n\t\trev = driver.UniqueString()\n\t\tsets = append(sets, bson.E{Key: c.revisionField, Value: rev})\n\t}\n\tif len(sets) > 0 {\n\t\tupdateDoc[\"$set\"] = sets\n\t}\n\tif len(unsets) > 0 {\n\t\tupdateDoc[\"$unset\"] = unsets\n\t}\n\tif len(incs) > 0 {\n\t\tupdateDoc[\"$inc\"] = incs\n\t}\n\treturn updateDoc, rev, nil\n}\n\n// makeFilter constructs a filter using the given encoded id and the document's revision field, if any.\nfunc (c *collection) makeFilter(id interface{}, doc driver.Document) (filter bson.D, rev interface{}, err error) {\n\trev, err = doc.GetField(c.revisionField)\n\tif err != nil && gcerrors.Code(err) != gcerrors.NotFound {\n\t\treturn nil, nil, err\n\t}\n\t// Only select the document with the given ID.\n\tfilter = bson.D{bson.E{Key: \"_id\", Value: id}}\n\t// If the given document has a revision, it must match the stored document.\n\tif rev != nil {\n\t\tfilter = append(filter, bson.E{Key: c.revisionField, Value: rev})\n\t}\n\treturn filter, rev, nil\n}\n\n// bulkWrite calls the Mongo driver's BulkWrite RPC in unordered mode with the\n// actions, which must be writes.\n// errs is the slice of errors indexed by the position of the action in the original\n// action list. bulkWrite populates this slice. In addition, bulkWrite returns a list\n// of errors that cannot be attributed to any single action.\nfunc (c *collection) bulkWrite(ctx context.Context, actions []*driver.Action, errs []error, dopts *driver.RunActionsOptions) []error {\n\tvar (\n\t\tmodels          []mongo.WriteModel\n\t\tmodelActions    []*driver.Action // corresponding action for each model\n\t\tnewIDs          []interface{}    // new IDs for Create actions, corresponding to models slice\n\t\trevs            []string         // new revisions, corresponding to models slice\n\t\tnDeletes        int64\n\t\tnNonCreateWrite int64 // total operations expected from Put, Replace and Update\n\t)\n\tfor _, a := range actions {\n\t\tvar m mongo.WriteModel\n\t\tvar err error\n\t\tvar newID interface{}\n\t\tvar rev string\n\t\tswitch a.Kind {\n\t\tcase driver.Create:\n\t\t\tm, newID, rev, err = c.newCreateModel(a)\n\t\tcase driver.Delete:\n\t\t\tm, err = c.newDeleteModel(a)\n\t\t\tif err == nil {\n\t\t\t\tnDeletes++\n\t\t\t}\n\t\tcase driver.Replace, driver.Put:\n\t\t\tm, rev, err = c.newReplaceModel(a, a.Kind == driver.Put)\n\t\t\tif err == nil {\n\t\t\t\tnNonCreateWrite++\n\t\t\t}\n\t\tcase driver.Update:\n\t\t\tm, rev, err = c.newUpdateModel(a)\n\t\t\tif err == nil && m != nil {\n\t\t\t\tnNonCreateWrite++\n\t\t\t}\n\t\tdefault:\n\t\t\terr = gcerr.Newf(gcerr.Internal, nil, \"bad action %+v\", a)\n\t\t}\n\t\tif err != nil {\n\t\t\terrs[a.Index] = err\n\t\t} else if m != nil { // m can be nil for a no-op update\n\t\t\tmodels = append(models, m)\n\t\t\tmodelActions = append(modelActions, a)\n\t\t\tnewIDs = append(newIDs, newID)\n\t\t\trevs = append(revs, rev)\n\t\t}\n\t}\n\tif len(models) == 0 {\n\t\treturn nil\n\t}\n\n\tbopts := options.BulkWrite().SetOrdered(false)\n\tif dopts.BeforeDo != nil {\n\t\tasFunc := func(target interface{}) bool {\n\t\t\tswitch t := target.(type) {\n\t\t\tcase *[]mongo.WriteModel:\n\t\t\t\t*t = models\n\t\t\tcase **options.BulkWriteOptions:\n\t\t\t\t*t = bopts\n\t\t\tdefault:\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif err := dopts.BeforeDo(asFunc); err != nil {\n\t\t\treturn []error{err}\n\t\t}\n\t}\n\n\t// TODO(jba): improve independent execution. I think that even if BulkWrite returns an error,\n\t// some of the actions may have succeeded.\n\tvar reterrs []error\n\tres, err := c.coll.BulkWrite(ctx, models, bopts)\n\tif err != nil {\n\t\tbwe, ok := err.(mongo.BulkWriteException)\n\t\tif !ok { // assume everything failed with this error\n\t\t\treturn []error{err}\n\t\t}\n\t\t// The returned indexes of the WriteErrors are wrong. See https://jira.mongodb.org/browse/GODRIVER-1028.\n\t\t// Until it's fixed, use negative values for the indexes in the errors we return.\n\t\tfor _, w := range bwe.WriteErrors {\n\t\t\treterrs = append(reterrs, gcerr.Newf(translateMongoCode(w.Code), w, \"%s\", w.Message))\n\t\t}\n\t\treturn reterrs\n\t}\n\tfor i, newID := range newIDs {\n\t\tif newID == nil {\n\t\t\tcontinue\n\t\t}\n\t\ta := modelActions[i]\n\t\tif err := a.Doc.SetField(c.idField, newID); err != nil {\n\t\t\terrs[a.Index] = err\n\t\t}\n\t}\n\tfor i, rev := range revs {\n\t\ta := modelActions[i]\n\t\tif rev != \"\" && c.hasField(a.Doc, c.revisionField) {\n\t\t\tif err := a.Doc.SetField(c.revisionField, rev); err != nil && errs[a.Index] == nil {\n\t\t\t\terrs[a.Index] = err\n\t\t\t}\n\t\t}\n\t}\n\tif res.DeletedCount != nDeletes {\n\t\t// Some Delete actions failed. It's not an error if a Delete failed because\n\t\t// the document didn't exist, but it is an error if it failed because of a\n\t\t// precondition mismatch. Find all the documents with revisions we tried to delete; if\n\t\t// any are still present, that's an error.\n\t\tc.determineDeleteErrors(ctx, models, modelActions, errs)\n\t}\n\tif res.MatchedCount+res.UpsertedCount != nNonCreateWrite {\n\t\treterrs = append(reterrs, gcerr.Newf(gcerr.NotFound, nil, \"some writes failed (replaced %d, upserted %d, out of total %d)\", res.MatchedCount, res.UpsertedCount, nNonCreateWrite))\n\t}\n\treturn reterrs\n}\n\nfunc (c *collection) txWrite(ctx context.Context, actions []*driver.Action, errs []error, dopts *driver.RunActionsOptions) []error {\n\tvar (\n\t\tmodels          []mongo.WriteModel\n\t\tmodelActions    []*driver.Action // corresponding action for each model\n\t\tnewIDs          []interface{}    // new IDs for Create actions, corresponding to models slice\n\t\trevs            []string         // new revisions, corresponding to models slice\n\t\tnDeletes        int64\n\t\tnNonCreateWrite int64 // total operations expected from Put, Replace and Update\n\t)\n\n\t// all actions will fail atomically even if a single action fails\n\tsetErr := func(err error) {\n\t\tfor _, a := range actions {\n\t\t\terrs[a.Index] = err\n\t\t}\n\t}\n\n\tfor _, a := range actions {\n\t\tvar m mongo.WriteModel\n\t\tvar err error\n\t\tvar newID interface{}\n\t\tvar rev string\n\t\tswitch a.Kind {\n\t\tcase driver.Create:\n\t\t\tm, newID, rev, err = c.newCreateModel(a)\n\t\tcase driver.Delete:\n\t\t\tm, err = c.newDeleteModel(a)\n\t\t\tif err == nil {\n\t\t\t\tnDeletes++\n\t\t\t}\n\t\tcase driver.Replace, driver.Put:\n\t\t\tm, rev, err = c.newReplaceModel(a, a.Kind == driver.Put)\n\t\t\tif err == nil {\n\t\t\t\tnNonCreateWrite++\n\t\t\t}\n\t\tcase driver.Update:\n\t\t\tm, rev, err = c.newUpdateModel(a)\n\t\t\tif err == nil && m != nil {\n\t\t\t\tnNonCreateWrite++\n\t\t\t}\n\t\tdefault:\n\t\t\terr = gcerr.Newf(gcerr.Internal, nil, \"bad action %+v\", a)\n\t\t}\n\t\tif err != nil {\n\t\t\tsetErr(err)\n\t\t\treturn nil\n\t\t} else if m != nil { // m can be nil for a no-op update\n\t\t\tmodels = append(models, m)\n\t\t\tmodelActions = append(modelActions, a)\n\t\t\tnewIDs = append(newIDs, newID)\n\t\t\trevs = append(revs, rev)\n\t\t}\n\t}\n\tif len(models) == 0 {\n\t\treturn nil\n\t}\n\n\tbopts := options.BulkWrite().SetOrdered(true)\n\tif dopts.BeforeDo != nil {\n\t\tasFunc := func(target interface{}) bool {\n\t\t\tswitch t := target.(type) {\n\t\t\tcase *[]mongo.WriteModel:\n\t\t\t\t*t = models\n\t\t\tcase **options.BulkWriteOptions:\n\t\t\t\t*t = bopts\n\t\t\tdefault:\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t}\n\t\tif err := dopts.BeforeDo(asFunc); err != nil {\n\t\t\treturn []error{err}\n\t\t}\n\t}\n\n\tclient := c.coll.Database().Client()\n\tsession, err := client.StartSession()\n\tif err != nil {\n\t\tsetErr(err)\n\t\treturn nil\n\t}\n\tdefer session.EndSession(ctx)\n\n\tcallback := func(sessionCtx mongo.SessionContext) error {\n\t\tif err := session.StartTransaction(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tres, err := c.coll.BulkWrite(sessionCtx, models, bopts)\n\t\tif res.DeletedCount != nDeletes {\n\t\t\t// Some Delete actions failed. It's not an error if a Delete failed because\n\t\t\t// the document didn't exist, but it is an error if it failed because of a\n\t\t\t// precondition mismatch. Find all the documents with revisions we tried to delete; if\n\t\t\t// any are still present, that's an error.\n\t\t\tif c.determineDeleteErrors(ctx, models, modelActions, errs) {\n\t\t\t\tsetErr(gcerr.Newf(gcerr.FailedPrecondition, nil,\n\t\t\t\t\t\"wrong revision for document to be deleted\"))\n\t\t\t}\n\t\t}\n\t\tif res.MatchedCount+res.UpsertedCount != nNonCreateWrite {\n\t\t\terr = gcerr.Newf(gcerr.NotFound, nil, \"some writes failed (replaced %d, upserted %d, out of total %d)\", res.MatchedCount, res.UpsertedCount, nNonCreateWrite)\n\t\t}\n\t\tif err != nil {\n\t\t\tabortTxErr := session.AbortTransaction(context.Background())\n\t\t\tif abortTxErr != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\n\t\tif err = session.CommitTransaction(sessionCtx); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\treturn nil\n\t}\n\n\terr = mongo.WithSession(ctx, session, callback)\n\n\tif err != nil {\n\t\tsetErr(err)\n\t\treturn nil\n\t}\n\treturn nil\n}\n\n// determineDeleteErrors find the errors for the delete and return true if found any\nfunc (c *collection) determineDeleteErrors(ctx context.Context, models []mongo.WriteModel, actions []*driver.Action, errs []error) bool {\n\t// TODO(jba): do this concurrently.\n\tfoundErr := false\n\tfor i, m := range models {\n\t\tif dm, ok := m.(*mongo.DeleteOneModel); ok {\n\t\t\tfilter := dm.Filter.(bson.D)\n\t\t\tif len(filter) > 1 {\n\t\t\t\t// Delete with both ID and revision. See if the document is still there.\n\t\t\t\tidOnlyFilter := filter[:1]\n\t\t\t\t// TODO(shantuo): use Find instead of FindOne.\n\t\t\t\tres := c.coll.FindOne(ctx, idOnlyFilter)\n\n\t\t\t\t// Assume an error means the document wasn't found.\n\t\t\t\t// That means either that it was deleted successfully, or that it never\n\t\t\t\t// existed. Either way, it's not an error.\n\t\t\t\t// TODO(jba): distinguish between not found and other errors.\n\t\t\t\tif res.Err() == nil {\n\t\t\t\t\t// The document exists, but we didn't delete it: assume we had the wrong\n\t\t\t\t\t// revision.\n\t\t\t\t\terrs[actions[i].Index] = gcerr.Newf(gcerr.FailedPrecondition, nil,\n\t\t\t\t\t\t\"wrong revision for document with ID %v\", actions[i].Key)\n\t\t\t\t\tfoundErr = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn foundErr\n}\n\nfunc (c *collection) newCreateModel(a *driver.Action) (*mongo.InsertOneModel, interface{}, string, error) {\n\tmdoc, createdID, rev, err := c.prepareCreate(a)\n\tif err != nil {\n\t\treturn nil, nil, \"\", err\n\t}\n\treturn &mongo.InsertOneModel{Document: mdoc}, createdID, rev, nil\n}\n\nfunc (c *collection) newDeleteModel(a *driver.Action) (*mongo.DeleteOneModel, error) {\n\tid, err := encodeValue(a.Key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfilter, _, err := c.makeFilter(id, a.Doc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &mongo.DeleteOneModel{Filter: filter}, nil\n}\n\nfunc (c *collection) newReplaceModel(a *driver.Action, upsert bool) (*mongo.ReplaceOneModel, string, error) {\n\tfilter, mdoc, rev, err := c.prepareReplace(a)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\treturn &mongo.ReplaceOneModel{\n\t\tFilter:      filter,\n\t\tReplacement: mdoc,\n\t\tUpsert:      &upsert,\n\t}, rev, nil\n}\n\nfunc (c *collection) newUpdateModel(a *driver.Action) (*mongo.UpdateOneModel, string, error) {\n\tfilter, updateDoc, rev, err := c.prepareUpdate(a)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tif filter == nil { // no-op\n\t\treturn nil, \"\", nil\n\t}\n\treturn &mongo.UpdateOneModel{Filter: filter, Update: updateDoc}, rev, nil\n}\n\n// RevisionToBytes implements driver.RevisionToBytes.\nfunc (c *collection) RevisionToBytes(rev interface{}) ([]byte, error) {\n\ts, ok := rev.(string)\n\tif !ok {\n\t\treturn nil, gcerr.Newf(gcerr.InvalidArgument, nil, \"revision %v of type %[1]T is not a string\", rev)\n\t}\n\treturn []byte(s), nil\n}\n\nfunc (c *collection) hasField(doc driver.Document, field string) bool {\n\tif c.opts.LowercaseFields {\n\t\treturn doc.HasFieldFold(field)\n\t}\n\treturn doc.HasField(field)\n}\n\n// BytesToRevision implements driver.BytesToRevision.\nfunc (c *collection) BytesToRevision(b []byte) (interface{}, error) {\n\treturn string(b), nil\n}\n\n// As implements driver.As.\nfunc (c *collection) As(i interface{}) bool {\n\tp, ok := i.(**mongo.Collection)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = c.coll\n\treturn true\n}\n\n// ErrorAs implements driver.Collection.ErrorAs\nfunc (c *collection) ErrorAs(err error, i interface{}) bool {\n\tswitch e := err.(type) {\n\tcase mongo.CommandError:\n\t\tif p, ok := i.(*mongo.CommandError); ok {\n\t\t\t*p = e\n\t\t\treturn true\n\t\t}\n\tcase mongo.BulkWriteError:\n\t\tif p, ok := i.(*mongo.BulkWriteError); ok {\n\t\t\t*p = e\n\t\t\treturn true\n\t\t}\n\tcase mongo.BulkWriteException:\n\t\tif p, ok := i.(*mongo.BulkWriteException); ok {\n\t\t\t*p = e\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ErrorCode implements driver.Collection.ErrorCode.\nfunc (c *collection) ErrorCode(err error) gcerrors.ErrorCode {\n\tif g, ok := err.(*gcerr.Error); ok {\n\t\treturn g.Code\n\t}\n\tif err == mongo.ErrNoDocuments {\n\t\treturn gcerrors.NotFound\n\t}\n\tif wexc, ok := err.(mongo.WriteException); ok && len(wexc.WriteErrors) > 0 {\n\t\treturn translateMongoCode(wexc.WriteErrors[0].Code)\n\t}\n\treturn gcerrors.Unknown\n}\n\n// Close implements driver.Collection.Close.\nfunc (c *collection) Close() error { return nil }\n\n// Error code for a write error when no documents match a filter.\n// (The Go mongo driver doesn't define an exported constant for this.)\nconst mongoDupKeyCode = 11000\n\nfunc translateMongoCode(code int) gcerrors.ErrorCode {\n\tswitch code {\n\tcase mongoDupKeyCode:\n\t\treturn gcerrors.AlreadyExists\n\tdefault:\n\t\treturn gcerrors.Unknown\n\t}\n}\n"
  },
  {
    "path": "docstore/mongodocstore/mongo_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore\n\n// To run these tests against a real MongoDB server, first run ./localmongo.sh.\n// Then wait a few seconds for the server to be ready.\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"go.mongodb.org/mongo-driver/bson\"\n\t\"go.mongodb.org/mongo-driver/mongo\"\n\t\"go.mongodb.org/mongo-driver/mongo/options\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/docstore/drivertest\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\nconst (\n\tserverURIV3     = \"mongodb://localhost:27020\"\n\tserverURIV4     = \"mongodb://localhost:27017/?directConnection=true\"\n\tdbName          = \"docstore-test\"\n\tcollectionName1 = \"docstore-test-1\"\n\tcollectionName2 = \"docstore-test-2\"\n\tcollectionName3 = \"docstore-test-3\"\n)\n\ntype harness struct {\n\tdb                  *mongo.Database\n\tsupportAtomicWrites bool\n}\n\nfunc (h *harness) MakeCollection(ctx context.Context, kind drivertest.CollectionKind) (driver.Collection, error) {\n\tvar coll *collection\n\tvar err error\n\tswitch kind {\n\tcase drivertest.SingleKey:\n\t\tcoll, err = newCollection(h.db.Collection(collectionName1), drivertest.KeyField, nil, nil)\n\tcase drivertest.TwoKey:\n\t\tcoll, err = newCollection(h.db.Collection(collectionName2), \"\", drivertest.HighScoreKey, nil)\n\tcase drivertest.AltRev:\n\t\tcoll, err = newCollection(h.db.Collection(collectionName1), drivertest.KeyField, nil,\n\t\t\t&Options{RevisionField: drivertest.AlternateRevisionField})\n\tcase drivertest.NoRev:\n\t\tcoll, err = newCollection(h.db.Collection(collectionName1), drivertest.KeyField, nil,\n\t\t\t&Options{NoWriteQueryUpdateRevisions: true})\n\tdefault:\n\t\tpanic(\"bad kind\")\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// It seems that the client doesn't actually connect until the first RPC. So\n\t// time out quickly if there's a problem.\n\ttctx, cancel := context.WithTimeout(ctx, 5*time.Second)\n\tdefer cancel()\n\tif err := coll.coll.Drop(tctx); err != nil {\n\t\treturn nil, err\n\t}\n\treturn coll, nil\n}\n\nfunc (h *harness) SupportsAtomicWrites() bool { return h.supportAtomicWrites }\n\nfunc (*harness) BeforeDoTypes() []interface{} {\n\treturn []interface{}{\n\t\t[]mongo.WriteModel{},\n\t\t&options.FindOptions{},\n\t}\n}\n\nfunc (*harness) BeforeQueryTypes() []interface{} {\n\treturn []interface{}{&options.FindOptions{}, bson.D{}}\n}\n\nfunc (*harness) RevisionsEqual(rev1, rev2 interface{}) bool {\n\treturn rev1 == rev2\n}\n\nfunc (*harness) Close() {}\n\ntype codecTester struct{}\n\nfunc (codecTester) UnsupportedTypes() []drivertest.UnsupportedType {\n\treturn []drivertest.UnsupportedType{drivertest.NanosecondTimes}\n}\n\nfunc (codecTester) DocstoreEncode(x interface{}) (interface{}, error) {\n\tm, err := encodeDoc(drivertest.MustDocument(x), true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn bson.Marshal(m)\n}\n\nfunc (codecTester) DocstoreDecode(value, dest interface{}) error {\n\tvar m map[string]interface{}\n\tif err := bson.Unmarshal(value.([]byte), &m); err != nil {\n\t\treturn err\n\t}\n\treturn decodeDoc(m, drivertest.MustDocument(dest), mongoIDField, true)\n}\n\nfunc (codecTester) NativeEncode(x interface{}) (interface{}, error) {\n\treturn bson.Marshal(x)\n}\n\nfunc (codecTester) NativeDecode(value, dest interface{}) error {\n\treturn bson.Unmarshal(value.([]byte), dest)\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) CollectionCheck(coll *docstore.Collection) error {\n\tvar mc *mongo.Collection\n\tif !coll.As(&mc) {\n\t\treturn errors.New(\"Collection.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) QueryCheck(it *docstore.DocumentIterator) error {\n\tvar c *mongo.Cursor\n\tif !it.As(&c) {\n\t\treturn errors.New(\"DocumentIterator.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(c *docstore.Collection, err error) error {\n\tvar cmderr mongo.CommandError\n\tvar bwerr mongo.BulkWriteError\n\tvar bwexc mongo.BulkWriteException\n\tif !c.ErrorAs(err, &cmderr) && !c.ErrorAs(err, &bwerr) && !c.ErrorAs(err, &bwexc) {\n\t\tif e, ok := err.(*gcerr.Error); ok {\n\t\t\terr = e.Unwrap()\n\t\t}\n\t\treturn fmt.Errorf(\"Collection.ErrorAs failed, got %T\", err)\n\t}\n\treturn nil\n}\n\nfunc TestConformance(t *testing.T) {\n\t// mongo 3 doesn't support atomic writes\n\tt.Run(\"V3\", func(t *testing.T) { testConformance(t, serverURIV3, false) })\n\tt.Run(\"V4\", func(t *testing.T) { testConformance(t, serverURIV4, true) })\n}\n\nfunc testConformance(t *testing.T, serverURI string, supportsAtomicWrites bool) {\n\tclient := newTestClient(t, serverURI)\n\tdefer client.Disconnect(context.Background())\n\n\tnewHarness := func(context.Context, *testing.T) (drivertest.Harness, error) {\n\t\treturn &harness{client.Database(dbName), supportsAtomicWrites}, nil\n\t}\n\tdrivertest.RunConformanceTests(t, newHarness, codecTester{}, []drivertest.AsTest{verifyAs{}})\n}\n\nfunc newTestClient(t *testing.T, serverURI string) *mongo.Client {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping Mongo tests since the Mongo server is not available\")\n\t}\n\tctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)\n\tdefer cancel()\n\tclient, err := Dial(ctx, serverURI)\n\tif err != nil {\n\t\tt.Fatalf(\"dialing to %s: %v\", serverURI, err)\n\t}\n\tif err := client.Ping(ctx, nil); err != nil {\n\t\tt.Fatalf(\"connecting to %s: %v\", serverURI, err)\n\t}\n\treturn client\n}\n\nfunc BenchmarkConformance(b *testing.B) {\n\tctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)\n\tdefer cancel()\n\n\t// Only run benchmark once (against MongoDB v4).\n\tclient, err := Dial(ctx, serverURIV4)\n\tif err != nil {\n\t\tb.Fatalf(\"dialing to %s: %v\", serverURIV4, err)\n\t}\n\tif err := client.Ping(ctx, nil); err != nil {\n\t\tb.Fatalf(\"connecting to %s: %v\", serverURIV4, err)\n\t}\n\tdefer func() { client.Disconnect(context.Background()) }()\n\n\tdb := client.Database(dbName)\n\tcoll, err := newCollection(db.Collection(collectionName3), drivertest.KeyField, nil, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdrivertest.RunBenchmarks(b, docstore.NewCollection(coll))\n}\n\n// Mongo-specific tests.\n\n// Testing the driver lower all fields in lowercaseFields mode to match the\n// behavior of the official Go MongoDB client library.\nfunc TestLowercaseFields(t *testing.T) {\n\t// Verify that the LowercaseFields option works in all cases.\n\tmust := func(err error) {\n\t\tt.Helper()\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\tctx := context.Background()\n\tclient := newTestClient(t, serverURIV4)\n\tdefer func() { client.Disconnect(ctx) }()\n\tdb := client.Database(dbName)\n\tdc, err := newCollection(db.Collection(\"lowercase-fields\"), \"id\", nil, &Options{LowercaseFields: true})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcoll := docstore.NewCollection(dc)\n\tdefer coll.Close()\n\tdefer drivertest.ClearCollection(t, coll)\n\n\ttype S struct {\n\t\tID, F, G         int\n\t\tDocstoreRevision interface{}\n\t}\n\n\t// driver.Document.GetField is case-insensitive on structs.\n\tdoc := drivertest.MustDocument(&S{ID: 1, DocstoreRevision: 1})\n\tfor _, f := range []string{\"ID\", \"Id\", \"id\", \"DocstoreRevision\", \"docstorerevision\"} {\n\t\tgot, err := doc.GetField(f)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"%s: %v\", f, err)\n\t\t}\n\t\tif got != 1 {\n\t\t\tt.Errorf(\"got %q, want 1\", got)\n\t\t}\n\t}\n\n\tcheck := func(got, want interface{}) {\n\t\tt.Helper()\n\t\tif !cmp.Equal(got, want) {\n\t\t\tt.Errorf(\"\\ngot  %+v\\nwant %+v\", got, want)\n\t\t}\n\t}\n\n\tsdoc := &S{ID: 1, F: 2, G: 3}\n\tmust(coll.Put(ctx, sdoc))\n\tif sdoc.DocstoreRevision == nil {\n\t\tt.Fatal(\"revision is nil\")\n\t}\n\n\t// Get with a struct.\n\tgot := S{ID: 1}\n\tmust(coll.Get(ctx, &got))\n\tcheck(got, S{ID: 1, F: 2, G: 3, DocstoreRevision: sdoc.DocstoreRevision})\n\n\t// Get with map.\n\tgot2 := map[string]interface{}{\"id\": 1}\n\tmust(coll.Get(ctx, got2))\n\tcheck(got2, map[string]interface{}{\n\t\t\"id\": int64(1), \"f\": int64(2), \"g\": int64(3),\n\t\t\"docstorerevision\": sdoc.DocstoreRevision,\n\t})\n\n\t// Field paths in Get.\n\tgot3 := S{ID: 1}\n\tmust(coll.Get(ctx, &got3, \"G\"))\n\tcheck(got3, S{ID: 1, F: 0, G: 3, DocstoreRevision: sdoc.DocstoreRevision})\n\n\t// Field paths in Update.\n\tgot4 := map[string]interface{}{\"id\": 1}\n\tudoc := &S{ID: 1}\n\tmust(coll.Actions().Update(udoc, docstore.Mods{\"F\": 4}).Get(got4).Do(ctx))\n\tcheck(got4, map[string]interface{}{\n\t\t\"id\": int64(1), \"f\": int64(4), \"g\": int64(3),\n\t\t\"docstorerevision\": udoc.DocstoreRevision,\n\t})\n\n\t// Query filters.\n\tvar got5 S\n\tmust(coll.Query().Where(\"ID\", \"=\", 1).Where(\"G\", \">\", 2).Get(ctx).Next(ctx, &got5))\n\tcheck(got5, S{ID: 1, F: 4, G: 3, DocstoreRevision: udoc.DocstoreRevision})\n\n\t// Query orders.\n\tsdoc2 := &S{ID: 2, F: 5, G: 6}\n\tmust(coll.Put(ctx, sdoc2))\n\tvar got6 S\n\tmust(coll.Query().OrderBy(\"G\", docstore.Descending).Get(ctx).Next(ctx, &got6))\n\tcheck(got6, *sdoc2)\n\n\t// List queries\n\t// select F from coll WHERE G IN (50, 51) ORDER BY G DESC\n\t// test that F is 99\n\tsdoc3 := &S{ID: 3, F: 99, G: 50}\n\tsdoc4 := &S{ID: 4, F: 99, G: 51}\n\tmust(coll.Put(ctx, sdoc3))\n\tmust(coll.Put(ctx, sdoc4))\n\tvar got7, got8 S\n\titer := coll.Query().Where(\"G\", \"in\", []int{50, 51}).OrderBy(\"G\", docstore.Descending).Get(ctx)\n\tmust(iter.Next(ctx, &got7))\n\tmust(iter.Next(ctx, &got8))\n\tcheck(got7, *sdoc4)\n\tcheck(got8, *sdoc3)\n\n\t// same query with not-in, expect to get sdoc2 back even though G is higher for sdoc3 and sdoc4\n\tvar got9 S\n\tmust(coll.Query().Where(\"G\", \"not-in\", []int{50, 51}).OrderBy(\"G\", docstore.Descending).Get(ctx).Next(ctx, &got9))\n\tcheck(got9, *sdoc2)\n}\n"
  },
  {
    "path": "docstore/mongodocstore/query.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"go.mongodb.org/mongo-driver/bson\"\n\t\"go.mongodb.org/mongo-driver/mongo\"\n\t\"go.mongodb.org/mongo-driver/mongo/options\"\n\t\"gocloud.dev/docstore/driver\"\n)\n\nfunc (c *collection) RunGetQuery(ctx context.Context, q *driver.Query) (driver.DocumentIterator, error) {\n\topts := options.Find()\n\tif len(q.FieldPaths) > 0 {\n\t\topts.Projection = c.projectionDoc(q.FieldPaths)\n\t}\n\tif q.Offset > 0 {\n\t\toffset := int64(q.Offset)\n\t\topts.Skip = &offset\n\t}\n\tif q.Limit > 0 {\n\t\tlim := int64(q.Limit)\n\t\topts.Limit = &lim\n\t}\n\tif q.OrderByField != \"\" {\n\t\tf := q.OrderByField\n\t\tif c.opts.LowercaseFields {\n\t\t\tf = strings.ToLower(f)\n\t\t}\n\t\tvar dir int\n\t\tif q.OrderAscending {\n\t\t\tdir = 1\n\t\t} else {\n\t\t\tdir = -1\n\t\t}\n\t\topts.Sort = bson.D{{Key: f, Value: dir}}\n\t}\n\n\tfilter := bson.D{} // must be a zero-length slice, not nil\n\tfor _, f := range q.Filters {\n\t\tbf, err := c.filterToBSON(f)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfilter = append(filter, bf)\n\t}\n\tif q.BeforeQuery != nil {\n\t\tif err := q.BeforeQuery(driver.AsFunc(opts)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tcursor, err := c.coll.Find(ctx, filter, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &docIterator{cursor: cursor, idField: c.idField, ctx: ctx, lowercaseFields: c.opts.LowercaseFields}, nil\n}\n\nvar mongoQueryOps = map[string]string{\n\tdriver.EqualOp: \"$eq\",\n\t\">\":            \"$gt\",\n\t\">=\":           \"$gte\",\n\t\"<\":            \"$lt\",\n\t\"<=\":           \"$lte\",\n\t\"in\":           \"$in\",\n\t\"not-in\":       \"$nin\",\n}\n\n// filtersToBSON converts a []driver.Filter to the MongoDB equivalent, expressed\n// as a bson.D (list of key-value pairs).\nfunc (c *collection) filtersToBSON(fs []driver.Filter) (bson.D, error) {\n\tfilter := bson.D{} // must be a zero-length slice, not nil\n\tfor _, f := range fs {\n\t\tbf, err := c.filterToBSON(f)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfilter = append(filter, bf)\n\t}\n\treturn filter, nil\n}\n\n// filterToBSON converts a driver.Filter to the MongoDB equivalent, expressed\n// as a bson.E (key-value pair).\n// The MongoDB document corresponding to \"field op value\" is\n//\n//\t{field: {mop: value}}\n//\n// where mop is the mongo version of op (see the mongoQueryOps map above).\nfunc (c *collection) filterToBSON(f driver.Filter) (bson.E, error) {\n\tkey := c.toMongoFieldPath(f.FieldPath)\n\tif c.idField != \"\" && key == c.idField {\n\t\tkey = mongoIDField\n\t}\n\tval, err := encodeValue(f.Value)\n\tif err != nil {\n\t\treturn bson.E{}, err\n\t}\n\top := mongoQueryOps[f.Op]\n\tif op == \"\" {\n\t\treturn bson.E{}, fmt.Errorf(\"no mongo operator for %q\", f.Op)\n\t}\n\treturn bson.E{Key: key, Value: bson.D{{Key: op, Value: val}}}, nil\n}\n\ntype docIterator struct {\n\tcursor          *mongo.Cursor\n\tidField         string\n\tctx             context.Context // remember for Stop\n\tlowercaseFields bool\n}\n\nfunc (it *docIterator) Next(ctx context.Context, doc driver.Document) error {\n\tm, err := it.nextMap(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn decodeDoc(m, doc, it.idField, it.lowercaseFields)\n}\n\nfunc (it *docIterator) nextMap(ctx context.Context) (map[string]interface{}, error) {\n\tif !it.cursor.Next(ctx) {\n\t\tif it.cursor.Err() != nil {\n\t\t\treturn nil, it.cursor.Err()\n\t\t}\n\t\treturn nil, io.EOF\n\t}\n\tvar m map[string]interface{}\n\tif err := it.cursor.Decode(&m); err != nil {\n\t\treturn nil, fmt.Errorf(\"cursor.Decode: %v\", err)\n\t}\n\treturn m, nil\n}\n\nfunc (it *docIterator) Stop() {\n\t// Ignore error on Close.\n\t_ = it.cursor.Close(it.ctx)\n}\n\nfunc (it *docIterator) As(i interface{}) bool {\n\tp, ok := i.(**mongo.Cursor)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = it.cursor\n\treturn true\n}\n\nfunc (c *collection) QueryPlan(q *driver.Query) (string, error) {\n\treturn \"unknown\", nil\n}\n\nfunc (c *collection) RunDeleteQuery(ctx context.Context, q *driver.Query) error {\n\tfilter, err := c.filtersToBSON(q.Filters)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif q.BeforeQuery != nil {\n\t\tif err := q.BeforeQuery(driver.AsFunc(filter)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err = c.coll.DeleteMany(ctx, filter)\n\treturn err\n}\n\nfunc (c *collection) RunUpdateQuery(ctx context.Context, q *driver.Query, mods []driver.Mod) error {\n\tfilter, err := c.filtersToBSON(q.Filters)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// TODO(#2458): provide an option for the user to choose whether or not to\n\t// update the revision.\n\tupdateDoc, _, err := c.newUpdateDoc(mods, !c.opts.NoWriteQueryUpdateRevisions)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif q.BeforeQuery != nil {\n\t\tif err := q.BeforeQuery(driver.AsFunc(filter)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err = c.coll.UpdateMany(ctx, filter, updateDoc)\n\treturn err\n}\n"
  },
  {
    "path": "docstore/mongodocstore/testdata/README",
    "content": "This directory is here just so that the prerelease script (internal/testing/prerelease.sh)\nwill run this package's tests with -record.\n"
  },
  {
    "path": "docstore/mongodocstore/urls.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"go.mongodb.org/mongo-driver/mongo\"\n\t\"gocloud.dev/docstore\"\n)\n\nfunc init() {\n\tdocstore.DefaultURLMux().RegisterCollection(Scheme, new(defaultDialer))\n}\n\n// defaultDialer dials a default Mongo server based on the environment variable\n// MONGO_SERVER_URL.\ntype defaultDialer struct {\n\tmongoServerURL string\n\tmu             sync.Mutex\n\topener         *URLOpener\n\terr            error\n}\n\nfunc (o *defaultDialer) OpenCollectionURL(ctx context.Context, u *url.URL) (*docstore.Collection, error) {\n\to.mu.Lock()\n\tdefer o.mu.Unlock()\n\tcurrentEnv := os.Getenv(\"MONGO_SERVER_URL\")\n\n\tif currentEnv == \"\" {\n\t\to.err = errors.New(\"MONGO_SERVER_URL environment variable is not set\")\n\t\treturn nil, fmt.Errorf(\"open collection %s: %v\", u, o.err)\n\t}\n\n\t// If MONGO_SERVER_URL has been updated, then update o.opener as well\n\tif currentEnv != o.mongoServerURL {\n\t\tclient, err := Dial(ctx, currentEnv)\n\t\tif err != nil {\n\t\t\to.err = fmt.Errorf(\"failed to dial default Mongo server at %q: %v\", currentEnv, err)\n\t\t\treturn nil, fmt.Errorf(\"open collection %s: %v\", u, o.err)\n\t\t}\n\t\to.mongoServerURL = currentEnv\n\t\to.opener = &URLOpener{Client: client}\n\t}\n\treturn o.opener.OpenCollectionURL(ctx, u)\n}\n\n// Scheme is the URL scheme mongodocstore registers its URLOpener under on\n// docstore.DefaultMux.\nconst Scheme = \"mongo\"\n\n// URLOpener opens URLs like \"mongo://mydb/mycollection\".\n// See https://docs.mongodb.com/manual/reference/limits/#naming-restrictions for\n// naming restrictions.\n//\n// The URL Host is used as the database name.\n// The URL Path is used as the collection name.\n//\n// The following query parameters are supported:\n//\n//   - id_field (optional): the field name to use for the \"_id\" field.\ntype URLOpener struct {\n\t// A Client is a MongoDB client that performs operations on the db, must be\n\t// non-nil.\n\tClient *mongo.Client\n\n\t// Options specifies the options to pass to OpenCollection.\n\tOptions Options\n}\n\n// OpenCollectionURL opens the Collection URL.\nfunc (o *URLOpener) OpenCollectionURL(ctx context.Context, u *url.URL) (*docstore.Collection, error) {\n\tq := u.Query()\n\tidField := q.Get(\"id_field\")\n\tq.Del(\"id_field\")\n\to.Options.RevisionField = q.Get(\"revision_field\")\n\tq.Del(\"revision_field\")\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open collection %s: invalid query parameter %q\", u, param)\n\t}\n\n\tdbName := u.Host\n\tif dbName == \"\" {\n\t\treturn nil, fmt.Errorf(\"open collection %s: URL must have a non-empty Host (database name)\", u)\n\t}\n\tcollName := strings.TrimPrefix(u.Path, \"/\")\n\tif collName == \"\" {\n\t\treturn nil, fmt.Errorf(\"open collection %s: URL must have a non-empty Path (collection name)\", u)\n\t}\n\treturn OpenCollection(o.Client.Database(dbName).Collection(collName), idField, &o.Options)\n}\n"
  },
  {
    "path": "docstore/mongodocstore/urls_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mongodocstore\n\nimport (\n\t\"context\"\n\t\"net/url\"\n\t\"os\"\n\t\"testing\"\n\n\t\"gocloud.dev/docstore\"\n)\n\nfunc fakeConnectionStringInEnv() func() {\n\toldURLVal := os.Getenv(\"MONGO_SERVER_URL\")\n\tos.Setenv(\"MONGO_SERVER_URL\", \"mongodb://localhost\")\n\treturn func() {\n\t\tos.Setenv(\"MONGO_SERVER_URL\", oldURLVal)\n\t}\n}\n\nfunc TestOpenCollectionURL(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"mongo://mydb/mycollection\", false},\n\t\t// Missing database name.\n\t\t{\"mongo:///mycollection\", true},\n\t\t// Missing collection name.\n\t\t{\"mongo://mydb/\", true},\n\t\t// Passing id_field parameter.\n\t\t{\"mongo://mydb/mycollection?id_field=foo\", false},\n\t\t// Passing revision field.\n\t\t{\"mongo://mydb/mycollection?id_field=foo&revision_field=123\", false},\n\t\t// Invalid parameter.\n\t\t{\"mongo://mydb/mycollection?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\td, err := docstore.OpenCollection(ctx, test.URL)\n\t\tif d != nil {\n\t\t\tdefer d.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n\nfunc TestDefaultDialerOpenCollectionURL(t *testing.T) {\n\t// Defer cleanup\n\toldURLVal := os.Getenv(\"MONGO_SERVER_URL\")\n\tdefer os.Setenv(\"MONGO_SERVER_URL\", oldURLVal)\n\n\ttests := []struct {\n\t\tname                  string\n\t\tcurrentMongoServerURL string\n\t\tcurrentWantErr        bool\n\t\tnewMongoServerURL     string\n\t\tnewWantErr            bool\n\t}{\n\t\t{\n\t\t\tname:                  \"fail when MONGO_SERVER_URL is empty / unset\",\n\t\t\tcurrentMongoServerURL: \"\",\n\t\t\tcurrentWantErr:        true,\n\t\t\tnewMongoServerURL:     \"\",\n\t\t\tnewWantErr:            true,\n\t\t},\n\t\t{\n\t\t\tname:                  \"fail when updated MONGO_SERVER_URL is empty / unset\",\n\t\t\tcurrentMongoServerURL: \"mongodb://localhost\",\n\t\t\tcurrentWantErr:        false,\n\t\t\tnewMongoServerURL:     \"\",\n\t\t\tnewWantErr:            true,\n\t\t},\n\t\t{\n\t\t\tname:                  \"pass when MONGO_SERVER_URL is updated to new value\",\n\t\t\tcurrentMongoServerURL: \"mongodb://localhost\",\n\t\t\tcurrentWantErr:        false,\n\t\t\tnewMongoServerURL:     \"mongodb://localhost:27017\",\n\t\t\tnewWantErr:            false,\n\t\t},\n\t}\n\n\t// Set starting conditions\n\td := new(defaultDialer)\n\tctx := context.Background()\n\tmongoURLString := \"mongo://mydb/mycollection\"\n\tu, err := url.Parse(mongoURLString)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\t// Set MONGO_SERVER_URL\n\t\t\tos.Setenv(\"MONGO_SERVER_URL\", test.currentMongoServerURL)\n\t\t\t_, err = d.OpenCollectionURL(ctx, u)\n\t\t\tif err != nil && !test.currentWantErr {\n\t\t\t\tt.Error(err)\n\t\t\t}\n\n\t\t\t// Update MONGO_SERVER_URL\n\t\t\tos.Setenv(\"MONGO_SERVER_URL\", test.newMongoServerURL)\n\t\t\t_, err = d.OpenCollectionURL(ctx, u)\n\t\t\tif err != nil && !test.newWantErr {\n\t\t\t\tt.Error(err)\n\t\t\t}\n\n\t\t\t// Check if the MONGO_SERVER_URL was updated after rotation\n\t\t\tif !test.newWantErr {\n\t\t\t\tif d.mongoServerURL != test.newMongoServerURL {\n\t\t\t\t\tt.Errorf(\"expected updated MONGO_SERVER_URL to be set to: %s, but got: %s\", test.newMongoServerURL, d.mongoServerURL)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "docstore/otel_test.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore_test\n\nimport (\n\t\"context\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/docstore/memdocstore\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/testing/oteltest\"\n\t\"testing\"\n)\n\nfunc TestOpenTelemetry(t *testing.T) {\n\tctx := context.Background()\n\n\t// Setup the test exporter for both trace and metrics.\n\tte := oteltest.NewTestExporter(t, docstore.OpenTelemetryViews)\n\tdefer te.Shutdown(ctx)\n\n\t// Open a collection for testing.\n\tcoll, err := memdocstore.OpenCollection(\"_id\", nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer coll.Close()\n\n\t// Test ActionList.Do by creating a document.\n\tif err := coll.Create(ctx, map[string]any{\"_id\": \"a\", \"count\": 0}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Test Query.Get.\n\titer := coll.Query().Get(ctx)\n\titer.Stop()\n\n\tspanStubs := te.GetSpans()\n\tmetrics := te.GetMetrics(ctx)\n\tconst (\n\t\tpkgName = \"gocloud.dev/docstore\"\n\t\tdriver  = \"gocloud.dev/docstore/memdocstore\"\n\t)\n\n\tdiff := oteltest.Diff(spanStubs.Snapshots(), metrics, pkgName, driver, []oteltest.Call{\n\t\t{Method: \"ActionList.Do\", Code: gcerrors.OK},\n\t\t{Method: \"Query.Get\", Code: gcerrors.OK},\n\t})\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n"
  },
  {
    "path": "docstore/query.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/otel/trace\"\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// Query represents a query over a collection.\ntype Query struct {\n\tcoll *Collection\n\tdq   *driver.Query\n\terr  error\n}\n\n// Query creates a new Query over the collection.\nfunc (c *Collection) Query() *Query {\n\treturn &Query{coll: c, dq: &driver.Query{}}\n}\n\n// Where expresses a condition on the query.\n// Valid ops are: \"=\", \">\", \"<\", \">=\", \"<=, \"in\", \"not-in\".\n// Valid values are strings, integers, floating-point numbers, time.Time and boolean (only for \"=\", \"in\" and \"not-in\") values.\nfunc (q *Query) Where(fp FieldPath, op string, value any) *Query {\n\tif q.err != nil {\n\t\treturn q\n\t}\n\tpfp, err := parseFieldPath(fp)\n\tif err != nil {\n\t\tq.err = err\n\t\treturn q\n\t}\n\tvalidator, ok := validOp[op]\n\tif !ok {\n\t\treturn q.invalidf(\"invalid filter operator: %q. Use one of: =, >, <, >=, <=, in, not-in\", op)\n\t}\n\tif !validator(value) {\n\t\treturn q.invalidf(\"invalid filter value: %v\", value)\n\t}\n\tq.dq.Filters = append(q.dq.Filters, driver.Filter{\n\t\tFieldPath: pfp,\n\t\tOp:        op,\n\t\tValue:     value,\n\t})\n\treturn q\n}\n\ntype valueValidator func(any) bool\n\nvar validOp = map[string]valueValidator{\n\t\"=\":      validEqualValue,\n\t\">\":      validFilterValue,\n\t\"<\":      validFilterValue,\n\t\">=\":     validFilterValue,\n\t\"<=\":     validFilterValue,\n\t\"in\":     validFilterSlice,\n\t\"not-in\": validFilterSlice,\n}\n\nfunc validEqualValue(v any) bool {\n\tif v == nil {\n\t\treturn false\n\t}\n\tif reflect.TypeOf(v).Kind() == reflect.Bool {\n\t\treturn true\n\t}\n\treturn validFilterValue(v)\n}\n\nfunc validFilterValue(v any) bool {\n\tif v == nil {\n\t\treturn false\n\t}\n\tif _, ok := v.(time.Time); ok {\n\t\treturn true\n\t}\n\tswitch reflect.TypeOf(v).Kind() {\n\tcase reflect.String:\n\t\treturn true\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc validFilterSlice(v any) bool {\n\tif v == nil || reflect.TypeOf(v).Kind() != reflect.Slice {\n\t\treturn false\n\t}\n\tvv := reflect.ValueOf(v)\n\tfor i := 0; i < vv.Len(); i++ {\n\t\tif !validEqualValue(vv.Index(i).Interface()) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Offset (also commonly referred to as `Skip`) specifies the number of\n// documents to skip before returning results.\n// n must be non-negative.\n// It is an error to specify Offset more than once in a Get query, or\n// at all in a Delete or Update query.\nfunc (q *Query) Offset(n int) *Query {\n\tif q.err != nil {\n\t\treturn q\n\t}\n\tif n < 0 {\n\t\treturn q.invalidf(\"offset value of %d must be non-negative\", n)\n\t}\n\tif q.dq.Offset > 0 {\n\t\treturn q.invalidf(\"query can have at most one offset clause\")\n\t}\n\tq.dq.Offset = n\n\treturn q\n}\n\n// Limit will limit the results to at most n documents.\n// n must be positive.\n// It is an error to specify Limit more than once in a Get query, or\n// at all in a Delete or Update query.\nfunc (q *Query) Limit(n int) *Query {\n\tif q.err != nil {\n\t\treturn q\n\t}\n\tif n <= 0 {\n\t\treturn q.invalidf(\"limit value of %d must be greater than zero\", n)\n\t}\n\tif q.dq.Limit > 0 {\n\t\treturn q.invalidf(\"query can have at most one limit clause\")\n\t}\n\tq.dq.Limit = n\n\treturn q\n}\n\n// Ascending and Descending are constants for use in the OrderBy method.\nconst (\n\tAscending  = \"asc\"\n\tDescending = \"desc\"\n)\n\n// OrderBy specifies that the returned documents appear sorted by the given field in\n// the given direction.\n// A query can have at most one OrderBy clause. If it has none, the order of returned\n// documents is unspecified.\n// If a query has a Where clause and an OrderBy clause, the OrderBy clause's field\n// must appear in a Where clause.\n// It is an error to specify OrderBy in a Delete or Update query.\nfunc (q *Query) OrderBy(field, direction string) *Query {\n\tif q.err != nil {\n\t\treturn q\n\t}\n\tif field == \"\" {\n\t\treturn q.invalidf(\"OrderBy: empty field\")\n\t}\n\tif direction != Ascending && direction != Descending {\n\t\treturn q.invalidf(\"OrderBy: direction must be one of %q or %q\", Ascending, Descending)\n\t}\n\tif q.dq.OrderByField != \"\" {\n\t\treturn q.invalidf(\"a query can have at most one OrderBy\")\n\t}\n\tq.dq.OrderByField = field\n\tq.dq.OrderAscending = (direction == Ascending)\n\treturn q\n}\n\n// BeforeQuery takes a callback function that will be called before the Query is\n// executed to the underlying service's query functionality. The callback takes\n// a parameter, asFunc, that converts its argument to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information.\nfunc (q *Query) BeforeQuery(f func(asFunc func(any) bool) error) *Query {\n\tq.dq.BeforeQuery = f\n\treturn q\n}\n\n// Get returns an iterator for retrieving the documents specified by the query. If\n// field paths are provided, only those paths are set in the resulting documents.\n//\n// Call Stop on the iterator when finished.\nfunc (q *Query) Get(ctx context.Context, fps ...FieldPath) *DocumentIterator {\n\treturn q.get(ctx, true, fps...)\n}\n\n// get implements Get, with optional OpenTelemetry tracing so it can be used internally.\nfunc (q *Query) get(ctx context.Context, withTracing bool, fps ...FieldPath) *DocumentIterator {\n\tdcoll := q.coll.driver\n\tif err := q.initGet(fps); err != nil {\n\t\treturn &DocumentIterator{err: wrapError(dcoll, err)}\n\t}\n\n\tvar err error\n\n\tif withTracing {\n\t\tvar span trace.Span\n\t\tctx, span = q.coll.tracer.Start(ctx, \"Query.Get\")\n\t\tdefer func() {\n\t\t\tq.coll.tracer.End(ctx, span, err)\n\t\t}()\n\t}\n\tit, err := dcoll.RunGetQuery(ctx, q.dq)\n\treturn &DocumentIterator{iter: it, coll: q.coll, err: wrapError(dcoll, err)}\n}\n\nfunc (q *Query) initGet(fps []FieldPath) error {\n\tif q.err != nil {\n\t\treturn q.err\n\t}\n\tif err := q.coll.checkClosed(); err != nil {\n\t\treturn errClosed\n\t}\n\tpfps, err := parseFieldPaths(fps)\n\tif err != nil {\n\t\treturn err\n\t}\n\tq.dq.FieldPaths = pfps\n\tif q.dq.OrderByField != \"\" && len(q.dq.Filters) > 0 {\n\t\tfound := false\n\t\tfor _, f := range q.dq.Filters {\n\t\t\tif len(f.FieldPath) == 1 && f.FieldPath[0] == q.dq.OrderByField {\n\t\t\t\tfound = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !found {\n\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"OrderBy field %s must appear in a Where clause\",\n\t\t\t\tq.dq.OrderByField)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (q *Query) invalidf(format string, args ...any) *Query {\n\tq.err = gcerr.Newf(gcerr.InvalidArgument, nil, format, args...)\n\treturn q\n}\n\n// DocumentIterator iterates over documents.\n//\n// Always call Stop on the iterator.\ntype DocumentIterator struct {\n\titer driver.DocumentIterator\n\tcoll *Collection\n\terr  error // already wrapped\n}\n\n// Next stores the next document in dst. It returns io.EOF if there are no more\n// documents.\n// Once Next returns an error, it will always return the same error.\nfunc (it *DocumentIterator) Next(ctx context.Context, dst Document) error {\n\tif it.err != nil {\n\t\treturn it.err\n\t}\n\tif err := it.coll.checkClosed(); err != nil {\n\t\tit.err = err\n\t\treturn it.err\n\t}\n\tddoc, err := driver.NewDocument(dst)\n\tif err != nil {\n\t\tit.err = wrapError(it.coll.driver, err)\n\t\treturn it.err\n\t}\n\tit.err = wrapError(it.coll.driver, it.iter.Next(ctx, ddoc))\n\treturn it.err\n}\n\n// Stop stops the iterator. Calling Next on a stopped iterator will return io.EOF, or\n// the error that Next previously returned.\nfunc (it *DocumentIterator) Stop() {\n\tif it.err != nil {\n\t\treturn\n\t}\n\tit.err = io.EOF\n\tit.iter.Stop()\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (it *DocumentIterator) As(i any) bool {\n\tif i == nil || it.iter == nil {\n\t\treturn false\n\t}\n\treturn it.iter.As(i)\n}\n\n// Plan describes how the query would be executed if its Get method were called with\n// the given field paths. Plan uses only information available to the client, so it\n// cannot know whether a service uses indexes or scans internally.\nfunc (q *Query) Plan(fps ...FieldPath) (string, error) {\n\tif err := q.initGet(fps); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn q.coll.driver.QueryPlan(q.dq)\n}\n"
  },
  {
    "path": "docstore/query_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore\n\nimport (\n\t\"context\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"gocloud.dev/docstore/driver\"\n\t\"gocloud.dev/gcerrors\"\n)\n\nfunc TestQueryValidFilter(t *testing.T) {\n\tfor _, fp := range []FieldPath{\"\", \".a\", \"a..b\", \"b.\"} {\n\t\tq := Query{dq: &driver.Query{}}\n\t\tq.Where(fp, \">\", 1)\n\t\tif got := gcerrors.Code(q.err); got != gcerrors.InvalidArgument {\n\t\t\tt.Errorf(\"fieldpath %q: got %s, want InvalidArgument\", fp, got)\n\t\t}\n\t}\n\tfor _, op := range []string{\"==\", \"!=\"} {\n\t\tq := Query{dq: &driver.Query{}}\n\t\tq.Where(\"a\", op, 1)\n\t\tif got := gcerrors.Code(q.err); got != gcerrors.InvalidArgument {\n\t\t\tt.Errorf(\"op %s: got %s, want InvalidArgument\", op, got)\n\t\t}\n\t}\n\tfor _, v := range []any{nil, 5 + 2i, []byte(\"x\"), func() {}, []int{}, map[string]bool{}} {\n\t\tq := Query{dq: &driver.Query{}}\n\t\tq.Where(\"a\", \"=\", v)\n\t\tif got := gcerrors.Code(q.err); got != gcerrors.InvalidArgument {\n\t\t\tt.Errorf(\"value %+v: got %s, want InvalidArgument\", v, got)\n\t\t}\n\t}\n}\n\nfunc TestInvalidQuery(t *testing.T) {\n\tctx := context.Background()\n\t// We detect that these queries are invalid before they reach the driver.\n\tc := &Collection{}\n\n\tfor _, test := range []struct {\n\t\tdesc         string\n\t\tappliesToGet bool\n\t\tq            *Query\n\t\tcontains     string // error text must contain this string\n\t}{\n\t\t{\"negative Limit\", true, c.Query().Limit(-1), \"limit\"},\n\t\t{\"zero Limit\", true, c.Query().Limit(0), \"limit\"},\n\t\t{\"two Limits\", true, c.Query().Limit(1).Limit(2), \"limit\"},\n\t\t{\"negative Offset\", true, c.Query().Offset(-1), \"offset\"},\n\t\t{\"two Offsets\", true, c.Query().Offset(1).Offset(2), \"offset\"},\n\t\t{\"zero Offset and Limit\", true, c.Query().Offset(0).Limit(0), \"limit\"},\n\t\t{\"negative Offset and Limit\", true, c.Query().Offset(-1).Limit(-1), \"offset\"},\n\t\t{\"zero Offset and negative Limit\", true, c.Query().Offset(0).Limit(-1), \"limit\"},\n\t\t{\"empty OrderBy field\", true, c.Query().OrderBy(\"\", Ascending), \"empty field\"},\n\t\t{\"bad OrderBy direction\", true, c.Query().OrderBy(\"x\", \"y\"), \"direction\"},\n\t\t{\"two OrderBys\", true, c.Query().OrderBy(\"x\", Ascending).OrderBy(\"y\", Descending), \"orderby\"},\n\t\t{\"OrderBy not in Where\", true, c.Query().OrderBy(\"x\", Ascending).Where(\"y\", \">\", 1), \"orderby\"},\n\t\t{\"any Limit\", false, c.Query().Limit(1), \"limit\"},\n\t\t{\"any Offset\", false, c.Query().Offset(1), \"offset\"},\n\t\t{\"any OrderBy\", false, c.Query().OrderBy(\"x\", Descending), \"orderby\"},\n\t} {\n\t\tcheck := func(err error) {\n\t\t\tif gcerrors.Code(err) != gcerrors.InvalidArgument {\n\t\t\t\tt.Errorf(\"%s: got %v, want InvalidArgument\", test.desc, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !strings.Contains(strings.ToLower(err.Error()), test.contains) {\n\t\t\t\tt.Errorf(\"%s: got %q, wanted it to contain %q\", test.desc, err.Error(), test.contains)\n\t\t\t}\n\t\t}\n\t\tif test.appliesToGet {\n\t\t\tcheck(test.q.Get(ctx).Next(ctx, nil))\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "docstore/urls.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore\n\nimport (\n\t\"context\"\n\t\"net/url\"\n\n\t\"gocloud.dev/internal/openurl\"\n)\n\n// CollectionURLOpener opens a collection of documents based on a URL.\n// The opener must not modify the URL argument. It must be safe to call from\n// multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype CollectionURLOpener interface {\n\tOpenCollectionURL(ctx context.Context, u *url.URL) (*Collection, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs against\n// a set of registered schemes and calls the opener that matches the URL's\n// scheme. See https://gocloud.dev/concepts/urls/ for more information.\n//\n// The zero value is a multiplexer with no registered scheme.\ntype URLMux struct {\n\tschemes openurl.SchemeMap\n}\n\n// CollectionSchemes returns a sorted slice of the registered Collection schemes.\nfunc (mux *URLMux) CollectionSchemes() []string { return mux.schemes.Schemes() }\n\n// ValidCollectionScheme returns true iff scheme has been registered for Collections.\nfunc (mux *URLMux) ValidCollectionScheme(scheme string) bool { return mux.schemes.ValidScheme(scheme) }\n\n// RegisterCollection registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterCollection panics.\nfunc (mux *URLMux) RegisterCollection(scheme string, opener CollectionURLOpener) {\n\tmux.schemes.Register(\"docstore\", \"Collection\", scheme, opener)\n}\n\n// OpenCollection calls OpenCollectionURL with the URL parsed from urlstr.\n// OpenCollection is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenCollection(ctx context.Context, urlstr string) (*Collection, error) {\n\topener, u, err := mux.schemes.FromString(\"Collection\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(CollectionURLOpener).OpenCollectionURL(ctx, u)\n}\n\n// OpenCollectionURL dispatches the URL to the opener that is registered with\n// the URL's scheme. OpenCollectionURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenCollectionURL(ctx context.Context, u *url.URL) (*Collection, error) {\n\topener, err := mux.schemes.FromURL(\"Collection\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(CollectionURLOpener).OpenCollectionURL(ctx, u)\n}\n\nvar defaultURLMux = new(URLMux)\n\n// DefaultURLMux returns the URLMux used by OpenCollection.\n//\n// Driver packages can use this to register their CollectionURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// OpenCollection opens the collection identified by the URL given.\n// See the URLOpener documentation in driver subpackages for details\n// on supported URL formats, and https://gocloud.dev/concepts/urls/ for more\n// information.\nfunc OpenCollection(ctx context.Context, urlstr string) (*Collection, error) {\n\treturn defaultURLMux.OpenCollection(ctx, urlstr)\n}\n"
  },
  {
    "path": "docstore/urls_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage docstore\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/url\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n)\n\nfunc TestURLMux(t *testing.T) {\n\tctx := context.Background()\n\n\tmux := new(URLMux)\n\tfake := &fakeOpener{}\n\tmux.RegisterCollection(\"foo\", fake)\n\tmux.RegisterCollection(\"err\", fake)\n\n\tif diff := cmp.Diff(mux.CollectionSchemes(), []string{\"err\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !mux.ValidCollectionScheme(\"foo\") || !mux.ValidCollectionScheme(\"err\") {\n\t\tt.Errorf(\"ValidCollectionScheme didn't return true for valid scheme\")\n\t}\n\tif mux.ValidCollectionScheme(\"foo2\") || mux.ValidCollectionScheme(\"http\") {\n\t\tt.Errorf(\"ValidCollectionScheme didn't return false for invalid scheme\")\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\turl     string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:    \"empty URL\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL\",\n\t\t\turl:     \":foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL no scheme\",\n\t\t\turl:     \"foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"unregistered scheme\",\n\t\t\turl:     \"bar://mycollection\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"func returns error\",\n\t\t\turl:     \"err://mycollection\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"no query options\",\n\t\t\turl:  \"foo://mycollection\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty query options\",\n\t\t\turl:  \"foo://mycollection?\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api scheme prefix\",\n\t\t\turl:  \"docstore+foo://bar\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api+type scheme prefix\",\n\t\t\turl:  \"docstore+collection+foo://bar\",\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, gotErr := mux.OpenCollection(ctx, tc.url)\n\t\t\tif (gotErr != nil) != tc.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error %v\", gotErr, tc.wantErr)\n\t\t\t}\n\t\t\tif gotErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t\t// Repeat with OpenCollectionURL.\n\t\t\tparsed, err := url.Parse(tc.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t_, gotErr = mux.OpenCollectionURL(ctx, parsed)\n\t\t\tif gotErr != nil {\n\t\t\t\tt.Fatalf(\"got err %v want nil\", gotErr)\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype fakeOpener struct {\n\tu *url.URL // last url passed to OpenCollectionURL\n}\n\nfunc (o *fakeOpener) OpenCollectionURL(ctx context.Context, u *url.URL) (*Collection, error) {\n\tif u.Scheme == \"err\" {\n\t\treturn nil, errors.New(\"fail\")\n\t}\n\to.u = u\n\treturn nil, nil\n}\n"
  },
  {
    "path": "gcerrors/errors.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcerrors provides support for getting error codes from\n// errors returned by Go CDK APIs.\npackage gcerrors\n\nimport (\n\t\"context\"\n\t\"errors\"\n\n\t\"gocloud.dev/internal/gcerr\"\n)\n\n// An ErrorCode describes the error's category. Programs should act upon an error's\n// code, not its message.\ntype ErrorCode = gcerr.ErrorCode\n\nconst (\n\t// OK is returned by the Code function on a nil error. It is not a valid\n\t// code for an error.\n\tOK ErrorCode = gcerr.OK\n\n\t// Unknown means that the error could not be categorized.\n\tUnknown ErrorCode = gcerr.Unknown\n\n\t// NotFound means that the resource was not found.\n\tNotFound ErrorCode = gcerr.NotFound\n\n\t// AlreadyExists means that the resource exists, but it should not.\n\tAlreadyExists ErrorCode = gcerr.AlreadyExists\n\n\t// InvalidArguments means that a value given to a Go CDK API is incorrect.\n\tInvalidArgument ErrorCode = gcerr.InvalidArgument\n\n\t// Internal means that something unexpected happened. Internal errors always indicate\n\t// bugs in the Go CDK (or possibly the underlying service).\n\tInternal ErrorCode = gcerr.Internal\n\n\t// Unimplemented means that the feature is not implemented.\n\tUnimplemented ErrorCode = gcerr.Unimplemented\n\n\t// FailedPrecondition means that the system was in the wrong state.\n\tFailedPrecondition ErrorCode = gcerr.FailedPrecondition\n\n\t// PermissionDenied means that the caller does not have permission to execute the specified operation.\n\tPermissionDenied ErrorCode = gcerr.PermissionDenied\n\n\t// ResourceExhausted means that some resource has been exhausted, typically because a service resource limit\n\t// has been reached.\n\tResourceExhausted ErrorCode = gcerr.ResourceExhausted\n\n\t// Canceled means that the operation was canceled.\n\tCanceled ErrorCode = gcerr.Canceled\n\n\t// DeadlinedExceeded means that the operation timed out.\n\tDeadlineExceeded ErrorCode = gcerr.DeadlineExceeded\n)\n\n// Code returns the ErrorCode of err if it, or some error it wraps, is an *Error.\n// If err is context.Canceled or context.DeadlineExceeded, or wraps one of those errors,\n// it returns the Canceled or DeadlineExceeded codes, respectively.\n// If err is nil, it returns the special code OK.\n// Otherwise, it returns Unknown.\nfunc Code(err error) ErrorCode {\n\tif err == nil {\n\t\treturn OK\n\t}\n\tvar e *gcerr.Error\n\tif errors.As(err, &e) {\n\t\treturn e.Code\n\t}\n\tif errors.Is(err, context.Canceled) {\n\t\treturn Canceled\n\t}\n\tif errors.Is(err, context.DeadlineExceeded) {\n\t\treturn DeadlineExceeded\n\t}\n\treturn Unknown\n}\n"
  },
  {
    "path": "gcerrors/errors_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcerrors\n\nimport (\n\t\"context\"\n\t\"io\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/gcerr\"\n)\n\ntype wrappedErr struct {\n\terr error\n}\n\nfunc (w wrappedErr) Error() string { return \"wrapped\" }\n\nfunc (w wrappedErr) Unwrap() error { return w.err }\n\nfunc TestCode(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tin   error\n\t\twant ErrorCode\n\t}{\n\t\t{nil, OK},\n\t\t{gcerr.New(AlreadyExists, nil, 1, \"\"), AlreadyExists},\n\t\t{wrappedErr{gcerr.New(PermissionDenied, nil, 1, \"\")}, PermissionDenied},\n\t\t{context.Canceled, Canceled},\n\t\t{context.DeadlineExceeded, DeadlineExceeded},\n\t\t{wrappedErr{context.Canceled}, Canceled},\n\t\t{wrappedErr{context.DeadlineExceeded}, DeadlineExceeded},\n\t\t{io.EOF, Unknown},\n\t} {\n\t\tgot := Code(test.in)\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"%v: got %s, want %s\", test.in, got, test.want)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gcp/cloudsql/cloudsql.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package cloudsql contains Wire providers that are common across Google Cloud\n// SQL.\npackage cloudsql // import \"gocloud.dev/gcp/cloudsql\"\n\nimport (\n\t\"github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/certs\"\n\t\"github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/proxy\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcp\"\n\t\"golang.org/x/oauth2\"\n)\n\n// CertSourceSet is a Wire provider set that binds a Cloud SQL proxy\n// certificate source from an GCP-authenticated HTTP client.\nvar CertSourceSet = wire.NewSet(\n\tNewCertSource,\n\twire.Bind(new(proxy.CertSource), new(*certs.RemoteCertSource)))\n\n// NewCertSource creates a local certificate source that uses the given\n// HTTP client. The client is assumed to make authenticated requests.\nfunc NewCertSource(c *gcp.HTTPClient) *certs.RemoteCertSource {\n\treturn certs.NewCertSourceOpts(&c.Client, certs.RemoteOpts{})\n}\n\n// NewCertSourceWithIAM creates a local certificate source, including Token source for token information used in\n// cert creation, that uses the given HTTP client. The client is assumed to make authenticated requests.\nfunc NewCertSourceWithIAM(c *gcp.HTTPClient, t oauth2.TokenSource) *certs.RemoteCertSource {\n\treturn certs.NewCertSourceOpts(&c.Client, certs.RemoteOpts{EnableIAMLogin: true, TokenSource: t})\n}\n"
  },
  {
    "path": "gcp/gcp.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcp provides fundamental Wire providers and types for Google Cloud Platform (GCP).\npackage gcp // import \"gocloud.dev/gcp\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/http\"\n\n\t\"github.com/google/wire\"\n\t\"golang.org/x/oauth2\"\n\t\"golang.org/x/oauth2/google\"\n)\n\n// DefaultIdentity is a Wire provider set that provides the project ID\n// and token source from Application Default Credentials (ADC).\nvar DefaultIdentity = wire.NewSet(\n\tCredentialsTokenSource,\n\tDefaultCredentials,\n\tDefaultProjectID)\n\n// ProjectID is a GCP Project ID.\ntype ProjectID string\n\n// TokenSource wraps a GCP token source that provides Cloud-Platform-\n// scoped tokens.\ntype TokenSource oauth2.TokenSource\n\n// HTTPClient is an HTTP client that makes requests authenticated with Cloud-\n// Platform-scoped authentication tokens.\ntype HTTPClient struct {\n\thttp.Client\n}\n\n// NewAnonymousHTTPClient creates a new anonymous HTTP client.\nfunc NewAnonymousHTTPClient(transport http.RoundTripper) *HTTPClient {\n\treturn &HTTPClient{\n\t\tClient: http.Client{\n\t\t\tTransport: transport,\n\t\t},\n\t}\n}\n\n// NewHTTPClient creates a new authenticated HTTP client.\nfunc NewHTTPClient(transport http.RoundTripper, ts TokenSource) (*HTTPClient, error) {\n\tif ts == nil {\n\t\treturn nil, errors.New(\"gcp: no credentials available\")\n\t}\n\treturn &HTTPClient{\n\t\tClient: http.Client{\n\t\t\tTransport: &oauth2.Transport{\n\t\t\t\tBase:   transport,\n\t\t\t\tSource: ts,\n\t\t\t},\n\t\t},\n\t}, nil\n}\n\n// DefaultTransport returns http.DefaultTransport.\nfunc DefaultTransport() http.RoundTripper {\n\treturn http.DefaultTransport\n}\n\n// DefaultCredentials obtains the default GCP credentials with Cloud Platform\n// scope.\nfunc DefaultCredentials(ctx context.Context) (*google.Credentials, error) {\n\tadc, err := google.FindDefaultCredentials(ctx, \"https://www.googleapis.com/auth/cloud-platform\")\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn adc, nil\n}\n\n// DefaultCredentialsWithParams obtains the default GCP credentials with the\n// specified parameters. The Scopes field in params will be overridden with\n// Cloud Platform scope if not set.\nfunc DefaultCredentialsWithParams(ctx context.Context, params google.CredentialsParams) (*google.Credentials, error) {\n\tif len(params.Scopes) == 0 {\n\t\tparams.Scopes = []string{\"https://www.googleapis.com/auth/cloud-platform\"}\n\t}\n\tadc, err := google.FindDefaultCredentialsWithParams(ctx, params)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn adc, nil\n}\n\n// CredentialsTokenSource extracts the token source from GCP credentials.\nfunc CredentialsTokenSource(creds *google.Credentials) TokenSource {\n\tif creds == nil {\n\t\treturn nil\n\t}\n\treturn TokenSource(creds.TokenSource)\n}\n\n// DefaultProjectID obtains the project ID from the default GCP credentials.\nfunc DefaultProjectID(creds *google.Credentials) (ProjectID, error) {\n\tif creds == nil {\n\t\treturn \"\", errors.New(\"gcp: no project found in credentials\")\n\t}\n\treturn ProjectID(creds.ProjectID), nil\n}\n"
  },
  {
    "path": "gcp/gcp_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcp_test\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"golang.org/x/oauth2/google\"\n)\n\nfunc TestNewHTTPClient(t *testing.T) {\n\ttransport := gcp.DefaultTransport()\n\t_, err := gcp.NewHTTPClient(transport, nil)\n\tif err == nil {\n\t\tt.Error(\"got nil want error\")\n\t}\n\tcreds, err := setup.FakeGCPCredentials(context.Background())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = gcp.NewHTTPClient(transport, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n}\n\nfunc TestCredentialsTokenSource(t *testing.T) {\n\tts := gcp.CredentialsTokenSource(nil)\n\tif ts != nil {\n\t\tt.Error(\"got non-nil TokenSource from nil creds, want nil\")\n\t}\n\tcreds, err := setup.FakeGCPCredentials(context.Background())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tts = gcp.CredentialsTokenSource(creds)\n\tif ts == nil {\n\t\tt.Error(\"got nil TokenSource from creds, want non-nil\")\n\t}\n}\n\nfunc TestDefaultProjectID(t *testing.T) {\n\t_, err := gcp.DefaultProjectID(nil)\n\tif err == nil {\n\t\tt.Error(\"got nil error from nil creds, want error\")\n\t}\n\tcreds, err := setup.FakeGCPCredentials(context.Background())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, err = gcp.DefaultProjectID(creds)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n}\n\nfunc TestDefaultCredentialsWithParams(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\tctx := context.Background()\n\n\t// Test with empty params (should use default scope and default universe domain)\n\tcreds, err := gcp.DefaultCredentialsWithParams(ctx, google.CredentialsParams{})\n\tif err != nil {\n\t\tt.Fatalf(\"DefaultCredentialsWithParams with empty params failed: %v\", err)\n\t}\n\tif creds == nil {\n\t\tt.Error(\"got nil credentials, want non-nil\")\n\t}\n\t// Verify default universe domain (googleapis.com)\n\tgotDomain, err := creds.GetUniverseDomain()\n\tif err != nil {\n\t\tt.Fatalf(\"GetUniverseDomain failed: %v\", err)\n\t}\n\tif gotDomain != \"googleapis.com\" {\n\t\tt.Errorf(\"got default universe domain %q, want %q\", gotDomain, \"googleapis.com\")\n\t}\n\n\t// Test with universe domain parameter.\n\t// Note: The fake \"authorized_user\" credentials may not support universe domain\n\t// overrides, but we can verify the function accepts the parameter without error.\n\tcreds, err = gcp.DefaultCredentialsWithParams(ctx, google.CredentialsParams{\n\t\tUniverseDomain: \"example.com\",\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"DefaultCredentialsWithParams with universe domain failed: %v\", err)\n\t}\n\tif creds == nil {\n\t\tt.Error(\"got nil credentials, want non-nil\")\n\t}\n\t// The universe domain may not be set for authorized_user credential type,\n\t// but the function should not error.\n\t_, err = creds.GetUniverseDomain()\n\tif err != nil {\n\t\tt.Fatalf(\"GetUniverseDomain failed: %v\", err)\n\t}\n\n\t// Test with custom scopes\n\tcreds, err = gcp.DefaultCredentialsWithParams(ctx, google.CredentialsParams{\n\t\tScopes: []string{\"https://www.googleapis.com/auth/devstorage.read_only\"},\n\t})\n\tif err != nil {\n\t\tt.Fatalf(\"DefaultCredentialsWithParams with custom scopes failed: %v\", err)\n\t}\n\tif creds == nil {\n\t\tt.Error(\"got nil credentials, want non-nil\")\n\t}\n}\n"
  },
  {
    "path": "gcp/gcpcloud/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpcloud_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\n\t\"github.com/google/wire\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"gocloud.dev/gcp/gcpcloud\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/health\"\n)\n\n// This is an example of how to bootstrap an HTTP server running on\n// Google Cloud Platform (GCP). The code in this function would be\n// placed in main().\nfunc Example() {\n\t// Connect and authenticate to GCP.\n\tsrv, cleanup, err := setup(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Set up the HTTP routes.\n\thttp.HandleFunc(\"/\", greet)\n\n\t// Run the server. This behaves much like http.ListenAndServe,\n\t// including that passing a nil handler will use http.DefaultServeMux.\n\tlog.Fatal(srv.ListenAndServe(\":8080\"))\n}\n\n// setup is a Wire injector function that creates an HTTP server\n// configured to send diagnostics to Stackdriver. The second return\n// value is a clean-up function that can be called to shut down any\n// resources created by setup.\n//\n// The body of this function will be filled in by running Wire. While\n// the name of the function does not matter, the signature signals to\n// Wire what provider functions to call. See\n// https://github.com/google/wire/blob/master/docs/guide.md#injectors\n// for more details.\nfunc setup(ctx context.Context) (*server.Server, func(), error) {\n\twire.Build(\n\t\t// The GCP set includes all the default wiring for GCP, including\n\t\t// for *server.Server.\n\t\tgcpcloud.GCP,\n\t\t// Providing nil instructs the server to use the default sampling policy.\n\t\twire.Value(sdktrace.Sampler(nil)),\n\t\t// Health checks can be added to delay your server reporting healthy\n\t\t// to the load balancer before critical dependencies are available.\n\t\twire.Value([]health.Checker{}),\n\t)\n\treturn nil, nil, nil\n}\n\n// greet is an ordinary http.HandleFunc.\nfunc greet(w http.ResponseWriter, req *http.Request) {\n\tfmt.Fprintln(w, \"Hello, World!\")\n}\n"
  },
  {
    "path": "gcp/gcpcloud/gcpcloud.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcpcloud contains Wire providers for GCP services.\npackage gcpcloud // import \"gocloud.dev/gcp/gcpcloud\"\n\nimport (\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/blob/gcsblob\"\n\t\"gocloud.dev/docstore/gcpfirestore\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/gcp/cloudsql\"\n\t\"gocloud.dev/pubsub/gcppubsub\"\n\t\"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\t\"gocloud.dev/secrets/gcpkms\"\n\t\"gocloud.dev/server/sdserver\"\n)\n\n// GCP is a Wire provider set that includes all Google Cloud Platform services\n// in this repository and authenticates using Application Default Credentials.\nvar GCP = wire.NewSet(Services, gcp.DefaultIdentity)\n\n// Services is a Wire provider set that includes the default wiring for all\n// Google Cloud Platform services in this repository, but does not include\n// credentials. Individual services may require additional configuration.\nvar Services = wire.NewSet(\n\tgcp.DefaultTransport,\n\tgcp.NewHTTPClient,\n\n\tgcpruntimeconfig.Set,\n\tgcpkms.Set,\n\tgcppubsub.Set,\n\tgcsblob.Set,\n\tcloudsql.CertSourceSet,\n\tgcpfirestore.Set,\n\tsdserver.Set,\n)\n"
  },
  {
    "path": "go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev\n\ngo 1.25.0\n\nrequire (\n\tcloud.google.com/go/compute/metadata v0.9.0\n\tcloud.google.com/go/firestore v1.21.0\n\tcloud.google.com/go/iam v1.5.3\n\tcloud.google.com/go/kms v1.26.0\n\tcloud.google.com/go/pubsub v1.50.1\n\tcloud.google.com/go/pubsub/v2 v2.4.0\n\tcloud.google.com/go/secretmanager v1.16.0\n\tcloud.google.com/go/storage v1.61.3\n\tgithub.com/Azure/azure-amqp-common-go/v3 v3.2.3\n\tgithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0\n\tgithub.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1\n\tgithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0\n\tgithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0\n\tgithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4\n\tgithub.com/Azure/go-amqp v1.5.1\n\tgithub.com/GoogleCloudPlatform/cloudsql-proxy v1.37.13\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.31.0\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.55.0\n\tgithub.com/XSAM/otelsql v0.41.0\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12\n\tgithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35\n\tgithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35\n\tgithub.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.20\n\tgithub.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.8\n\tgithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2\n\tgithub.com/aws/aws-sdk-go-v2/service/kms v1.50.3\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.97.1\n\tgithub.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.4\n\tgithub.com/aws/aws-sdk-go-v2/service/sns v1.39.14\n\tgithub.com/aws/aws-sdk-go-v2/service/sqs v1.42.24\n\tgithub.com/aws/aws-sdk-go-v2/service/ssm v1.68.3\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9\n\tgithub.com/aws/smithy-go v1.24.2\n\tgithub.com/fsnotify/fsnotify v1.9.0\n\tgithub.com/go-sql-driver/mysql v1.9.3\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0\n\tgithub.com/google/go-replayers/httpreplay v1.2.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/google/wire v0.7.0\n\tgithub.com/googleapis/gax-go/v2 v2.19.0\n\tgithub.com/lib/pq v1.12.0\n\tgo.opentelemetry.io/contrib/detectors/aws/ec2 v1.38.0\n\tgo.opentelemetry.io/contrib/detectors/gcp v1.42.0\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0\n\tgo.opentelemetry.io/contrib/propagators/aws v1.42.0\n\tgo.opentelemetry.io/otel v1.42.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0\n\tgo.opentelemetry.io/otel/metric v1.42.0\n\tgo.opentelemetry.io/otel/sdk v1.42.0\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0\n\tgo.opentelemetry.io/otel/trace v1.42.0\n\tgolang.org/x/crypto v0.49.0\n\tgolang.org/x/net v0.52.0\n\tgolang.org/x/oauth2 v0.36.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da\n\tgoogle.golang.org/api v0.272.0\n\tgoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5\n\tgoogle.golang.org/grpc v1.79.3\n\tgoogle.golang.org/protobuf v1.36.11\n)\n\nrequire (\n\tcel.dev/expr v0.25.1 // indirect\n\tcloud.google.com/go v0.123.0 // indirect\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/longrunning v0.8.0 // indirect\n\tcloud.google.com/go/monitoring v1.24.3 // indirect\n\tcloud.google.com/go/trace v1.11.7 // indirect\n\tfilippo.io/edwards25519 v1.2.0 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect\n\tgithub.com/AzureAD/microsoft-authentication-library-for-go v1.7.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect\n\tgithub.com/aws/aws-sdk-go v1.55.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/cenkalti/backoff/v5 v5.0.3 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect\n\tgithub.com/envoyproxy/go-control-plane/envoy v1.37.0 // indirect\n\tgithub.com/envoyproxy/protoc-gen-validate v1.3.3 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang-jwt/jwt/v5 v5.3.1 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect\n\tgithub.com/jmespath/go-jmespath v0.4.0 // indirect\n\tgithub.com/kylelemons/godebug v1.1.0 // indirect\n\tgithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect\n\tgithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect\n\tgithub.com/spiffe/go-spiffe/v2 v2.6.0 // indirect\n\tgo.opencensus.io v0.24.0 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect\n\tgo.opentelemetry.io/proto/otlp v1.10.0 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgo.uber.org/zap v1.27.1 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/time v0.15.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/firestore v1.21.0 h1:BhopUsx7kh6NFx77ccRsHhrtkbJUmDAxNY3uapWdjcM=\ncloud.google.com/go/firestore v1.21.0/go.mod h1:1xH6HNcnkf/gGyR8udd6pFO4Z7GWJSwLKQMx/u6UrP4=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/kms v1.26.0 h1:cK9mN2cf+9V63D3H1f6koxTatWy39aTI/hCjz1I+adU=\ncloud.google.com/go/kms v1.26.0/go.mod h1:pHKOdFJm63hxBsiPkYtowZPltu9dW0MWvBa6IA4HM58=\ncloud.google.com/go/logging v1.13.2 h1:qqlHCBvieJT9Cdq4QqYx1KPadCQ2noD4FK02eNqHAjA=\ncloud.google.com/go/logging v1.13.2/go.mod h1:zaybliM3yun1J8mU2dVQ1/qDzjbOqEijZCn6hSBtKak=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/pubsub v1.50.1 h1:fzbXpPyJnSGvWXF1jabhQeXyxdbCIkXTpjXHy7xviBM=\ncloud.google.com/go/pubsub v1.50.1/go.mod h1:6YVJv3MzWJUVdvQXG081sFvS0dWQOdnV+oTo++q/xFk=\ncloud.google.com/go/pubsub/v2 v2.4.0 h1:oMKNiBQpXImRWnHYla9uSU66ZzByZwBSCJOEs/pTKVg=\ncloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2ig3zqsGUx8=\ncloud.google.com/go/secretmanager v1.16.0 h1:19QT7ZsLJ8FSP1k+4esQvuCD7npMJml6hYzilxVyT+k=\ncloud.google.com/go/secretmanager v1.16.0/go.mod h1://C/e4I8D26SDTz1f3TQcddhcmiC3rMEl0S1Cakvs3Q=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ncloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U=\ncloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\nfilippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=\nfilippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=\ngithub.com/Azure/azure-amqp-common-go/v3 v3.2.3 h1:uDF62mbd9bypXWi19V1bN5NZEO84JqgmI5G73ibAmrk=\ngithub.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas=\ngithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 h1:fou+2+WFTib47nS+nz/ozhEBnvU96bKHy6LjRsY4E28=\ngithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0/go.mod h1:t76Ruy8AHvUAC8GfMWJMa0ElSbuIcO03NLpynfbgsPA=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8=\ngithub.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA=\ngithub.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA=\ngithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0 h1:kE5kpeiSqu4jcCQ/sWuyggMXJ/pT6oQ99+8hwPmyeJ0=\ngithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0/go.mod h1:IAN3Z0DMtehoxoQQnfqg1891z1P7GNoDryKtFcAyMBI=\ngithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1 h1:/Zt+cDPnpC3OVDm/JKLOs7M2DKmLRIIp3XIx9pHHiig=\ngithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1/go.mod h1:Ng3urmn6dYe8gnbCMoHHVl5APYz2txho3koEkV2o2HA=\ngithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4 h1:jWQK1GI+LeGGUKBADtcH2rRqPxYB1Ljwms5gFA2LqrM=\ngithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4/go.mod h1:8mwH4klAm9DUgR2EEHyEEAQlRDvLPyg5fQry3y+cDew=\ngithub.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg=\ngithub.com/Azure/go-amqp v1.5.1 h1:WyiPTz2C3zVvDL7RLAqwWdeoYhMtX62MZzQoP09fzsU=\ngithub.com/Azure/go-amqp v1.5.1/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE=\ngithub.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=\ngithub.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=\ngithub.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=\ngithub.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=\ngithub.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=\ngithub.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=\ngithub.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=\ngithub.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=\ngithub.com/AzureAD/microsoft-authentication-library-for-go v1.7.0 h1:4iB+IesclUXdP0ICgAabvq2FYLXrJWKx1fJQ+GxSo3Y=\ngithub.com/AzureAD/microsoft-authentication-library-for-go v1.7.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/cloudsql-proxy v1.37.13 h1:cszvE7VCNLGIvcr7mOZ5lOIqITQfQnn4NXbuHozqO4c=\ngithub.com/GoogleCloudPlatform/cloudsql-proxy v1.37.13/go.mod h1:6IMmxkLFo8kvCZbG0egv30L6YSgeZwxjH0WVRMGAacQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.31.0 h1:xQMhkBXPOKe/GzC6TctwlK2aNF+9k5VwFgdE83rBK2Y=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.31.0/go.mod h1:VLoD5cAsRQXsAFXpOZrrTGzbuMsntlspIZno4xor5Zg=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.55.0 h1:0G1Faw/W6OirxOw2Kgz303+JuUgifQXYS5J21NtZxog=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.55.0/go.mod h1:8W5IW/jylevlBQKSWkh5ZMP2oy7yT9Pnfug6Y6W/9D8=\ngithub.com/XSAM/otelsql v0.41.0 h1:uZifjQhZhv5EDYJh+IVk1DiYxQZJBlNSen0MBFnfxB8=\ngithub.com/XSAM/otelsql v0.41.0/go.mod h1:NMQT0PiKoFILp9QgjQz+D5mvW+9mT0suR7OejqrtMaM=\ngithub.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=\ngithub.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 h1:3kGOqnh1pPeddVa/E37XNTaWJ8W6vrbYV9lJEkCnhuY=\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35 h1:CQ2kB9Q4xQ2PDBmn+KCr/pw1DvK7pH6NkR2nl2KV7ng=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35/go.mod h1:ypTMB9nZhpqfMeRVesGj4dEknIg0YS+aXGtLMidw/Ek=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35 h1:qxsbiWRtwChp/rrSHMfYoosVDVWRICoYXoDdczaLFiI=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35/go.mod h1:SomvXQRUKYBML53k4LqIgszKJKz8TdUwi/Zwig7JhfU=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.20 h1:nBtAkfvLanKNwKfmsxfpLqYAjKpTAO9yRfuXAKconUY=\ngithub.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.20/go.mod h1:wtCkeFPPKHdxFPrZGkdT5tKR4boa3GvW54sYdGNWPHg=\ngithub.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.8 h1:nuc44j+otOY0d1e+CWwB6zul57d2YEGlgCyiq3SL0lI=\ngithub.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.8/go.mod h1:qSFgGCN8fjdhvlLhTPZdWRWXbwfeZZWF2FEaIplYPhE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 h1:SwGMTMLIlvDNyhMteQ6r8IJSBPlRdXX5d4idhIGbkXA=\ngithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21/go.mod h1:UUxgWxofmOdAMuqEsSppbDtGKLfR04HGsD0HXzvhI1k=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2 h1:xi/ECwajy2mixviBD7bKAlGGSwzEaFKX2wIhrZt9NGw=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2/go.mod h1:dLREOeW66eVaaGIOi2ZlLHDgkR3nuJ02rd00j0YSlBE=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13 h1:xQ9dX2jxVm14uNVe0WomcCSza832ytYWt1ZBu2LrBLM=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13/go.mod h1:D5up2/CMSP4sF8ESBWla6gJvIMySJi8dYYAaED4oTCc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 h1:qtJZ70afD3ISKWnoX3xB0J2otEqu3LqicRcDBqsj0hQ=\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12/go.mod h1:v2pNpJbRNl4vEUWEh5ytQok0zACAKfdmKS51Hotc3pQ=\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20 h1:ru+seMuylHiNZlvgZei83eD8h37hRjm1XIMOEmcV0BU=\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20/go.mod h1:ihZMtPTKoX/ugQRHbui6zNdSgVYN1KY2Dgwb2d3hXlc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 h1:siU1A6xjUZ2N8zjTHSXFhB9L/2OY8Dqs0xXiLjF30jA=\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20/go.mod h1:4TLZCmVJDM3FOu5P5TJP0zOlu9zWgDWU7aUxWbr+rcw=\ngithub.com/aws/aws-sdk-go-v2/service/kms v1.50.3 h1:s/zDSG/a/Su9aX+v0Ld9cimUCdkr5FWPmBV8owaEbZY=\ngithub.com/aws/aws-sdk-go-v2/service/kms v1.50.3/go.mod h1:/iSgiUor15ZuxFGQSTf3lA2FmKxFsQoc2tADOarQBSw=\ngithub.com/aws/aws-sdk-go-v2/service/s3 v1.97.1 h1:csi9NLpFZXb9fxY7rS1xVzgPRGMt7MSNWeQ6eo247kE=\ngithub.com/aws/aws-sdk-go-v2/service/s3 v1.97.1/go.mod h1:qXVal5H0ChqXP63t6jze5LmFalc7+ZE7wOdLtZ0LCP0=\ngithub.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.4 h1:9aZbO86sraeCIHHCpZhxwN9tnVy9POkSKzi4/TpT54A=\ngithub.com/aws/aws-sdk-go-v2/service/secretsmanager v1.41.4/go.mod h1:cxiXDhEzIq7Xx1BtmC4lGBK3SwAZ79+EUWiKawYHo14=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sns v1.39.14 h1:p8WdWDh5AwSZdp19Haa3XMyPCICi9Z375a/Nu3IIEZY=\ngithub.com/aws/aws-sdk-go-v2/service/sns v1.39.14/go.mod h1:NKVY7DER6VXHkt2I/ycmHakALNboi3Rqwt4eEf/1Cnk=\ngithub.com/aws/aws-sdk-go-v2/service/sqs v1.42.24 h1:JP2wjWGmUp8lTCZb13Dv0Eciyc1jbO8pd0HZVMHFlrc=\ngithub.com/aws/aws-sdk-go-v2/service/sqs v1.42.24/go.mod h1:Ql9ziDutk8ERAN9HMaYANCW3lop451ppebkxEJMLCTM=\ngithub.com/aws/aws-sdk-go-v2/service/ssm v1.68.3 h1:bBoWhx8lsFLTXintRX64ZBXcmFZbGqUmaPUrjXECqIc=\ngithub.com/aws/aws-sdk-go-v2/service/ssm v1.68.3/go.mod h1:rcRkKbUJ2437WuXdq9fbj+MjTudYWzY9Ct8kiBbN8a8=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=\ngithub.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/coder/websocket v1.8.13 h1:f3QZdXy7uGVz+4uCJy2nTZyM0yTBj8yANEHhqlXZ9FE=\ngithub.com/coder/websocket v1.8.13/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=\ngithub.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=\ngithub.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=\ngithub.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=\ngithub.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=\ngithub.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=\ngithub.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=\ngithub.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=\ngithub.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=\ngithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=\ngithub.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=\ngithub.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=\ngithub.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=\ngithub.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU=\ngithub.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=\ngithub.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=\ngithub.com/lib/pq v1.12.0 h1:mC1zeiNamwKBecjHarAr26c/+d8V5w/u4J0I/yASbJo=\ngithub.com/lib/pq v1.12.0/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA=\ngithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=\ngithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.einride.tech/aip v0.79.0 h1:19zdPlZzlUvxOA8syAFw4LkdJdXepzyTl6gt9XEeqdU=\ngo.einride.tech/aip v0.79.0/go.mod h1:E8+wdTApA70odnpFzJgsGogHozC2JCIhFJBKPr8bVig=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=\ngo.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/aws/ec2 v1.38.0 h1:gSqtaXUzONG+J3PutTnKpLVLpKLsX+FztJwxSFQ15PU=\ngo.opentelemetry.io/contrib/detectors/aws/ec2 v1.38.0/go.mod h1:AqLDNPbKVFwdXy2/Xu2EYElVHO7ghhbEhKCCWymjpMI=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/contrib/propagators/aws v1.42.0 h1:Kbr3xDxs6kcxp5ThXTKWK2OtwLhNoXBVtqguNYcsZL0=\ngo.opentelemetry.io/contrib/propagators/aws v1.42.0/go.mod h1:Jzw9hZHtxdpCN7x8S17UH59X/EiFivp6VXLs9bdM1OQ=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk=\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0 h1:ZrPRak/kS4xI3AVXy8F7pipuDXmDsrO8Lg+yQjBLjw0=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0/go.mod h1:3y6kQCWztq6hyW8Z9YxQDDm0Je9AJoFar2G0yDcmhRk=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngo.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=\ngo.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=\ngo.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=\ngo.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "gocloud.code-workspace",
    "content": "{\n\t\"folders\": [\n\t\t{\n\t\t\t\"path\": \".\"\n\t\t},\n\t\t{\n\t\t\t\"path\": \"internal/cmd/gocdk\"\n\t\t},\n\t\t{\n\t\t\t\"path\": \"internal/website\"\n\t\t},\n\t\t{\n\t\t\t\"path\": \"samples\"\n\t\t}\n\t],\n\t\"settings\": {\n\t\t\"cSpell.words\": [\n\t\t\t\"Hashicorp\",\n\t\t\t\"MongoDB\",\n\t\t\t\"MongoDB's\",\n\t\t\t\"NATS\",\n\t\t\t\"Nanos\",\n\t\t\t\"Newf\",\n\t\t\t\"RPC\",\n\t\t\t\"RPCs\",\n\t\t\t\"Shopify\",\n\t\t\t\"URL's\",\n\t\t\t\"ack\",\n\t\t\t\"acked\",\n\t\t\t\"acking\",\n\t\t\t\"acks\",\n\t\t\t\"amazonaws\",\n\t\t\t\"amqp\",\n\t\t\t\"appengine\",\n\t\t\t\"awserr\",\n\t\t\t\"awserror\",\n\t\t\t\"awskms\",\n\t\t\t\"awsmysql\",\n\t\t\t\"awsparamstore\",\n\t\t\t\"awspostgres\",\n\t\t\t\"awssns\",\n\t\t\t\"awssnssqs\",\n\t\t\t\"awssqs\",\n\t\t\t\"azuresb\",\n\t\t\t\"biome's\",\n\t\t\t\"bson\",\n\t\t\t\"cloudkms\",\n\t\t\t\"curr\",\n\t\t\t\"dbname\",\n\t\t\t\"dynamodb\",\n\t\t\t\"etag\",\n\t\t\t\"etcd\",\n\t\t\t\"etcdvar\",\n\t\t\t\"fsnotify\",\n\t\t\t\"gRPC\",\n\t\t\t\"gcaws\",\n\t\t\t\"gcerr\",\n\t\t\t\"gcerrors\",\n\t\t\t\"gcpkms\",\n\t\t\t\"gcpmysql\",\n\t\t\t\"gcppostgres\",\n\t\t\t\"gcppubsub\",\n\t\t\t\"gcsblob\",\n\t\t\t\"gocdk\",\n\t\t\t\"gocloud\",\n\t\t\t\"googleapis\",\n\t\t\t\"healthz\",\n\t\t\t\"knative\",\n\t\t\t\"memblob\",\n\t\t\t\"mempubsub\",\n\t\t\t\"mongodocstore\",\n\t\t\t\"msg\",\n\t\t\t\"msgs\",\n\t\t\t\"mybucket\",\n\t\t\t\"mycfg\",\n\t\t\t\"mycollection\",\n\t\t\t\"mydb\",\n\t\t\t\"myinstance\",\n\t\t\t\"mykey\",\n\t\t\t\"myproject\",\n\t\t\t\"mysub\",\n\t\t\t\"mysubject\",\n\t\t\t\"mysubscription\",\n\t\t\t\"mytable\",\n\t\t\t\"mytopic\",\n\t\t\t\"myvar\",\n\t\t\t\"nackable\",\n\t\t\t\"nacked\",\n\t\t\t\"nacking\",\n\t\t\t\"nacks\",\n\t\t\t\"natspubsub\",\n\t\t\t\"oauth\",\n\t\t\t\"oauth2\",\n\t\t\t\"ocsql\",\n\t\t\t\"pctx\",\n\t\t\t\"postgres\",\n\t\t\t\"protobuf\",\n\t\t\t\"protos\",\n\t\t\t\"ptypes\",\n\t\t\t\"sarama\",\n\t\t\t\"sess\",\n\t\t\t\"specifier\",\n\t\t\t\"specifier's\",\n\t\t\t\"structs\",\n\t\t\t\"tfstate\",\n\t\t\t\"unacked\",\n\t\t\t\"uploader\",\n\t\t\t\"upsert\",\n\t\t\t\"usagef\",\n\t\t\t\"uuid\",\n\t\t\t\"vals\",\n\t\t\t\"vkit\",\n\t\t\t\"waitc\",\n\t\t\t\"xerrors\"\n\t\t],\n\t\t\"files.associations\": {\n\t\t\t\"*.htmlt\": \"html\"\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/docs/README.md",
    "content": "# Docs\n\nThis is the documentation for developers of the Go CDK, describing various\ncoding practices and project processes.\n\n-   [Design Decisions](design.md)\n-   [Releases](release.md)\n"
  },
  {
    "path": "internal/docs/design.md",
    "content": "# Design Decisions\n\nThis document outlines important design decisions made for this repository and\nattempts to provide succinct rationales. Recording these decisions helps\nmaintain consistency across packages, especially as an open source project where\ncontributors can join at any point during development.\n\nA broad design goal for the Go Cloud Development Kit (Go CDK) is for the API\nstyle to be consistent. Consistency aids users in building a mental model of how\nto use the APIs. As such, the design of individual packages must also consider\ntheir impact on the Go CDK as a whole.\n\nThis is a [Living Document](https://en.wikipedia.org/wiki/Living_document). The\ndecisions in here are not set in stone, but simply describe our current thinking\nabout how to guide the Go Cloud Development Kit project. While it is useful to\nlink to this document when having discussions in an issue, it is not to be used\nas a means of closing issues without discussion at all. Discussion on an issue\ncan lead to revisions of this document.\n\n## Developers and Operators\n\nThe Go CDK is designed with two different personas in mind: the developer and\nthe operator. In the world of DevOps, these may be the same person. A developer\nmay be directly deploying their application into production, especially on\nsmaller teams. In a larger organization, these may be different teams entirely,\nbut working closely together. Regardless, these two personas have two very\ndifferent ways of looking at a Go program:\n\n-   The developer persona wants to write business logic that is agnostic of\n    underlying cloud provider. Their focus is on making software correct for the\n    requirements at hand.\n-   The operator persona wants to incorporate the business logic into the\n    organization's policies and provision resources for the logic to run. Their\n    focus is making software run predictably and reliably with the resources at\n    hand.\n\nThe Go CDK uses Go interfaces at the boundary between these two personas: a\ndeveloper is meant to use an interface, and an operator is meant to provide an\nimplementation of that interface. This distinction prevents the Go CDK going\ndown a path of complexity that makes application portability difficult. The\n[`blob.Bucket`][] type is a prime example: the API does not provide a way of\ncreating a new bucket. To properly and safely create such a bucket requires\ncareful consideration, getting something like ACLs wrong could lead to a\ncatastrophic data leak. To generate the ACLs correctly requires modeling of IAM\nusers and roles for each cloud platform, and some way of mapping those users and\nroles across clouds. While not impossible, the level of complexity and the high\nlikelihood of a leaky abstraction leads us to believe this is not the right\ndirection for the Go CDK.\n\nInstead of adding large amounts of leaky complexity to the Go CDK, we expect the\noperator role to handle the management of non-portable platform-specific\nresources. An implementor of the `Bucket` interface does not need to determine\nthe content type of incoming data, as that is a developer's concern. This\nseparation of concerns allows these two personas to communicate using a shared\nlanguage while focusing on their respective areas of expertise.\n\n[`blob.Bucket`]: https://godoc.org/github.com/google/go-cloud/blob#Bucket\n\n## Portable Types and Drivers\n\nThe portable APIs that the Go CDK exports (like [`blob.Bucket`][] or\n[`runtimevar.Variable`][]) are concrete types, not interfaces. To understand\nwhy, imagine if we used a plain interface:\n\n![Diagram showing user code depending on blob.Bucket, which is implemented by\nawsblob.Bucket.](img/user-facing-type-no-driver.png)\n\nConsider the [`Bucket.NewWriter` method][], which infers the content type of the\nblob based on the first bytes written to it. If `blob.Bucket` was an interface,\neach implementation of `blob.Bucket` would have to replicate this behavior\nprecisely. This does not scale: conformance tests would be needed to ensure that\neach interface method actually behaves in the way that the docs describe. This\nmakes the interfaces hard to implement, which runs counter to the goals of the\nproject.\n\nInstead, we follow the example of [`database/sql`][] and separate out the\nimplementation-agnostic logic from the interface. The implementation-agnostic\nlogic-containing concrete type is the **portable type**. We call the interface\nthe **driver**. Visually, it looks like this:\n\n![Diagram showing user code depending on blob.Bucket, which holds a\ndriver.Bucket implemented by awsblob.Bucket.](img/user-facing-type.png)\n\nThis has a number of benefits:\n\n-   The portable type can perform higher level logic without making the\n    interface complex to implement. In the blob example, the portable type's\n    `NewWriter` method can do the content type detection and then pass the final\n    result to the driver type.\n-   Methods can be added to the portable type without breaking compatibility.\n    Contrast with adding methods to an interface, which is a breaking change.\n-   When new operations on the driver are added as new optional interfaces, the\n    portable type can hide the need for type-assertions from the user.\n\nAs a rule, if a method `Foo` has the same inputs and semantics in the portable\ntype and the driver type, then the driver method may be called `Foo`, even\nthough the return signatures may differ. Otherwise, the driver method name\nshould be different to reduce confusion.\n\nNew Go CDK APIs should always follow this portable type and driver pattern.\n\n[`runtimevar.Variable`]:\nhttps://godoc.org/github.com/google/go-cloud/runtimevar#Variable\n[`Bucket.NewWriter` method]:\nhttps://godoc.org/github.com/google/go-cloud/blob#Bucket.NewWriter\n[`database/sql`]: https://godoc.org/database/sql\n\n## Minimize Global State\n\nAs a library, the Go CDK should not introduce global state. Global state is\ndifficult to reason about in large codebases, where it can be necessary for\ndifferent parts of the application to use different states. Instead of adding\nglobal state, push responsibility to the application to inject the state where\nit is needed.\n\nThe exception we permit is URL scheme registration as documented under\n[URLs](#urls). The amount of boilerplate setup code required for URL muxes for\nmultiple drivers without use of a tool like Wire is an unreasonable burden for\nusers of Go CDK. We want the Go CDK to be usable both with and without Wire. A\nglobal registry is acceptable as long as its use is not mandatory, but the\nburden is to prove the benefit over the cost.\n\n## Driver Package Naming Conventions\n\nInside this repository, we name packages that handle cloud services after the\nservice name, not the providing cloud (`s3blob` instead of `awsblob`). While a\ncloud provider may provide a unique offering for a particular API, they may not\nalways provide only one, so distinguishing them in this way keeps the API\nsymbols stable over time.\n\nThe naming convention is `<provider><product><api>`, where:\n\n*   `<provider>` is the provider name, like `aws` or `gcp` or `azure`.\n    *   Omit for 3rd party/open source/local packages.\n    *   May also be omitted in cases where the product name is sufficient (e.g.,\n        `s3blob` not `awss3blob` since S3 is well-known, `gcsblob` not\n        `gcpgcsblob` since GCS already references Google).\n    *   Required if the product name is not unique across providers (e.g.,\n        `gcpkms` and `awskms`).\n*   `<product>`is the product/service name.\n*   `<api>` is the portable API name.\n    *   Include for local/test packages like (e.g., `fileblob`, `mempubsub`).\n    *   May be omitted when it makes the package name too long (e.g. `awssnssqs`\n        is long enough, don't add `pubsub`).\n    *   Encouraged when it helps distinguish the package from the service's own\n        package name (e.g., `s3blob` not `s3`).\n\n## Portable Type Constructors\n\nPortable type constructors are the functions defined in driver packages that end\nusers call to get an instance of the portable type. For example,\n`gcsblob.OpenBucket`, which returns an instance of the `*blob.Bucket` portable\ntype backed by GCS.\n\n-   Portable type constructors should be top-level functions that return the\n    portable type directly. Avoid helpers (e.g., a `Client` struct with a\n    function that returns the portable type instead of it being top-level) and\n    wrappers (e.g., a `fooblob.Bucket` type returned from `fooblob.OpenBucket`\n    that wraps the portable type). Top level functions without wrappers are\n    easier to use, especially when we're consistent about it.\n-   Order arguments that are less likely to change across multiple calls to the\n    constructor before ones that are likely to change. For example, connection\n    and authorization related arguments should go before names, so\n    `OpenBucket(ctx, client, \"mybucket\")` instead of `OpenBucket(ctx,\n    \"mybucket\", client)`.\n-   All public constructors should take an `Options` struct (see next section).\n\n### Option Structs\n\nAll public constructors should take an `Options` struct, even if it is currently\nempty, to ensure that we can add arguments to the APIs in the future without\nbreaking backward compatibility.\n\n-   This includes driver constructors (e.g., `gcsblob.OpenBucket`) as well as\n    API functions (e.g., `blob.NewReader`). When in doubt, if you think it's\n    possible that we'll add arguments, add `Options`.\n-   The argument should be of type `*Options`, so that `nil` can be passed in\n    the default case.\n-   Name the `Options` struct appropriately. `Options` is usually fine for\n    portable type constructors since the package generally only exposes a\n    constructor. Inside a driver interface or in a portable type like `blob`,\n    use more descriptive names like `ReaderOptions` or `WriterOptions`.\n-   If a function already has a struct argument, don't add a separate `Options`\n    struct. Example: the various `sql.Open` functions take a `Params` struct\n    with connection parameters; we chose to add new options to `Params` instead\n    of introducing a separate `Options` struct. This keeps the function\n    signature simpler and avoid confusion about which struct new parameters\n    should be added to.\n-   When similar `Options` are part of a driver interface and also part of the\n    portable type (e.g., `blob.WriterOptions`), duplicate the struct instead of\n    aliasing or embedding it, and copy the struct fields explicitly where\n    needed. This allows the godoc for each type to be tailored to the\n    appropriate audience (e.g. end-users for the portable type, driver\n    implementors for the driver interface), and also allows the structs to\n    diverge over time if appropriate.\n-   Required arguments must not be in an `Options` struct, and all fields of the\n    `Options` struct must have reasonable defaults. Exception: struct arguments\n    that don't have `Options` in the name can contain required arguments (e.g.,\n    see the `Params` example for `sql.Open` above).\n\nRegarding empty `Options` structs: we considered only adding them when the first\noption is added, and using a separate constructor for compatibility (e.g., start\nwith `foo.New(...)` and later add `foo.NewWithOptions(..., opts *Options)` if\nneeded). However, this would result in inconsistent names over time (e.g., some\npackages would expose `New` with an `Options`, while others would expose\n`NewWithOptions`).\n\n### Compound IDs\n\nMany cloud providers have resource IDs that are made up of subcomponents in\nsome well-defined syntax. For example, [GCP KMS key IDs][] take the form\n`projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]`.\nWe call these _compound IDs_.\n\nThere are two broad compound ID usage patterns we have observed:\n\n1. Applications will keep resources in the same location, so the application\n   will build the ID from the subcomponents rather than passing the entire\n   resource ID around.\n2. Applications will pass a verbatim string from configuration down to the\n   API, since this is what was easily copy-pasteable from the cloud console UI.\n\nGo CDK constructors that take in compound IDs should take in a `string` with the\nfull compound ID. Helper functions to build these compound IDs from\nsubcomponents may be provided as needed. URL openers (described below) should\nprefer to use the full compound ID in their URL format.\n\n[GCP KMS key IDs]: https://cloud.google.com/kms/docs/object-hierarchy#key\n\n### URLs\n\nTo enable the [Backing services factor][] of a Twelve-Factor Application, Go\nCloud includes the ability to construct each of its API objects using\nidentifying URLs. The portable type's package should include APIs like the\nfollowing:\n\n```go\n// Package foo is a portable API. foo could be something like blob or pubsub.\n//\n// Throughout this example, Widget is used as a stand-in for a portable type\n// inside foo, like Bucket or Subscription.\npackage foo\n\n// A type that implements WidgetURLOpener can open widgets based on a URL.\n// The opener must not modify the URL argument. OpenWidgetURL must be safe to\n// call from multiple goroutines.\n//\n// WidgetURLOpeners should not assume that the URL has a particular scheme.\ntype WidgetURLOpener interface {\n  OpenWidgetURL(ctx context.Context, u *url.URL) (*Widget, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n  // ...\n}\n\n// RegisterWidget registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterWidget panics.\nfunc (mux *URLMux) RegisterWidget(scheme string, opener WidgetURLOpener) {\n  // ...\n}\n\n// OpenWidget calls OpenWidgetURL with the URL parsed from urlstr.\n// OpenWidget is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenWidget(ctx context.Context, urlstr string) (*Widget, error) {\n  u, err := url.Parse(urlstr)\n  if err != nil {\n    return nil, fmt.Errorf(\"open widget: %v\", err)\n  }\n  return mux.OpenWidgetURL(ctx, u)\n}\n\n// OpenWidgetURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenWidgetURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenWidgetURL(ctx context.Context, u *url.URL) (*Widget, error) {\n  // ...\n}\n\n// DefaultURLMux returns the URLMux used by OpenWidget.\nfunc DefaultURLMux() *URLMux {\n  return defaultURLMux\n}\n\nvar defaultURLMux = new(URLMux)\n\n// OpenWidget opens the Widget identified by the URL given. URL openers must be\n// registered in the DefaultURLMux, which is typically done in driver\n// packages' initialization.\nfunc OpenWidget(ctx context.Context, urlstr string) (*Widget, error) {\n  return DefaultURLMux().OpenWidget(urlstr)\n}\n```\n\nThe repetition of `Widget` in the method names permits a type to handle multiple\nresources within the API. Exporting the `URLMux` allows applications to build\ntheir own muxes, potentially wrapping existing ones.\n\nDriver packages should include their own `URLOpener` struct type which\nimplements all the relevant `WidgetURLOpener` methods. The URL should only serve\nto identify which resource to open. Any credentials or other complex values\nshould be taken in as struct fields, not as input from URL. If the driver\npackage registers its `URLOpener` with the `DefaultURLMux`, then it should\npopulate these complex fields from environment variables. If doing so is\nundesirable or expensive, then it should not register with the `DefaultURLMux`\nand instead rely on users to create their own mux. If there already exists a\nwell-established URI format for the backend (like S3 URLs or database connection\nURIs), then drivers should honor them where possible.\n\n[Backing services factor]: https://12factor.net/backing-services\n\n#### URL Examples\n\nA `WidgetURLOpener` implementation for a hypothetical GCP service:\n\n```go\npackage gcpfoo\n\n// ...\n\nconst Scheme = \"gcpwidget\"\n\ntype URLOpener struct {\n  Client  *gcp.HTTPClient\n  Options Options\n}\n\nfunc (o *URLOpener) OpenWidgetURL(ctx context.Context, u *url.URL) (*foo.Widget, error) {\n  // ...\n  return OpenWidget(ctx, o.Client, u.Host, &o.Options)\n}\n\ntype lazyURLOpener struct {\n  init   sync.Once\n  opener *URLOpener\n  err    error\n}\n\nfunc (o *lazyURLOpener) OpenWidgetURL(ctx context.Context, u *url.URL) (*foo.Widget, error) {\n  o.init.Once(func() {\n    creds, err := gcp.DefaultCredentials(ctx)\n    if err != nil {\n      o.err = err\n      return\n    }\n    o.opener = new(URLOpener)\n    o.opener.Client, _ = gcp.NewHTTPClient(http.DefaultTransport, creds.TokenSource)\n  })\n  if o.err != nil {\n    return nil, o.err\n  }\n  return o.opener.OpenWidgetURL(ctx, u)\n}\n\nfunc init() {\n  foo.DefaultURLMux().Register(Scheme, new(lazyURLOpener))\n}\n\n// OpenWidget is the exported non-URL constructor.\nfunc OpenWidget(ctx context.Context, c *gcp.HTTPClient, name string, opts *Options) (*foo.Widget, error) {\n  // ...\n}\n```\n\nUsing the global default mux:\n\n```go\nimport _ \"gocloud.dev/foo/gcpfoo\"\n\n// ...\n\nwidget, err := foo.OpenWidget(context.Background(), \"gcpwidget://xyzzy\")\n```\n\nUsing a custom mux created during server initialization:\n\n```go\nmyMux := new(foo.URLMux)\nmyMux.Register(gcpfoo.Scheme, &gcpfoo.URLOpener{\n  Client: client,\n})\nwidget, err := myMux.OpenWidget(context.Background(), \"gcpwidget://xyzzy\")\n```\n\n## Errors\n\n### General\n\n-   The callee is expected to return `error`s with messages that include\n    information about the particular call, as opposed to the caller adding this\n    information. This aligns with common Go practice.\n\n### Drivers\n\nDriver implementations should:\n\n-   Return the raw errors from the underlying service, and not wrap them in\n    `fmt.Errorf` calls, so that they can be exposed to end users via `ErrorAs`.\n\n### Portable Types\n\nPortable types should:\n\n-   Wrap errors returned from driver implementations before returning them to\n    end users, so that users can't peek into driver-specific error details\n    without using `As`. Make sure not to double-wrap.\n\n-   Use `internal/gcerr.New` when wrapping driver errors, like so: `if err :=\n    driver.Call(xyz); err != nil { return gcerr.New(code, err, 1, \"blob\") }` The\n    first argument is an error code. See below for advice on choosing the\n    appropriate code.\n\n    The third argument is the distance in stack frames from the function whose\n    location should be associated with the error. It should be `1` if you are\n    calling `New` from the same function that made the driver call, `2` if you\n    are calling new from a helper function, and so on. The fourth argument is an\n    additional string that will display with the error. You should pass the API\n    name.\n\n-   By default, choose the code `Unknown`, keeping details of returned `error`s\n    unspecified. The most common case is that the caller will only care whether\n    an operation succeeds or not.\n\n-   If certain `error`s are interesting for callers to distinguish, choose one\n    of the other codes from the `gcerrors.ErrorCode` enum, so user programs can\n    act on the kind of error without having to look at driver-specific errors.\n\n    -   If more than one error code makes sense, choose the most specific one.\n    -   If none make sense, choose `Unknown`.\n    -   If none make sense but you want something more specific than `Unknown`:\n        -   If you can generalize your code to make it applicable to more than\n            just your API, add it to `gcerrors.ErrorCode`. Look at the\n            [gRPC error codes](https://github.com/grpc/grpc-go/blob/master/codes/codes.go)\n            for inspiration.\n        -   Otherwise, you can define a custom code in your portable API\n            package. Your code should use a negative integer.\n\n-   For now, your package should expose an `ErrorAs` function to allow users to\n    access driver-specific error types. We may review this choice if\n    `golang.org/x/xerrors.As` becomes part of the standard library.\n\n-   Handle transient network errors. Retry logic is best handled as low in the\n    stack as possible to avoid [cascading failure][]. APIs should try to surface\n    \"permanent\" errors (e.g. malformed request, bad permissions) where\n    appropriate so that application logic does not attempt to retry\n    non-idempotent operations, but the responsibility is largely on the library,\n    not on the application.\n\n[cascading failure]:\nhttps://landing.google.com/sre/book/chapters/addressing-cascading-failures.html\n\n## Escape Hatches using As\n\nThe Go CDK allows users to escape the abstraction as needed using `As`\nfunctions, described in more detail in the\n[concept guide](https://gocloud.dev/concepts/as/). `As` functions take an\n`interface{}` and return a `bool`; they return `true` if the underlying concrete\ntype could be converted into the type provided as the `interface{}`.\n\nAn alternative approach would have been something like\n[`os.ProcessState.Sys`](https://golang.org/pkg/os/#ProcessState.Sys), which\nreturns an `interface{}` that the user can then type cast/assert to\nservice-specific types.\n\nWe ended up going with `As` because:\n\n1.  Most portable types have an `As` function for errors; choosing `As` results\n    in an easy and natural implementation for chained errors once the\n    [Go 2 proposal for errors](https://go.googlesource.com/proposal/+/master/design/29934-error-values.md)\n    arrives. It is currently implemented in\n    [xerrors](https://godoc.org/golang.org/x/xerrors#As), and we're already\n    using that in some drivers.\n2.  `As` adds more flexibility for drivers to support conversions to multiple\n    types. Specifically, not the case where there are multiple possible\n    underlying types, but rather that a single underlying type can be converted\n    to multiple types.\n    *   Chained errors is one example of this, where the top-level error may\n        always be the same type, but may also represent a chain of other errors\n        with different types.\n    *   Another example is that a driver might choose to support `As`-level\n        compatibility with another driver; e.g., driver `foo` could support all\n        of the `As` types defined by `s3blob`, converting them internally, and\n        then any code that runs with driver `s3blob` would also work with driver\n        `foo` (even if it uses the `As` escape hatches).\n\n## Enforcing Portability\n\nThe Go CDK APIs will end up exposing functionality that is not supported by all\nservices. In addition, some functionality details will differ across services.\nSome theoretical examples using [`blob.Bucket`][]:\n\n1.  **Top-level APIs**: There might be a service that supports reads, but not\n    writes or deletes.\n1.  **Data fields**. Some services may support key/value metadata associated\n    with a blob, others may not.\n1.  **Naming rules**. Different services may allow different name lengths, or\n    allow/disallow non-ASCII unicode characters. See [Strings](#strings) below\n    for more on handling string differences.\n1.  **Semantic guarantees**. Different services may have different consistency\n    guarantees; for example, S3 only provides eventually consistency while GCS\n    provides strong consistency.\n\nHow can we maintain portability while these differences exist?\n\n### Guiding Principle\n\nAny incompatibilities between drivers should be visible to the user as soon as\npossible. From best to worst:\n\n1.  At compile time\n1.  At configuration/app startup time (e.g., when the portable type is created)\n1.  At runtime (e.g., when the incompatible behavior is accessed), via a non-nil\n    error\n1.  At runtime, via panic\n\n### Approaches Considered\n\n1.  **Documentation**. We could try to document non-uniform or optional\n    functionality across drivers. Optional fields or functionality would\n    return \"not implemented\" errors or zero values.\n1.  **Restrict functionality to the intersection**. We could explicitly only\n    support the intersection of all services. For example, if not all services\n    allow unicode characters in names, then **blob** would not allow it either.\n1.  **Enforced feature codes**: Go CDK APIs could enumerate the ways in which\n    drivers differ as a `FeatureCode` enum.\n    *   Drivers would declare which feature codes they support, enforced by\n        extensions to the existing conformance tests.\n    *   API users would declare which feature codes they need.\n    *   Mismatches between what a user requests and what the driver supports\n        would be enforced at initialization time.\n    *   As much as possible, the API (via the portable type) would enforce that\n        the user is only exposed to optional functionality that they asked for.\n    *   For example, the default legal name for a blob might be ASCII only, with\n        a `FeatureUnicodeNames` feature code. Users that don't request this\n        feature code would only be able to use blobs with ASCII names, even if\n        the underlying service supports unicode. If the user requested\n        `FeatureUnicodeNames`, and their driver supports it, they could then\n        use blobs with unicode; if their driver doesn't support it, they would\n        get an initialization-time error.\n\n```\nb, err := blob.NewBucket(d, blob.FeatureUnicodeNames)\n...\n```\n\nDesign discussions regarding enforcing portability are ongoing; we welcome input\non the [mailing list](https://groups.google.com/forum/#!forum/go-cloud).\n\n### Strings\n\nServices often differ on what they accept in particular strings (e.g., blob\nnames, metadata keys, etc.). A couple of specific examples:\n\n*   Azure Blob only\n    [accepts C# identifiers](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata)\n    as metadata keys.\n*   S3 drops double slashes in blob names (e.g., `foo//bar` will end up being\n    saved as `foo/bar`).\n\nThese differences lead to a loss of portability and predictability for users.\n\nTo resolve this issue, we insist that Go CDK can handle any UTF-8 string, and\nforce drivers to use escaping mechanisms to handle strings that the underlying\nservice can't handle. We enforce driver compliance with conformance tests.\nBehavior for non-UTF-8 strings is undefined (but see\nhttps://github.com/google/go-cloud/issues/1281 and\nhttps://github.com/google/go-cloud/issues/1260).\n\nWe try to use URL encoding as the escaping mechanism where possible; however,\nsometimes it is not and we'll use custom escaping. As an example, a driver for a\nservice that only allows underscores and ASCII alphanumeric characters might\nescape the string `foo.bar` to `foo__0x2e__bar` (URL escaping won't work because\n`%` isn't allowed).\n\nPros of this approach:\n\n*   Go CDK APIs are internally consistent in that a user can write any string to\n    any service and get the original string back when they read it back.\n*   Go CDK APIs have visibility into all existing strings for all services.\n\nCons:\n\n*   Go CDK could overwrite existing data if a Go CDK-written key escapes to an\n    already-existing value (e.g., if the `foo__0x2e__bar` string already\n    existed, it would be overwritten by a Go CDK write to `foo.bar`).\n*   Escaping may push a string over the maximum allowed string length for a\n    service. Escaping does not solve (and in fact may exacerbate) problems with\n    different maximum string lengths across services.\n*   Existing strings that happen to look like Go CDK-escaped strings will be\n    unescaped by Go CDK (e.g., an existing string `foo__0x2e__bar` would appear\n    as `foo.bar` when read through the Go CDK).\n*   Strings that were written through the Go CDK and needed escaping will appear\n    in their escaped form when viewed outside of Go CDK (e.g., `foo__0x2e__bar`\n    would appear on the service's UI).\n\nMost of these cons are mitigated by choosing unusual-looking escape mechanisms\nthat are unlikely to appear in existing data.\n\nDrivers should escape strings when writing to the underlying service, and\nunescape them when reading them back. The Go CDK will provide helpers for these\noperations, as well as a test suite of strings for conformance tests.\n\nSample code for the helper for escaping strings:\n\n```\n// package escape provides helpers for escaping and unescaping strings.\npackage escape\n\n// Escape returns s, with all runes for which shouldEscape returns true\n// escaped to \"__0xXXXX__\", where XXXX is the hex representation of the rune\n// value. For example, \" \" would escape to \"__0x20__\".\n//\n// Non-UTF-8 strings will have their non-UTF-8 characters escaped to\n// unicode.ReplacementChar; the original value is lost. Please file an\n// issue if you need non-UTF8 support.\n//\n// Note: shouldEscape takes the whole string as a slice of runes and an\n// index. Passing it a single byte or a single rune doesn't provide\n// enough context for some escape decisions; for example, the caller might\n// want to escape the second \"/\" in \"//\" but not the first one.\n// We pass a slice of runes instead of the string or a slice of bytes\n// because some decisions will be made on a rune basis (e.g., encode\n// all non-ASCII runes).\nfunc Escape(s string, shouldEscape func(s []rune, i int) bool) string { ... }\n\n// Unescape reverses Escape.\nfunc Unescape(s string) string {...}\n```\n\nSample code for how a driver might use it, using metadata keys for a `blob` as\nthe example string:\n\n```\n// When writing metadata keys, escape the keys:\n// ... gcdkMetadata is the metadata passed to the GCDK API.\nfor k, v := range gcdkMetadata {\n    e := escape.Escape(k, func (r []rune, i int) bool {...})\n    if _, ok := serviceMetadata[e]; ok {\n      return fmt.Errorf(\"duplicate keys after escaping: %q => %q\", k, e)\n    }\n    serviceMetadata[e] = v\n}\n// ... write serviceMetadata to the service.\n\n// When reading metadata keys, unescape them:\n// ... serviceMetadata is the metadata read from the service.\nfor k, v := range serviceMetadata {\n    gcdkMetadata[escape.Unescape(k)] = v\n}\n// ... return gcdkMetadata.\n```\n\nThe details of what runes need to be escaped will vary from service to\nservice. The details of how to escape may also vary, although we expect to use\nURL encoding where possible, and a common custom escaping where not. For the\ncustom escaping, we plan to escape each rune for which `shouldEscape` returns\ntrue with `__0xXXX__`, where `XCX` is the hex representation of the rune value.\n\n### Alternatives Considered\n\n*   We considered restricting Go CDK's APIs to strings that all services\n    support. For example, we could have asserted that Go CDK's `blob` only\n    supports ASCII plus `/` for blob names (and no `//`!). However, such a rule\n    would mean that we couldn't cleanly handle existing strings created through\n    some mechanism other than through Go CDK APIs that violate the rule. For\n    example, an existing blob in S3 with a unicode name. Filtering out such\n    strings so that they aren't visible at all through the Go CDK would be both\n    surprising and limiting, and could easily result in data loss (e.g., if a\n    user read a set of metadata for a blob via the Go CDK, and some keys were\n    filtered out, and then wrote the metadata back, the filtered keys would be\n    lost). Not filtering such strings would mean that the Go CDK isn't\n    internally consistent (i.e., you can read some strings but not write them).\n    Overall, we decided that this approach is unacceptable.\n\n*   We could expose the escaper used by drivers in their `Options` structs\n    (including options like disabling it, overriding the set of bytes to be\n    escaped, or overriding the escaping mechanism), but we'll wait to see if\n    there's demand for that.\n\n## Coding Conventions\n\nWe try to adhere to commonly accepted Go coding conventions, some of which are\ndescribed on the\n[Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)\nwiki page. We also adopt the following guidelines:\n\n-   Prefer `map[K]V{}` to `make(map[K]V)`. It's more concise.\n-   When writing a loop appending to a slice `s`, prefer\n\n    ```\n      var s []T\n      for ... {\n        ...\n        s = append(s, ...)\n        ...\n      }\n    ```\n\n    to\n\n    ```\n      s := make([]T, 0, N)\n      for ... {\n        ...\n        s = append(s, ...)\n        ...\n      }\n    ```\n\n    or\n\n    ```\n      s := make([]T, N)\n      for ... {\n        ...\n        s[i] = ...\n        ...\n      }\n    ```\n\n    (Exception: the loop body is trivial and the loop is performance-sensitive.)\n    The first version is shorter and easier to read, and it is impossible to get\n    the length wrong.\n\n-   Prefer `log.Fatal` to `panic` in example tests.\n\n-   Ensure you've run `goimports` on your code to properly group import\n    statements.\n\n-   Order arguments that are less likely to change across multiple calls to the\n    constructor before ones that are likely to change. For example, connection\n    and authorization related arguments should go before names, so\n    `OpenBucket(ctx, client, \"mybucket\")` instead of `OpenBucket(ctx,\n    \"mybucket\", client)`.\n\n## Tests\n\n### Conformance Tests\n\nSince our goal is for users to be able to use drivers interchangeably, it is\ncritical that they behave similarly. To this end, each portable API (e.g.,\n`blob`) must provide a suite of conformance tests that driver implementations\nshould run. The conformance tests should be comprehensive; drivers should not\nneed additional unit tests for the core driver semantics.\n\n### Provisioning For Tests\n\nPortable API integration tests require developer-specific resources to be\ncreated and destroyed. We use [Terraform](http://terraform.io) to do so, and\nrecord the resource info and network interactions so that they can be replayed\nas fast and repeatable unit tests.\n\n### Replay Mode\n\nTests normally run in replay mode. In this mode, they don't require any\nprovisioned resources or network interactions. Replay tests verify that:\n\n-   The same test inputs produce the same requests (e.g., HTTP requests) to the\n    cloud service. Some parts of the request may be dynamic (e.g., dates in the\n    HTTP request headers), so the replay tests do some scrubbing when verifying\n    that requests match. Some parts of this scrubbing are service-specific.\n\n-   The replayed service responses produce the expected results from the\n    portable API library.\n\n### Record Mode\n\nIn `-record` mode, tests run as integration tests, making live requests to\nbackend servers and recording the requests/responses for later use in replay\nmode.\n\nTo use `-record`:\n\n1.  Provision resources.\n\n    -   For example, the tests for the AWS implementation of Blob requires a\n        bucket to be provisioned.\n    -   TODO(issue #300): Use Terraform scripts to provision the resources\n        needed for a given test.\n    -   For now, do this manually.\n\n2.  Run the test with `-record`.\n\n    -   TODO(issue #300): The test will read the Terraform output to find its\n        inputs.\n    -   For now, pass the required resources via test-specific flags.\n    -   When changing or adding tests, please only record the tests that are\n        changed/affected by passing the `-run` flag to `go test` with the\n        name of the test(s). Re-recording all tests of a driver creates a lot\n        of noise and a large diff that's difficult to review.\n\n3.  The test will save the network interactions for subsequent replays.\n\n    -   TODO(issue #300): The test will save the Terraform output to a file in\n        order to replay using the same inputs.\n    -   Commit the new replay files along with your code change. Expect to see\n        lots of diffs; see below for more discussion.\n\n### Diffs in replay files\n\nEach time portable API tests are run in `-record` mode, the resulting replay\nfiles are different. Looking at diffs of these files isn't particularly useful.\n\nWe [considered](https://github.com/google/go-cloud/issues/276) trying to scrub\nthe files of dynamic data so that diffs would be useful. We ended up deciding\nnot to do this, for several reasons:\n\n-   There's a lot of dynamic data, in structured data of various forms (e.g.,\n    HTTP headers, XML/JSON body, etc.). It would be difficult and fragile to\n    scrub it all.\n\n-   The scrub process would also be fragile relative to changes in services\n    (e.g., adding a new dynamic HTTP response header).\n\n-   The scrub process would need to be implemented for every new service,\n    increasing the barrier to entry for new implementations.\n\n-   Scrubbing would likely be even more difficult for services using a\n    non-HTTP-based protocol (e.g., gRPC).\n\n-   Scrubbing the data decreases the fidelity of the replay test, since it\n    wouldn't be operating on the original data.\n\nOverall, massive diffs in the replay files are expected and fine. As part of a\ncode change, you may want to check for things like the number of RPCs made to\nidentify performance regressions.\n"
  },
  {
    "path": "internal/docs/pubsub/design.md",
    "content": "# Go CDK `pubsub` Design\n\n## Summary\n\nThis document proposes a new `pubsub` package for the Go CDK.\n\n## Motivation\n\nA developer designing a new system with cross-cloud portability in mind could\nchoose a messaging system supporting pubsub, such as ZeroMQ, Kafka or RabbitMQ.\nThese pubsub systems run on AWS, Azure, GCP and others, so they pose no obstacle\nto portability between clouds. They can also be run on-prem. Users wanting\nmanaged pubsub could go with Confluent Cloud for Kafka (AWS, GCP), or CloudAMQP\nfor RabbitMQ (AWS, Azure) without losing much in the way of portability.\n\nSo what’s missing? The solution described above means being locked into a\nparticular implementation of pubsub. There is also a potential for lock-in when\nbuilding systems in terms of the cloud-specific services such as AWS SNS+SQS,\nGCP PubSub or Azure Service Bus.\n\nDevelopers may wish to compare different pubsub systems in terms of their\nperformance, reliability, cost or other factors, and they may want the option to\nmove between these systems without too much friction. A `pubsub` package in the\nGo CDK could lower the cost of such experiments and migrations.\n\n## Goals\n\n*   Publish messages to an existing topic.\n*   Receive messages from an existing subscription.\n*   Perform not much worse than 90% compared to directly using the APIs of\n    various pubsub systems.\n*   Work well with managed pubsub services on AWS, Azure, GCP and the most used\n    open source pubsub systems.\n\n## Non-goals\n\n*   Create new topics in the cloud. The Go CDK focuses on developer concerns,\n    but topic creation is an\n    [operator concern](https://github.com/google/go-cloud/blob/master/internal/docs/design.md#developers-and-operators).\n\n*   Create new subscriptions in the cloud. The subscribers are assumed to\n    correspond to components of a distributed system rather than to users of\n    that system.\n\n## Background\n\n[Pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) is a\nfrequently requested feature for the Go CDK project\n\\[[github issue](https://github.com/google/go-cloud/issues/312)]. A key use case\nmotivating these requests is to support\n[event driven architectures](https://en.wikipedia.org/wiki/Event-driven_architecture).\n\nThere are several pubsub systems available that could be made to work with the\nGo CDK by writing drivers for them. Here is a\n[table](https://docs.google.com/a/google.com/spreadsheets/d/e/2PACX-1vQ2CML8muCrqhinxOeKTcWtwAeGk-RFFFMjB3O2u5DbbBt9R3YnUQcgRjRp6TySXe1CzSOtPVCsKACY/pubhtml)\ncomparing some of them.\n\n## Design overview\n\n### Developer’s perspective\n\nGiven a topic that has already been created on the pubsub server, messages can\nbe sent to that topic by calling `acmepubsub.OpenTopic` and calling the `Send`\nmethod of the returned `Topic`, like this (assuming a fictional pubsub service\ncalled \"acme\"):\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"net/http\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nfunc main() {\n    log.Fatal(serve())\n}\n\nfunc serve() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    t, err := acmepubsub.OpenTopic(ctx, client, \"user-signup\", nil)\n    if err != nil {\n        return err\n    }\n    defer t.Close()\n    http.HandleFunc(\"/signup\", func(w http.ResponseWriter, r *http.Request) {\n        err := t.Send(r.Context(), pubsub.Message{Body: []byte(\"Someone signed up\")})\n        if err != nil {\n            log.Println(err)\n        }\n    })\n    return http.ListenAndServe(\":8080\", nil)\n}\n```\n\nThe call to `Send` will only return after the message has been sent to the\nserver or its sending has failed.\n\nMessages can be received from an existing subscription to a topic by calling the\n`Receive` method on a `Subscription` object returned from\n`acmepubsub.OpenSubscription`, like this:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"log\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nfunc main() {\n    if err := receive(); err != nil {\n        log.Fatal(err)\n    }\n}\n\nfunc receive() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    s, err := acmepubsub.OpenSubscription(ctx, client, \"user-signup-minder\", nil)\n    if err != nil {\n        return err\n    }\n    defer s.Close()\n    msg, err := s.Receive(ctx)\n    if err != nil {\n        return err\n    }\n    // Do something with msg.\n    fmt.Printf(\"Got message: %s\\n\", msg.Body)\n    // Acknowledge that we handled the message.\n    msg.Ack()\n}\n```\n\nA more realistic subscriber client would process messages in a loop, like this:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"os\"\n    \"os/signal\"\n\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nfunc main() {\n    if err := receive(); err != nil {\n        log.Fatal(err)\n    }\n}\n\nfunc receive() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    s, err := acmepubsub.OpenSubscription(ctx, client, \"signup-minder\", nil)\n    if err != nil {\n        return err\n    }\n    defer s.Close()\n\n    // Process messages.\n    for {\n        msg, err := s.Receive(ctx)\n        if err {\n            return err\n        }\n        log.Printf(\"Got message: %s\\n\", msg.Body)\n        msg.Ack()\n    }\n}\n```\n\nThe messages can be processed concurrently with an\n[inverted worker pool](https://www.youtube.com/watch?v=5zXAHh5tJqQ&t=26m58s),\nlike this:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"os\"\n    \"os/signal\"\n\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nfunc main() {\n    if err := receive(); err != nil {\n        log.Fatal(err)\n    }\n}\n\nfunc receive() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    s, err := acmepubsub.OpenSubscription(ctx, client, \"user-signup-minder\", nil)\n    if err != nil {\n        return err\n    }\n    defer s.Close()\n\n    // Process messages.\n    const poolSize = 10\n    // Use a buffered channel as a semaphore.\n    sem := make(chan struct{}, poolSize)\n    for {\n        msg, err := s.Receive(ctx)\n        if err {\n            return err\n        }\n        sem <- struct{}{}\n        go func() {\n            log.Printf(\"Got message: %s\", msg.Body)\n            msg.Ack()\n            <-sem\n        }()\n    }\n    for n := poolSize; n > 0; n-- {\n        sem <- struct{}{}\n    }\n}\n```\n\n### Driver implementer’s perspective\n\nAdding support for a new pubsub system involves the following steps, continuing\nwith the \"acme\" example:\n\n1.  Add a new package called `acmepubsub`.\n2.  Add private `topic` and `subscription` types to `acmepubsub` implementing\n    the corresponding interfaces in the `github.com/go-cloud/pubsub/driver`\n    package.\n3.  Add `func OpenTopic(...)` that creates an `acmepubsub.topic` and returns a\n    concrete `pubsub.Topic` object made from it.\n4.  Add `func OpenSubscription(...)` that creates an `acmepubsub.subscription`\n    and returns a `pubsub.Subscription` object made from it.\n\nHere is a sketch of what the `acmepubsub` package could look like:\n\n```go\npackage acmepubsub\n\nimport (\n    \"context\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/driver\"\n)\n\n// OpenTopic opens an existing topic on the pubsub server and returns a Topic\n// that can be used to send messages to that topic.\nfunc OpenTopic(ctx context.Context, client *rawacmepubsub.Client, topicName string) (*pubsub.Topic, error) {\n    rt, err := client.Topic(ctx, topicName)\n    if err != nil {\n        return nil, err\n    }\n    rt, err := client.Topic(ctx, topicName)\n    if err != nil {\n        return err\n    }\n    t := &topic{ rawTopic: rt }\n    return pubsub.NewTopic(t)\n}\n\n// OpenSubscription opens an existing subscription on the server and returns a\n// Subscription that can be used to receive messages.\nfunc OpenSubscription(ctx context.Context, client *rawacmepubsub.Client, subscriptionName string) (*pubsub.Subscription, error) {\n    rs, err := client.Subscription(ctx, subscriptionName)\n    if err != nil {\n        return err\n    }\n    s := &subscription{ rawSub: rs }\n    return pubsub.NewSubscription(s)\n}\n\ntype topic struct {\n    rawTopic    *rawacmepubsub.Topic\n}\n\nfunc (t *topic) SendBatch(ctx context.Context, []*pubsub.Message) error {\n    // ...\n}\n\nfunc (t *topic) Close() error {\n    // ...\n}\n\ntype subscription struct {\n    rawSub  *rawacmepubsub.Subscription\n}\n\nfunc (s *subscription) ReceiveBatch(ctx context.Context) ([]*pubsub.Message, error) {\n    // ...\n}\n\nfunc (s *subscription) SendAcks(ctx context.Context, []pubsub.AckID) error {\n    // ...\n}\n\nfunc (s *subscription) Close() error {\n    // ...\n}\n```\n\nThe driver interfaces are batch-oriented because some pubsub systems can more\nefficiently deal with batches of messages than with one at a time. Streaming was\nconsidered but it does not appear to provide enough of a performance gain to be\nworth the additional complexity of supporting it across different pubsub systems\n\\[[benchmarks](https://github.com/ijt/pubsub/tree/master/benchmarks)].\n\nThe driver interfaces will be located in the\n`github.com/google/go-cloud/pubsub/driver` package and will look something like\nthis:\n\n```go\npackage driver\n\ntype AckID interface{}\n\ntype Message struct {\n    // Body contains the content of the message.\n    Body []byte\n\n    // Attributes has key/value metadata for the message.\n    Attributes map[string]string\n\n    // AckID identifies the message on the server.\n    // It can be used to ack the message after it has been received.\n    AckID AckID\n}\n\n// Topic publishes messages.\ntype Topic interface {\n    // SendBatch publishes all the messages in ms.\n    SendBatch(ctx context.Context, ms []*Message) error\n\n    // Close disconnects the Topic.\n    Close() error\n}\n\n// Subscription receives published messages.\ntype Subscription interface {\n        // ReceiveBatch should return a batch of messages that have queued up\n        // for the subscription on the server.\n        //\n        // If there is a transient failure, this method should not retry but\n        // should return a nil slice and an error. The concrete API will take\n        // care of retry logic.\n        //\n        // If the service returns no messages for some other reason, this\n        // method should return the empty slice of messages and not attempt to\n        // retry.\n        //\n        // ReceiveBatch is only called sequentially for individual\n        // Subscriptions.\n    ReceiveBatch(ctx context.Context) ([]*Message, error)\n\n    // SendAcks acknowledges the messages with the given ackIDs on the\n    // server so that they\n    // will not be received again for this subscription. This method\n    // returns only after all the ackIDs are sent.\n    SendAcks(ctx context.Context, ackIDs []interface{}) error\n\n    // Close disconnects the Subscription.\n    Close() error\n}\n```\n\n## Detailed design\n\nThe developer experience of using Go CDK's pubsub involves sending, receiving\nand acknowledging one message at a time, all in terms of synchronous calls.\nBehind the scenes, the driver implementations deal with batches of messages and\nacks. The concrete API, to be written by the Go CDK team, takes care of creating\nthe batches in the case of Send or Ack, and dealing out messages one at a time\nin the case of Receive.\n\nThe concrete API will be located at `github.com/google/go-cloud/pubsub` and will\nlook something like this:\n\n```go\npackage pubsub\n\nimport (\n    \"context\"\n    \"github.com/google/go-cloud/pubsub/driver\"\n)\n\n// Message contains data to be published.\ntype Message struct {\n    // Body contains the content of the message.\n    Body []byte\n\n    // Attributes contains key/value pairs with metadata about the message.\n    Attributes map[string]string\n\n    // ackID is an ID for the message on the server, used for acking.\n    ackID AckID\n\n    // sub is the Subscription this message was received from.\n    sub *Subscription\n\n    // isAcked is true if Ack has been called on this message.\n    isAcked bool\n}\n\ntype AckID interface{}\n\n// Ack acknowledges the message, telling the server that it does not need to\n// be sent again to the associated Subscription. This method returns\n// immediately. If Ack has already been called on the message, Ack panics.\nfunc (m *Message) Ack() {\n    // Send the ack ID back to the subscriber for batching.\n        // The ack is sent to the server in a separate goroutine\n        // managed by the Subscription from which this message was\n        // received.\n        // ...\n}\n\n// Topic publishes messages to all its subscribers.\ntype Topic struct {\n    driver   driver.Topic\n    mcChan   chan msgCtx\n    doneChan chan struct{}\n}\n\n// msgCtx pairs a Message with the Context of its Send call.\ntype msgCtx struct {\n    msg *Message\n    ctx context.Context\n}\n\n// Send publishes a message. It only returns after the message has been\n// sent, or failed to be sent. The call will fail if ctx is canceled.\n// Send can be called from multiple goroutines at once.\nfunc (t *Topic) Send(ctx context.Context, m *Message) error {\n        // Send this message over t.mcChan and then wait for the batch including\n        // this message to be sent to the server.\n        // ...\n}\n\n// Close disconnects the Topic.\nfunc (t *Topic) Close() error {\n    close(t.doneChan)\n    return t.driver.Close()\n}\n\n// NewTopic makes a pubsub.Topic from a driver.Topic.\nfunc NewTopic(d driver.Topic) *Topic {\n    t := &Topic{\n        driver:   d,\n        mcChan:   make(chan msgCtx),\n        doneChan: make(chan struct{}),\n    }\n    go func() {\n        // Pull messages from t.mcChan and put them in batches. Send the current\n        // batch whenever it is large enough or enough time has elapsed since\n        // the last send.\n        // ...\n    }()\n    return t\n}\n\n// Subscription receives published messages.\ntype Subscription struct {\n    driver driver.Subscription\n\n    // ackChan conveys ackIDs from Message.Ack to the ack batcher goroutine.\n    ackChan chan AckID\n\n    // ackErrChan reports errors back to Message.Ack.\n    ackErrChan chan error\n\n    // doneChan tells the goroutine from startAckBatcher to finish.\n    doneChan chan struct{}\n\n    // q is the local queue of messages downloaded from the server.\n    q []*Message\n}\n\n// Receive receives and returns the next message from the Subscription's queue,\n// blocking if none are available. This method can be called concurrently from\n// multiple goroutines. On systems that support acks, the Ack() method of the\n// returned Message has to be called once the message has been processed, to\n// prevent it from being received again.\nfunc (s *Subscription) Receive(ctx context.Context) (*Message, error) {\n    if len(s.q) == 0 {\n        // Get the next batch of messages from the server.\n        // ...\n    }\n    m := s.q[0]\n    s.q = s.q[1:]\n    return m, nil\n}\n\n// Close disconnects the Subscription.\nfunc (s *Subscription) Close() error {\n    close(s.doneChan)\n    return s.driver.Close()\n}\n\n// NewSubscription creates a Subscription from a driver.Subscription and opts to\n// tune sending and receiving of acks and messages. Behind the scenes,\n// NewSubscription spins up a goroutine to gather acks into batches and\n// periodically send them to the server.\nfunc NewSubscription(s driver.Subscription) *Subscription {\n    // Details similar to the body of NewTopic should go here.\n}\n```\n\nTopics will gather messages into batches for sending. The batch size will be\ndynamically tuned according to how many messages are being sent concurrently.\n\nSubscriptions will gather message acks into batches the same way, also\ndynamically tuning the batch size. If sending acks back to the server fails\ntransiently then it will be retried, most likely within a loop in the concrete\nAPI. If an unrecoverable error occurs while sending acks then a flag will be set\non the `pubsub.Subscription` saying that the whole `Subscription` is no longer\nusable. Calls to `Receive` will fail from then on.\n\n## Alternative designs considered\n\n### Batch oriented concrete API\n\nIn this alternative, the application code sends, receives and acknowledges\nmessages in batches. Here is an example of how it would look from the\ndeveloper's perspective, in a situation where not too many signups are happening\nper second.\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"net/http\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nfunc main() {\n    log.Fatal(serve())\n}\n\nfunc serve() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    t, err := acmepubsub.OpenTopic(ctx, client, \"user-signup\", nil)\n    if err != nil {\n        return err\n    }\n    defer t.Close()\n    http.HandleFunc(\"/signup\", func(w http.ResponseWriter, r *http.Request) {\n        err := t.Send(r.Context(), []pubsub.Message{{Body: []byte(\"Someone signed up\")}})\n        if err != nil {\n            log.Println(err)\n        }\n    })\n    return http.ListenAndServe(\":8080\", nil)\n}\n```\n\nFor a company experiencing explosive growth or enthusiastic spammers creating\nmore signups than this simple-minded implementation can handle, the app would\nhave to be adapted to create non-singleton batches, like this:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"net/http\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nconst batchSize = 1000\n\nfunc main() {\n    log.Fatal(serve())\n}\n\nfunc serve() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    t, err := acmepubsub.OpenTopic(ctx, client, \"user-signup\", nil)\n    if err != nil {\n        return err\n    }\n    defer t.Close()\n    c := make(chan *pubsub.Message)\n    go sendBatches(ctx, t, c)\n    http.HandleFunc(\"/signup\", func(w http.ResponseWriter, r *http.Request) {\n        c <- &pubsub.Message{Body: []byte(\"Someone signed up\")}\n    })\n    return http.ListenAndServe(\":8080\", nil)\n}\n\nfunc sendBatches(ctx context.Context, t *pubsub.Topic, c chan *pubsub.Message) {\n    batch := make([]*pubsub.Message, batchSize)\n    for {\n        for i := 0; i < batchSize; i++ {\n            batch[i] = <-c\n        }\n        if err := t.Send(ctx, batch); err != nil {\n            log.Println(err)\n        }\n    }\n}\n```\n\nThis shows how the complexity of batching has been pushed onto the application\ncode. Removing messages from the batch when HTTP/2 requests are canceled would\nrequire the application code to be even more complex, adding more risk of bugs.\n\nIn this API, the application code has to either request batches of size 1,\nmeaning more network traffic, or it has to explicitly manage the batches of\nmessages it receives. Here is an example of how this API would be used for\nserial message processing:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"os\"\n    \"os/signal\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nconst batchSize = 10\n\nfunc main() {\n    if err := receive(); err != nil {\n        log.Fatal(err)\n    }\n}\n\nfunc receive() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    s, err := acmepubsub.OpenSubscription(ctx, client, \"signup-minder\", nil)\n    if err != nil {\n        return err\n    }\n    defer s.Close()\n\n    // Process messages.\n    for {\n        msgs, err := s.Receive(ctx, batchSize)\n        if err {\n            return err\n        }\n        acks := make([]pubsub.AckID, 0, batchSize)\n        for _, msg := range msgs {\n            // Do something with msg.\n            fmt.Printf(\"Got message: %q\\n\", msg.Body)\n            acks = append(acks, msg.AckID)\n        }\n        err := s.SendAcks(ctx, acks)\n        if err != nil {\n            return err\n        }\n    }\n}\n```\n\nHere’s what it might look like to use this batch-only API with the inverted\nworker pool pattern:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"log\"\n    \"os\"\n    \"os/signal\"\n\n    rawacmepubsub \"github.com/acme/pubsub\"\n    \"github.com/google/go-cloud/pubsub\"\n    \"github.com/google/go-cloud/pubsub/acmepubsub\"\n)\n\nconst batchSize = 100\nconst poolSize = 10\n\nfunc main() {\n    if err := receive(); err != nil {\n        log.Fatal(err)\n    }\n}\n\nfunc receive() error {\n    ctx := context.Background()\n    client, err := rawacmepubsub.NewClient(ctx, \"unicornvideohub\")\n    if err != nil {\n        return err\n    }\n    s, err := acmepubsub.OpenSubscription(ctx, client, \"user-signup-minder\", nil)\n    if err != nil {\n        return err\n    }\n    defer s.Close()\n\n    // Receive the messages and forward them to a chan.\n    msgsChan := make(chan *pubsub.Message)\n    go func() {\n        for {\n            msgs, err := s.Receive(ctx, batchSize)\n            if err {\n                log.Fatal(err)\n            }\n            for _, m := range msgs {\n                msgsChan <- m\n            }\n        }\n    }\n\n    // Get the acks from a chan and send them back to the\n    // server in batches.\n    acksChan := make(chan pubsub.AckID)\n    go func() {\n        for {\n            batch := make([]pubsub.AckID, batchSize)\n            for i := 0; i < len(batch); i++ {\n                batch[i] = <-acksChan\n            }\n            if err := s.SendAcks(ctx, batch); err != nil {\n                /* handle err */\n            }\n        }\n    }\n\n    // Use a buffered channel as a semaphore.\n    sem := make(chan struct{}, poolSize)\n    for msg := range msgsChan {\n        sem <- struct{}{}\n        go func(msg *pubsub.Message) {\n            log.Printf(\"Got message: %s\", msg.Body)\n            acksChan <- msg.AckID\n            <-sem\n        }(msg)\n    }\n    for n := poolSize; n > 0; n-- {\n        sem <- struct{}{}\n    }\n}\n```\n\nHere are some trade-offs of this design:\n\nPro:\n\n*   The semantics are simple, making it\n    *   straightforward to implement the concrete API and the drivers for most\n        pubsub services\n    *   easy for developers to reason about how it will behave\n    *   less risky that bugs will be present in the concrete API\n*   Fairly efficient sending and receiving of messages is possible by tuning\n    batch size and the number of goroutines sending or receiving messages.\n\nCon:\n\n*   This style of API makes the inverted worker pool pattern verbose.\n*   Apps needing to send or receive a large volume of messages must have their\n    own logic to create batches of size greater than 1.\n\n### go-micro\n\nHere is an example of what application code could look like for a pubsub API\ninspired by [`go-micro`](https://github.com/micro/go-micro)'s `broker` package:\n\n```go\nb := somepubsub.NewBroker(...)\nif err := b.Connect(); err != nil {\n    /* handle err */\n}\ntopic := \"user-signups\"\nsubID := \"user-signups-subscription-1\"\ns, err := b.Subscription(ctx, topic, subID, func(pub broker.Publication) error {\n    fmt.Printf(\"%s\\n\", pub.Message.Body)\n    return nil\n})\nif err := b.Publish(ctx, topic, &broker.Message{ Body: []byte(\"alice signed up\") }); err != nil {\n    /* handle err */\n}\n// Sometime later:\nif err := s.Unsubscribe(ctx); err != nil {\n    /* handle err */\n}\n```\n\nPro:\n\n*   The callback to the subscription returning an error to decide whether to\n    acknowledge the message means the developer cannot forget to ack.\n\nCon:\n\n*   Go micro has code to auto-create\n    [topics](https://github.com/micro/go-plugins/blob/f3fcfcdf77392b4e053c8d5b361abfabc0c623d3/broker/googlepubsub/googlepubsub.go#L152)\n    and\n    [subscriptions](https://github.com/micro/go-plugins/blob/f3fcfcdf77392b4e053c8d5b361abfabc0c623d3/broker/googlepubsub/googlepubsub.go#L185)\n    as needed, but this is not consistent with the Go CDK’s design principle to\n    not get involved in operations.\n*   The subscription callback idea does not appear to be compatible with\n    inverted worker pools.\n\n## Acknowledgements\n\nIn pubsub systems with acknowledgement, messages are kept in a queue associated\nwith the subscription on the server. When a client receives one of these\nmessages, its counterpart on the server is marked as being processed. Once the\nclient finishes processing the message, it sends an acknowledgement (or \"ack\")\nto the server and the server removes the message from the subscription queue.\nThere may be a deadline for the acknowledgement, past which the server unmarks\nthe message so that it can be received again for another try at processing.\n\nRedis Pub/Sub and ZeroMQ don’t support acking, but many others do including GCP\nPubSub, Azure Service Bus, RabbitMQ, and\n[Redis Streams](https://redis.io/topics/streams-intro). Given the wide support\nand usefulness, it makes sense to support message acking in the Go CDK.\n\nAs of this writing, it is an open question as to what should be done about\npubsub systems that do not support acks. Some possibilities have been discussed,\nbut no clear best option has emerged yet:\n\n1.  simulating acknowledgement by constructing queues on the server. Con: the\n    magically created queues would probably be a less than pleasant surprise for\n    some users.\n2.  making ack a no-op for systems that don't support it. With this, do we\n    return a sentinel error from `Ack`, and if so then doesn't that unduly\n    complicate the code for apps that never use non-acking systems? This option\n    is also potentially misleading for developers who would naturally assume\n    that un-acked messages would be redelivered.\n\n### Rejected acknowledgement API: `Receive` method returns an `ack` func\n\nIn this alternative, the application code would look something like this:\n\n```go\nmsg, ack, err := s.Receive(ctx)\nlog.Printf(\"Received message: %q\", msg.Body)\nack(msg)\n```\n\nPro:\n\n*   The compiler will complain if the returned `ack` function is not used.\n\nCon:\n\n*   Receive has one more return value.\n*   Passing `ack` around along with `msg` is inconvenient.\n\n## Tests\n\n### Unit tests for the concrete API (`github.com/go-cloud/pubsub`)\n\nWe can test that the batched sending, receiving and acking work as intended by\nmaking mock implementations of the driver interfaces.\n\nAt least the following things should be tested:\n\n*   Calling `pubsub.Message.Ack` causes `driver.Subscription.SendAcks` to be\n    called.\n*   Calling `pubsub.Topic.Send` causes `driver.Topic.SendBatch` to be called.\n*   Calling `pubsub.Subscription.Receive` causes\n    `driver.Subscription.ReceiveBatch` to be called.\n\n### Conformance tests for specific implementations (*e.g.*, `github.com/go-cloud/pubsub/acmepubsub`)\n\n*   Sent messages with random contents are received with the same contents.\n*   Sent messages with random attributes are received with the same attributes.\n*   Error occurs when making a local topic with an ID that doesn’t exist on the\n    server.\n*   Error occurs when making a subscription with an ID that doesn’t exist on the\n    server.\n*   Message gets sent again after ack deadline if a message is never\n    acknowledged.\n*   ~~Acked messages don't get received again after waiting twice the ack\n    deadline.~~ :point_left: This test would probably be too flakey.\n\n## Benchmarks\n\nWhat is the throughput and latency of the Go CDK's `pubsub` package, relative to\ndirectly using the APIs for various services?\n\n*   send, for 1, 10, 100 topics, and for 1, 10, 100 goroutines sending messages\n    to those topics\n*   receive, for 1, 10, 100 subscriptions, and for 1, 10, 100 goroutines\n    receiving from each subscription\n\n## References\n\n*   https://github.com/google/go-cloud/issues/312\n*   http://queues.io/\n"
  },
  {
    "path": "internal/docs/release.md",
    "content": "# Releases\n\nTo do a release:\n\n-   Pick the new release name; it's probably `v0.x.0` where `x` is whatever the\n    [last release](https://github.com/google/go-cloud/releases/latest) was plus\n    one, but follow [semantic versioning](https://semver.org/).\n\n-   Consider updating dependencies via `internal/testing/update_deps.sh` if it\n    hasn't been done recently. Do this as a separte step before the release.\n\n-   Create a new branch for the release (`git checkout -B prerelease`).\n\n-   Update the `User-Agent` version in internal/useragent/useragent.go.\n\n-   Run the release helper tool to remove `replace` lines from the `go.mod`\n    files of submodules:\n\n    ```bash\n    $ go run internal/releasehelper/releasehelper.go dropreplace\n    ```\n\n-   Run the release helper tool to set the version in `require` directives of\n    submodules to the new (yet unreleased) version:\n\n    ```bash\n    $ go run internal/releasehelper/releasehelper.go setversion v0.x.0\n    ```\n\n-   Commit and create a PR. Tests will fail for this PR because submodules depend on a\n    version of the main module that wasn't tagged yet, so you may have to\n    force-merge the PR. Note that this does not affect users, since a new\n    version hasn't been tagged yet.\n\n-   `git sync` your local client and move to the master branch.\n\n-   Tag new versions by running `./internal/testing/git_tag_modules.sh v0.X.0`.\n\n-   Push tags to upstream with `git push upstream --tags`\n\n-   Go to [Releases](https://github.com/google/go-cloud/releases). Click `Draft\n    a new release`, enter your release name, select your tag from the dropdown,\n    and enter release notes by clicking \"Generate Release Notes\".\n\n    -   Add a section for breaking changes, if any. They should be marked with\n        `BREAKING_CHANGE` in the PR title; however, that's not enforced so do\n        your best to look for them.\n    -   Update the list of changes to remove anything that's not interesting\n        (e.g., updating dependencies, prerelease, minor cleanups, etc.).\n\n-   Send an email to\n    [go-cloud@googlegroups.com](https://groups.google.com/forum/#!forum/go-cloud)\n    announcing the release, and including the release notes.\n\n-   Create a new branch for the postrelease (`git checkout -B postrelease`).\n\n-   Add back `replace` lines:\n\n    ```bash\n    $ go run internal/releasehelper/releasehelper.go addreplace\n    ```\n\n    Run tests and send out a PR as usual.\n"
  },
  {
    "path": "internal/escape/escape.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package escape includes helpers for escaping and unescaping strings.\npackage escape\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// NonUTF8String is a string for which utf8.ValidString returns false.\nconst NonUTF8String = \"\\xbd\\xb2\"\n\n// IsASCIIAlphanumeric returns true iff r is alphanumeric: a-z, A-Z, 0-9.\nfunc IsASCIIAlphanumeric(r rune) bool {\n\tswitch {\n\tcase 'A' <= r && r <= 'Z':\n\t\treturn true\n\tcase 'a' <= r && r <= 'z':\n\t\treturn true\n\tcase '0' <= r && r <= '9':\n\t\treturn true\n\t}\n\treturn false\n}\n\n// HexEscape returns s, with all runes for which shouldEscape returns true\n// escaped to \"__0xXXX__\", where XXX is the hex representation of the rune\n// value. For example, \" \" would escape to \"__0x20__\".\n//\n// Non-UTF-8 strings will have their non-UTF-8 characters escaped to\n// unicode.ReplacementChar; the original value is lost. Please file an\n// issue if you need non-UTF8 support.\n//\n// Note: shouldEscape takes the whole string as a slice of runes and an\n// index. Passing it a single byte or a single rune doesn't provide\n// enough context for some escape decisions; for example, the caller might\n// want to escape the second \"/\" in \"//\" but not the first one.\n// We pass a slice of runes instead of the string or a slice of bytes\n// because some decisions will be made on a rune basis (e.g., encode\n// all non-ASCII runes).\nfunc HexEscape(s string, shouldEscape func(s []rune, i int) bool) string {\n\t// Do a first pass to see which runes (if any) need escaping.\n\trunes := []rune(s)\n\tvar toEscape []int\n\tfor i := range runes {\n\t\tif shouldEscape(runes, i) {\n\t\t\ttoEscape = append(toEscape, i)\n\t\t}\n\t}\n\tif len(toEscape) == 0 {\n\t\treturn s\n\t}\n\t// Each escaped rune turns into at most 14 runes (\"__0x7fffffff__\"),\n\t// so allocate an extra 13 for each. We'll reslice at the end\n\t// if we didn't end up using them.\n\tescaped := make([]rune, len(runes)+13*len(toEscape))\n\tn := 0 // current index into toEscape\n\tj := 0 // current index into escaped\n\tfor i, r := range runes {\n\t\tif n < len(toEscape) && i == toEscape[n] {\n\t\t\t// We were asked to escape this rune.\n\t\t\tfor _, x := range fmt.Sprintf(\"__%#x__\", r) {\n\t\t\t\tescaped[j] = x\n\t\t\t\tj++\n\t\t\t}\n\t\t\tn++\n\t\t} else {\n\t\t\tescaped[j] = r\n\t\t\tj++\n\t\t}\n\t}\n\treturn string(escaped[0:j])\n}\n\n// unescape tries to unescape starting at r[i].\n// It returns a boolean indicating whether the unescaping was successful,\n// and (if true) the unescaped rune and the last index of r that was used\n// during unescaping.\nfunc unescape(r []rune, i int) (bool, rune, int) {\n\t// Look for \"__0x\".\n\tif r[i] != '_' {\n\t\treturn false, 0, 0\n\t}\n\ti++\n\tif i >= len(r) || r[i] != '_' {\n\t\treturn false, 0, 0\n\t}\n\ti++\n\tif i >= len(r) || r[i] != '0' {\n\t\treturn false, 0, 0\n\t}\n\ti++\n\tif i >= len(r) || r[i] != 'x' {\n\t\treturn false, 0, 0\n\t}\n\ti++\n\t// Capture the digits until the next \"_\" (if any).\n\tvar hexdigits []rune\n\tfor ; i < len(r) && r[i] != '_'; i++ {\n\t\thexdigits = append(hexdigits, r[i])\n\t}\n\t// Look for the trailing \"__\".\n\tif i >= len(r) || r[i] != '_' {\n\t\treturn false, 0, 0\n\t}\n\ti++\n\tif i >= len(r) || r[i] != '_' {\n\t\treturn false, 0, 0\n\t}\n\t// Parse the hex digits into an int32.\n\tretval, err := strconv.ParseInt(string(hexdigits), 16, 32)\n\tif err != nil {\n\t\treturn false, 0, 0\n\t}\n\treturn true, rune(retval), i\n}\n\n// HexUnescape reverses HexEscape.\nfunc HexUnescape(s string) string {\n\tvar unescaped []rune\n\trunes := []rune(s)\n\tfor i := 0; i < len(runes); i++ {\n\t\tif ok, newR, newI := unescape(runes, i); ok {\n\t\t\t// We unescaped some runes starting at i, resulting in the\n\t\t\t// unescaped rune newR. The last rune used was newI.\n\t\t\tif unescaped == nil {\n\t\t\t\t// This is the first rune we've encountered that\n\t\t\t\t// needed unescaping. Allocate a buffer and copy any\n\t\t\t\t// previous runes.\n\t\t\t\tunescaped = make([]rune, i)\n\t\t\t\tcopy(unescaped, runes)\n\t\t\t}\n\t\t\tunescaped = append(unescaped, newR)\n\t\t\ti = newI\n\t\t} else if unescaped != nil {\n\t\t\tunescaped = append(unescaped, runes[i])\n\t\t}\n\t}\n\tif unescaped == nil {\n\t\treturn s\n\t}\n\treturn string(unescaped)\n}\n\n// URLEscape uses url.PathEscape to escape s.\nfunc URLEscape(s string) string {\n\treturn url.PathEscape(s)\n}\n\n// URLUnescape reverses URLEscape using url.PathUnescape. If the unescape\n// returns an error, it returns s.\nfunc URLUnescape(s string) string {\n\tif u, err := url.PathUnescape(s); err == nil {\n\t\treturn u\n\t}\n\treturn s\n}\n\nfunc makeASCIIString(start, end int) string {\n\tvar s []byte\n\tfor i := start; i < end; i++ {\n\t\tif i >= 'a' && i <= 'z' {\n\t\t\tcontinue\n\t\t}\n\t\tif i >= 'A' && i <= 'Z' {\n\t\t\tcontinue\n\t\t}\n\t\tif i >= '0' && i <= '9' {\n\t\t\tcontinue\n\t\t}\n\t\ts = append(s, byte(i))\n\t}\n\treturn string(s)\n}\n\n// WeirdStrings are unusual/weird strings for use in testing escaping.\n// The keys are descriptive strings, the values are the weird strings.\nvar WeirdStrings = map[string]string{\n\t\"fwdslashes\":          \"foo/bar/baz\",\n\t\"repeatedfwdslashes\":  \"foo//bar///baz\",\n\t\"dotdotslash\":         \"../foo/../bar/../../baz../\",\n\t\"backslashes\":         \"foo\\\\bar\\\\baz\",\n\t\"repeatedbackslashes\": \"..\\\\foo\\\\\\\\bar\\\\\\\\\\\\baz\",\n\t\"dotdotbackslash\":     \"..\\\\foo\\\\..\\\\bar\\\\..\\\\..\\\\baz..\\\\\",\n\t\"quote\":               \"foo\\\"bar\\\"baz\",\n\t\"spaces\":              \"foo bar baz\",\n\t\"startwithdigit\":      \"12345\",\n\t\"unicode\":             strings.Repeat(\"☺\", 3),\n\t// The ASCII characters 0-128, split up to avoid the possibly-escaped\n\t// versions from getting too long.\n\t\"ascii-1\": makeASCIIString(0, 16),\n\t\"ascii-2\": makeASCIIString(16, 32),\n\t\"ascii-3\": makeASCIIString(32, 48),\n\t\"ascii-4\": makeASCIIString(48, 64),\n\t\"ascii-5\": makeASCIIString(64, 80),\n\t\"ascii-6\": makeASCIIString(80, 96),\n\t\"ascii-7\": makeASCIIString(96, 112),\n\t\"ascii-8\": makeASCIIString(112, 128),\n}\n"
  },
  {
    "path": "internal/escape/escape_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage escape\n\nimport (\n\t\"testing\"\n)\n\nfunc TestHexEscape(t *testing.T) {\n\talways := func([]rune, int) bool { return true }\n\n\tfor _, tc := range []struct {\n\t\tdescription, s, want string\n\t\tshould               func([]rune, int) bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty string\",\n\t\t\ts:           \"\",\n\t\t\twant:        \"\",\n\t\t\tshould:      always,\n\t\t},\n\t\t{\n\t\t\tdescription: \"first rune\",\n\t\t\ts:           \"hello world\",\n\t\t\twant:        \"__0x68__ello world\",\n\t\t\tshould:      func(_ []rune, i int) bool { return i == 0 },\n\t\t},\n\t\t{\n\t\t\tdescription: \"last rune\",\n\t\t\ts:           \"hello world\",\n\t\t\twant:        \"hello worl__0x64__\",\n\t\t\tshould:      func(r []rune, i int) bool { return i == len(r)-1 },\n\t\t},\n\t\t{\n\t\t\tdescription: \"runes in middle\",\n\t\t\ts:           \"hello  world\",\n\t\t\twant:        \"hello__0x20____0x20__world\",\n\t\t\tshould:      func(r []rune, i int) bool { return r[i] == ' ' },\n\t\t},\n\t\t{\n\t\t\tdescription: \"unicode\",\n\t\t\ts:           \"☺☺\",\n\t\t\tshould:      always,\n\t\t\twant:        \"__0x263a____0x263a__\",\n\t\t},\n\t} {\n\t\tgot := HexEscape(tc.s, tc.should)\n\t\tif got != tc.want {\n\t\t\tt.Errorf(\"%s: got escaped %q want %q\", tc.description, got, tc.want)\n\t\t}\n\t\tgot = HexUnescape(got)\n\t\tif got != tc.s {\n\t\t\tt.Errorf(\"%s: got unescaped %q want %q\", tc.description, got, tc.s)\n\t\t}\n\t}\n}\n\nfunc TestHexEscapeUnescapeWeirdStrings(t *testing.T) {\n\tfor name, s := range WeirdStrings {\n\t\tescaped := HexEscape(s, func(r []rune, i int) bool { return !IsASCIIAlphanumeric(r[i]) })\n\t\tunescaped := HexUnescape(escaped)\n\t\tif unescaped != s {\n\t\t\tt.Errorf(\"%s: got unescaped %q want %q\", name, unescaped, s)\n\t\t}\n\t}\n}\n\nfunc TestHexUnescapeOnInvalid(t *testing.T) {\n\t// Unescaping of valid escape sequences is tested in TestEscape.\n\t// This only tests invalid escape sequences, so Unescape is expected\n\t// to do nothing.\n\tfor _, s := range []string{\n\t\t\"0x68\",\n\t\t\"_0x68_\",\n\t\t\"__0x68_\",\n\t\t\"_0x68__\",\n\t\t\"__1x68__\",\n\t\t\"__0y68__\",\n\t\t\"__0xag__\",       // invalid hex digit\n\t\t\"__0x8fffffff__\", // out of int32 range\n\t} {\n\t\tgot := HexUnescape(s)\n\t\tif got != s {\n\t\t\tt.Errorf(\"%s: got %q want %q\", s, got, s)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/gcerr/errorcode_string.go",
    "content": "// Code generated by \"stringer -type=ErrorCode\"; DO NOT EDIT.\n\npackage gcerr\n\nimport \"strconv\"\n\nconst _ErrorCode_name = \"OKUnknownNotFoundAlreadyExistsInvalidArgumentInternalUnimplementedFailedPreconditionPermissionDeniedResourceExhaustedCanceledDeadlineExceeded\"\n\nvar _ErrorCode_index = [...]uint8{0, 2, 9, 17, 30, 45, 53, 66, 84, 100, 117, 125, 141}\n\nfunc (i ErrorCode) String() string {\n\tif i < 0 || i >= ErrorCode(len(_ErrorCode_index)-1) {\n\t\treturn \"ErrorCode(\" + strconv.FormatInt(int64(i), 10) + \")\"\n\t}\n\treturn _ErrorCode_name[_ErrorCode_index[i]:_ErrorCode_index[i+1]]\n}\n"
  },
  {
    "path": "internal/gcerr/gcerr.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcerr provides an error type for Go CDK APIs.\npackage gcerr\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n\n\t\"gocloud.dev/internal/retry\"\n\t\"golang.org/x/xerrors\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// An ErrorCode describes the error's category.\ntype ErrorCode int\n\nconst (\n\t// OK is returned by the Code function on a nil error. It is not a valid\n\t// code for an error.\n\tOK ErrorCode = 0\n\n\t// Unknown means that the error could not be categorized.\n\tUnknown ErrorCode = 1\n\n\t// NotFound means that the resource was not found.\n\tNotFound ErrorCode = 2\n\n\t// AlreadyExists means that the resource exists, but it should not.\n\tAlreadyExists ErrorCode = 3\n\n\t// InvalidArguments means that a value given to a Go CDK API is incorrect.\n\tInvalidArgument ErrorCode = 4\n\n\t// Internal means that something unexpected happened. Internal errors always indicate\n\t// bugs in the Go CDK (or possibly the underlying service).\n\tInternal ErrorCode = 5\n\n\t// Unimplemented means that the feature is not implemented.\n\tUnimplemented ErrorCode = 6\n\n\t// FailedPrecondition means that the system was in the wrong state.\n\tFailedPrecondition ErrorCode = 7\n\n\t// PermissionDenied means that the caller does not have permission to execute the specified operation.\n\tPermissionDenied ErrorCode = 8\n\n\t// ResourceExhausted means that some resource has been exhausted, typically because a service resource limit\n\t// has been reached.\n\tResourceExhausted ErrorCode = 9\n\n\t// Canceled means that the operation was canceled.\n\tCanceled ErrorCode = 10\n\n\t// DeadlineExceeded means that The operation timed out.\n\tDeadlineExceeded ErrorCode = 11\n)\n\n// When adding a new error code, try to use the names defined in google.golang.org/grpc/codes.\n\n// Do not change the numbers assigned to codes: past values may be stored in metric databases.\n\n// Call \"go generate\" whenever you change the above list of error codes.\n// To get stringer:\n//   go get golang.org/x/tools/cmd/stringer\n//   Make sure $GOPATH/bin or $GOBIN in on your path.\n\n//go:generate stringer -type=ErrorCode\n\n// An Error describes a Go CDK error.\ntype Error struct {\n\t// Code is the error code.\n\tCode  ErrorCode\n\tmsg   string\n\tframe xerrors.Frame\n\terr   error\n}\n\n// Error returns the error as a string.\nfunc (e *Error) Error() string {\n\treturn fmt.Sprint(e)\n}\n\n// Format formats the error.\nfunc (e *Error) Format(s fmt.State, c rune) {\n\txerrors.FormatError(e, s, c)\n}\n\n// FormatError formats the errots.\nfunc (e *Error) FormatError(p xerrors.Printer) (next error) {\n\tif e.msg == \"\" {\n\t\tp.Printf(\"code=%v\", e.Code)\n\t} else {\n\t\tp.Printf(\"%s (code=%v)\", e.msg, e.Code)\n\t}\n\te.frame.Format(p)\n\treturn e.err\n}\n\n// Unwrap returns the error underlying the receiver, which may be nil.\nfunc (e *Error) Unwrap() error {\n\treturn e.err\n}\n\n// New returns a new error with the given code, underlying error and message. Pass 1\n// for the call depth if New is called from the function raising the error; pass 2 if\n// it is called from a helper function that was invoked by the original function; and\n// so on.\nfunc New(c ErrorCode, err error, callDepth int, msg string) *Error {\n\treturn &Error{\n\t\tCode:  c,\n\t\tmsg:   msg,\n\t\tframe: xerrors.Caller(callDepth),\n\t\terr:   err,\n\t}\n}\n\n// Newf uses format and args to format a message, then calls New.\nfunc Newf(c ErrorCode, err error, format string, args ...any) *Error {\n\treturn New(c, err, 2, fmt.Sprintf(format, args...))\n}\n\n// DoNotWrap reports whether an error should not be wrapped in the Error\n// type from this package.\n// It returns true if err is a retry error, a context error, io.EOF, or if it wraps\n// one of those.\nfunc DoNotWrap(err error) bool {\n\tif errors.Is(err, io.EOF) {\n\t\treturn true\n\t}\n\tif errors.Is(err, context.Canceled) {\n\t\treturn true\n\t}\n\tif errors.Is(err, context.DeadlineExceeded) {\n\t\treturn true\n\t}\n\tvar r *retry.ContextError\n\treturn errors.As(err, &r)\n}\n\n// GRPCCode extracts the gRPC status code and converts it into an ErrorCode.\n// It returns Unknown if the error isn't from gRPC.\nfunc GRPCCode(err error) ErrorCode {\n\tswitch status.Code(err) {\n\tcase codes.NotFound:\n\t\treturn NotFound\n\tcase codes.AlreadyExists:\n\t\treturn AlreadyExists\n\tcase codes.InvalidArgument:\n\t\treturn InvalidArgument\n\tcase codes.Internal:\n\t\treturn Internal\n\tcase codes.Unimplemented:\n\t\treturn Unimplemented\n\tcase codes.FailedPrecondition:\n\t\treturn FailedPrecondition\n\tcase codes.PermissionDenied:\n\t\treturn PermissionDenied\n\tcase codes.ResourceExhausted:\n\t\treturn ResourceExhausted\n\tcase codes.Canceled:\n\t\treturn Canceled\n\tcase codes.DeadlineExceeded:\n\t\treturn DeadlineExceeded\n\tdefault:\n\t\treturn Unknown\n\t}\n}\n\n// ErrorAs is a helper for the ErrorAs method of an API's portable type.\n// It performs some initial nil checks, and does a single level of unwrapping\n// when err is a *gcerr.Error. Then it calls its errorAs argument, which should\n// be a driver implementation of ErrorAs.\nfunc ErrorAs(err error, target any, errorAs func(error, any) bool) bool {\n\tif err == nil {\n\t\treturn false\n\t}\n\tif target == nil {\n\t\tpanic(\"ErrorAs target cannot be nil\")\n\t}\n\tval := reflect.ValueOf(target)\n\tif val.Type().Kind() != reflect.Pointer || val.IsNil() {\n\t\tpanic(\"ErrorAs target must be a non-nil pointer\")\n\t}\n\tif e, ok := err.(*Error); ok {\n\t\terr = e.Unwrap()\n\t}\n\treturn errorAs(err, target)\n}\n"
  },
  {
    "path": "internal/gcerr/gcerr_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcerr\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestNewf(t *testing.T) {\n\te := Newf(Internal, nil, \"a %d b\", 3)\n\tgot := e.Error()\n\twant := \"a 3 b (code=Internal)\"\n\tif got != want {\n\t\tt.Errorf(\"got %q, want %q\", got, want)\n\t}\n}\n\nfunc TestFormatting(t *testing.T) {\n\tfor i, test := range []struct {\n\t\terr  *Error\n\t\tverb string\n\t\twant []string // regexps, one per line\n\t}{\n\t\t{\n\t\t\tNew(NotFound, nil, 1, \"message\"),\n\t\t\t\"%v\",\n\t\t\t[]string{`^message \\(code=NotFound\\)$`},\n\t\t},\n\t\t{\n\t\t\tNew(NotFound, nil, 1, \"message\"),\n\t\t\t\"%+v\",\n\t\t\t[]string{\n\t\t\t\t`^message \\(code=NotFound\\):$`,\n\t\t\t\t`\\s+gocloud.dev/internal/gcerr.TestFormatting$`,\n\t\t\t\t`\\s+.*/internal/gcerr/gcerr_test.go:\\d+$`,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tNew(AlreadyExists, errors.New(\"wrapped\"), 1, \"message\"),\n\t\t\t\"%v\",\n\t\t\t[]string{`^message \\(code=AlreadyExists\\): wrapped$`},\n\t\t},\n\t\t{\n\t\t\tNew(AlreadyExists, errors.New(\"wrapped\"), 1, \"message\"),\n\t\t\t\"%+v\",\n\t\t\t[]string{\n\t\t\t\t`^message \\(code=AlreadyExists\\):`,\n\t\t\t\t`^\\s+gocloud.dev/internal/gcerr.TestFormatting$`,\n\t\t\t\t`^\\s+.*/internal/gcerr/gcerr_test.go:\\d+$`,\n\t\t\t\t`^\\s+- wrapped$`,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tNew(AlreadyExists, errors.New(\"wrapped\"), 1, \"\"),\n\t\t\t\"%v\",\n\t\t\t[]string{`^code=AlreadyExists: wrapped`},\n\t\t},\n\t\t{\n\t\t\tNew(AlreadyExists, errors.New(\"wrapped\"), 1, \"\"),\n\t\t\t\"%+v\",\n\t\t\t[]string{\n\t\t\t\t`^code=AlreadyExists:`,\n\t\t\t\t`^\\s+gocloud.dev/internal/gcerr.TestFormatting$`,\n\t\t\t\t`^\\s+.*/internal/gcerr/gcerr_test.go:\\d+$`,\n\t\t\t\t`^\\s+- wrapped$`,\n\t\t\t},\n\t\t},\n\t} {\n\t\tt.Run(strconv.Itoa(i), func(t *testing.T) {\n\t\t\tgotString := fmt.Sprintf(test.verb, test.err)\n\t\t\tgotLines := strings.Split(gotString, \"\\n\")\n\t\t\tif got, want := len(gotLines), len(test.want); got != want {\n\t\t\t\tt.Fatalf(\"got %d lines, want %d. got:\\n%s\", got, want, gotString)\n\t\t\t}\n\t\t\tfor j, gl := range gotLines {\n\t\t\t\tmatched, err := regexp.MatchString(test.want[j], gl)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatal(err)\n\t\t\t\t}\n\t\t\t\tif !matched {\n\t\t\t\t\tt.Fatalf(\"line #%d: got %q, which doesn't match %q\", j, gl, test.want[j])\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestError(t *testing.T) {\n\t// Check that err.Error() == fmt.Sprintf(\"%s\", err)\n\tfor _, err := range []*Error{\n\t\tNew(NotFound, nil, 1, \"message\"),\n\t\tNew(AlreadyExists, errors.New(\"wrapped\"), 1, \"message\"),\n\t\tNew(AlreadyExists, errors.New(\"wrapped\"), 1, \"\"),\n\t} {\n\t\tgot := err.Error()\n\t\twant := fmt.Sprint(err)\n\t\tif got != want {\n\t\t\tt.Errorf(\"%v: got %q, want %q\", err, got, want)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/openurl/openurl.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package openurl provides helpers for URLMux and URLOpeners in portable APIs.\npackage openurl // import \"gocloud.dev/internal/openurl\"\n\nimport (\n\t\"fmt\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// SchemeMap maps URL schemes to values. The zero value is an empty map, ready for use.\n// All schemes are stored and compared case-insensitively.\ntype SchemeMap struct {\n\tapi string\n\tm   map[string]any\n}\n\n// Register registers scheme for value; subsequent calls to FromString or\n// FromURL with scheme will return value.\n// api is the portable API name (e.g., \"blob\"); the same value should always\n// be passed. It should be in all lowercase.\n// typ is the portable type (e.g., \"Bucket\").\n// Register panics if scheme has already been registered.\nfunc (m *SchemeMap) Register(api, typ, scheme string, value any) {\n\tif m.m == nil {\n\t\tm.m = map[string]any{}\n\t}\n\tif api != strings.ToLower(api) {\n\t\tpanic(fmt.Errorf(\"api should be lowercase: %q\", api))\n\t}\n\tif m.api == \"\" {\n\t\tm.api = api\n\t} else if m.api != api {\n\t\tpanic(fmt.Errorf(\"previously registered using api %q (now %q)\", m.api, api))\n\t}\n\tscheme = strings.ToLower(scheme)\n\tif _, exists := m.m[scheme]; exists {\n\t\tpanic(fmt.Errorf(\"scheme %q already registered for %s.%s\", scheme, api, typ))\n\t}\n\tm.m[scheme] = value\n}\n\n// FromString parses urlstr as an URL and looks up the value for the URL's scheme.\nfunc (m *SchemeMap) FromString(typ, urlstr string) (any, *url.URL, error) {\n\tu, err := url.Parse(urlstr)\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"open %s.%s: %v\", m.api, typ, err)\n\t}\n\tval, err := m.FromURL(typ, u)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn val, u, nil\n}\n\n// FromURL looks up the value for u's scheme.\nfunc (m *SchemeMap) FromURL(typ string, u *url.URL) (any, error) {\n\tscheme := strings.ToLower(u.Scheme)\n\tif scheme == \"\" {\n\t\treturn nil, fmt.Errorf(\"open %s.%s: no scheme in URL %q\", m.api, typ, u)\n\t}\n\tfor _, prefix := range []string{\n\t\tfmt.Sprintf(\"%s+%s+\", m.api, strings.ToLower(typ)),\n\t\tfmt.Sprintf(\"%s+\", m.api),\n\t} {\n\t\tscheme = strings.TrimPrefix(scheme, prefix)\n\t}\n\tv, ok := m.m[scheme]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"open %s.%s: no driver registered for %q for URL %q; available schemes: %v\", m.api, typ, scheme, u, strings.Join(m.Schemes(), \", \"))\n\t}\n\treturn v, nil\n}\n\n// Schemes returns a sorted slice of the registered schemes.\nfunc (m *SchemeMap) Schemes() []string {\n\tvar schemes []string\n\tfor s := range m.m {\n\t\tschemes = append(schemes, s)\n\t}\n\tsort.Strings(schemes)\n\treturn schemes\n}\n\n// ValidScheme returns true iff scheme has been registered.\nfunc (m *SchemeMap) ValidScheme(scheme string) bool {\n\t_, exists := m.m[strings.ToLower(scheme)]\n\treturn exists\n}\n"
  },
  {
    "path": "internal/openurl/openurl_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//\thttps://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\npackage openurl_test\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/internal/openurl\"\n)\n\nfunc TestSchemeMap(t *testing.T) {\n\tconst foo, bar = \"foo value\", \"bar value\"\n\n\ttests := []struct {\n\t\turl     string\n\t\twantErr bool\n\t\twant    any\n\t}{\n\t\t{\"invalid url\", true, nil},\n\t\t{\"foo://a/b/c\", false, foo},\n\t\t{\"api+foo://a/b/c\", false, foo},\n\t\t{\"api+type+foo://a/b/c\", false, foo},\n\t\t{\"bar://a?p=v\", false, bar},\n\t\t{\"api+bar://a\", false, bar},\n\t\t{\"api+type+bar://a\", false, bar},\n\t\t{\"typ+bar://a\", true, nil},\n\t\t{\"api+typ+bar://a\", true, nil},\n\t}\n\n\tvar emptyM, m openurl.SchemeMap\n\tm.Register(\"api\", \"Type\", \"foo\", foo)\n\tm.Register(\"api\", \"Type\", \"bar\", bar)\n\n\tif diff := cmp.Diff(m.Schemes(), []string{\"bar\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !m.ValidScheme(\"foo\") || !m.ValidScheme(\"bar\") {\n\t\tt.Errorf(\"ValidScheme didn't return true for valid scheme\")\n\t}\n\tif m.ValidScheme(\"foo2\") || m.ValidScheme(\"http\") {\n\t\tt.Errorf(\"ValidScheme didn't return false for invalid scheme\")\n\t}\n\n\tfor _, test := range tests {\n\t\t// Empty SchemeMap should always return an error.\n\t\tif _, _, err := emptyM.FromString(\"type\", test.url); err == nil {\n\t\t\tt.Errorf(\"%s: empty SchemeMap got nil error, wanted non-nil error\", test.url)\n\t\t}\n\n\t\tgot, gotURL, gotErr := m.FromString(\"type\", test.url)\n\t\tif (gotErr != nil) != test.wantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error: %v\", test.url, gotErr, test.wantErr)\n\t\t}\n\t\tif gotErr != nil {\n\t\t\tcontinue\n\t\t}\n\t\tif got := gotURL.String(); got != test.url {\n\t\t\tt.Errorf(\"%s: got URL %q want %v\", test.url, got, test.url)\n\t\t}\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"%s: got %v want %v\", test.url, got, test.want)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/otel/metrics.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package otel supports OpenTelemetry tracing and metrics for the Go Cloud Development Kit.\npackage otel\n\nimport (\n\t\"fmt\"\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"go.opentelemetry.io/otel/metric\"\n\tsdkmetric \"go.opentelemetry.io/otel/sdk/metric\"\n\t\"strings\"\n)\n\n// Units are encoded according to the case-sensitive abbreviations from the\n// Unified Code for Units of Measure: http://unitsofmeasure.org/ucum.html.\nconst (\n\tunitDimensionless = \"1\"\n\tunitMilliseconds  = \"ms\"\n\tunitBytes         = \"By\"\n)\n\nvar (\n\tdefaultMillisecondsBoundaries = []float64{\n\t\t0.0, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0,\n\t\t2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0,\n\t\t13.0, 16.0, 20.0, 25.0, 30.0, 40.0,\n\t\t50.0, 65.0, 80.0, 100.0, 130.0, 160.0,\n\t\t200.0, 250.0, 300.0, 400.0, 500.0,\n\t\t650.0, 800.0, 1000.0, 2000.0, 5000.0, 10000.0,\n\t}\n)\n\nfunc Views(pkg string) []sdkmetric.View {\n\n\treturn []sdkmetric.View{\n\n\t\t// View for latency histogram.\n\t\tfunc(inst sdkmetric.Instrument) (sdkmetric.Stream, bool) {\n\t\t\tif inst.Kind == sdkmetric.InstrumentKindHistogram {\n\t\t\t\tif inst.Name == pkg+\"/latency\" {\n\t\t\t\t\treturn sdkmetric.Stream{\n\t\t\t\t\t\tName:        inst.Name,\n\t\t\t\t\t\tDescription: \"Distribution of method latency, by provider and method.\",\n\t\t\t\t\t\tAggregation: sdkmetric.AggregationExplicitBucketHistogram{\n\t\t\t\t\t\t\tBoundaries: defaultMillisecondsBoundaries,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAttributeFilter: func(kv attribute.KeyValue) bool {\n\t\t\t\t\t\t\treturn kv.Key == packageKey || kv.Key == methodKey\n\t\t\t\t\t\t},\n\t\t\t\t\t}, true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn sdkmetric.Stream{}, false\n\t\t},\n\n\t\t// View for completed_calls count.\n\t\tfunc(inst sdkmetric.Instrument) (sdkmetric.Stream, bool) {\n\t\t\tif inst.Kind == sdkmetric.InstrumentKindHistogram {\n\t\t\t\tif inst.Name == pkg+\"/latency\" {\n\t\t\t\t\treturn sdkmetric.Stream{\n\t\t\t\t\t\tName:        strings.Replace(inst.Name, \"/latency\", \"/completed_calls\", 1),\n\t\t\t\t\t\tDescription: \"Count of method calls by provider, method and status.\",\n\t\t\t\t\t\tAggregation: sdkmetric.DefaultAggregationSelector(sdkmetric.InstrumentKindCounter),\n\t\t\t\t\t\tAttributeFilter: func(kv attribute.KeyValue) bool {\n\t\t\t\t\t\t\treturn kv.Key == methodKey || kv.Key == statusKey\n\t\t\t\t\t\t},\n\t\t\t\t\t}, true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn sdkmetric.Stream{}, false\n\t\t},\n\t}\n}\n\n// CounterView returns summation views that add up individual measurements the counter takes.\nfunc CounterView(pkg string, meterName string, description string) []sdkmetric.View {\n\treturn []sdkmetric.View{\n\t\t// View for gauge counts.\n\t\tfunc(inst sdkmetric.Instrument) (sdkmetric.Stream, bool) {\n\t\t\tif inst.Kind == sdkmetric.InstrumentKindCounter {\n\t\t\t\tif inst.Name == pkg+meterName {\n\t\t\t\t\treturn sdkmetric.Stream{\n\t\t\t\t\t\tName:        inst.Name,\n\t\t\t\t\t\tDescription: description,\n\t\t\t\t\t\tAggregation: sdkmetric.DefaultAggregationSelector(sdkmetric.InstrumentKindCounter),\n\t\t\t\t\t}, true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn sdkmetric.Stream{}, false\n\t\t},\n\t}\n}\n\n// LatencyMeasure returns the measure for method call latency used by Go CDK APIs.\nfunc LatencyMeasure(pkg string, provider string) metric.Float64Histogram {\n\n\tattrs := []attribute.KeyValue{\n\t\tpackageKey.String(pkg),\n\t\tproviderKey.String(provider),\n\t}\n\n\tpkgMeter := otel.Meter(pkg, metric.WithInstrumentationAttributes(attrs...))\n\n\tm, err := pkgMeter.Float64Histogram(\n\t\tpkg+\"/latency\",\n\t\tmetric.WithDescription(\"Latency distribution of method calls\"),\n\t\tmetric.WithUnit(unitMilliseconds),\n\t)\n\n\tif err != nil {\n\t\t// The only possible errors are from invalid key or value names, and those are programming\n\t\t// errors that will be found during testing.\n\t\tpanic(fmt.Sprintf(\"fullName=%q, provider=%q: %v\", pkg, pkgMeter, err))\n\t}\n\n\treturn m\n}\n\n// DimensionlessMeasure creates a simple counter specifically for dimensionless measurements.\nfunc DimensionlessMeasure(pkg string, provider string, meterName string, description string) metric.Int64Counter {\n\n\tattrs := []attribute.KeyValue{\n\t\tpackageKey.String(pkg),\n\t\tproviderKey.String(provider),\n\t}\n\n\tpkgMeter := otel.Meter(pkg, metric.WithInstrumentationAttributes(attrs...))\n\n\tm, err := pkgMeter.Int64Counter(pkg+meterName, metric.WithDescription(description), metric.WithUnit(unitDimensionless))\n\n\tif err != nil {\n\t\t// The only possible errors are from invalid key or value names,\n\t\t// and those are programming errors that will be found during testing.\n\t\tpanic(fmt.Sprintf(\"fullName=%q, provider=%q: %v\", pkg, pkgMeter, err))\n\t}\n\treturn m\n}\n\n// BytesMeasure creates a counter for bytes measurements.\nfunc BytesMeasure(pkg string, provider string, meterName string, description string) metric.Int64Counter {\n\n\tattrs := []attribute.KeyValue{\n\t\tpackageKey.String(pkg),\n\t\tproviderKey.String(provider),\n\t}\n\n\tpkgMeter := otel.Meter(pkg, metric.WithInstrumentationAttributes(attrs...))\n\tm, err := pkgMeter.Int64Counter(pkg+meterName, metric.WithDescription(description), metric.WithUnit(unitBytes))\n\n\tif err != nil {\n\t\t// The only possible errors are from invalid key or value names, and those are programming\n\t\t// errors that will be found during testing.\n\t\tpanic(fmt.Sprintf(\"fullName=%q, provider=%q: %v\", pkg, pkgMeter, err))\n\t}\n\treturn m\n}\n"
  },
  {
    "path": "internal/otel/trace.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage otel\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"go.opentelemetry.io/otel/codes\"\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"go.opentelemetry.io/otel/trace\"\n\t\"gocloud.dev/gcerrors\"\n\t\"reflect\"\n\t\"time\"\n)\n\n// Common attribute keys used across the Go CDK.\nvar (\n\tmethodKey   = attribute.Key(\"gocdk_method\")\n\tpackageKey  = attribute.Key(\"gocdk_package\")\n\tproviderKey = attribute.Key(\"gocdk_provider\")\n\tstatusKey   = attribute.Key(\"gocdk_status\")\n\terrorKey    = attribute.Key(\"gocdk_error\")\n)\n\nconst (\n\tstartTimeContextKey  = \"spanStartTimeCtxKey\"\n\tmethodNameContextKey = \"methodNameCtxKey\"\n)\n\n// Tracer provides OpenTelemetry tracing for Go CDK packages.\ntype Tracer struct {\n\tpkg            string\n\tprovider       string\n\ttracer         trace.Tracer\n\tlatencyMeasure metric.Float64Histogram\n}\n\n// ProviderName returns the name of the provider associated with the driver value.\n// It is intended to be used as the provider argument to NewTracer.\n// It actually returns the package path of the driver's type.\nfunc ProviderName(driver any) string {\n\t// Return the last component of the package path.\n\tif driver == nil {\n\t\treturn \"\"\n\t}\n\tt := reflect.TypeOf(driver)\n\tif t.Kind() == reflect.Pointer {\n\t\tt = t.Elem()\n\t}\n\treturn t.PkgPath()\n}\n\n// NewTracer creates a new Tracer for a package and provider.\nfunc NewTracer(pkg string, provider string) *Tracer {\n\n\tattrs := []attribute.KeyValue{\n\t\tpackageKey.String(pkg),\n\t\tproviderKey.String(provider),\n\t}\n\n\ttracer := otel.Tracer(pkg, trace.WithInstrumentationAttributes(attrs...))\n\n\treturn &Tracer{\n\t\tpkg:            pkg,\n\t\tprovider:       provider,\n\t\ttracer:         tracer,\n\t\tlatencyMeasure: LatencyMeasure(pkg, provider),\n\t}\n}\n\n// Start creates and starts a new span and returns the updated context and span.\nfunc (t *Tracer) Start(ctx context.Context, methodName string) (context.Context, trace.Span) {\n\tfullName := t.pkg + \".\" + methodName\n\n\tsCtx, span := t.tracer.Start(ctx, fullName, trace.WithAttributes(methodKey.String(methodName)))\n\tsCtx = context.WithValue(sCtx, startTimeContextKey, time.Now())\n\treturn context.WithValue(sCtx, methodNameContextKey, fullName), span\n}\n\n// End completes a span with error information if applicable.\nfunc (t *Tracer) End(ctx context.Context, span trace.Span, err error) {\n\tstartTime := ctx.Value(startTimeContextKey).(time.Time)\n\telapsed := time.Since(startTime)\n\n\tcode := gcerrors.OK\n\n\tif err != nil {\n\t\tcode = gcerrors.Code(err)\n\t\tspan.SetAttributes(\n\t\t\terrorKey.String(err.Error()),\n\t\t\tstatusKey.String(fmt.Sprint(code)),\n\t\t)\n\t\tspan.SetStatus(codes.Error, err.Error())\n\t\tspan.RecordError(err)\n\t} else {\n\t\tspan.SetStatus(codes.Ok, \"\")\n\t}\n\n\tspan.End()\n\n\tmethodName := ctx.Value(methodNameContextKey).(string)\n\n\tt.latencyMeasure.Record(ctx,\n\t\tfloat64(elapsed.Milliseconds()),\n\n\t\tmetric.WithAttributes(\n\t\t\tstatusKey.String(fmt.Sprint(code)),\n\t\t\tmethodKey.String(methodName)),\n\t)\n}\n"
  },
  {
    "path": "internal/otel/trace_test.go",
    "content": "// Copyright 2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage otel\n\nimport (\n\t\"testing\"\n)\n\ntype testDriver struct{}\n\nfunc TestProviderName(t *testing.T) {\n\ttestCases := []struct {\n\t\tname   string\n\t\tdriver any\n\t\twant   string\n\t}{\n\t\t{\"nil\", nil, \"\"},\n\t\t{\"struct\", testDriver{}, \"gocloud.dev/internal/otel\"},\n\t\t{\"pointer\", &testDriver{}, \"gocloud.dev/internal/otel\"},\n\t}\n\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tgot := ProviderName(tc.driver)\n\t\t\tif got != tc.want {\n\t\t\t\tt.Errorf(\"ProviderName(%#v) = %q, want %q\", tc.driver, got, tc.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/releasehelper/releasehelper.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Helper tool for creating new releases of the Go CDK. Run without arguments\n// or with 'help' for details.\npackage main\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar helpText string = `\nHelper tool for creating new releases of the Go CDK.\n\nAutomates the modifications required in the project's\ngo.mod files to create an test new releases.\n\nThe tool processes all modules listed in the 'allmodules'\nfile. For each module it handles all dependencies on\nother gocloud.dev modules.\n\nRun it from the root directory of the repository, as follows:\n\n$ %s <command>\n\nWhere command is one of the following:\n\n  addreplace    adds 'replace' directives to point to local versions\n                for testing.\n\n  dropreplace   removes these directives.\n\n  setversion <version>\n                sets 'required' version of modules to a given version formatted\n                as vX.Y.Z\n\n  tag <version>\n                runs 'git tag <module>/<version>' for all CDK modules\n\n  help          prints this usage message\n`\n\nfunc printHelp() {\n\t_, binName := filepath.Split(os.Args[0])\n\tfmt.Fprintf(os.Stderr, helpText, binName)\n\tfmt.Fprintln(os.Stderr)\n}\n\n// cmdCheck invokes the command given in s, echoing the invocation to stdout.\n// It checks that the command was successful and returns its standard output.\n// If the command returned a non-0 status, log.Fatal is invoked.\nfunc cmdCheck(s string) []byte {\n\tfmt.Printf(\" -> %s\\n\", s)\n\tfields := strings.Fields(s)\n\tif len(fields) < 1 {\n\t\tlog.Fatal(`Expected \"command <arguments>\"`)\n\t}\n\tb, err := exec.Command(fields[0], fields[1:]...).Output()\n\tif exiterr, ok := err.(*exec.ExitError); ok {\n\t\tlog.Fatalf(\"%s; stderr: %s\\n\", err, string(exiterr.Stderr))\n\t} else if err != nil {\n\t\tlog.Fatal(\"exec.Command\", err)\n\t}\n\treturn b\n}\n\n// GoMod holds \"go mod\" parameters, taken from \"go mod help edit\", in order to parse the JSON\n// output of `go mod edit -json`.\ntype GoMod struct {\n\tModule  Module\n\tGo      string\n\tRequire []Require\n\tExclude []Module\n\tReplace []Replace\n}\n\n// Module represents a Go module.\ntype Module struct {\n\tPath    string\n\tVersion string\n}\n\n// Require represents a required module.\ntype Require struct {\n\tPath     string\n\tVersion  string\n\tIndirect bool\n}\n\n// Replace represents a replace directive.\ntype Replace struct {\n\tOld Module\n\tNew Module\n}\n\n// parseModuleInfo parses module information from a go.mod file at path.\nfunc parseModuleInfo(path string) GoMod {\n\trawJson := cmdCheck(\"go mod edit -json \" + path)\n\tvar modInfo GoMod\n\terr := json.Unmarshal(rawJson, &modInfo)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treturn modInfo\n}\n\n// runOnGomod processes a single go.mod file (located in directory 'path').\n// Each require in the go.mod file is processed with reqHandler, a callback\n// function. It's called with these arguments:\n//\n//\tgomodPath - path to the go.mod file where this 'require' was found\n//\tmod - name of the module being 'require'd\n//\tmodPath - mod's location in the filesystem relative to\n//\t          the go.mod 'require'ing it\nfunc runOnGomod(path string, reqHandler func(gomodPath, mod, modPath string)) {\n\tgomodPath := filepath.Join(path, \"go.mod\")\n\tfmt.Println(\"Processing\", gomodPath)\n\tmodInfo := parseModuleInfo(gomodPath)\n\n\tbase := \"gocloud.dev\"\n\n\tfor _, r := range modInfo.Require {\n\t\t// Find requirements on modules within the gocloud.dev tree.\n\t\tif strings.HasPrefix(r.Path, base) {\n\t\t\t// Find the relative path from 'path' and the module required here.\n\t\t\tvar reqPath string\n\t\t\tif r.Path == base {\n\t\t\t\treqPath = \".\"\n\t\t\t} else {\n\t\t\t\treqPath = strings.TrimPrefix(r.Path, base+\"/\")\n\t\t\t}\n\t\t\trel, err := filepath.Rel(path, reqPath)\n\t\t\tif err != nil {\n\t\t\t\tlog.Fatal(err)\n\t\t\t}\n\t\t\t// When path is '.', filepath.Rel will append a /. to the result and we\n\t\t\t// may get paths like ../../.\n\t\t\tif strings.HasSuffix(rel, \"/.\") {\n\t\t\t\trel, _ = filepath.Split(rel)\n\t\t\t}\n\n\t\t\treqHandler(gomodPath, r.Path, rel)\n\t\t}\n\t}\n}\n\nfunc gomodAddReplace(path string) {\n\trunOnGomod(path, func(gomodPath, mod, modPath string) {\n\t\tcmdCheck(fmt.Sprintf(\"go mod edit -replace=%s=%s %s\", mod, modPath, gomodPath))\n\t})\n}\n\nfunc gomodDropReplace(path string) {\n\trunOnGomod(path, func(gomodPath, mod, modPath string) {\n\t\tcmdCheck(fmt.Sprintf(\"go mod edit -dropreplace=%s %s\", mod, gomodPath))\n\t})\n}\n\nfunc gomodSetVersion(path, v string) {\n\trunOnGomod(path, func(gomodPath, mod, modPath string) {\n\t\tcmdCheck(fmt.Sprintf(\"go mod edit -require=%s@%s %s\", mod, v, gomodPath))\n\t})\n}\n\nfunc gomodTag(path, v string) {\n\tvar tagName string\n\tif path == \".\" {\n\t\ttagName = v\n\t} else {\n\t\ttagName = filepath.Join(path, v)\n\t}\n\tcmdCheck(fmt.Sprintf(\"git tag %s\", tagName))\n}\n\nfunc validSemanticVersion(v string) bool {\n\tmatch, err := regexp.MatchString(`v\\d+\\.\\d+\\.\\d+`, v)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn match\n}\n\nfunc main() {\n\tif len(os.Args) < 2 {\n\t\tprintHelp()\n\t\tos.Exit(0)\n\t}\n\n\tvar gomodHandler func(path string)\n\tswitch os.Args[1] {\n\tcase \"help\":\n\t\tprintHelp()\n\t\tos.Exit(0)\n\tcase \"addreplace\":\n\t\tgomodHandler = gomodAddReplace\n\tcase \"dropreplace\":\n\t\tgomodHandler = gomodDropReplace\n\tcase \"setversion\":\n\t\tif len(os.Args) < 3 || !validSemanticVersion(os.Args[2]) {\n\t\t\tprintHelp()\n\t\t\tos.Exit(1)\n\t\t}\n\t\tgomodHandler = func(path string) {\n\t\t\tgomodSetVersion(path, os.Args[2])\n\t\t}\n\tcase \"tag\":\n\t\tif len(os.Args) < 3 || !validSemanticVersion(os.Args[2]) {\n\t\t\tprintHelp()\n\t\t\tos.Exit(1)\n\t\t}\n\t\tgomodHandler = func(path string) {\n\t\t\tgomodTag(path, os.Args[2])\n\t\t}\n\tdefault:\n\t\tprintHelp()\n\t\tos.Exit(1)\n\t}\n\n\tf, err := os.Open(\"allmodules\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tinput := bufio.NewScanner(f)\n\tinput.Split(bufio.ScanLines)\n\tfor input.Scan() {\n\t\tif len(input.Text()) > 0 && !strings.HasPrefix(input.Text(), \"#\") {\n\t\t\tfields := strings.Fields(input.Text())\n\t\t\tif len(fields) != 2 {\n\t\t\t\tlog.Fatalf(\"want 2 fields, got %q\\n\", input.Text())\n\t\t\t}\n\t\t\t// \"tag\" only runs if the released field is \"yes\". Other commands run\n\t\t\t// for every line.\n\t\t\tif os.Args[1] != \"tag\" || fields[1] == \"yes\" {\n\t\t\t\tgomodHandler(fields[0])\n\t\t\t}\n\t\t}\n\t}\n\n\tif input.Err() != nil {\n\t\tlog.Fatal(input.Err())\n\t}\n}\n"
  },
  {
    "path": "internal/releasehelper/releasehelper_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n)\n\n// The following directory/file structure is created. ROOT is the root temp\n// directory created by the test.\n//\n// ROOT/go.mod          <-- main go.mod for gocloud.dev\n// ROOT/submod/go.mod   <-- go.mod for a submodule of gocloud.dev\n// ROOT/samples/go.mod  <-- go.mod for \"samples\" that include both of the\n//\n//\tother modules\nvar mainGomod = []byte(\"module gocloud.dev\\n\")\n\nvar submodGomod = []byte(`module gocloud.dev/submod\n\nrequire (\n\tgocloud.dev v0.15.0\n)\n`)\n\nvar samplesGomod = []byte(`module gocloud.dev/samples\n\nrequire (\n\tgocloud.dev v0.15.0\n\tgocloud.dev/submod v0.15.0\n)\n`)\n\nfunc createFilesForTest(root string) error {\n\tif err := os.WriteFile(filepath.Join(root, \"go.mod\"), mainGomod, 0o666); err != nil {\n\t\treturn err\n\t}\n\tif err := os.MkdirAll(filepath.Join(root, \"submod\"), 0o766); err != nil {\n\t\treturn err\n\t}\n\tif err := os.WriteFile(filepath.Join(root, \"submod\", \"go.mod\"), submodGomod, 0o666); err != nil {\n\t\treturn err\n\t}\n\tif err := os.MkdirAll(filepath.Join(root, \"samples\"), 0o766); err != nil {\n\t\treturn err\n\t}\n\tif err := os.WriteFile(filepath.Join(root, \"samples\", \"go.mod\"), samplesGomod, 0o666); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Test(t *testing.T) {\n\ttempDir := t.TempDir()\n\n\tfmt.Println(\"temp dir:\", tempDir)\n\tif err := createFilesForTest(tempDir); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif err := os.Chdir(tempDir); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Add replace lines and expect to find them.\n\tgomodAddReplace(\"samples\")\n\n\tsamplesGomod := filepath.Join(\"samples\", \"go.mod\")\n\tc, err := os.ReadFile(samplesGomod)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\treplaceLines := []string{\n\t\t\"replace gocloud.dev => \" + filepath.Clean(\"../\"),\n\t\t\"replace gocloud.dev/submod => \" + filepath.Clean(\"../submod\"),\n\t}\n\n\tfor _, line := range replaceLines {\n\t\tif !strings.Contains(string(c), line) {\n\t\t\tt.Errorf(\"Expected to find %q in samples/go.mod\", line)\n\t\t}\n\t}\n\n\t// Drop replace lines and expect not to find them.\n\tgomodDropReplace(\"samples\")\n\tc, err = os.ReadFile(samplesGomod)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tfor _, line := range replaceLines {\n\t\tif strings.Contains(string(c), line) {\n\t\t\tt.Errorf(\"Expected to not find %q in samples/go.mod\", line)\n\t\t}\n\t}\n\n\t// Set new version and check it was set as expected.\n\tgomodSetVersion(\"samples\", \"v1.8.99\")\n\tc, err = os.ReadFile(samplesGomod)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif !strings.Contains(string(c), \"gocloud.dev v1.8.99\") || !strings.Contains(string(c), \"gocloud.dev/submod v1.8.99\") {\n\t\tt.Error(\"New versions for require not found in samples/go.mod\")\n\t}\n}\n"
  },
  {
    "path": "internal/retry/retry.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package retry provides retry logic.\npackage retry // import \"gocloud.dev/internal/retry\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/googleapis/gax-go/v2\"\n)\n\n// Call calls the supplied function f repeatedly, using the isRetryable function and\n// the provided backoff parameters to control the repetition.\n//\n// When f returns nil, Call immediately returns nil.\n//\n// When f returns an error for which isRetryable returns false, Call immediately\n// returns that error.\n//\n// When f returns an error for which isRetryable returns true, Call sleeps for the\n// provided backoff value and invokes f again.\n//\n// When the provided context is done, Retry returns a ContextError that includes both\n// ctx.Error() and the last error returned by f, or nil if there isn't one.\nfunc Call(ctx context.Context, bo gax.Backoff, isRetryable func(error) bool, f func() error) error {\n\treturn call(ctx, bo, isRetryable, f, gax.Sleep)\n}\n\n// Split out for testing.\nfunc call(ctx context.Context, bo gax.Backoff, isRetryable func(error) bool, f func() error,\n\tsleep func(context.Context, time.Duration) error,\n) error {\n\t// Do nothing if context is done on entry.\n\tif err := ctx.Err(); err != nil {\n\t\treturn &ContextError{CtxErr: err}\n\t}\n\tfor {\n\t\terr := f()\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t\tif !isRetryable(err) {\n\t\t\treturn err\n\t\t}\n\t\tif cerr := sleep(ctx, bo.Pause()); cerr != nil {\n\t\t\treturn &ContextError{CtxErr: cerr, FuncErr: err}\n\t\t}\n\t}\n}\n\n// A ContextError contains both a context error (either context.Canceled or\n// context.DeadlineExceeded), and the last error from the function being retried,\n// or nil if the function was never called.\ntype ContextError struct {\n\tCtxErr  error // The error obtained from ctx.Err()\n\tFuncErr error // The error obtained from the function being retried, or nil\n}\n\nfunc (e *ContextError) Error() string {\n\treturn fmt.Sprintf(\"%v; last error: %v\", e.CtxErr, e.FuncErr)\n}\n\n// Is returns true iff one of the two errors held in e is equal to target.\nfunc (e *ContextError) Is(target error) bool {\n\treturn e.CtxErr == target || e.FuncErr == target\n}\n"
  },
  {
    "path": "internal/retry/retry_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage retry\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/googleapis/gax-go/v2\"\n)\n\n// Errors to distinguish retryable and non-retryable cases.\nvar (\n\terrRetry   = errors.New(\"retry\")\n\terrNoRetry = errors.New(\"no retry\")\n)\n\nfunc retryable(err error) bool {\n\treturn err == errRetry\n}\n\nfunc TestCall(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tdesc        string\n\t\tisRetryable func(error) bool\n\t\tf           func(int) error // passed the number of calls so far\n\t\twantErr     error           // the return value of call\n\t\twantCount   int             // number of times f is called\n\t}{\n\t\t{\n\t\t\tdesc:        \"f returns nil\",\n\t\t\tisRetryable: retryable,\n\t\t\tf:           func(int) error { return nil },\n\t\t\twantCount:   1,\n\t\t\twantErr:     nil,\n\t\t},\n\t\t{\n\t\t\tdesc:        \"f returns non-retryable error\",\n\t\t\tisRetryable: retryable,\n\t\t\tf:           func(int) error { return errNoRetry },\n\t\t\twantCount:   1,\n\t\t\twantErr:     errNoRetry,\n\t\t},\n\t\t{\n\t\t\tdesc:        \"f returns retryable error\",\n\t\t\tisRetryable: retryable,\n\t\t\tf: func(n int) error {\n\t\t\t\tif n < 2 {\n\t\t\t\t\treturn errRetry\n\t\t\t\t}\n\t\t\t\treturn errNoRetry\n\t\t\t},\n\t\t\twantCount: 3,\n\t\t\twantErr:   errNoRetry,\n\t\t},\n\t\t{\n\t\t\tdesc:        \"f returns context error\", // same as non-retryable\n\t\t\tisRetryable: retryable,\n\t\t\tf:           func(int) error { return context.Canceled },\n\t\t\twantCount:   1,\n\t\t\twantErr:     context.Canceled,\n\t\t},\n\t} {\n\t\tt.Run(test.desc, func(t *testing.T) {\n\t\t\tsleep := func(context.Context, time.Duration) error { return nil }\n\t\t\tgotCount := 0\n\t\t\tf := func() error { gotCount++; return test.f(gotCount - 1) }\n\t\t\tgotErr := call(context.Background(), gax.Backoff{}, test.isRetryable, f, sleep)\n\t\t\tif gotErr != test.wantErr {\n\t\t\t\tt.Errorf(\"error: got %v, want %v\", gotErr, test.wantErr)\n\t\t\t}\n\t\t\tif gotCount != test.wantCount {\n\t\t\t\tt.Errorf(\"retry count: got %d, want %d\", gotCount, test.wantCount)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestCallCancel(t *testing.T) {\n\tt.Run(\"done on entry\", func(t *testing.T) {\n\t\t// If the context is done on entry, f is never called.\n\t\tctx, cancel := context.WithCancel(context.Background())\n\t\tcancel()\n\t\tgotCount := 0\n\t\tf := func() error { gotCount++; return nil }\n\t\tgotErr := call(ctx, gax.Backoff{}, retryable, f, nil)\n\t\tif gotCount != 0 {\n\t\t\tt.Errorf(\"retry count: got %d, want 0\", gotCount)\n\t\t}\n\t\twantErr := &ContextError{CtxErr: context.Canceled}\n\t\tif !equalContextError(gotErr, wantErr) {\n\t\t\tt.Errorf(\"error: got %v, want %v\", gotErr, wantErr)\n\t\t}\n\t})\n\tt.Run(\"done in sleep\", func(t *testing.T) {\n\t\t// If the context is done during sleep, we get a ContextError.\n\t\tgotCount := 0\n\t\tf := func() error { gotCount++; return errRetry }\n\t\tsleep := func(context.Context, time.Duration) error { return context.Canceled }\n\t\tgotErr := call(context.Background(), gax.Backoff{}, retryable, f, sleep)\n\t\tif gotCount != 1 {\n\t\t\tt.Errorf(\"retry count: got %d, want 1\", gotCount)\n\t\t}\n\t\twantErr := &ContextError{CtxErr: context.Canceled, FuncErr: errRetry}\n\t\tif !equalContextError(gotErr, wantErr) {\n\t\t\tt.Errorf(\"error: got %v, want %v\", gotErr, wantErr)\n\t\t}\n\t})\n}\n\nfunc equalContextError(got error, want *ContextError) bool {\n\tcerr, ok := got.(*ContextError)\n\tif !ok {\n\t\treturn false\n\t}\n\treturn cerr.CtxErr == want.CtxErr && cerr.FuncErr == want.FuncErr\n}\n\nfunc TestErrorsIs(t *testing.T) {\n\terr := &ContextError{\n\t\tCtxErr:  context.Canceled,\n\t\tFuncErr: os.ErrExist,\n\t}\n\tfor _, target := range []error{err, context.Canceled, os.ErrExist} {\n\t\tif !errors.Is(err, target) {\n\t\t\tt.Errorf(\"xerrors.Is(%v) == false, want true\", target)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "internal/testing/alldeps",
    "content": "cel.dev/expr\ncloud.google.com/go\ncloud.google.com/go/auth\ncloud.google.com/go/auth/oauth2adapt\ncloud.google.com/go/compute/metadata\ncloud.google.com/go/firestore\ncloud.google.com/go/iam\ncloud.google.com/go/kms\ncloud.google.com/go/longrunning\ncloud.google.com/go/monitoring\ncloud.google.com/go/pubsub\ncloud.google.com/go/pubsub/v2\ncloud.google.com/go/secretmanager\ncloud.google.com/go/storage\ncloud.google.com/go/trace\nfilippo.io/edwards25519\ngithub.com/Azure/azure-amqp-common-go/v3\ngithub.com/Azure/azure-sdk-for-go/sdk/azcore\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity\ngithub.com/Azure/azure-sdk-for-go/sdk/internal\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal\ngithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus\ngithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob\ngithub.com/Azure/go-amqp\ngithub.com/AzureAD/microsoft-authentication-library-for-go\ngithub.com/GoogleCloudPlatform/cloudsql-proxy\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator\ngithub.com/IBM/sarama\ngithub.com/XSAM/otelsql\ngithub.com/aws/aws-sdk-go\ngithub.com/aws/aws-sdk-go-v2\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream\ngithub.com/aws/aws-sdk-go-v2/config\ngithub.com/aws/aws-sdk-go-v2/credentials\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds\ngithub.com/aws/aws-sdk-go-v2/feature/rds/auth\ngithub.com/aws/aws-sdk-go-v2/feature/s3/manager\ngithub.com/aws/aws-sdk-go-v2/internal/configsources\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2\ngithub.com/aws/aws-sdk-go-v2/internal/ini\ngithub.com/aws/aws-sdk-go-v2/internal/v4a\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared\ngithub.com/aws/aws-sdk-go-v2/service/kms\ngithub.com/aws/aws-sdk-go-v2/service/s3\ngithub.com/aws/aws-sdk-go-v2/service/secretsmanager\ngithub.com/aws/aws-sdk-go-v2/service/signin\ngithub.com/aws/aws-sdk-go-v2/service/sns\ngithub.com/aws/aws-sdk-go-v2/service/sqs\ngithub.com/aws/aws-sdk-go-v2/service/ssm\ngithub.com/aws/aws-sdk-go-v2/service/sso\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc\ngithub.com/aws/aws-sdk-go-v2/service/sts\ngithub.com/aws/smithy-go\ngithub.com/beorn7/perks\ngithub.com/cenkalti/backoff/v4\ngithub.com/cenkalti/backoff/v5\ngithub.com/cespare/xxhash/v2\ngithub.com/cncf/xds/go\ngithub.com/coreos/go-semver\ngithub.com/coreos/go-systemd/v22\ngithub.com/davecgh/go-spew\ngithub.com/eapache/go-resiliency\ngithub.com/eapache/queue\ngithub.com/envoyproxy/go-control-plane/envoy\ngithub.com/envoyproxy/protoc-gen-validate\ngithub.com/felixge/httpsnoop\ngithub.com/fsnotify/fsnotify\ngithub.com/go-jose/go-jose/v4\ngithub.com/go-logr/logr\ngithub.com/go-logr/stdr\ngithub.com/go-sql-driver/mysql\ngithub.com/gogo/protobuf\ngithub.com/golang-jwt/jwt/v5\ngithub.com/golang/protobuf\ngithub.com/golang/snappy\ngithub.com/google/go-cmp\ngithub.com/google/go-replayers/grpcreplay\ngithub.com/google/go-replayers/httpreplay\ngithub.com/google/martian/v3\ngithub.com/google/s2a-go\ngithub.com/google/subcommands\ngithub.com/google/uuid\ngithub.com/google/wire\ngithub.com/googleapis/enterprise-certificate-proxy\ngithub.com/googleapis/gax-go/v2\ngithub.com/gorilla/mux\ngithub.com/grpc-ecosystem/grpc-gateway/v2\ngithub.com/hashicorp/errwrap\ngithub.com/hashicorp/go-cleanhttp\ngithub.com/hashicorp/go-multierror\ngithub.com/hashicorp/go-retryablehttp\ngithub.com/hashicorp/go-rootcerts\ngithub.com/hashicorp/go-secure-stdlib/parseutil\ngithub.com/hashicorp/go-secure-stdlib/strutil\ngithub.com/hashicorp/go-sockaddr\ngithub.com/hashicorp/go-uuid\ngithub.com/hashicorp/hcl\ngithub.com/hashicorp/vault/api\ngithub.com/jcmturner/aescts/v2\ngithub.com/jcmturner/dnsutils/v2\ngithub.com/jcmturner/gofork\ngithub.com/jcmturner/gokrb5/v8\ngithub.com/jcmturner/rpc/v2\ngithub.com/jmespath/go-jmespath\ngithub.com/klauspost/compress\ngithub.com/kylelemons/godebug\ngithub.com/lib/pq\ngithub.com/mitchellh/mapstructure\ngithub.com/montanaflynn/stats\ngithub.com/munnerz/goautoneg\ngithub.com/nats-io/nats.go\ngithub.com/nats-io/nkeys\ngithub.com/nats-io/nuid\ngithub.com/pierrec/lz4/v4\ngithub.com/pkg/browser\ngithub.com/prometheus/client_golang\ngithub.com/prometheus/client_model\ngithub.com/prometheus/common\ngithub.com/prometheus/otlptranslator\ngithub.com/prometheus/procfs\ngithub.com/rabbitmq/amqp091-go\ngithub.com/rcrowley/go-metrics\ngithub.com/ryanuber/go-glob\ngithub.com/spiffe/go-spiffe/v2\ngithub.com/xdg-go/scram\ngithub.com/xdg-go/stringprep\ngithub.com/youmark/pkcs8\ngo.etcd.io/etcd\ngo.etcd.io/etcd/api/v3\ngo.etcd.io/etcd/client/pkg/v3\ngo.etcd.io/etcd/client/v3\ngo.mongodb.org/mongo-driver\ngo.opencensus.io\ngo.opentelemetry.io/auto/sdk\ngo.opentelemetry.io/contrib/bridges/prometheus\ngo.opentelemetry.io/contrib/detectors/aws/ec2\ngo.opentelemetry.io/contrib/detectors/gcp\ngo.opentelemetry.io/contrib/exporters/autoexport\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\ngo.opentelemetry.io/contrib/propagators/autoprop\ngo.opentelemetry.io/contrib/propagators/aws\ngo.opentelemetry.io/contrib/propagators/b3\ngo.opentelemetry.io/contrib/propagators/jaeger\ngo.opentelemetry.io/contrib/propagators/ot\ngo.opentelemetry.io/otel\ngo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc\ngo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp\ngo.opentelemetry.io/otel/exporters/prometheus\ngo.opentelemetry.io/otel/exporters/stdout/stdoutlog\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric\ngo.opentelemetry.io/otel/exporters/stdout/stdouttrace\ngo.opentelemetry.io/otel/log\ngo.opentelemetry.io/otel/metric\ngo.opentelemetry.io/otel/sdk\ngo.opentelemetry.io/otel/sdk/log\ngo.opentelemetry.io/otel/sdk/metric\ngo.opentelemetry.io/otel/trace\ngo.opentelemetry.io/proto/otlp\ngo.uber.org/multierr\ngo.uber.org/zap\ngo.yaml.in/yaml/v2\ngocloud.dev\ngocloud.dev/docstore/mongodocstore\ngocloud.dev/internal/website\ngocloud.dev/pubsub/kafkapubsub\ngocloud.dev/pubsub/natspubsub\ngocloud.dev/pubsub/rabbitpubsub\ngocloud.dev/runtimevar/etcdvar\ngocloud.dev/runtimevar/hashivault\ngocloud.dev/samples\ngocloud.dev/secrets/hashivault\ngolang.org/x/crypto\ngolang.org/x/mod\ngolang.org/x/net\ngolang.org/x/oauth2\ngolang.org/x/sync\ngolang.org/x/sys\ngolang.org/x/text\ngolang.org/x/time\ngolang.org/x/tools\ngolang.org/x/xerrors\ngoogle.golang.org/api\ngoogle.golang.org/genproto\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/rpc\ngoogle.golang.org/grpc\ngoogle.golang.org/protobuf\ngopkg.in/pipe.v2\n"
  },
  {
    "path": "internal/testing/check_mod_tidy.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script checks to see if `go mod tidy` has been run on the module\n# in the current directory.\n#\n# It exits with status 1 if \"go mod tidy && go list -deps ./...\" would\n# make changes.\n#\n# TODO(rvangent): Replace this with `go mod tidy --check` when it exists:\n# https://github.com/golang/go/issues/27005.\n#\n# TODO(rvangent): Drop the \"go list\" part here and in gomodcleanup.sh once\n# https://github.com/golang/go/issues/31248 is fixed.\n\nset -euo pipefail\n\nTMP_GOMOD=$(mktemp)\nTMP_GOSUM=$(mktemp)\n\nfunction cleanup() {\n  # Restore the original files in case \"go mod tidy\" made changes.\n  if [[ -f \"$TMP_GOMOD\" ]]; then\n    mv \"$TMP_GOMOD\" ./go.mod\n  fi\n  if [[ -f \"$TMP_GOSUM\" ]]; then\n    mv \"$TMP_GOSUM\" ./go.sum\n  fi\n}\ntrap cleanup EXIT\n\n# Make copies of the current files.\ncp ./go.mod \"$TMP_GOMOD\"\ncp ./go.sum \"$TMP_GOSUM\"\n\n# Modifies the files in-place.\ngo mod tidy\ngo list -deps ./... &> /dev/null\n\n# Check for diffs.\ndiff -u \"$TMP_GOMOD\" ./go.mod\ndiff -u \"$TMP_GOSUM\" ./go.sum\n"
  },
  {
    "path": "internal/testing/deploywebsite.sh",
    "content": "#!/bin/bash\n\n# To update the website:\n#\n# Install Hugo locally, by downloading a version (at least 0.92) and unpacking:\n#\n# In $HUGODIR:\n#\n#   wget https://github.com/gohugoio/hugo/releases/download/v0.91.2/hugo_0.91.2_Linux-64bit.tar.gz\n#   tar xvf hugo_0.91.2_Linux-64bit.tar.gz\n#\n# This creates a binary $HUGODIR/hugo\n#\n# In a go-cloud clone, run:\n#\n#   $HUGODIR/hugo -s internal/website\n#\n# This updates the internal/website/public directory with the new contents of\n# the website. Now we'll need a separate clone of go-cloud, with the gh-pages\n# branch checked out:\n#\n#   git clone git@github.com:google/go-cloud.git GH-PAGES-CLONE\n#   cd GH-PAGES-CLONE\n#   git co gh-pages\n#\n# This should have the contents of the website (configured in\n# https://github.com/google/go-cloud/settings/pages).\n#\n# Once that's ready, copy the contents of internal/website/public into the root\n# directory of the clone that's on the gh-pages branch, e.g. with rsync:\n#\n#   rsync -avc internal/website/public/ GH-PAGES-CLONE\n#\n# Commit into the gh-pages branch and push it to origin (git push origin\n# gh-pages). This deploys the new site contents.\n\n# (Old)\n# Here's what we had in Travis:\n# install: \"curl -fsSL https://github.com/gohugoio/hugo/releases/download/v0.54.0/hugo_0.54.0_Linux-64bit.tar.gz | tar zxf - -C \\\"$HOME\\\" hugo\"\n# script: \"HUGO_GOOGLEANALYTICS=UA-135118641-1 \\\"$HOME/hugo\\\" -s internal/website\"\n# deploy:\n#   provider: pages\n#   edge: true\n#   fqdn: gocloud.dev\n#   skip-cleanup: true\n#   local-dir: internal/website/public\n"
  },
  {
    "path": "internal/testing/git_tag_modules.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2021 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script should be run from the root directory.\n# It creates git tags for all marked modules listed in the allmodules file.\nset -euo pipefail\n\nfunction usage() {\n  echo\n  echo \"Usage: git_tag_modules.sh vX.X.X\" 1>&2\n  echo \"  vX.X.X: the git tag version\"\n  exit 64\n}\n\nif [[ $# -ne 1 ]] ; then\n  echo \"Need at least one argument\"\n  usage\nfi\nversion=\"$1\"\n\nsed -e '/^#/d' -e '/^$/d' allmodules | awk '{ print $1, $2}' |  while read -r path update || [[ -n \"$path\" ]]  ; do\n   if [[ \"$update\" != \"yes\" ]]; then\n        echo \"$path is not marked to be released\"\n        continue\n   fi\n\n   tag=\"$version\"\n   if [[ \"$path\" != \".\" ]]; then\n     tag=\"$path/$version\"\n   fi\n   echo \"Creating tag: ${tag}\"\n   git tag \"$tag\"\ndone\n"
  },
  {
    "path": "internal/testing/gomodcleanup.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script should be run from the root directory.\n# It runs \"go mod tidy && go list -deps ./...\" on all modules in\n# the repo, to ensure that go.mod and go.sum are in the canonical\n# form that tests will verify (see check_mod_tidy.sh).\nset -euo pipefail\n\nsed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' | while read -r path || [[ -n \"$path\" ]]; do\n  echo \"cleaning up $path\"\n  ( cd \"$path\" && go mod tidy && go list -deps ./... &> /dev/null || echo \"  FAILED!\")\ndone\n"
  },
  {
    "path": "internal/testing/listdeps.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nset -euo pipefail\n\n# To run this script manually to update alldeps:\n#\n# $ internal/testing/listdeps.sh > internal/testing/alldeps\n#\n# Make sure to use the same version of Go as used by tests\n# (see .github/actions/tests.yml) when updating the alldeps file.\ntmpfile=$(mktemp)\nfunction cleanup() {\n  rm -rf \"$tmpfile\"\n}\ntrap cleanup EXIT\n\n\nsed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' | while read -r path || [[ -n \"$path\" ]]; do\n  ( cd \"$path\" && go list -mod=readonly -deps -f '{{with .Module}}{{.Path}}{{end}}' ./... >> \"$tmpfile\")\ndone\n\n# Sort using the native byte values to keep results from different environment consistent.\nLC_ALL=C sort \"$tmpfile\" | uniq\n"
  },
  {
    "path": "internal/testing/oteltest/diff.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage oteltest\n\nimport (\n\t\"fmt\"\n\t\"go.opentelemetry.io/otel/codes\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"go.opentelemetry.io/otel/sdk/metric/metricdata\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"gocloud.dev/gcerrors\"\n)\n\nvar (\n\tmethodKey   = attribute.Key(\"gocdk_method\")\n\tproviderKey = attribute.Key(\"gocdk_provider\")\n\tstatusKey   = attribute.Key(\"gocdk_status\")\n)\n\n// Call represents a method call/span with its result code.\ntype Call struct {\n\tMethod string\n\tCode   gcerrors.ErrorCode\n\tAttrs  []attribute.KeyValue\n}\n\nfunc formatSpanData(s sdktrace.ReadOnlySpan) string {\n\tif s == nil {\n\t\treturn \"missing\"\n\t}\n\t// OTel uses codes.Code for status.\n\treturn fmt.Sprintf(\"<Name: %q, Code: %s>\", s.Name(), s.Status().Code.String())\n}\n\nfunc formatCall(c *Call) string {\n\tif c == nil {\n\t\treturn \"nothing\"\n\t}\n\t// gcerrors.ErrorCode is an int, just print it.\n\treturn fmt.Sprintf(\"<Name: %q, Code: %d>\", c.Method, c.Code)\n}\n\n// Diff compares the list of spans and metric data obtained from OpenTelemetry\n// instrumentation (using a test exporter like `sdktrace/tracetest.NewExporter`\n// and `sdkmetric/metrictest.NewExporter`) with an expected list of calls.\n// The span/metric name and status code/status attribute are compared.\n// Order matters for traces (though not for metrics).\n//\n// gotSpans should be the result from a test trace exporter (e.g., exporter.GetSpans()).\n// gotMetrics should be the result from a test metric exporter (e.g., exporter.GetMetrics()).\n// namePrefix is the prefix prepended to method names in spans/metrics mostly its the package name.\n// provider is the name of the provider used (e.g., \"aws\").\n// want is the list of expected calls.\nfunc Diff(gotSpans []sdktrace.ReadOnlySpan, gotMetrics []metricdata.ScopeMetrics, namePrefix, provider string, want []Call) string {\n\tds := diffSpans(gotSpans, namePrefix, want)\n\tdc := DiffMetrics(gotMetrics, namePrefix, provider, want)\n\tif len(ds) > 0 {\n\t\tds = \"trace: \" + ds + \"\\n\"\n\t}\n\tif len(dc) > 0 {\n\t\tdc = \"metrics: \" + dc\n\t}\n\treturn ds + dc\n}\n\nfunc mapStatusCode(code gcerrors.ErrorCode) codes.Code {\n\t// For gcerrors used by gocloud, OK -> Ok, everything else -> Error is common.\n\tif code == gcerrors.OK {\n\t\treturn codes.Ok\n\t}\n\treturn codes.Error\n}\n\nfunc diffSpans(got []sdktrace.ReadOnlySpan, prefix string, want []Call) string {\n\tvar diffs []string\n\tadd := func(i int, g sdktrace.ReadOnlySpan, w *Call) {\n\t\tdiffs = append(diffs, fmt.Sprintf(\"#%d: got %s, want %s\", i, formatSpanData(g), formatCall(w)))\n\t}\n\n\tfor i := 0; i < len(got) || i < len(want); i++ {\n\t\tvar gotSpan sdktrace.ReadOnlySpan\n\t\tif i < len(got) {\n\t\t\tgotSpan = got[i]\n\t\t}\n\n\t\tswitch {\n\t\tcase i >= len(got):\n\t\t\tadd(i, nil, &want[i])\n\t\tcase i >= len(want):\n\t\t\tadd(i, gotSpan, nil)\n\t\tdefault:\n\t\t\texpectedName := prefix + \".\" + want[i].Method\n\t\t\texpectedCode := mapStatusCode(want[i].Code) // Map wanted gcerrors code to OTel code.\n\n\t\t\tif gotSpan == nil || gotSpan.Name() != expectedName || gotSpan.Status().Code != expectedCode {\n\t\t\t\tw := want[i]\n\t\t\t\tw.Method = prefix + \".\" + w.Method\n\t\t\t\tadd(i, gotSpan, &w)\n\t\t\t}\n\t\t}\n\t}\n\treturn strings.Join(diffs, \"\\n\")\n}\n\nfunc DiffMetrics(got []metricdata.ScopeMetrics, prefix, provider string, wantCalls []Call) string {\n\t// OTel metric data is structured. We need to iterate through it to find the\n\t// relevant metric data points and their attributes.\n\tvar diffs []string\n\tgotTags := map[string]bool{} // map of canonicalized data point attributes\n\n\t// Helper to convert attribute.Set to a canonical string key\n\tattrSetToCanonicalString := func(set attribute.Set) string {\n\t\t// Get key-value pairs, sort them, and format into a stable string.\n\t\tattrs := make([]attribute.KeyValue, 0, set.Len())\n\t\titer := set.Iter()\n\t\tfor iter.Next() {\n\t\t\tattrs = append(attrs, iter.Attribute())\n\t\t}\n\t\tsort.Slice(attrs, func(i, j int) bool {\n\t\t\treturn string(attrs[i].Key) < string(attrs[j].Key)\n\t\t})\n\t\tparts := make([]string, len(attrs))\n\t\tfor i, attr := range attrs {\n\t\t\t// Format value based on type - attribute.Value doesn't have a simple String()\n\t\t\t// that's guaranteed to be consistent for comparison. Using fmt.Sprint is safer.\n\t\t\tparts[i] = fmt.Sprintf(\"%s:%s\", attr.Key, fmt.Sprint(attr.Value.AsInterface()))\n\t\t}\n\t\treturn strings.Join(parts, \",\")\n\t}\n\n\t// Helper function to collect relevant attributes for tag comparison.\n\tprocessAtrributes := func(attrSets ...attribute.Set) {\n\n\t\tvar requiredAttributes []attribute.KeyValue\n\t\tfor _, attrSet := range attrSets {\n\t\t\tfor _, a := range attrSet.ToSlice() {\n\t\t\t\tif a.Key == providerKey {\n\t\t\t\t\trequiredAttributes = append(requiredAttributes, a)\n\t\t\t\t}\n\n\t\t\t\tif a.Key == methodKey {\n\t\t\t\t\trequiredAttributes = append(requiredAttributes, a)\n\t\t\t\t}\n\n\t\t\t\tif a.Key == statusKey {\n\t\t\t\t\trequiredAttributes = append(requiredAttributes, a)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif len(requiredAttributes) > 0 {\n\t\t\tgotTags[attrSetToCanonicalString(attribute.NewSet(requiredAttributes...))] = true\n\t\t}\n\n\t}\n\n\t// Iterate through all collected metrics to find relevant data points.\n\tfor _, sm := range got {\n\n\t\tfor _, m := range sm.Metrics {\n\n\t\t\t// Using a switch will allow us accommodate other types of metrics.\n\t\t\tswitch v := m.Data.(type) {\n\t\t\tcase metricdata.Sum[int64]:\n\t\t\t\t// Handle int64 Sum metrics.\n\t\t\t\tfor _, dp := range v.DataPoints {\n\t\t\t\t\tprocessAtrributes(sm.Scope.Attributes, dp.Attributes)\n\t\t\t\t}\n\t\t\tcase metricdata.Sum[float64]:\n\t\t\t\t// gocloud usually records counts. Check for Sum metrics.\n\t\t\t\tfor _, dp := range v.DataPoints {\n\t\t\t\t\tprocessAtrributes(sm.Scope.Attributes, dp.Attributes)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t// Handle any other types of metrics.\n\t\t\t\tprocessAtrributes(sm.Scope.Attributes)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check that each wanted call has a corresponding metric data point with the correct attributes.\n\tfor _, wc := range wantCalls {\n\t\t// Construct the expected set of attributes for the wanted call.\n\t\texpectedAttributes := []attribute.KeyValue{providerKey.String(provider)}\n\n\t\tif wc.Method != \"\" {\n\t\t\texpectedAttributes = append(expectedAttributes,\n\t\t\t\tmethodKey.String(prefix+\".\"+wc.Method),\n\t\t\t\tstatusKey.String(fmt.Sprint(wc.Code)))\n\t\t}\n\n\t\t// Canonicalize the expected attributes to check against the collected ones.\n\t\texpectedKey := attrSetToCanonicalString(attribute.NewSet(expectedAttributes...))\n\n\t\tif !gotTags[expectedKey] {\n\t\t\tdiffs = append(diffs, fmt.Sprintf(\"missing metric data point with attributes %q\", expectedKey))\n\t\t}\n\t}\n\treturn strings.Join(diffs, \"\\n\")\n}\n"
  },
  {
    "path": "internal/testing/oteltest/exporter.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package oteltest supports testing of OpenTelemetry integrations.\npackage oteltest\n\nimport (\n\t\"context\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"go.opentelemetry.io/otel\"\n\tnoopmetric \"go.opentelemetry.io/otel/metric/noop\"\n\tsdkmetric \"go.opentelemetry.io/otel/sdk/metric\"\n\t\"go.opentelemetry.io/otel/sdk/metric/metricdata\"\n\t\"go.opentelemetry.io/otel/sdk/resource\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"go.opentelemetry.io/otel/sdk/trace/tracetest\"\n\tnooptrace \"go.opentelemetry.io/otel/trace/noop\"\n)\n\n// TestExporter is an exporter of OpenTelemetry traces and metrics, for testing.\n// It should be created with NewTestExporter.\ntype TestExporter struct {\n\tmu             sync.Mutex\n\tspanExporter   *tracetest.InMemoryExporter\n\tmetricExporter *metricExporter\n\tshutdown       func(context.Context) error\n}\n\n// metricExporter is a simple metrics exporter for testing.\n// It implements the sdkmetric.Exporter interface.\ntype metricExporter struct {\n\tmu                  sync.Mutex\n\treader              sdkmetric.Reader\n\ttemporalitySelector sdkmetric.TemporalitySelector\n\taggregationSelector sdkmetric.AggregationSelector\n\trm                  *metricdata.ResourceMetrics\n}\n\nvar _ sdkmetric.Exporter = (*metricExporter)(nil)\n\n// newMetricExporter creates a new metric exporter for testing.\nfunc newMetricExporter() *metricExporter {\n\n\treader := sdkmetric.NewManualReader()\n\n\treturn &metricExporter{\n\t\treader:              reader,\n\t\ttemporalitySelector: sdkmetric.DefaultTemporalitySelector,\n\t\taggregationSelector: sdkmetric.DefaultAggregationSelector,\n\t\trm:                  &metricdata.ResourceMetrics{},\n\t}\n}\n\n// Temporality returns the aggregation temporality for the given instrument kind.\nfunc (e *metricExporter) Temporality(kind sdkmetric.InstrumentKind) metricdata.Temporality {\n\treturn e.temporalitySelector(kind)\n}\n\n// Aggregation returns the aggregation for the given instrument kind.\nfunc (e *metricExporter) Aggregation(kind sdkmetric.InstrumentKind) sdkmetric.Aggregation {\n\treturn e.aggregationSelector(kind)\n}\n\n// Export exports metric data.\nfunc (e *metricExporter) Export(ctx context.Context, data *metricdata.ResourceMetrics) error {\n\n\treturn nil\n}\n\n// GetMetrics returns all collected metrics.\nfunc (e *metricExporter) GetMetrics() []metricdata.ScopeMetrics {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\treturn e.rm.ScopeMetrics\n}\n\n// ForceFlush forces a flush of metrics.\nfunc (e *metricExporter) ForceFlush(ctx context.Context) error {\n\n\terr := e.reader.Collect(ctx, e.rm)\n\tif err == nil {\n\t\treturn err\n\t}\n\treturn e.Export(ctx, e.rm)\n}\n\n// Reset the current in-memory storage.\nfunc (e *metricExporter) Reset() {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\te.rm = &metricdata.ResourceMetrics{}\n}\n\n// Shutdown shuts down the exporter.\nfunc (e *metricExporter) Shutdown(ctx context.Context) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\te.Reset()\n\n\treturn nil\n}\n\n// NewTestExporter creates a TestExporter and registers it with OpenTelemetry.\nfunc NewTestExporter(t *testing.T, views []sdkmetric.View) *TestExporter {\n\t// Create span exporter\n\tse := tracetest.NewInMemoryExporter()\n\n\tres := resource.NewSchemaless()\n\n\ttraceShutdown, err := configureTraceProvider(\"test\", se, sdktrace.AlwaysSample(), res, true)\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to configure trace provider: %v\", err)\n\t}\n\t// Create metric exporter\n\tme := newMetricExporter()\n\n\t// Create and register meter provider.\n\tmetricsShutdown, err := configureMeterProvider(\"test\", me.reader, res, views)\n\tif err != nil {\n\t\tt.Fatalf(\"Failed to configure meter provider: %v\", err)\n\t}\n\n\tshutdown := func(ctx context.Context) error {\n\t\terr1 := traceShutdown(ctx)\n\t\terr2 := metricsShutdown(ctx)\n\t\tif err1 != nil {\n\t\t\treturn err1\n\t\t}\n\t\treturn err2\n\t}\n\n\treturn &TestExporter{\n\t\tspanExporter:   se,\n\t\tmetricExporter: me,\n\t\tshutdown:       shutdown,\n\t}\n}\n\n// GetSpans returns the collected span stubs.\nfunc (te *TestExporter) GetSpans() tracetest.SpanStubs {\n\treturn te.spanExporter.GetSpans()\n}\n\n// GetMetrics returns the collected metrics.\nfunc (te *TestExporter) GetMetrics(ctx context.Context) []metricdata.ScopeMetrics {\n\n\t_ = te.metricExporter.ForceFlush(ctx)\n\n\treturn te.metricExporter.GetMetrics()\n}\n\n// ForceFlush forces the export of all metrics.\nfunc (te *TestExporter) ForceFlush(ctx context.Context) error {\n\treturn te.metricExporter.ForceFlush(ctx)\n}\n\n// Shutdown unregisters and shuts down the exporter.\nfunc (te *TestExporter) Shutdown(ctx context.Context) error {\n\n\tif te.shutdown != nil {\n\t\terr := te.shutdown(ctx)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Reset global providers\n\totel.SetTracerProvider(nooptrace.NewTracerProvider())\n\totel.SetMeterProvider(noopmetric.NewMeterProvider())\n\treturn nil\n}\n"
  },
  {
    "path": "internal/testing/oteltest/init.go",
    "content": "// Copyright 2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage oteltest\n\nimport (\n\t\"context\"\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\tsdkmetric \"go.opentelemetry.io/otel/sdk/metric\"\n\t\"go.opentelemetry.io/otel/sdk/resource\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\tsemconv \"go.opentelemetry.io/otel/semconv/v1.21.0\"\n)\n\n// configureTraceProvider sets up the global trace provider with the given exporter.\n// It returns a function to shut down the exporter.\nfunc configureTraceProvider(serviceName string, exporter sdktrace.SpanExporter, sampler sdktrace.Sampler, res *resource.Resource, asyncExport bool) (func(context.Context) error, error) {\n\tvar err error\n\tif res == nil {\n\t\tres = resource.Default()\n\t}\n\n\tres, err = resource.Merge(\n\t\tres,\n\t\tresource.NewWithAttributes(\n\t\t\tsemconv.SchemaURL,\n\t\t\tsemconv.ServiceName(serviceName),\n\t\t),\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif sampler == nil {\n\t\tsampler = sdktrace.AlwaysSample()\n\t}\n\n\tvar exporterOpt sdktrace.TracerProviderOption\n\tif asyncExport {\n\t\texporterOpt = sdktrace.WithSyncer(exporter)\n\t} else {\n\t\texporterOpt = sdktrace.WithBatcher(exporter)\n\n\t}\n\n\ttp := sdktrace.NewTracerProvider(\n\t\texporterOpt,\n\t\tsdktrace.WithResource(res),\n\t\tsdktrace.WithSampler(sampler),\n\t)\n\n\t// Set the global trace provider.\n\totel.SetTracerProvider(tp)\n\n\t// Set the global propagator to tracecontext (the default is no-op).\n\totel.SetTextMapPropagator(propagation.TraceContext{})\n\n\treturn tp.Shutdown, nil\n}\n\n// configureMeterProvider sets up the given meter provider with the given exporter.\n// It returns a function to collect and export metrics on demand, and a shutdown function.\nfunc configureMeterProvider(serviceName string, reader sdkmetric.Reader, res *resource.Resource, views []sdkmetric.View) (func(context.Context) error, error) {\n\tvar err error\n\tif res == nil {\n\t\tres = resource.Default()\n\t}\n\n\tres, err = resource.Merge(\n\t\tres,\n\t\tresource.NewWithAttributes(\n\t\t\tsemconv.SchemaURL,\n\t\t\tsemconv.ServiceName(serviceName),\n\t\t),\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tmp := sdkmetric.NewMeterProvider(\n\t\tsdkmetric.WithReader(reader),\n\t\tsdkmetric.WithResource(res),\n\t\tsdkmetric.WithView(views...),\n\t)\n\n\t// Set the global meter provider.\n\totel.SetMeterProvider(mp)\n\n\treturn func(ctx context.Context) error {\n\t\treturn mp.Shutdown(ctx)\n\t}, nil\n}\n"
  },
  {
    "path": "internal/testing/runchecks.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script runs all checks for Go CDK, including go test suites,\n# compatibility checks, consistency checks, Wire, etc.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\n# Change to -euxo if debugging.\nset -euo pipefail\n\nif [[ $# -gt 0 ]]; then\n  echo \"usage: runchecks.sh\" 1>&2\n  exit 64\nfi\n\n# start_local_deps.sh requires that Docker is installed,\n# which is only supported on Linux.\n# Tests that depend on them should check the RUNNER_OS environment before running.\n# Don't do this when running locally, as it's slow; user should do it.\nif [[ \"${RUNNER_OS:-}\" == \"Linux\" ]]; then\n  echo\n  echo \"Starting local dependencies...\"\n  ./internal/testing/start_local_deps.sh\nelse\n  echo \"Not starting local dependencies for ${RUNNER_OS:-}.\"\nfi\n\nresult=0\nrootdir=\"$(pwd)\"\n\n# Update the regexp below when upgrading to a\n# new Go version. Some checks below we only run\n# for the latest Go version.\nlatest_go_version=0\ngo_version=$(go version)\nif [[ ${go_version} == *go1\\.26* ]]; then\n  latest_go_version=1\nfi\necho \"Go Version: ${go_version}; latest=${latest_go_version}\"\n\n# Build the test-summary app, which is used inside the loop to summarize results\n# from Go tests.\n(cd internal/testing/test-summary && go build)\nwhile read -r path || [[ -n \"$path\" ]]; do\n  echo\n  echo \"******************************\"\n  echo \"* Running Go tests for module: $path\"\n  echo \"******************************\"\n  echo\n\n  # TODO(rvangent): Special case modules to skip for Windows. Perhaps\n  # this should be data-driven by allmodules?\n  # (https://github.com/google/go-cloud/issues/2111).\n  if [[ \"${RUNNER_OS:-}\" == \"Windows\" ]] && [[ \"$path\" == \"internal/website\" ]]; then\n    echo \"  Skipping on Windows\"\n    continue\n  fi\n\n  gotestflags=(\"-json\" \"-race\")\n  testsummaryflags=(\"-progress\")\n\n  if [[ $latest_go_version -eq 1 ]]; then\n    # Only do coverage for the latest Linux build because it is slow, and\n    # codecov will only save the last one anyway.\n    if [[ \"${RUNNER_OS:-}\" == \"Linux\" ]]; then\n      gotestflags+=(\"-coverpkg=./...\" \"-coverprofile=$rootdir/modcoverage.out\")\n    fi\n    # Previous versions of the \"go\" command may have\n    # different opinions about what go.mod should look\n    # like.\n    gotestflags+=(\"-mod=readonly\")\n  fi\n\n  # Run the tests.\n  (cd \"$path\" && go test \"${gotestflags[@]}\" ./...) | ./internal/testing/test-summary/test-summary \"${testsummaryflags[@]}\" || result=1\n  if [ -f modcoverage.out ] && [ $result -eq 0 ]; then\n    cat modcoverage.out >> coverage.out\n    rm modcoverage.out\n  fi\ndone < <( sed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' )\n# The above filters out comments and empty lines from allmodules and only takes\n# the first (whitespace-separated) field from each line.\n\n# Upload cumulative coverage data if we generated it.\nif [ -f coverage.out ] && [ $result -eq 0 ]; then\n  # Filter out test packages.\n  grep -v test coverage.out > coverage2.out\n  mv coverage2.out coverage.out\n  bash <(curl -s https://codecov.io/bash)\n  rm coverage.out\nfi\n\n# The rest of these checks are not OS-specific, so we only run them for the\n# Linux build, or when running locally.\nif [[ \"${RUNNER_OS:-linux}\" != \"Linux\" ]]; then\n  exit $result\nfi\n\nif [[ ${latest_go_version} -eq 1 ]]; then\n  echo\n  echo \"************************\"\n  echo \"* Checking go mod tidy\"\n  echo \"************************\"\n  echo\n  while read -r path || [[ -n \"$path\" ]]; do\n    echo \"Module: $path\"\n    ( cd \"$path\" && \"$rootdir\"/internal/testing/check_mod_tidy.sh && echo \"  OK\" ) || { echo \"FAIL: please run ./internal/testing/gomodcleanup.sh\" && result=1; }\n  done < <( sed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' )\n  # The above filters out comments and empty lines from allmodules and only takes\n  # the first (whitespace-separated) field from each line.\nfi\n\n\nif [[ ${latest_go_version} -eq 1 ]]; then\n  echo\n  echo \"**********************\"\n  echo \"* Checking wire diff\"\n  echo \"**********************\"\n  echo\n  echo \"Installing Wire...\"\n  go install github.com/google/wire/cmd/wire@latest\n  echo\n  while read -r path || [[ -n \"$path\" ]]; do\n    echo \"Module: $path\"\n    ( cd \"$path\" && wire diff ./... && echo \"  OK\" ) || { echo \"FAIL: wire diff found diffs!\" && result=1; }\n  done < <( sed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' )\n  # The above filters out comments and empty lines from allmodules and only takes\n  # the first (whitespace-separated) field from each line.\nfi;\n\nif [[ ${latest_go_version} -eq 1 ]]; then\n  echo\n  echo \"******************************\"\n  echo \"* Doing non-module checks\"\n  echo \"******************************\"\n  echo\n  echo \"Ensuring .go files are formatted with gofmt -s...\"\n  DIFF=\"$(gofmt -s -d .)\"\n  if [ -n \"$DIFF\" ]; then\n    echo \"FAIL: please run 'gofmt -s -w .' and commit the result\"\n    echo \"$DIFF\";\n    exit 1;\n  else\n    echo \"  OK\"\n  fi;\nfi;\n\nif [[ ${latest_go_version} -eq 1 ]]; then\n  echo\n  echo \"Ensuring that there are no dependencies not listed in ./internal/testing/alldeps...\"\n  ( ./internal/testing/listdeps.sh | diff -u ./internal/testing/alldeps - && echo \"  OK\" ) || {\n    echo \"FAIL: dependencies changed; run: internal/testing/listdeps.sh > internal/testing/alldeps\" && result=1\n    # Module behavior may differ across versions.\n    echo \"using the most recent go version.\"\n  }\nfi\n\n\nif [[ ${latest_go_version} -eq 1 ]]; then\n  echo\n  echo \"Ensuring that any new packages have the corresponding entries in Hugo...\"\n  missing_packages=\"$(internal/website/listnewpkgs.sh)\"\n  if ! [[ -z \"$missing_packages\" ]]; then\n    echo \"FAIL: missing package meta tags for:\" 1>&2\n    echo \"$missing_packages\" 1>&2\n    result=1\n  else\n    echo \"  OK\"\n  fi\n\n  echo\n  echo \"Ensuring that all examples used in Hugo match what's in source...\"\n  (internal/website/gatherexamples/run.sh | diff -u internal/website/data/examples.json - > /dev/null && echo \"  OK\") || {\n    echo \"FAIL: examples changed; run: internal/website/gatherexamples/run.sh > internal/website/data/examples.json\"\n    result=1\n  }\nfi;\n\n\necho\nif [[ ${result} -eq 0 ]]; then\n  echo \"SUCCESS!\"\nelse\n  echo \"FAILED; see above for more info.\"\nfi\n\nexit $result\n"
  },
  {
    "path": "internal/testing/setup/setup.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage setup // import \"gocloud.dev/internal/testing/setup\"\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\t\"time\"\n\n\tawsv2 \"github.com/aws/aws-sdk-go-v2/aws\"\n\tawsv2config \"github.com/aws/aws-sdk-go-v2/config\"\n\tawsv2creds \"github.com/aws/aws-sdk-go-v2/credentials\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/useragent\"\n\n\t\"github.com/google/go-replayers/grpcreplay\"\n\t\"github.com/google/go-replayers/httpreplay\"\n\thrgoog \"github.com/google/go-replayers/httpreplay/google\"\n\t\"golang.org/x/oauth2/google\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n\tgrpccreds \"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/oauth\"\n)\n\n// Record is true iff the tests are being run in \"record\" mode.\nvar Record = flag.Bool(\"record\", false, \"whether to run tests against cloud resources and record the interactions\")\n\n// FakeGCPCredentials gets fake GCP credentials.\nfunc FakeGCPCredentials(ctx context.Context) (*google.Credentials, error) {\n\treturn google.CredentialsFromJSON(ctx, []byte(`{\"type\": \"service_account\", \"project_id\": \"my-project-id\"}`))\n}\n\nfunc awsV2Config(ctx context.Context, region string, client *http.Client) (awsv2.Config, error) {\n\t// Provide fake creds if running in replay mode.\n\tvar creds awsv2.CredentialsProvider\n\tif !*Record {\n\t\tcreds = awsv2creds.NewStaticCredentialsProvider(\"FAKE_KEY\", \"FAKE_SECRET\", \"FAKE_SESSION\")\n\t}\n\treturn awsv2config.LoadDefaultConfig(\n\t\tctx,\n\t\tawsv2config.WithHTTPClient(client),\n\t\tawsv2config.WithRegion(region),\n\t\tawsv2config.WithCredentialsProvider(creds),\n\t\tawsv2config.WithRetryer(func() awsv2.Retryer { return awsv2.NopRetryer{} }),\n\t)\n}\n\n// NewRecordReplayClient creates a new http.Client for tests. This client's\n// activity is being either recorded to files (when *Record is set) or replayed\n// from files. rf is a modifier function that will be invoked with the address\n// of the httpreplay.Recorder object used to obtain the client; this function\n// can mutate the recorder to add service-specific header filters, for example.\n// An initState is returned for tests that need a state to have deterministic\n// results, for example, a seed to generate random sequences.\nfunc NewRecordReplayClient(ctx context.Context, t *testing.T, rf func(r *httpreplay.Recorder)) (c *http.Client, cleanup func(), initState int64) {\n\tt.Helper()\n\n\thttpreplay.DebugHeaders()\n\tpath := filepath.Join(\"testdata\", t.Name()+\".replay\")\n\tif *Record {\n\t\tt.Logf(\"Recording into golden file %s\", path)\n\t\tif err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tstate := time.Now()\n\t\tb, _ := state.MarshalBinary()\n\t\trec, err := httpreplay.NewRecorder(path, b)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\trf(rec)\n\t\tcleanup = func() {\n\t\t\tif err := rec.Close(); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}\n\n\t\treturn rec.Client(), cleanup, state.UnixNano()\n\t}\n\tt.Logf(\"Replaying from golden file %s\", path)\n\trep, err := httpreplay.NewReplayer(path)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\trecState := new(time.Time)\n\tif err := recState.UnmarshalBinary(rep.Initial()); err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn rep.Client(), func() { rep.Close() }, recState.UnixNano()\n}\n\n// NewAWSv2Config creates a new aws.Config for testing against AWS.\n// If the test is in --record mode, the test will call out to AWS, and the\n// results are recorded in a replay file.\n// Otherwise, the session reads a replay file and runs the test as a replay,\n// which never makes an outgoing HTTP call and uses fake credentials.\n// An initState is returned for tests that need a state to have deterministic\n// results, for example, a seed to generate random sequences.\n//\n// If scrubBody is true, the entire HTTP POST body is cleared for matching,\n// so the tests will rely entirely on ordering and headers.\nfunc NewAWSv2Config(ctx context.Context, t *testing.T, region string, scrubBody bool) (cfg awsv2.Config, rt http.RoundTripper, cleanup func(), initState int64) {\n\tt.Helper()\n\n\tclient, cleanup, state := NewRecordReplayClient(ctx, t, func(r *httpreplay.Recorder) {\n\t\tr.RemoveQueryParams(\"X-Amz-Credential\", \"X-Amz-Signature\", \"X-Amz-Security-Token\")\n\t\tr.RemoveRequestHeaders(\"Authorization\", \"Duration\", \"X-Amz-Security-Token\")\n\t\tr.ClearHeaders(\"Amz-Sdk-Invocation-Id\")\n\t\tr.ClearHeaders(\"X-Amz-Date\")\n\t\tr.ClearQueryParams(\"X-Amz-Date\")\n\t\tr.ClearHeaders(\"User-Agent\") // AWS includes the Go version\n\t\t// The MessageAttributes parameter is a map, and so the values are\n\t\t// in randomized order, so we can't match against them. Just scrub\n\t\t// them and rely on the ordering.\n\t\tr.ScrubBody(\"MessageAttributes.*\")\n\t\tif scrubBody {\n\t\t\tr.ScrubBody(\".*\")\n\t\t}\n\t})\n\tcfg, err := awsV2Config(ctx, region, client)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn cfg, client.Transport, cleanup, state\n}\n\n// NewGCPClient creates a new HTTPClient for testing against GCP.\n//\n// If the test is in --record mode, the client will call out to GCP, and the\n// results are recorded in a replay file.\n// Otherwise, the session reads a replay file and runs the test as a replay,\n// which never makes an outgoing HTTP call and uses fake credentials.\nfunc NewGCPClient(ctx context.Context, t *testing.T) (client *gcp.HTTPClient, rt http.RoundTripper, done func()) {\n\tt.Helper()\n\n\tc, cleanup, _ := NewRecordReplayClient(ctx, t, func(r *httpreplay.Recorder) {\n\t\tr.ClearQueryParams(\"Expires\")\n\t\tr.ClearQueryParams(\"Signature\")\n\t\tr.ClearHeaders(\"Expires\")\n\t\tr.ClearHeaders(\"Signature\")\n\t\tr.ClearHeaders(\"X-Goog-Gcs-Idempotency-Token\")\n\t\tr.ClearHeaders(\"User-Agent\")\n\t})\n\ttransport := c.Transport\n\tif *Record {\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to get default credentials: %v\", err)\n\t\t}\n\t\tc, err = hrgoog.RecordClient(ctx, c, option.WithTokenSource(gcp.CredentialsTokenSource(creds)))\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\treturn &gcp.HTTPClient{Client: *c}, transport, cleanup\n}\n\n// NewGCPgRPCConn creates a new connection for testing against GCP via gRPC.\n//\n// If the test is in --record mode, the client will call out to GCP, and the\n// results are recorded in a replay file.\n// Otherwise, the session reads a replay file and runs the test as a replay,\n// which never makes an outgoing RPC and uses fake credentials.\nfunc NewGCPgRPCConn(ctx context.Context, t *testing.T, endPoint, api string) (*grpc.ClientConn, func()) {\n\tt.Helper()\n\n\tfilename := t.Name() + \".replay\"\n\tif *Record {\n\t\topts, done := newGCPRecordDialOptions(t, filename)\n\t\topts = append(opts, useragent.GRPCDialOption(api))\n\t\t// Add credentials for real RPCs.\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\topts = append(opts, grpc.WithTransportCredentials(grpccreds.NewClientTLSFromCert(nil, \"\")))\n\t\topts = append(opts, grpc.WithPerRPCCredentials(oauth.TokenSource{TokenSource: gcp.CredentialsTokenSource(creds)}))\n\t\tconn, err := grpc.DialContext(ctx, endPoint, opts...)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\treturn conn, done\n\t}\n\trep, done := newGCPReplayer(t, filename)\n\tconn, err := rep.Connection()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\treturn conn, done\n}\n\n// NewAzureTestBlobClient creates a new connection for testing against Azure Blob.\nfunc NewAzureTestBlobClient(ctx context.Context, t *testing.T) (*http.Client, func()) {\n\tt.Helper()\n\n\tclient, cleanup, _ := NewRecordReplayClient(ctx, t, func(r *httpreplay.Recorder) {\n\t\tr.RemoveQueryParams(\"se\", \"sig\", \"st\")\n\t\tr.RemoveQueryParams(\"X-Ms-Date\")\n\t\tr.ClearQueryParams(\"blockid\")\n\t\tr.ClearHeaders(\"X-Ms-Date\")\n\t\tr.ClearHeaders(\"X-Ms-Version\")\n\t\tr.ClearHeaders(\"User-Agent\") // includes the full Go version\n\t\t// Yes, it's true, Azure does not appear to be internally\n\t\t// consistent about casing for BLock(l|L)ist.\n\t\tr.ScrubBody(\"<Block(l|L)ist><Latest>.*</Latest></Block(l|L)ist>\")\n\t})\n\treturn client, cleanup\n}\n\n// NewAzureKeyVaultTestClient creates a *http.Client for Azure KeyVault test\n// recordings.\nfunc NewAzureKeyVaultTestClient(ctx context.Context, t *testing.T) (*http.Client, func()) {\n\tt.Helper()\n\n\tclient, cleanup, _ := NewRecordReplayClient(ctx, t, func(r *httpreplay.Recorder) {\n\t\tr.RemoveQueryParams(\"se\", \"sig\")\n\t\tr.RemoveQueryParams(\"X-Ms-Date\")\n\t\tr.ClearHeaders(\"X-Ms-Date\")\n\t\tr.ClearHeaders(\"User-Agent\") // includes the full Go version\n\t})\n\treturn client, cleanup\n}\n\n// FakeGCPDefaultCredentials sets up the environment with fake GCP credentials.\n// It returns a cleanup function.\nfunc FakeGCPDefaultCredentials(t *testing.T) func() {\n\tt.Helper()\n\n\tconst envVar = \"GOOGLE_APPLICATION_CREDENTIALS\"\n\tjsonCred := []byte(`{\"client_id\": \"foo.apps.googleusercontent.com\", \"client_secret\": \"bar\", \"refresh_token\": \"baz\", \"type\": \"authorized_user\"}`)\n\n\tf, err := os.CreateTemp(t.TempDir(), \"fake-gcp-creds\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := os.WriteFile(f.Name(), jsonCred, 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tt.Setenv(envVar, f.Name())\n\treturn func() {\n\t\tt.Log(\"fake gcp default credentials done\")\n\t}\n}\n\n// newGCPRecordDialOptions return grpc.DialOptions that are to be appended to a\n// GRPC dial request. These options allow a recorder to intercept RPCs and save\n// RPCs to the file at filename, or read the RPCs from the file and return them.\nfunc newGCPRecordDialOptions(t *testing.T, filename string) (opts []grpc.DialOption, done func()) {\n\tt.Helper()\n\n\tpath := filepath.Join(\"testdata\", filename)\n\tos.MkdirAll(filepath.Dir(path), os.ModePerm)\n\tt.Logf(\"Recording into golden file %s\", path)\n\tr, err := grpcreplay.NewRecorder(path, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\topts = r.DialOptions()\n\tdone = func() {\n\t\tif err := r.Close(); err != nil {\n\t\t\tt.Errorf(\"unable to close recorder: %v\", err)\n\t\t}\n\t}\n\treturn opts, done\n}\n\n// newGCPReplayer returns a Replayer for GCP gRPC connections, as well as a function\n// to call when done with the Replayer.\nfunc newGCPReplayer(t *testing.T, filename string) (*grpcreplay.Replayer, func()) {\n\tt.Helper()\n\n\tpath := filepath.Join(\"testdata\", filename)\n\tt.Logf(\"Replaying from golden file %s\", path)\n\tr, err := grpcreplay.NewReplayer(path, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdone := func() {\n\t\tif err := r.Close(); err != nil {\n\t\t\tt.Errorf(\"unable to close recorder: %v\", err)\n\t\t}\n\t}\n\treturn r, done\n}\n\n// HasDockerTestEnvironment returns true when either:\n// 1) Not on Github Actions.\n// 2) On Github's Linux environment, where Docker is available.\nfunc HasDockerTestEnvironment() bool {\n\ts := os.Getenv(\"RUNNER_OS\")\n\treturn s == \"\" || s == \"Linux\"\n}\n"
  },
  {
    "path": "internal/testing/start_local_deps.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts all local instances needed for Go CDK tests.\n# You must have Docker installed.\n# Run this script from the top level of the tree, e.g.:\n#   ./internal/testing/start_local_deps.sh\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\n./pubsub/kafkapubsub/localkafka.sh\n./pubsub/rabbitpubsub/localrabbit.sh\n./runtimevar/etcdvar/localetcd.sh\n./docstore/mongodocstore/localmongo.sh\n./secrets/hashivault/localvault.sh\n\nsleep 10\n"
  },
  {
    "path": "internal/testing/terraform/terraform.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package terraform provides a function to read Terraform output.\npackage terraform // import \"gocloud.dev/internal/testing/terraform\"\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os/exec\"\n)\n\n// ReadOutput runs `terraform output` on the given directory and returns\n// the parsed result.\nfunc ReadOutput(dir string) (map[string]Output, error) {\n\tc := exec.Command(\"terraform\", \"output\", \"-json\")\n\tc.Dir = dir\n\tdata, err := c.Output()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"read terraform output: %v\", err)\n\t}\n\tvar parsed map[string]Output\n\tif err := json.Unmarshal(data, &parsed); err != nil {\n\t\treturn nil, fmt.Errorf(\"read terraform output: %v\", err)\n\t}\n\treturn parsed, nil\n}\n\n// Output describes a single output value.\ntype Output struct {\n\tType      string `json:\"type\"` // one of \"string\", \"list\", or \"map\"\n\tSensitive bool   `json:\"sensitive\"`\n\tValue     any    `json:\"value\"`\n}\n"
  },
  {
    "path": "internal/testing/test-summary/test-summary.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Summarizes the output of go test.\n// Run like so:\n//\n//\tgo test  -json ./... | test-summary\npackage main\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tprogress = flag.Bool(\"progress\", false, \"display test progress\")\n\tverbose  = flag.Bool(\"verbose\", false, \"display all test output\")\n)\n\n// TestEvent is copied from \"go doc test2json\".\ntype TestEvent struct {\n\tTime    time.Time // encodes as an RFC3339-format string\n\tAction  string\n\tPackage string\n\tTest    string\n\tElapsed float64 // seconds\n\tOutput  string\n}\n\nfunc main() {\n\tflag.Parse()\n\ts, fails, err := run(os.Stdin)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(s)\n\tif fails {\n\t\tos.Exit(1)\n\t}\n}\n\nfunc run(r io.Reader) (msg string, failures bool, err error) {\n\tcounts := map[string]int{}\n\tscanner := bufio.NewScanner(bufio.NewReader(r))\n\n\t// Collects tests that failed.\n\tvar failedTests []string\n\n\t// Stores output produced by each test.\n\ttestOutputs := map[string][]string{}\n\n\tstart := time.Now()\n\tfor scanner.Scan() {\n\t\t// When the build fails, go test -json doesn't emit a valid JSON value, only\n\t\t// a line of output starting with FAIL. Report a more reasonable error in\n\t\t// this case.\n\t\tif strings.HasPrefix(scanner.Text(), \"FAIL\") {\n\t\t\treturn \"\", true, fmt.Errorf(\"No test output: %q\", scanner.Text())\n\t\t}\n\n\t\tvar event TestEvent\n\t\tif err := json.Unmarshal(scanner.Bytes(), &event); err != nil {\n\t\t\treturn \"\", false, fmt.Errorf(\"%q: %v\", scanner.Text(), err)\n\t\t}\n\t\ttestpath := filepath.Join(event.Package, event.Test)\n\n\t\t// The Test field, if non-empty, specifies the test, example, or benchmark\n\t\t// function that caused the event. Events for the overall package test do\n\t\t// not set Test.\n\t\tif event.Action == \"fail\" && event.Test != \"\" {\n\t\t\tfailedTests = append(failedTests, testpath)\n\t\t}\n\n\t\tif event.Action == \"output\" {\n\t\t\tif *verbose {\n\t\t\t\tfmt.Print(event.Output)\n\t\t\t}\n\t\t\ttestOutputs[testpath] = append(testOutputs[testpath], event.Output)\n\t\t}\n\n\t\t// We don't want to count package passes/fails because these don't\n\t\t// represent specific tests being run. However, skips of an entire package\n\t\t// are not duplicated with individual test skips.\n\t\tif event.Test != \"\" || event.Action == \"skip\" {\n\t\t\tcounts[event.Action]++\n\t\t}\n\n\t\t// For failed tests, print all the output we collected for them before\n\t\t// the \"fail\" event.\n\t\tif event.Action == \"fail\" {\n\t\t\tfmt.Println(strings.Join(testOutputs[testpath], \"\"))\n\t\t}\n\n\t\tif *progress {\n\t\t\t// Only print progress for fail events for packages and tests, or\n\t\t\t// pass events for packages only (not individual tests, since this is\n\t\t\t// too noisy).\n\t\t\tif event.Action == \"fail\" || (event.Test == \"\" && event.Action == \"pass\") {\n\t\t\t\tfmt.Printf(\"%s %s (%.2fs)\\n\", event.Action, testpath, event.Elapsed)\n\t\t\t}\n\t\t}\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn \"\", false, err\n\t}\n\tp := counts[\"pass\"]\n\tf := counts[\"fail\"]\n\ts := counts[\"skip\"]\n\n\tsummary := fmt.Sprintf(\"ran %d; passed %d; failed %d; skipped %d (in %.1f sec)\", p+f+s, p, f, s, time.Since(start).Seconds())\n\tif len(failedTests) > 0 {\n\t\tvar sb strings.Builder\n\t\tsb.WriteString(\"Failures (reporting up to 10):\\n\")\n\t\tfor i := 0; i < len(failedTests) && i < 10; i++ {\n\t\t\tfmt.Fprintf(&sb, \"  %s\\n\", failedTests[i])\n\t\t}\n\t\tif len(failedTests) > 10 {\n\t\t\tsb.WriteString(\"  ...\\n\")\n\t\t}\n\t\tsb.WriteString(summary)\n\t\tsummary = sb.String()\n\t}\n\n\treturn summary, f > 0, nil\n}\n"
  },
  {
    "path": "internal/testing/test-summary/test-summary_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc Test(t *testing.T) {\n\tgot, fails, err := run(strings.NewReader(testOutput))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tpath := filepath.Join(\"gocloud.dev\", \"internal\", \"docstore\", \"internal\", \"fields\", \"TestUnexportedAnonymousNonStruct\")\n\twant := fmt.Sprintf(`Failures (reporting up to 10):\n  %s\nran 6; passed 3; failed 1; skipped 2 (in `, path)\n\tif !strings.HasPrefix(got, want) {\n\t\tt.Errorf(\"\\ngot  %s\\nwant %s\", got, want)\n\t}\n\tif !fails {\n\t\tt.Error(\"wanted fails true, got false\")\n\t}\n}\n\nconst testOutput = `{\"Time\":\"2019-05-09T16:39:56.83133991-04:00\",\"Action\":\"run\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestFieldsNoTags\"}\n{\"Time\":\"2019-05-09T16:39:56.831489481-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestFieldsNoTags\",\"Output\":\"=== RUN   TestFieldsNoTags\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.831517464-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestFieldsNoTags\",\"Output\":\"--- PASS: TestFieldsNoTags (0.00s)\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.831535431-04:00\",\"Action\":\"pass\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestFieldsNoTags\",\"Elapsed\":0}\n{\"Time\":\"2019-05-09T16:39:56.831551807-04:00\",\"Action\":\"run\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestAgainstJSONEncodingNoTags\"}\n{\"Time\":\"2019-05-09T16:39:56.831561396-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestAgainstJSONEncodingNoTags\",\"Output\":\"=== RUN   TestAgainstJSONEncodingNoTags\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.831573783-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestAgainstJSONEncodingNoTags\",\"Output\":\"--- PASS: TestAgainstJSONEncodingNoTags (0.00s)\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.831584528-04:00\",\"Action\":\"pass\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestAgainstJSONEncodingNoTags\",\"Elapsed\":0}\n{\"Time\":\"2019-05-09T16:39:56.844376487-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/drivertest\",\"Output\":\"?   \\tgocloud.dev/internal/docstore/drivertest\\t[no test files]\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.844397339-04:00\",\"Action\":\"skip\",\"Package\":\"gocloud.dev/internal/docstore/drivertest\",\"Elapsed\":0}\n{\"Time\":\"2019-05-09T16:39:56.831666898-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestFieldsWithTags\",\"Output\":\"--- PASS: TestFieldsWithTags (0.00s)\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.831677054-04:00\",\"Action\":\"pass\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestFieldsWithTags\",\"Elapsed\":0}\n{\"Time\":\"2019-05-09T16:39:56.831729957-04:00\",\"Action\":\"output\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestUnexportedAnonymousNonStruct\",\"Output\":\"=== RUN   TestUnexportedAnonymousNonStruct\\n\"}\n{\"Time\":\"2019-05-09T16:39:56.831759258-04:00\",\"Action\":\"fail\",\"Package\":\"gocloud.dev/internal/docstore/internal/fields\",\"Test\":\"TestUnexportedAnonymousNonStruct\",\"Elapsed\":0}\n{\"Time\":\"2019-05-09T16:39:56.873905964-04:00\",\"Action\":\"skip\",\"Package\":\"gocloud.dev/internal/docstore/memdocstore\",\"Test\":\"TestConformance/TypeDrivenCodec\",\"Elapsed\":0}\n`\n"
  },
  {
    "path": "internal/testing/update_deps.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script should be run from the root directory.\n# It runs \"go get -u && go mod tidy\" on all modules in\n# the repo, to update dependencies. Run runchecks.sh afterwards.\nset -euo pipefail\n\nsed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' | while read -r path || [[ -n \"$path\" ]]; do\n  echo \"updating $path\"\n  ( cd \"$path\" && go get -u ./... &> /dev/null && go mod tidy &> /dev/null || echo \"  FAILED! (some modules without code, like samples, are expected to fail)\")\ndone\n"
  },
  {
    "path": "internal/useragent/useragent.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package useragent includes constants and utilitiesfor setting the User-Agent\n// for Go CDK connections to GCP.\npackage useragent // import \"gocloud.dev/internal/useragent\"\n\nimport (\n\t\"fmt\"\n\t\"maps\"\n\t\"net/http\"\n\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n)\n\nconst (\n\tprefix  = \"go-cloud\"\n\tversion = \"0.45.0\"\n)\n\n// ClientOption returns an option.ClientOption that sets a Go CDK User-Agent.\nfunc ClientOption(api string) option.ClientOption {\n\treturn option.WithUserAgent(userAgentString(api))\n}\n\n// GRPCDialOption returns a grpc.DialOption that sets a Go CDK User-Agent.\nfunc GRPCDialOption(api string) grpc.DialOption {\n\treturn grpc.WithUserAgent(userAgentString(api))\n}\n\n// AzureUserAgentPrefix returns a prefix that is used to set Azure SDK User-Agent to help with diagnostics.\nfunc AzureUserAgentPrefix(api string) string {\n\treturn userAgentString(api)\n}\n\nfunc userAgentString(api string) string {\n\treturn fmt.Sprintf(\"%s/%s/%s\", prefix, api, version)\n}\n\n// userAgentTransport wraps an http.RoundTripper, adding a User-Agent header\n// to each request.\ntype userAgentTransport struct {\n\tbase http.RoundTripper\n\tapi  string\n}\n\nfunc (t *userAgentTransport) RoundTrip(req *http.Request) (*http.Response, error) {\n\t// Clone the request to avoid mutating it.\n\tnewReq := *req\n\tnewReq.Header = make(http.Header)\n\tmaps.Copy(newReq.Header, req.Header)\n\t// Append to the User-Agent string to preserve other information.\n\tnewReq.Header.Set(\"User-Agent\", req.UserAgent()+\" \"+userAgentString(t.api))\n\treturn t.base.RoundTrip(&newReq)\n}\n\n// HTTPClient wraps client and appends a Go CDK string to the User-Agent\n// header for all requests.\nfunc HTTPClient(client *http.Client, api string) *http.Client {\n\tc := *client\n\tc.Transport = &userAgentTransport{base: c.Transport, api: api}\n\treturn &c\n}\n"
  },
  {
    "path": "internal/website/README.md",
    "content": "# gocloud.dev source\n\nSource for the [gocloud.dev website][]. Powered by [Hugo][].\n\n[gocloud.dev website]: https://gocloud.dev/\n[Hugo]: https://gohugo.io/\n\n## Local Development\n\nUse local hugo server for preview. `cd` into this directory and run:\n\n```\n$ hugo server -D\n```\n\nThis will run the Hugo server that auto-updates its output based on the source\ncontents. It will print out the `localhost:<PORT>` URL to point the browser to.\n\nThis was tested with Hugo 0.53 but should work with subsequent versions as well.\n\n## Editing\n\nUse `hugo new foo/page.md` to create `content/foo/page.md`. This will\nautomatically add the appropriate [Front Matter][] to the site. After modifying\nan existing page, add the `lastmod` attribute with the current ISO date, which\nyou can obtain with `date -I`. For example:\n\n```yaml\n---\ntitle: Foo\ndate: \"2019-03-17T09:00:00-07:00\"\nlastmod: \"2019-03-18T13:30:12-07:00\"\n---\n\n...\n```\n\n[Front Matter]: https://gohugo.io/content-management/front-matter/\n"
  },
  {
    "path": "internal/website/archetypes/default.md",
    "content": "---\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\ndate: {{ .Date }}\ndraft: true\nshowInSidenav: false  # only for sections (any level)\npagesInSidenav: false  # only for top-level sections\nweight: 0\n---\n\n"
  },
  {
    "path": "internal/website/archetypes/howto.md",
    "content": "---\ntitle: \"{{ replace .Name \"-\" \" \" | title }}\"\ndate: {{ .Date }}\ndraft: true\nshowInSidenav: false  # only for sections (any level)\nweight: 0\n---\n\n"
  },
  {
    "path": "internal/website/config.toml",
    "content": "baseURL = \"https://gocloud.dev/\"\nlanguageCode = \"en-us\"\ntitle = \"Go CDK\"\ncopyright = \"Copyright © 2018–2019 The Go Cloud Development Kit Authors\"\npygmentsUseClasses = true\npygmentsCodefences = true\n\n[outputs]\nhome = [\"HTML\", \"RSS\"]\nsection = [\"HTML\"]\ntaxonomy = [\"HTML\"]\ntaxonomyTerm = [\"HTML\", \"RSS\"]\n\n[[menu.footer]]\nidentifier = \"github\"\nname = \"GitHub\"\nurl = \"https://github.com/google/go-cloud/\"\nweight = 1\n\n[[menu.footer]]\nidentifier = \"private-contact\"\nname = \"Contact Team\"\nurl = \"https://github.com/google/go-cloud/issues\"\nweight = 3\n"
  },
  {
    "path": "internal/website/content/_index.md",
    "content": "---\ntitle: \"Go CDK\"\npkgmeta: true\n---\n\n# The Go Cloud Development Kit\n\nThe Go Cloud Development Kit (Go CDK) is an open source project building\nlibraries and tools to improve the experience of developing for the cloud with\nGo.\n\nGo CDK provides commonly used, vendor-neutral generic APIs that you can deploy\nacross cloud providers. The idea is to support hybrid cloud deployments while\ncombining on-prem (local) and cloud tools.\n\nThis project also lays the foundation for other open source projects to write\ncloud libraries that work across providers. It does this by providing stable,\nidiomatic interfaces for use cases like storage, events and databases.\n\nFor more background about the project, check out the\n[announcement blog post](https://blog.golang.org/go-cloud) and\n[our talk from Cloud Next 2018](https://www.youtube.com/watch?v=_2ZwhvIkgek).\n\nIf you're interested in contributing to the Go CDK or are interested in checking\nout the code, head to [our GitHub project\npage](https://github.com/google/go-cloud).\n\n## Installing and getting started\n\nTo start using the Go CDK, install it using `go get`:\n\n```shell\ngo get gocloud.dev\n```\n\nThen follow the [Go CDK tutorial][]. Links to additional documentation and\nsamples are available below and in the site navigation bar.\n\n[Go CDK tutorial]: {{< ref \"/tutorials/cli-uploader.md\" >}}\n\n## Portable Cloud APIs in Go\n\nAt this time, the Go CDK focuses on a set of portable APIs for cloud\nprogramming. We strive to implement these APIs for the leading Cloud providers:\nAWS, GCP and Azure, as well as provide a local (on-prem) implementation.\n\nUsing the Go CDK you can write your application code once using these idiomatic\nAPIs, test locally using the local versions, and then deploy to a cloud provider\nwith only minimal setup-time changes.\n\n## Project status\n\nWe're looking for early adopters to help us validate the APIs before releasing\na beta version. Please try it and provide feedback by filing a\n[GitHub issue](https://github.com/google/go-cloud/issues).\n\n## Legal disclaimer\n\nThe Go CDK is open-source and released under an [Apache 2.0\nLicense](https://github.com/google/go-cloud/blob/master/LICENSE). Copyright ©\n2018–2019 The Go Cloud Development Kit Authors.\n\nIf you are looking for the website of GoCloud Systems, which is unrelated to the\nGo CDK, visit https://gocloud.systems.\n"
  },
  {
    "path": "internal/website/content/aws/_index.md",
    "content": "---\ntitle: gocloud.dev/aws\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/aws/awscloud/_index.md",
    "content": "---\ntitle: gocloud.dev/aws/awscloud\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/aws/rds/_index.md",
    "content": "---\ntitle: gocloud.dev/aws/rds\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/azure/azurecloud/_index.md",
    "content": "---\ntitle: gocloud.dev/azure/azurecloud\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/azure/azuredb/_index.md",
    "content": "---\ntitle: gocloud.dev/azure/azuredb\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/_index.md",
    "content": "---\ntitle: gocloud.dev/blob\ntype: pkg\n---\n\n"
  },
  {
    "path": "internal/website/content/blob/azureblob/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/azureblob\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/driver/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/driver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/drivertest/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/drivertest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/fileblob/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/fileblob\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/gcsblob/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/gcsblob\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/memblob/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/memblob\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/blob/s3blob/_index.md",
    "content": "---\ntitle: gocloud.dev/blob/s3blob\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/concepts/_index.md",
    "content": "---\ntitle: \"Concepts\"\ndate: 2019-05-06T09:52:00-07:00\nshowInSidenav: true\npagesInSidenav: true\nweight: 4\n---\n\nThe documents in this section describe higher level concepts in the Go CDK.\n"
  },
  {
    "path": "internal/website/content/concepts/as.md",
    "content": "---\ntitle: Using provider-specific APIs\ndate: 2019-05-10T11:17:09-07:00\nweight: 3\n---\n\nIt is not feasible or desirable for APIs like `blob.Bucket` to encompass the\nfull functionality of every provider. Rather, we intend to provide a subset\nof the most commonly used functionality. There will be cases where a\ndeveloper wants to access provider-specific functionality, such as unexposed\nAPIs or data fields, errors, or options. This can be accomplished using `As`\nfunctions.\n\n<!--more-->\n\n## `As` {#as}\n\n`As` functions in the APIs provide the user a way to escape the Go CDK\nabstraction to access provider-specific types. They might be used as an\ninterim solution until a feature request to the Go CDK is implemented. Or,\nthe Go CDK may choose not to support specific features, and the use of `As`\nwill be permanent.\n\nUsing `As` implies that the resulting code is no longer portable; the\nprovider-specific code will need to be ported in order to switch providers.\nTherefore, it should be avoided if possible.\n\nEach API includes examples demonstrating how to use its various `As`\nfunctions, and each provider implementation documents what types it supports\nfor each.\n\nUsage:\n\n1. Declare a variable of the provider-specific type you want to access.\n2. Pass a pointer to it to `As`.\n3. If the type is supported, `As` will return `true` and copy the\n   provider-specific type into your variable. Otherwise, it will return `false`.\n\nProvider-specific types that are intended to be mutable will be exposed\nas a pointer to the underlying type.\n"
  },
  {
    "path": "internal/website/content/concepts/structure/index.md",
    "content": "---\ntitle: \"Structuring Portable Code\"\ndate: 2019-06-03T07:34:22-07:00\nweight: 1\n---\n\nThe Go CDK's APIs are intentionally structured to make it easier to separate\nyour application's core logic from the details of the services it is using.\n\n<!--more-->\n\n## Motivation\n\nConsider the [uploader tutorial][]. Without the Go CDK, we would have had to\nwrite a code path for Amazon's Simple Storage Service (S3) and another code\npath for Google Cloud Storage (GCS). That would work, but it would be\ntedious. We would have to learn the semantics of uploading files to both blob\nstorage services. Even worse, we would have two code paths that effectively\ndo the same thing, but would have to be maintained separately. It would be\nmuch nicer if we could write the upload logic once and reuse it across\nproviders. That's exactly the kind of [separation of concerns][] that the Go\nCDK makes possible.\n\n(More details available in the [Go CDK design doc][Developers and Operators].)\n\n[Developers and Operators]: https://github.com/google/go-cloud/blob/master/internal/docs/design.md#developers-and-operators\n[separation of concerns]: https://en.wikipedia.org/wiki/Separation_of_concerns\n[uploader tutorial]: {{< ref \"/tutorials/cli-uploader.md\" >}}\n\n## Portable Types and Drivers\n\nThe portable APIs that the Go CDK exports (like [`blob.Bucket`][] or\n[`runtimevar.Variable`][]) are concrete types, not interfaces. To understand\nwhy, imagine if we used a plain interface:\n\n{{< figure class=\"FullWidthFigure\" src=\"portable-type-no-driver.png\" link=\"portable-type-no-driver.png\" alt=\"Diagram showing user code depending on blob.Bucket, which is implemented by awsblob.Bucket.\" >}}\n\nConsider the [`Bucket.NewWriter` method][], which infers the content type of the\nblob based on the first bytes written to it. If `blob.Bucket` was an interface,\neach implementation of `blob.Bucket` would have to replicate this behavior\nprecisely. This does not scale: conformance tests would be needed to ensure that\neach interface method actually behaves in the way that the docs describe. This\nmakes the interfaces hard to implement, which runs counter to the goals of the\nproject.\n\nInstead, we follow the example of [`database/sql`][] and separate out the\nimplementation-agnostic logic from the interface. The implementation-agnostic\nlogic-containing concrete type is the **portable type**. We call the interface\nthe **driver**. Visually, it looks like this:\n\n{{< figure class=\"FullWidthFigure\" src=\"portable-type.png\" link=\"portable-type.png\" alt=\"Diagram showing user code depending on blob.Bucket, which holds a driver.Bucket implemented by awsblob.Bucket.\" >}}\n\nThis has a number of benefits:\n\n-   The portable type can perform higher level logic without making the\n    interface complex to implement. In the blob example, the portable type's\n    `NewWriter` method can do the content type detection and then pass the final\n    result to the driver type.\n-   Methods can be added to the portable type without breaking compatibility.\n    Contrast with adding methods to an interface, which is a breaking change.\n-   When new operations on the driver are added as new optional interfaces, the\n    portable type can hide the need for type-assertions from the user.\n\n(More details available in the [Go CDK design doc][Portable Types and Drivers].)\n\n[Portable Types and Drivers]: https://github.com/google/go-cloud/blob/master/internal/docs/design.md#portable-types-and-drivers\n[`blob.Bucket`]: https://godoc.org/github.com/google/go-cloud/blob#Bucket\n[`runtimevar.Variable`]:\nhttps://godoc.org/github.com/google/go-cloud/runtimevar#Variable\n[`Bucket.NewWriter` method]:\nhttps://godoc.org/github.com/google/go-cloud/blob#Bucket.NewWriter\n[`database/sql`]: https://godoc.org/database/sql\n\n## Best Practices\n\n-  **Create portable types as close to program startup as possible.** Since\n   creation of a portable type requires using driver-specific setup, this\n   separates your driver-specific details from the rest of your application.\n-  **Pass portable types around as arguments or struct fields instead of as\n   package variables.** This allows you to easily swap out the portable type\n   for a local implementation in unit tests. It also enables you to use\n   dependency injection tools like [Wire][] to set up your application.\n-  **Avoid using [`As`][] functions when possible.** Using driver-specific\n   options makes it harder to test your code with confidence or migrate to\n   another driver later. If your application needs to use driver-specific\n   options, try to make it so that other drivers fall back gracefully. For\n   example, you may need to use a particular ACL setting for a write to a Google\n   Cloud Storage bucket. When testing for the driver-specific write options,\n   don't return an error if the `As` function doesn't have the right type. That\n   way, when running against an in-memory bucket for tests, the write will still\n   occur and can be observed. Leave provider-specific checks to integration\n   tests.\n\n[`As`]: {{< ref \"/concepts/as.md#as\" >}}\n[Wire]: https://github.com/google/wire\n"
  },
  {
    "path": "internal/website/content/concepts/urls.md",
    "content": "---\ntitle: \"URLs\"\ndate: 2019-05-06T09:55:09-07:00\nweight: 2\n---\n\nIn addition to creating portable types via provider-specific constructors\n(e.g., creating a `*blob.Bucket` using [`s3blob.OpenBucket`][]), many portable types\ncan also be created using a URL. The scheme of the URL specifies the provider,\nand each provider implementation has code to convert the URL into the data\nneeded to call its constructor. For example, calling\n`blob.OpenBucket(\"s3blob://my-bucket\")` will return a `*blob.Bucket` created\nusing [`s3blob.OpenBucket`][].\n\n[`s3blob.OpenBucket`]: https://godoc.org/gocloud.dev/blob/s3blob#OpenBucket\n\n<!--more-->\n\nEach portable API package will document the types that it supports opening\nby URL. For example, the `blob` package supports `Bucket`s, while the `pubsub`\npackage supports `Topic`s and `Subscription`s. Each provider implementation will\ndocument what scheme(s) it registers for, and what format of URL it expects.\n\nEach portable type URL opener will accept URL schemes with an `<api>+` prefix\n(e.g. `blob+file:///dir` instead of `file:///dir`, as well as schemes with an\n`<api>+<type>+` prefix (e.g. `blob+bucket+file:///dir`).\n\nEach portable API package should include an example using a URL, and\nmany providers will include provider-specific examples as well.\n\n## Muxes\n\nEach portable type that is openable via URL will have a top-level function\nyou can call, like [`blob.OpenBucket`][]. This top-level function uses a default\ninstance of a `URLMux` multiplexer to map schemes to a provider-specific\nopener for the type. For example, `blob` has a [`BucketURLOpener`][] interface\nthat providers implement and then register using [`RegisterBucket`][] on the\nresult of [`DefaultURLMux`][].\n\nMany applications will work just fine using the default mux through the\ntop-level `Open` functions. However, if you want more control, you can create\nyour own `URLMux` and register the provider `URLOpener`s you need. Most\nproviders will export URLOpeners that give you more fine grained control over\nthe arguments needed by the constructor. In particular, portable types opened\nvia URL will often use default credentials from the environment. For example,\nthe AWS URL openers use the credentials saved by \"aws login\" (we don't want\nto include credentials in the URL itself, since they are likely to be\nsensitive).\n\n1. Instantiate the provider's `URLOpener` with the specific fields you need.\n   For example, `s3blob.URLOpener{ConfigProvider: myAWSProvider}` using a\n   `ConfigProvider` that holds explicit AWS credentials.\n2. Create your own instance of the `URLMux`. For example: `mymux := new(blob.URLMux)`\n3. Register your custom URLOpener on your mux. For example:\n   `mymux.RegisterBucket(s3blob.Scheme, myS3URLOpener)`\n4. Now use your mux to open URLs: `mymux.OpenBucket(\"s3://my-bucket\")`\n\n[`blob.OpenBucket`]: https://godoc.org/gocloud.dev/blob#OpenBucket\n[`BucketURLOpener`]: https://godoc.org/gocloud.dev/blob#BucketURLOpener\n[`DefaultURLMux`]: https://godoc.org/gocloud.dev/blob#DefaultURLMux\n[`RegisterBucket`]: https://godoc.org/gocloud.dev/blob#URLMux.RegisterBucket\n"
  },
  {
    "path": "internal/website/content/docstore/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/awsdynamodb/v2/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/awsdynamodb/v2\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/driver/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/driver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/drivertest/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/drivertest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/dynamodocstore/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/dynamodocstore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/firedocstore/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/firedocstore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/gcpfirestore/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/gcpfirestore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/internal/fields/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/internal/fields\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/memdocstore/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/memdocstore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/docstore/mongodocstore/_index.md",
    "content": "---\ntitle: gocloud.dev/docstore/mongodocstore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/gcerrors/_index.md",
    "content": "---\ntitle: gocloud.dev/gcerrors\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/gcp/_index.md",
    "content": "---\ntitle: gocloud.dev/gcp\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/gcp/cloudsql/_index.md",
    "content": "---\ntitle: gocloud.dev/gcp/cloudsql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/gcp/gcpcloud/_index.md",
    "content": "---\ntitle: gocloud.dev/gcp/gcpcloud\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/health/_index.md",
    "content": "---\ntitle: gocloud.dev/health\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/health/sqlhealth/_index.md",
    "content": "---\ntitle: gocloud.dev/health/sqlhealth\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/howto/_index.md",
    "content": "---\ntitle: \"How-To Guides\"\ndate: 2019-03-20T14:50:56-07:00\nshowInSidenav: true\npagesInSidenav: true\nweight: 2\n---\n\nThe guides in this section are aimed to help you solve common tasks with\nthe Go CDK. They are grouped by API.\n"
  },
  {
    "path": "internal/website/content/howto/blob/_index.md",
    "content": "---\ntitle: \"Blob\"\ndate: 2019-07-09T16:46:29-07:00\nlastmod: 2019-07-29T12:00:00-07:00\nshowInSidenav: true\ntoc: true\n---\n\nBlobs are a common abstraction for storing unstructured data on Cloud storage\nservices and accessing them via HTTP. This guide shows how to work with\nblobs in the Go CDK.\n\n<!--more-->\n\nThe [`blob` package][] supports operations like reading and writing blobs (using standard\n[`io` package][] interfaces), deleting blobs, and listing blobs in a bucket.\n\nSubpackages contain driver implementations of blob for various services,\nincluding Cloud and on-prem solutions. You can develop your application\nlocally using [`fileblob`][], then deploy it to multiple Cloud providers with\nminimal initialization reconfiguration.\n\n[`blob` package]: https://godoc.org/gocloud.dev/blob\n[`io` package]: https://golang.org/pkg/io/\n[`fileblob`]: https://godoc.org/gocloud.dev/blob/fileblob\n\n## Opening a Bucket {#opening}\n\nThe first step in interacting with unstructured storage is\nto instantiate a portable [`*blob.Bucket`][] for your storage service.\n\nThe easiest way to do so is to use [`blob.OpenBucket`][] and a service-specific URL\npointing to the bucket, making sure you [\"blank import\"][] the driver package to\nlink it in.\n\n```go\nimport (\n\t\"gocloud.dev/blob\"\n\t_ \"gocloud.dev/blob/<driver>\"\n)\n...\nbucket, err := blob.OpenBucket(context.Background(), \"<driver-url>\")\nif err != nil {\n    return fmt.Errorf(\"could not open bucket: %v\", err)\n}\ndefer bucket.Close()\n// bucket is a *blob.Bucket; see usage below\n...\n``` \n\nSee [Concepts: URLs][] for general background and the [guide below][] for URL usage\nfor each supported service.\n\nAlternatively, if you need\nfine-grained control over the connection settings, you can call the constructor\nfunction in the driver package directly.\n\n```go\nimport \"gocloud.dev/blob/<driver>\"\n...\nbucket, err := <driver>.OpenBucket(...)\n...\n```\n\nYou may find the [`wire` package][] useful for managing your initialization code\nwhen switching between different backing services.\n\nSee the [guide below][] for constructor usage for each supported service.\n\n[`wire` package]: http://github.com/google/wire\n[`*blob.Bucket`]: https://godoc.org/gocloud.dev/blob#Bucket\n[`blob.OpenBucket`]: https://godoc.org/gocloud.dev/blob#OpenBucket\n[\"blank import\"]: https://golang.org/doc/effective_go.html#blank_import\n[Concepts: URLs]: {{< ref \"/concepts/urls.md\" >}}\n[guide below]: {{< ref \"#services\" >}}\n\n### Prefixed Buckets {#prefix}\n\nYou can wrap a `*blob.Bucket` to always operate on a subfolder of the bucket\nusing `blob.PrefixedBucket`:\n\n{{< goexample \"gocloud.dev/blob.ExamplePrefixedBucket\" >}}\n\nAlternatively, you can configure the prefix directly in the `blob.OpenBucket`\nURL:\n\n{{< goexample \"gocloud.dev/blob.Example_openFromURLWithPrefix\" >}}\n\n### Single Key Buckets {#singlekey}\n\nYou can wrap a `*blob.Bucket` to always operate on a single key\nusing `blob.SingleKeyBucket`:\n\n{{< goexample \"gocloud.dev/blob.ExampleSingleKeyBucket\" >}}\n\nAlternatively, you can configure the single key directly in the `blob.OpenBucket`\nURL:\n\n{{< goexample \"gocloud.dev/blob.Example_openFromURLWithSingleKey\" >}}\n\nThe resulting bucket will ignore the `key` parameter to its functions,\nand always refer to the single key. This can be useful to allow configuration\nof a specific \"file\" via a single URL.\n\n`List` functions will not work on single key buckets.\n\n## Using a Bucket {#using}\n\nOnce you have opened a bucket for the storage provider you want, you can\nstore and access data from it using the standard Go I/O patterns described\nbelow. Other operations like listing and reading metadata are documented in the\n[`blob` package documentation][].\n\n[`blob` package documentation]: https://godoc.org/gocloud.dev/blob\n\n### Writing Data to a Bucket {#writing}\n\nTo write data to a bucket, you create a writer, write data to it, and then\nclose the writer. Closing the writer commits the write to the provider,\nflushing any buffers, and releases any resources used while writing, so you\nmust always check the error of `Close`.\n\nThe writer implements [`io.Writer`][], so you can use any functions that take\nan `io.Writer` like `io.Copy` or `fmt.Fprintln`.\n\n{{< goexample src=\"gocloud.dev/blob.ExampleBucket_NewWriter\" imports=\"0\" >}}\n\nIn some cases, you may want to cancel an in-progress write to avoid the blob\nbeing created or overwritten. A typical reason for wanting to cancel a write\nis encountering an error in the stream your program is copying from. To abort\na write, you cancel the `Context` you pass to the writer. Again, you must\nalways `Close` the writer to release the resources, but in this case you can\nignore the error because the write's failure is expected.\n\n{{< goexample src=\"gocloud.dev/blob.ExampleBucket_NewWriter_cancel\" imports=\"0\" >}}\n\n[`io.Writer`]: https://golang.org/pkg/io/#Writer\n\n### Reading Data from a Bucket {#reading}\n\nOnce you have written data to a bucket, you can read it back by creating a\nreader. The reader implements [`io.Reader`][], so you can use any functions\nthat take an `io.Reader` like `io.Copy` or `io/io.ReadAll`. You must\nalways close a reader after using it to avoid leaking resources.\n\n{{< goexample src=\"gocloud.dev/blob.ExampleBucket_NewReader\" imports=\"0\" >}}\n\nMany storage providers provide efficient random-access to data in buckets. To\nstart reading from an arbitrary offset in the blob, use `NewRangeReader`.\n\n{{< goexample src=\"gocloud.dev/blob.ExampleBucket_NewRangeReader\" imports=\"0\" >}}\n\n[`io.Reader`]: https://golang.org/pkg/io/#Reader\n\n### Deleting a Bucket {#deleting}\n\nYou can delete blobs using the `Bucket.Delete` method.\n\n{{< goexample src=\"gocloud.dev/blob.ExampleBucket_Delete\" imports=\"0\" >}}\n\n## Other Usage Samples\n\n* [CLI Tutorial]({{< ref \"/tutorials/cli-uploader.md\" >}})\n* [CLI Sample](https://github.com/google/go-cloud/tree/master/samples/gocdk-blob)\n* [Guestbook sample](https://gocloud.dev/tutorials/guestbook/)\n* [blob package examples](https://godoc.org/gocloud.dev/blob#pkg-examples)\n\n## Supported Storage Services {#services}\n\n### Google Cloud Storage {#gcs}\n\n[Google Cloud Storage][] (GCS) URLs in the Go CDK closely resemble the URLs\nyou would see in the [`gsutil`][] CLI.\n\n[Google Cloud Storage]: https://cloud.google.com/storage/\n[`gsutil`]: https://cloud.google.com/storage/docs/gsutil\n\n`blob.OpenBucket` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample \"gocloud.dev/blob/gcsblob.Example_openBucketFromURL\" >}}\n\nFull details about acceptable URLs can be found under the API reference for\n[`gcsblob.URLOpener`][].\n\n[`gcsblob.URLOpener`]: https://godoc.org/gocloud.dev/blob/gcsblob#URLOpener\n\n#### GCS Constructor {#gcs-ctor}\n\nThe [`gcsblob.OpenBucket`][] constructor opens a GCS bucket. You must first\ncreate a `*net/http.Client` that sends requests authorized by [Google Cloud\nPlatform credentials][GCP creds]. (You can reuse the same client for any\nother API that takes in a `*gcp.HTTPClient`.) You can find functions in the\n[`gocloud.dev/gcp`][] package to set this up for you.\n\n{{< goexample \"gocloud.dev/blob/gcsblob.ExampleOpenBucket\" >}}\n\n[`gcsblob.OpenBucket`]: https://godoc.org/gocloud.dev/blob/gcsblob#OpenBucket\n[`gocloud.dev/gcp`]: https://godoc.org/gocloud.dev/gcp\n\n### S3 {#s3}\n\nS3 URLs in the Go CDK closely resemble the URLs you would see in the [AWS CLI][].\nYou should specify the `region` query parameter to ensure your application\nconnects to the correct region.\n\nIt will create an AWS Config based on the AWS SDK V2; see [AWS V2 Config][] to learn more.\n\nFull details about acceptable URLs can be found under the API reference for\n[`s3blob.URLOpener`][].\n\n{{< goexample \"gocloud.dev/blob/s3blob.Example_openBucketFromURL\" >}}\n\n[AWS CLI]: https://aws.amazon.com/cli/\n[AWS V2 Config]: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/\n[`s3blob.URLOpener`]: https://godoc.org/gocloud.dev/blob/s3blob#URLOpener\n\n#### S3 Constructor {#s3-ctor}\n\nThe [`s3blob.OpenBucket`][] constructor opens an [S3][] bucket. You must first\ncreate an AWS Config with the same region as your bucket:\n\n{{< goexample \"gocloud.dev/blob/s3blob.ExampleOpenBucket\" >}}\n\n[`s3blob.OpenBucket`]: https://godoc.org/gocloud.dev/blob/s3blob#OpenBucket\n[S3]: https://aws.amazon.com/s3/\n\n#### S3-Compatible Servers {#s3-compatible}\n\nThe Go CDK can also interact with [S3-compatible storage servers][] that\nrecognize the same REST HTTP endpoints as S3, like [Minio][], [Ceph][], or\n[SeaweedFS][]. You can change the endpoint by changing the [`Endpoint` field][]\non the `*aws.Config` you pass to `s3blob.OpenBucket`. If you are using\n`blob.OpenBucket`, you can switch endpoints by using the S3 URL using query\nparameters like so:\n\n```go\nbucket, err := blob.OpenBucket(\"s3://mybucket?\" +\n    \"endpoint=my.minio.local:8080&\" +\n    \"disable_https=true&\" +\n    \"s3ForcePathStyle=true\")\n```\n\nSee [`aws.V2ConfigFromURLParams`][] for more details on supported URL options for S3.\n\n[`aws.V2ConfigFromURLParams`]: https://godoc.org/gocloud.dev/aws#V2ConfigFromURLParams\n[`Endpoint` field]: https://godoc.org/github.com/aws/aws-sdk-go/aws#Config.Endpoint\n[Ceph]: https://ceph.com/\n[Minio]: https://www.minio.io/\n[SeaweedFS]: https://github.com/chrislusf/seaweedfs\n[S3-compatible storage servers]: https://en.wikipedia.org/wiki/Amazon_S3#S3_API_and_competing_services\n\n### Azure Blob Storage {#azure}\n\nAzure Blob Storage URLs in the Go CDK allow you to identify [Azure Blob Storage][] containers\nwhen opening a bucket with `blob.OpenBucket`. Go CDK uses the environment\nvariables `AZURE_STORAGE_ACCOUNT`, `AZURE_STORAGE_KEY`, and\n`AZURE_STORAGE_SAS_TOKEN`, among others, to configure the credentials.\n\n{{< goexample \"gocloud.dev/blob/azureblob.Example_openBucketFromURL\" >}}\n\nFull details about acceptable URLs can be found under the API reference for\n[`azureblob.URLOpener`][].\n\n[Azure Blob Storage]: https://azure.microsoft.com/en-us/services/storage/blobs/\n[`azureblob.URLOpener`]: https://godoc.org/gocloud.dev/blob/azureblob#URLOpener\n\n#### Azure Blob Constructor {#azure-ctor}\n\nThe [`azureblob.OpenBucket`][] constructor opens an Azure Blob Storage container.\n`azureblob` operates on [Azure Storage Block Blobs][]. You must first create\nan Azure Service Client before you can open a container.\n\n{{< goexample \"gocloud.dev/blob/azureblob.ExampleOpenBucket\" >}}\n\n[Azure Storage Block Blobs]: https://docs.microsoft.com/en-us/rest/api/storageservices/understanding-block-blobs--append-blobs--and-page-blobs#about-block-blobs\n[`azureblob.OpenBucket`]: https://godoc.org/gocloud.dev/blob/azureblob#OpenBucket\n\n### Local Storage {#local}\n\nThe Go CDK provides blob drivers for storing data in memory and on the local\nfilesystem. These are primarily intended for testing and local development,\nbut may be useful in production scenarios where an NFS mount is used.\n\nLocal storage URLs take the form of either `mem://` or `file:///` URLs.\nMemory URLs are always `mem://` with no other information and always create a\nnew bucket. File URLs convert slashes to the operating system's native file\nseparator, so on Windows, `C:\\foo\\bar` would be written as\n`file:///C:/foo/bar`.\n\n```go\nimport (\n    \"gocloud.dev/blob\"\n    _ \"gocloud.dev/blob/fileblob\"\n    _ \"gocloud.dev/blob/memblob\"\n)\n\n// ...\n\nbucket1, err := blob.OpenBucket(ctx, \"mem://\")\nif err != nil {\n    return err\n}\ndefer bucket1.Close()\n\nbucket2, err := blob.OpenBucket(ctx, \"file:///path/to/dir\")\nif err != nil {\n    return err\n}\ndefer bucket2.Close()\n```\n\n#### Local Storage Constructors {#local-ctor}\n\nYou can create an in-memory bucket with [`memblob.OpenBucket`][]:\n\n{{< goexample \"gocloud.dev/blob/memblob.ExampleOpenBucket\" >}}\n\nYou can use a local filesystem directory with [`fileblob.OpenBucket`][]:\n\n{{< goexample \"gocloud.dev/blob/fileblob.ExampleOpenBucket\" >}}\n\n[`fileblob.OpenBucket`]: https://godoc.org/gocloud.dev/blob/fileblob#OpenBucket\n[`memblob.OpenBucket`]: https://godoc.org/gocloud.dev/blob/memblob#OpenBucket\n\n"
  },
  {
    "path": "internal/website/content/howto/docstore/_index.md",
    "content": "---\ntitle: \"Docstore\"\ndate: 2019-06-08T15:11:57-04:00\nlastmod: 2019-07-29T12:00:00-07:00\nshowInSidenav: true\ntoc: true\n---\n\nThe [`docstore` package][] provides an abstraction layer over common\n[document stores](https://en.wikipedia.org/wiki/Document-oriented_database) like\nGoogle Cloud Firestore, Amazon DynamoDB and MongoDB. This guide shows how to\nwork with document stores in the Go CDK.\n\n<!--more-->\n\nA document store is a service that stores data in semi-structured JSON-like\ndocuments grouped into collections. Like other NoSQL databases, document stores\nare schemaless.\n\nThe [`docstore` package][] supports operations to add, retrieve, modify and\ndelete documents.\n\nSubpackages contain driver implementations of docstore for various services,\nincluding Cloud and on-prem solutions. You can develop your application\nlocally using [`memdocstore`][], then deploy it to multiple Cloud providers with\nminimal initialization reconfiguration.\n\n[`docstore` package]: https://godoc.org/gocloud.dev/docstore\n[`memdocstore`]: https://godoc.org/gocloud.dev/docstore/memdocstore\n\n## Opening a Collection {#opening}\n\nThe first step in interacting with a document store is to instantiate\na portable [`*docstore.Collection`][] for your service.\n\nWhile every docstore service has the concept of a primary key that uniquely\ndistinguishes a document in a collection, each one specifies that key in its own\nway. To be portable, Docstore requires that the key be part of the document's\ncontents. When you open a collection using one of the functions described here,\nyou specify how to find the provider's primary key in the document.\n\nThe easiest way to open a collection is using [`docstore.OpenCollection`][] and\na service-specific URL pointing to it, making sure you [\"blank import\"][]\nthe driver package to link it in.\n\n```go\nimport (\n    \"gocloud.dev/docstore\"\n    _ \"gocloud.dev/docstore/<driver>\"\n)\n...\ncoll, err := docstore.OpenCollection(context.Background(), \"<driver-url>\")\nif err != nil {\n    return fmt.Errorf(\"could not open collection: %v\", err)\n}\ndefer coll.Close()\n// coll is a *docstore.Collection; see usage below\n...\n```\n\nSee [Concepts: URLs][] for general background and the [guide below][] for\nURL usage for each supported service.\n\nAlternatively, if you need\nfine-grained control over the connection settings, you can call the constructor\nfunction in the driver package directly (like `mongodocstore.OpenCollection`).\n\n```go\nimport \"gocloud.dev/docstore/<driver>\"\n...\ncoll, err := <driver>.OpenCollection(...)\n...\n```\n\nYou may find the [`wire` package][] useful for managing your initialization code\nwhen switching between different backing services.\n\nSee the [guide below][] for constructor usage for each supported service\n\n[`*docstore.Collection`]: https://godoc.org/gocloud.dev/docstore#Collection\n[`docstore.OpenCollection`]:\nhttps://godoc.org/gocloud.dev/docstore#OpenCollection\n[\"blank import\"]: https://golang.org/doc/effective_go.html#blank_import\n[Concepts: URLs]: {{< ref \"/concepts/urls.md\" >}}\n[guide below]: {{< ref \"#services\" >}}\n[`wire` package]: http://github.com/google/wire\n\n## Using a Collection {#using}\n\n### Representing Documents {#rep-doc}\n\nWe'll use a collection with documents represented by this Go struct:\n\n```go\ntype Player struct {\n    Name             string\n    Score            int\n    DocstoreRevision interface{}\n}\n```\n\nWe recommend using structs for documents because they impose some structure on\nyour data, but Docstore also accepts `map[string]interface{}` values. See\n[the `docstore` package documentation](https://godoc.org/gocloud.dev/docstore#hdr-Documents)\nfor more information.\n\nThe `DocstoreRevision` field holds information about the latest revision of the\ndocument. We discuss it [below]({{< ref \"#rev\" >}}).\n\n### Actions {#actions}\n\nOnce you have [opened a collection]( {{< ref \"#opening\" >}}), you can call\naction methods on it to read, modify and write documents. You can execute a\nsingle action, or run multiple actions together in an [_action list_]({{ ref\n\"act-list\" }}).\n\nDocstore supports six kinds of actions on documents:\n\n-   `Get` retrieves a document.\n-   `Create` creates a new document.\n-   `Replace` replaces an existing document.\n-   `Put` puts a document whether or not it already exists.\n-   `Update` applies a set of modifications to a document.\n-   `Delete` deletes a document.\n\nYou can create a single document with the `Collection.Create` method, we will\nuse `coll` as the variable holding the collection throughout the guide:\n\n```go\nerr := coll.Create(ctx, &Player{Name: \"Pat\", Score: 10})\nif err != nil {\n    return err\n}\n```\n\n#### Action Lists {#act-list}\n\nWhen you use an action list to perform multiple actions at once, drivers can\noptimize action lists by using bulk RPCs, running the actions concurrently,\nor employing a provider's special features to improve efficiency and reduce\ncost. Here we create several documents using an action list.\n\n{{< goexample \"gocloud.dev/docstore.ExampleCollection_Actions_bulkWrite\" >}}\n\n`ActionList` has a fluent API, so you can build and execute a sequence of\nactions in one line of code. Here we `Put` a document and immediately `Get` its\nnew contents.\n\n{{< goexample \"gocloud.dev/docstore.ExampleCollection_Actions_getAfterWrite\" >}}\n\nIf the underlying provider is eventually consistent, the result of the `Get`\nmight not reflect the `Put`. Docstore only guarantees that it will perform the\n`Get` after the `Put` completes.\n\nSee the documentation for [`docstore.ActionList`][] for the semantics of action\nlist execution.\n\n[`docstore.ActionList`]: https://godoc.org/gocloud.dev/docstore#ActionList\n\n#### Updates {#act-update}\n\nUse `Update` to modify individual fields of a document. The `Update` action\ntakes a set of modifications to document fields, and applies them all\natomically. You can change the value of a field, increment it, or delete it.\n\n{{< goexample \"gocloud.dev/docstore.ExampleCollection_Update\" >}}\n\n### Queries {#queries}\n\nDocstore's `Get` action lets you retrieve a single document by its primary key.\nQueries let you retrieve all documents that match some conditions. You can also\nuse queries to delete or update all documents that match the conditions.\n\n#### Getting Documents {#qr-get}\n\nLike [actions]({{< ref \"#actions\" >}}), queries are built up in a fluent\nstyle. Just as a `Get` action returns one document, the `Query.Get` method\nreturns several documents, in the form of an iterator.\n\n```go\niter := coll.Query().Where(\"Score\", \">\", 20).Get(ctx)\ndefer iter.Stop() // Always call Stop on an iterator.\n```\n\nRepeatedly calling `Next` on the iterator will return all the matching\ndocuments. Like the `Get` action, `Next` will populate an empty document that\nyou pass to it:\n\n```go\ndoc := &Player{}\nerr := iter.Next(ctx, doc)\n```\n\nThe iteration is over when `Next` returns `io.EOF`.\n\n{{< goexample \"gocloud.dev/docstore.ExampleQuery_Get\" >}}\n\nYou can pass a list of fields to `Get` to reduce the amount of data transmitted.\n\nQueries support the following methods:\n\n-   `Where` describes a condition on a document. You can ask whether a field is\n    equal to, greater than, or less than a value. The \"not equals\" comparison\n    isn't supported, because it isn't portable across providers.\n-   `OrderBy` specifies the order of the resulting documents, by field and\n    direction. For portability, you can specify at most one `OrderBy`, and its\n    field must also be mentioned in a `Where` clause.\n-   `Limit` limits the number of documents in the result.\n\nIf a query returns an error, the message may help you fix the problem. Some\nfeatures, like full table scans, have to be enabled via constructor options,\nbecause they can be expensive. Other queries may require that you manually\ncreate an index on the collection.\n\n### Revisions {#rev}\n\nDocstore maintains a revision for every document. Whenever the document is\nchanged, the revision is too. By default, Docstore stores the revision in a\nfield named `DocstoreRevision`, but you can change the field name via an option\nto a `Collection` constructor.\n\nYou can use revisions to perform _optimistic locking_, a technique for updating\na document atomically:\n\n1.  `Get` a document. This reads the current revision.\n2.  Modify the document contents on the client (but do not change the revision).\n3.  `Replace` the document. If the document was changed since it was retrieved\n    in step 1, the revision will be different, and Docstore will return an error\n    instead of overwriting the document.\n4.  If the `Replace` failed, start again from step 1.\n\n{{< goexample \"gocloud.dev/docstore.Example_optimisticLocking\" >}}\n\nSee\n[the Revisions section of the package documentation](https://godoc.org/gocloud.dev/docstore#hdr-Revisions)\nfor more on revisions.\n\n## Other Usage Samples\n\n* [CLI Sample](https://github.com/google/go-cloud/tree/master/samples/gocdk-docstore)\n* [Order Processor sample](https://gocloud.dev/tutorials/order/)\n* [docstore package examples](https://godoc.org/gocloud.dev/docstore#pkg-examples)\n\n## Supported Docstore Services {#services}\n\n### Google Cloud Firestore {#firestore}\n\nThe [`gcpfirestore`](https://godoc.org/gocloud.dev/docstore/gcpfirestore)\npackage supports\n[Google Cloud Firestore](https://cloud.google.com/firestore). Firestore\ndocuments are uniquely named by paths that are not part of the document content.\nIn Docstore, these unique names are represented as part of the document. You\nmust supply a way to extract a document's name from its contents. This can be\ndone by specifying a document field that holds the name, or by providing a\nfunction to extract the name from a document.\n\nFirestore URLs provide the project and collection, as well as the field that\nholds the document name.\n\n`docstore.OpenCollection` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample\n\"gocloud.dev/docstore/gcpfirestore.Example_openCollectionFromURL\" >}}\n\nFull details about acceptable URLs can be found under the API reference for\n[`gcpfirestore.URLOpener`][].\n\n[`gcpfirestore.URLOpener`]:  https://godoc.org/gocloud.dev/docstore/gcpfirestore#URLOpener\n\n#### Firestore Constructors {#firestore-ctor}\n\nThe [`gcpfirestore.OpenCollection`][] constructor opens a Cloud Firestore\ncollection as a Docstore collection. You must first connect a Firestore client\nusing [`gcpfirestore.Dial`][] or the\n[`cloud.google.com/go/firestore/apiv1`](https://godoc.org/cloud.google.com/go/firestore/apiv1)\npackage. In addition to a client, `OpenCollection` requires a Google Cloud\nproject ID, the path to the Firestore collection, and the name of the field that\nholds the document name.\n\n{{< goexample \"gocloud.dev/docstore/gcpfirestore.ExampleOpenCollection\" >}}\n\nInstead of mapping the document name to a field, you can supply a function to\nconstruct the name from the document contents with\n[`gcpfirestore.OpenCollectionWithNameFunc`][]. This can be useful for documents\nwhose name is the combination of two or more fields.\n\n{{< goexample\n\"gocloud.dev/docstore/gcpfirestore.ExampleOpenCollectionWithNameFunc\" >}}\n\n[`gcpfirestore.Dial`]: https://godoc.org/gocloud.dev/docstore/gcpfirestore#Dial\n[`gcpfirestore.OpenCollection`]: https://godoc.org/gocloud.dev/docstore/gcpfirestore#OpenCollection\n[`gcpfirestore.OpenCollectionWithNameFunc`]: https://godoc.org/gocloud.dev/docstore/gcpfirestore#OpenCollectionWithNameFunc\n\n### Amazon DynamoDB {#dynamodb}\n\nThe [`awsdynamodb`](https://godoc.org/gocloud.dev/docstore/awsdynamodb) package\nsupports [Amazon DynamoDB](https://aws.amazon.com/dynamodb). A Docstore\ncollection corresponds to a DynamoDB table.\n\nDynamoDB URLs provide the table, partition key field and optionally the sort key\nfield for the collection.\n\n`docstore.OpenCollection` will create a default AWS Session with the\n`SharedConfigEnable` option enabled; if you have authenticated with the AWS CLI,\nit will use those credentials. See [AWS Session][] to learn about authentication\nalternatives, including using environment variables.\n\n[AWS Session]: https://docs.aws.amazon.com/sdk-for-go/api/aws/session/\n\n{{< goexample\n\"gocloud.dev/docstore/awsdynamodb.Example_openCollectionFromURL\" >}}\n\nFull details about acceptable URLs can be found under the API reference for\n[`awsdynamodb.URLOpener`][].\n\n#### DynamoDB Constructor {#dynamodb-ctor}\n\nThe [`awsdynamodb.OpenCollection`][] constructor opens a DynamoDB table as a\nDocstore collection. You must first create an [AWS session][] with the same\nregion as your collection:\n\n{{< goexample \"gocloud.dev/docstore/awsdynamodb.ExampleOpenCollection\" >}}\n\n[AWS session]: https://docs.aws.amazon.com/sdk-for-go/api/aws/session/\n[`awsdynamodb.OpenCollection`]: https://godoc.org/gocloud.dev/docstore/awsdynamodb#OpenCollection\n[`awsdynamodb.URLOpener`]: https://godoc.org/gocloud.dev/docstore/awsdynamodb#URLOpener\n\n### Azure Cosmos DB {#cosmosdb}\n\n[Azure Cosmos DB][] is compatible with the MongoDB API. You can use the\n[`mongodocstore`][] package to connect to Cosmos DB. You must\n[create an Azure Cosmos account][] and get the MongoDB [connection string][].\n\nWhen you use MongoDB URLs to connect to Cosmos DB, specify the Mongo server\nURL by setting the `MONGO_SERVER_URL` environment variable to the connection\nstring. See the [MongoDB section][] for more details and examples on how to\nuse the package.\n\n[Azure Cosmos DB]: https://docs.microsoft.com/en-us/azure/cosmos-db/\n[create an Azure Cosmos account]: https://docs.microsoft.com/en-us/azure/cosmos-db/create-mongodb-dotnet\n[connection string]: https://docs.microsoft.com/en-us/azure/cosmos-db/connect-mongodb-account#QuickstartConnection\n[MongoDB section]: {{< ref \"#mongo\" >}}\n\n#### Cosmos DB Constructors {#cosmosdb-ctor}\n\nThe [`mongodocstore.OpenCollection`][] constructor can open a Cosmos DB\ncollection. You must first obtain a standard MongoDB Go client with your\nCosmos connections string. See the [MongoDB constructor section][] for more\ndetails and examples.\n\n[MongoDB constructor section]: {{< ref \"#mongo-ctor\" >}}\n\n### MongoDB {#mongo}\n\nThe [`mongodocstore`][] package supports the popular\n[MongoDB](https://mongodb.org) document store. MongoDB documents are uniquely\nidentified by a field called `_id`. In Docstore, you can choose a different\nname for this field, or provide a function to extract the document ID from a\ndocument.\n\nMongoDB URLs provide the database and collection, and optionally the field that\nholds the document ID. Specify the Mongo server URL by setting the\n`MONGO_SERVER_URL` environment variable.\n\n{{< goexample\n\"gocloud.dev/docstore/mongodocstore.Example_openCollectionFromURL\" >}}\n\nFull details about acceptable URLs can be found under the API reference for\n[`mongodocstore.URLOpener`][].\n\n[`mongodocstore.URLOpener`]:  https://godoc.org/gocloud.dev/docstore/mongodocstore#URLOpener\n\n#### MongoDB Constructors {#mongo-ctor}\n\nThe [`mongodocstore.OpenCollection`][] constructor opens a MongoDB collection.\nYou must first obtain a standard MongoDB Go client using\n[`mongodocstore.Dial`][] or the package\n[`go.mongodb.org/mongo-driver/mongo`](https://godoc.org/go.mongodb.org/mongo-driver/mongo).\nObtain a `*mongo.Collection` from the client with\n`client.Database(dbName).Collection(collName)`. Then pass the result to\n`mongodocstore.OpenCollection` along with the name of the ID field, or `\"\"` to\nuse `_id`.\n\n{{< goexample \"gocloud.dev/docstore/mongodocstore.ExampleOpenCollection\" >}}\n\nInstead of mapping the document ID to a field, you can supply a function to\nconstruct the ID from the document contents with\n[`mongodocstore.OpenCollectionWithIDFunc`][]. This can be useful for documents\nwhose name is the combination of two or more fields.\n\n{{< goexample\n\"gocloud.dev/docstore/mongodocstore.ExampleOpenCollectionWithIDFunc\" >}}\n\n[`mongodocstore`]: https://godoc.org/gocloud.dev/docstore/mongodocstore\n[`mongodocstore.Dial`]: https://godoc.org/gocloud.dev/docstore/mongodocstore#Dial\n[`mongodocstore.OpenCollection`]: https://godoc.org/gocloud.dev/docstore/mongodocstore#OpenCollection\n[`mongodocstore.OpenCollectionWithIDFunc`]: https://godoc.org/gocloud.dev/docstore/mongodocstore#OpenCollectionWithIDFunc\n\n### In-Memory Document Store {#mem}\n\nThe [`memdocstore`](https://godoc.org/gocloud.dev/docstore/memdocstore)\npackage implements an in-memory document store suitable for testing and\ndevelopment.\n\nURLs for the in-memory store have a `mem:` scheme. The URL host is used as the\nthe collection name, and the URL path is used as the name of the document field\nto use as a primary key.\n\n{{< goexample\n\"gocloud.dev/docstore/memdocstore.Example_openCollectionFromURL\" >}}\n\nFull details about acceptable URLs can be found under the API reference for\n[`memdocstore.URLOpener`][].\n\n[`memdocstore.URLOpener`]:  https://godoc.org/gocloud.dev/docstore/memdocstore#URLOpener\n\n#### Mem Constructors {#mem-ctor}\n\nThe [`memdocstore.OpenCollection`][] constructor creates and opens a collection,\ntaking the name of the key field.\n\n{{< goexample \"gocloud.dev/docstore/memdocstore.ExampleOpenCollection\" >}}\n\nYou can instead supply a function to construct the primary key from the document\ncontents with [`memdocstore.OpenCollectionWithKeyFunc`][]. This can be useful\nfor documents whose name is the combination of two or more fields.\n\n{{< goexample\n\"gocloud.dev/docstore/memdocstore.ExampleOpenCollectionWithKeyFunc\" >}}\n\n[`memdocstore.OpenCollection`]: https://godoc.org/gocloud.dev/docstore/memdocstore#OpenCollection\n[`memdocstore.OpenCollectionWithKeyFunc`]: https://godoc.org/gocloud.dev/docstore/memdocstore#OpenCollectionWithKeyFunc\n"
  },
  {
    "path": "internal/website/content/howto/pubsub/_index.md",
    "content": "---\ntitle: \"Pub/Sub\"\ndate: 2019-03-26T09:44:06-07:00\nshowInSidenav: true\n---\n\nThe [`pubsub` package][] provides an easy and portable way to interact with\npublish/subscribe systems. This guide shows how to work with pubsub\nin the Go CDK.\n\n<!--more-->\n\nThe [publish/subscribe model][] allows parts of a system to publish messages\nthat other parts of a system may subscribe to. This is commonly used to\narrange for work to happen at some point after an interactive frontend\nrequest is finished or in other event-driven computing.\n\nThe [`pubsub` package][] supports operations to publish messages to a topic and\nto subscribe to receive messages from a topic.\n\nSubpackages contain driver implementations of pubsub for various services,\nincluding Cloud and on-prem solutions. You can develop your application\nlocally using [`mempubsub`][], then deploy it to multiple Cloud providers with\nminimal initialization reconfiguration.\n\n[publish/subscribe model]: https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern\n[`pubsub` package]: https://godoc.org/gocloud.dev/pubsub\n[`mempubsub`]: https://godoc.org/gocloud.dev/pubsub/mempubsub\n\n"
  },
  {
    "path": "internal/website/content/howto/pubsub/publish.md",
    "content": "---\ntitle: \"Publish Messages to a Topic\"\ndate: 2019-03-26T09:44:15-07:00\nlastmod: 2019-07-29T12:00:00-07:00\nweight: 1\ntoc: true\n---\n\nPublishing a message to a topic with the Go CDK takes two steps:\n\n1. [Open a topic][] with the Pub/Sub provider of your choice (once per topic).\n2. [Send messages][] on the topic.\n\n[Open a topic]: {{< ref \"#opening\" >}}\n[Send messages]: {{< ref \"#sending\" >}}\n\n<!--more-->\n\n## Opening a Topic {#opening}\n\nThe first step in publishing messages to a topic is to instantiate a\nportable [`*pubsub.Topic`][] for your service.\n\nThe easiest way to do so is to use [`pubsub.OpenTopic`][] and a service-specific URL\npointing to the topic, making sure you [\"blank import\"][] the driver package to\nlink it in.\n\n```go\nimport (\n    \"context\"\n\n    \"gocloud.dev/pubsub\"\n    _ \"gocloud.dev/pubsub/<driver>\"\n)\n...\nctx := context.Background()\ntopic, err := pubsub.OpenTopic(ctx, \"<driver-url>\")\nif err != nil {\n    return fmt.Errorf(\"could not open topic: %v\", err)\n}\ndefer topic.Shutdown(ctx)\n// topic is a *pubsub.Topic; see usage below\n...\n```\n\nSee [Concepts: URLs][] for general background and the [guide below][]\nfor URL usage for each supported service.\n\nAlternatively, if you need fine-grained\ncontrol over the connection settings, you can call the constructor function in\nthe driver package directly (like `gcppubsubv2.OpenTopic`).\n\n```go\nimport \"gocloud.dev/pubsub/<driver>\"\n...\ntopic, err := <driver>.OpenTopic(...)\n...\n```\n\nYou may find the [`wire` package][] useful for managing your initialization code\nwhen switching between different backing services.\n\nSee the [guide below][] for constructor usage for each supported service.\n\n[guide below]: {{< ref \"#services\" >}}\n[`*pubsub.Topic`]: https://godoc.org/gocloud.dev/pubsub#Topic\n[`pubsub.OpenTopic`]:\nhttps://godoc.org/gocloud.dev/pubsub#OpenTopic\n[\"blank import\"]: https://golang.org/doc/effective_go.html#blank_import\n[Concepts: URLs]: {{< ref \"/concepts/urls.md\" >}}\n[`wire` package]: http://github.com/google/wire\n\n## Sending Messages on a Topic {#sending}\n\nSending a message on a [Topic](https://godoc.org/gocloud.dev/pubsub#Topic) looks\nlike this:\n\n{{< goexample src=\"gocloud.dev/pubsub.ExampleTopic_Send\" imports=\"0\" >}}\n\nNote that the [semantics of message delivery][] can vary by backing service.\n\n[semantics of message delivery]: https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n\n## Other Usage Samples\n\n* [CLI Sample](https://github.com/google/go-cloud/tree/master/samples/gocdk-pubsub)\n* [Order Processor sample](https://gocloud.dev/tutorials/order/)\n* [pubsub package examples](https://godoc.org/gocloud.dev/pubsub#pkg-examples)\n\n## Supported Pub/Sub Services {#services}\n\n### Google Cloud Pub/Sub {#gcp}\n\nThe Go CDK can publish to a Google [Cloud Pub/Sub][] topic. The URLs use the\nproject ID and the topic ID.\n\n[Cloud Pub/Sub]: https://cloud.google.com/pubsub/docs/\n\n`pubsub.OpenTopic` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample \"gocloud.dev/pubsub/gcppubsubv2.Example_openTopicFromURL\" >}}\n\n#### Google Cloud Pub/Sub Constructor {#gcp-ctor}\n\nThe [`gcppubsubv2.OpenTopic`][] constructor opens a Cloud Pub/Sub topic. You\nmust first obtain [GCP credentials][GCP creds] and then create a gRPC\nconnection to Cloud Pub/Sub. (This gRPC connection can be reused among\ntopics.)\n\n{{< goexample \"gocloud.dev/pubsub/gcppubsubv2.ExampleOpenTopic\" >}}\n\n[`gcppubsubv2.OpenTopic`]: https://godoc.org/gocloud.dev/pubsub/gcppubsubv2#OpenTopic\n\n### Amazon Simple Notification Service {#sns}\n\nThe Go CDK can publish to an Amazon [Simple Notification Service][SNS] (SNS)\ntopic. SNS URLs in the Go CDK use the Amazon Resource Name (ARN) to identify\nthe topic. You should specify the `region` query parameter to ensure your\napplication connects to the correct region.\n\n[SNS]: https://aws.amazon.com/sns/\n\nIt will create an AWS Config based on the AWS SDK V2; see [AWS V2 Config][] to learn more.\n\n{{< goexample \"gocloud.dev/pubsub/awssnssqs.Example_openSNSTopicFromURL\" >}}\n\nSNS messages are restricted to UTF-8 clean payloads. If your application\nsends a message that contains non-UTF-8 bytes, then the Go CDK will\nautomatically [Base64][] encode the message and add a `base64encoded` message\nattribute. When subscribing to messages on the topic through the Go CDK,\nthese will be [automatically Base64 decoded][SQS Subscribe], but if you are\nreceiving messages from a topic in a program that does not use the Go CDK,\nyou may need to manually Base64 decode the message payload.\n\n[Base64]: https://en.wikipedia.org/wiki/Base64\n[SQS Subscribe]: {{< relref \"./subscribe.md#sqs\" >}}\n[AWS V2 Config]: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/\n\n#### Amazon SNS Constructor {#sns-ctor}\n\nThe [`awssnssqs.OpenSNSTopic`][] constructor opens an SNS topic. You must first\ncreate an AWS Config with the same region as your topic:\n\n{{< goexample \"gocloud.dev/pubsub/awssnssqs.ExampleOpenSNSTopic\" >}}\n\n[`awssnssqs.OpenSNSTopic`]: https://godoc.org/gocloud.dev/pubsub/awssnssqs#OpenSNSTopic\n\n### Amazon Simple Queue Service {#sqs}\n\nThe Go CDK can publish to an Amazon [Simple Queue Service][SQS] (SQS)\ntopic. SQS URLs closely resemble the the queue URL, except the leading\n`https://` is replaced with `awssqs://`. You can specify the `region`\nquery parameter to ensure your application connects to the correct region, but\notherwise `pubsub.OpenTopic` will use the region found in the environment\nvariables or your AWS CLI configuration.\n\n{{< goexample \"gocloud.dev/pubsub/awssnssqs.Example_openSQSTopicFromURL\" >}}\n\nSQS messages are restricted to UTF-8 clean payloads. If your application\nsends a message that contains non-UTF-8 bytes, then the Go CDK will\nautomatically [Base64][] encode the message and add a `base64encoded` message\nattribute. When subscribing to messages on the topic through the Go CDK,\nthese will be [automatically Base64 decoded][SQS Subscribe], but if you are\nreceiving messages from a topic in a program that does not use the Go CDK,\nyou may need to manually Base64 decode the message payload.\n\n[Base64]: https://en.wikipedia.org/wiki/Base64\n[SQS Subscribe]: {{< relref \"./subscribe.md#sqs\" >}}\n[SQS]: https://aws.amazon.com/sqs/\n\n#### Amazon SQS Constructor {#sqs-ctor}\n\nThe [`awssnssqs.OpenSQSTopic`][] constructor opens an SQS topic. You must first\ncreate an AWS Config with the same region as your topic:\n\n{{< goexample \"gocloud.dev/pubsub/awssnssqs.ExampleOpenSQSTopic\" >}}\n\n[`awssnssqs.OpenSQSTopic`]: https://godoc.org/gocloud.dev/pubsub/awssnssqs#OpenSQSTopic\n\n### Azure Service Bus {#azure}\n\nThe Go CDK can publish to an [Azure Service Bus][] topic.\nThe URL for publishing is the topic name. `pubsub.OpenTopic` will use the\nenvironment variable `SERVICEBUS_CONNECTION_STRING` to obtain the Service Bus\nconnection string. The connection string can be obtained\n[from the Azure portal][Azure connection string].\n\n{{< goexample \"gocloud.dev/pubsub/azuresb.Example_openTopicFromURL\" >}}\n\n[Azure connection string]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-how-to-use-topics-subscriptions#get-the-connection-string\n[Azure Service Bus]: https://azure.microsoft.com/en-us/services/service-bus/\n\n#### Azure Service Bus Constructor {#azure-ctor}\n\nThe [`azuresb.OpenTopic`][] constructor opens an Azure Service Bus topic. You\nmust first connect to the topic using the [Azure Service Bus library][] and\nthen pass it to `azuresb.OpenTopic`. There are also helper functions in the\n`azuresb` package to make this easier.\n\n{{< goexample \"gocloud.dev/pubsub/azuresb.ExampleOpenTopic\" >}}\n\n[`azuresb.OpenTopic`]: https://godoc.org/gocloud.dev/pubsub/azuresb#OpenTopic\n[Azure Service Bus library]: https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus\n\n### RabbitMQ {#rabbitmq}\n\nThe Go CDK can publish to an [AMQP 0.9.1][] fanout exchange, the dialect of\nAMQP spoken by [RabbitMQ][]. A RabbitMQ URL only includes the exchange name.\nThe RabbitMQ's server is discovered from the `RABBIT_SERVER_URL` environment\nvariable (which is something like `amqp://guest:guest@localhost:5672/`).\n\n{{< goexample \"gocloud.dev/pubsub/rabbitpubsub.Example_openTopicFromURL\" >}}\n\n[AMQP 0.9.1]: https://www.rabbitmq.com/protocol.html\n[RabbitMQ]: https://www.rabbitmq.com\n\n#### RabbitMQ Constructor {#rabbitmq-ctor}\n\nThe [`rabbitpubsub.OpenTopic`][] constructor opens a RabbitMQ exchange. You\nmust first create an [`*amqp.Connection`][] to your RabbitMQ instance.\n\n{{< goexample \"gocloud.dev/pubsub/rabbitpubsub.ExampleOpenTopic\" >}}\n\n[`*amqp.Connection`]: https://pkg.go.dev/github.com/rabbitmq/amqp091-go#Connection\n[`rabbitpubsub.OpenTopic`]: https://godoc.org/gocloud.dev/pubsub/rabbitpubsub#OpenTopic\n\n### NATS {#nats}\n\nThe Go CDK can publish to a [NATS][] subject. A NATS URL only includes the\nsubject name. The NATS server is discovered from the `NATS_SERVER_URL`\nenvironment variable (which is something like `nats://nats.example.com`).\n\n{{< goexample \"gocloud.dev/pubsub/natspubsub.Example_openTopicFromURL\" >}}\n\nBecause NATS does not natively support metadata, messages sent to NATS will\nbe encoded with [gob][].\n\n[gob]: https://golang.org/pkg/encoding/gob/\n[NATS]: https://nats.io/\n\n#### NATS Constructor {#nats-ctor}\n\nThe [`natspubsub.OpenTopic`][] constructor opens a NATS subject as a topic. You\nmust first create an [`*nats.Conn`][] to your NATS instance.\n\n{{< goexample \"gocloud.dev/pubsub/natspubsub.ExampleOpenTopic\" >}}\n\n[`*nats.Conn`]: https://godoc.org/github.com/nats-io/go-nats#Conn\n[`natspubsub.OpenTopic`]: https://godoc.org/gocloud.dev/pubsub/natspubsub#OpenTopic\n\n### Kafka {#kafka}\n\nThe Go CDK can publish to a [Kafka][] cluster. A Kafka URL only includes the\ntopic name. The brokers in the Kafka cluster are discovered from the\n`KAFKA_BROKERS` environment variable (which is a comma-delimited list of\nhosts, something like `1.2.3.4:9092,5.6.7.8:9092`).\n\n{{< goexample \"gocloud.dev/pubsub/kafkapubsub.Example_openTopicFromURL\" >}}\n\n[Kafka]: https://kafka.apache.org/\n\n#### Kafka Constructor {#kafka-ctor}\n\nThe [`kafkapubsub.OpenTopic`][] constructor opens a Kafka topic to publish\nmessages to. Depending on your Kafka cluster configuration (see\n`auto.create.topics.enable`), you may need to provision the topic beforehand.\n\nIn addition to the list of brokers, you'll need a [`*sarama.Config`][], which\nexposes many knobs that can affect performance and semantics; review and set\nthem carefully. [`kafkapubsub.MinimalConfig`][] provides a minimal config to get\nyou started.\n\n{{< goexample \"gocloud.dev/pubsub/kafkapubsub.ExampleOpenTopic\" >}}\n\n[`*sarama.Config`]: https://godoc.org/github.com/IBM/sarama#Config\n[`kafkapubsub.OpenTopic`]: https://godoc.org/gocloud.dev/pubsub/kafkapubsub#OpenTopic\n[`kafkapubsub.MinimalConfig`]: https://godoc.org/gocloud.dev/pubsub/kafkapubsub#MinimalConfig\n\n### In-Memory {#mem}\n\nThe Go CDK includes an in-memory Pub/Sub provider useful for local testing.\nThe names in `mem://` URLs are a process-wide namespace, so subscriptions to\nthe same name will receive messages posted to that topic. This is detailed\nmore in the [subscription guide][subscribe-mem].\n\n{{< goexample \"gocloud.dev/pubsub/mempubsub.Example_openTopicFromURL\" >}}\n\n[subscribe-mem]: {{< ref \"./subscribe.md#mem\" >}}\n\n#### In-Memory Constructor {#mem-ctor}\n\nTo create an in-memory Pub/Sub topic, use the [`mempubsub.NewTopic`\nfunction][]. You can use the returned topic to create in-memory\nsubscriptions, as detailed in the [subscription guide][subscribe-mem-ctor].\n\n{{< goexample \"gocloud.dev/pubsub/mempubsub.ExampleNewTopic\" >}}\n\n[`mempubsub.NewTopic` function]: https://godoc.org/gocloud.dev/pubsub/mempubsub#NewTopic\n[subscribe-mem-ctor]: {{< ref \"./subscribe.md#mem-ctor\" >}}\n"
  },
  {
    "path": "internal/website/content/howto/pubsub/subscribe.md",
    "content": "---\ntitle: \"Subscribe to Messages from a Topic\"\ndate: 2019-03-26T09:44:33-07:00\nlastmod: 2019-07-29T12:00:00-07:00\nweight: 2\ntoc: true\n---\n\nSubscribing to receive message from a topic with the Go CDK takes three steps:\n\n1. [Open a subscription][] to a topic with the Pub/Sub service of your choice (once per\n   subscription).\n2. [Receive and acknowledge messages][] from the topic. After completing any\n   work related to the message, use the Ack method to prevent it from being\n   redelivered.\n\n[Open a subscription]: {{< ref \"#opening\" >}}\n[Receive and acknowledge messages]: {{< ref \"#receiving\" >}}\n\n<!--more-->\n\n## Opening a Subscription {#opening}\n\nThe first step in subscribing to receive messages from a topic is\nto instantiate a portable [`*pubsub.Subscription`][] for your service.\n\nThe easiest way to do so is to use [`pubsub.OpenSubscription`][]\nand a service-specific URL pointing to the topic, making sure you\n[\"blank import\"][] the driver package to link it in.\n\n```go\nimport (\n    \"context\"\n\n    \"gocloud.dev/pubsub\"\n    _ \"gocloud.dev/pubsub/<driver>\"\n)\n...\nctx := context.Background()\nsubs, err := pubsub.OpenSubscription(ctx, \"<driver-url>\")\nif err != nil {\n    return fmt.Errorf(\"could not open topic subscription: %v\", err)\n}\ndefer subs.Shutdown(ctx)\n// subs is a *pubsub.Subscription; see usage below\n...\n```\n\nSee [Concepts: URLs][] for general background and the [guide below][]\nfor URL usage for each supported service.\n\nAlternatively, if you need fine-grained\ncontrol over the connection settings, you can call the constructor function in\nthe driver package directly (like `gcppubsubv2.OpenSubscription`).\n\n```go\nimport \"gocloud.dev/pubsub/<driver>\"\n...\nsubs, err := <driver>.OpenSubscription(...)\n...\n```\n\nYou may find the [`wire` package][] useful for managing your initialization code\nwhen switching between different backing services.\n\nSee the [guide below][] for constructor usage for each supported service.\n\n[guide below]: {{< ref \"#services\" >}}\n[`pubsub.OpenSubscription`]:\nhttps://godoc.org/gocloud.dev/pubsub#OpenTopic\n[\"blank import\"]: https://golang.org/doc/effective_go.html#blank_import\n[Concepts: URLs]: {{< ref \"/concepts/urls.md\" >}}\n[`wire` package]: http://github.com/google/wire\n\n## Receiving and Acknowledging Messages {#receiving}\n\nA simple subscriber that operates on\n[messages](https://godoc.org/gocloud.dev/pubsub#Message) serially looks like\nthis:\n\n{{< goexample src=\"gocloud.dev/pubsub.ExampleSubscription_Receive\" imports=\"0\" >}}\n\nIf you want your subscriber to operate on incoming messages concurrently,\nyou can start multiple goroutines:\n\n{{< goexample src=\"gocloud.dev/pubsub.ExampleSubscription_Receive_concurrent\" imports=\"0\" >}}\n\nNote that the [semantics of message delivery][] can vary by backing service.\n\n[`*pubsub.Subscription`]: https://godoc.org/gocloud.dev/pubsub#Subscription\n[semantics of message delivery]: https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n\n## Other Usage Samples\n\n* [CLI Sample](https://github.com/google/go-cloud/tree/master/samples/gocdk-pubsub)\n* [Order Processor sample](https://gocloud.dev/tutorials/order/)\n* [pubsub package examples](https://godoc.org/gocloud.dev/pubsub#pkg-examples)\n\n## Supported Pub/Sub Services {#services}\n\n### Google Cloud Pub/Sub {#gcp}\n\nThe Go CDK can receive messages from a Google [Cloud Pub/Sub][] subscription.\nThe URLs use the project ID and the subscription ID.\n\n[Cloud Pub/Sub]: https://cloud.google.com/pubsub/docs/\n\n`pubsub.OpenSubscription` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample \"gocloud.dev/pubsub/gcppubsubv2.Example_openSubscriptionFromURL\" >}}\n\n#### Google Cloud Pub/Sub Constructor {#gcp-ctor}\n\nThe [`gcppubsubv2.OpenSubscription`][] constructor opens a Cloud Pub/Sub\nsubscription. You must first obtain [GCP credentials][GCP creds] and then\ncreate a gRPC connection to Cloud Pub/Sub. (This gRPC connection can be\nreused among subscriptions.)\n\n{{< goexample \"gocloud.dev/pubsub/gcppubsubv2.ExampleOpenSubscription\" >}}\n\n[`gcppubsubv2.OpenSubscription`]: https://godoc.org/gocloud.dev/pubsub/gcppubsubv2#OpenSubscription\n\n### Amazon Simple Queueing Service {#sqs}\n\nThe Go CDK can subscribe to an Amazon [Simple Queueing Service][SQS] (SQS)\ntopic. SQS URLs closely resemble the the queue URL, except the leading\n`https://` is replaced with `awssqs://`. You should specify the `region`\nquery parameter to ensure your application connects to the correct region.\n\n[SQS]: https://aws.amazon.com/sqs/\n\n`pubsub.OpenSubscription` will open a subscription using a default AWS Config.\n\n{{< goexample \"gocloud.dev/pubsub/awssnssqs.Example_openSubscriptionFromURL\" >}}\n\nIf your messages are being sent to SQS directly, or if they are being delivered\nvia an SNS topic with `RawMessageDelivery` enabled, set a `raw=true` query\nparameter in your URL, or set `SubscriberOptions.Raw` to `true` if you're using\nthe constructors. By default, the subscription will use heuristics to identify\nwhether the message bodies are raw or [SNS JSON][].\n\nMessages with a `base64encoded` message attribute will be automatically\n[Base64][] decoded before being returned. See the [SNS publishing guide][]\nor the [SQS publishing guide][] for more details.\n\n[Base64]: https://en.wikipedia.org/wiki/Base64\n[SNS publishing guide]: {{< ref \"./publish.md#sns\" >}}\n[SQS publishing guide]: {{< ref \"./publish.md#sqs\" >}}\n[SNS JSON]: https://aws.amazon.com/sns/faqs/#Raw_message_delivery\n\n#### Amazon SQS Constructor {#sqs-ctor}\n\nThe [`awssnssqs.OpenSubscription`][] constructor opens an SQS queue. You must\nfirst create an AWS Config with the same region as your topic:\n\n{{< goexample \"gocloud.dev/pubsub/awssnssqs.ExampleOpenSubscription\" >}}\n\n[`awssnssqs.OpenSubscription`]: https://godoc.org/gocloud.dev/pubsub/awssnssqs#OpenSubscription\n\n### Azure Service Bus {#azure}\n\nThe Go CDK can recieve messages from an [Azure Service Bus][] subscription.\nThe URL for subscribing is the topic name with the\nsubscription name in the `subscription` query parameter.\n`pubsub.OpenSubscription` will use the environment variable\n`SERVICEBUS_CONNECTION_STRING` to obtain the Service Bus Connection String\nyou need to copy [from the Azure portal][Azure connection string].\n\n{{< goexample \"gocloud.dev/pubsub/azuresb.Example_openSubscriptionFromURL\" >}}\n\n[AMQP 1.0]: https://www.amqp.org/\n[Azure connection string]: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-how-to-use-topics-subscriptions#get-the-connection-string\n[Azure Service Bus]: https://azure.microsoft.com/en-us/services/service-bus/\n\n#### Azure Service Bus Constructor {#azure-ctor}\n\nThe [`azuresb.OpenSubscription`][] constructor opens an Azure Service Bus\nsubscription. You must first connect to the topic and subscription using the\n[Azure Service Bus library][] and then pass the subscription to\n`azuresb.OpenSubscription`. There are also helper functions in the `azuresb`\npackage to make this easier.\n\n{{< goexample \"gocloud.dev/pubsub/azuresb.ExampleOpenSubscription\" >}}\n\n[`azuresb.OpenSubscription`]: https://godoc.org/gocloud.dev/pubsub/azuresb#OpenSubscription\n[Azure Service Bus library]: https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus\n\n### RabbitMQ {#rabbitmq}\n\nThe Go CDK can receive messages from an [AMQP 0.9.1][] queue, the dialect of\nAMQP spoken by [RabbitMQ][]. A RabbitMQ URL only includes the queue name.\nThe RabbitMQ's server is discovered from the `RABBIT_SERVER_URL` environment\nvariable (which is something like `amqp://guest:guest@localhost:5672/`).\n\n{{< goexample \"gocloud.dev/pubsub/rabbitpubsub.Example_openSubscriptionFromURL\" >}}\n\n[AMQP 0.9.1]: https://www.rabbitmq.com/protocol.html\n[RabbitMQ]: https://www.rabbitmq.com\n\n#### RabbitMQ Constructor {#rabbitmq-ctor}\n\nThe [`rabbitpubsub.OpenSubscription`][] constructor opens a RabbitMQ queue.\nYou must first create an [`*amqp.Connection`][] to your RabbitMQ instance.\n\n{{< goexample \"gocloud.dev/pubsub/rabbitpubsub.ExampleOpenSubscription\" >}}\n\n[`*amqp.Connection`]: https://pkg.go.dev/github.com/rabbitmq/amqp091-go#Connection\n[`rabbitpubsub.OpenSubscription`]: https://godoc.org/gocloud.dev/pubsub/rabbitpubsub#OpenSubscription\n\n### NATS {#nats}\n\nThe Go CDK can publish to a [NATS][] subject. A NATS URL only includes the\nsubject name. The NATS server is discovered from the `NATS_SERVER_URL`\nenvironment variable (which is something like `nats://nats.example.com`).\n\n{{< goexample \"gocloud.dev/pubsub/natspubsub.Example_openSubscriptionFromURL\" >}}\n\nNATS guarantees at-most-once delivery; it will never redeliver a message.\nTherefore, `Message.Ack` is a no-op.\n\nTo parse messages [published via the Go CDK][publish#nats], the NATS driver\nwill first attempt to decode the payload using [gob][]. Failing that, it will\nreturn the message payload as the `Data` with no metadata to accomodate\nsubscribing to messages coming from a source not using the Go CDK.\n\n[gob]: https://golang.org/pkg/encoding/gob/\n[NATS]: https://nats.io/\n[publish#nats]: {{< ref \"./publish.md#nats\" >}}\n\n#### NATS Constructor {#nats-ctor}\n\nThe [`natspubsub.OpenSubscription`][] constructor opens a NATS subject as a\ntopic. You must first create an [`*nats.Conn`][] to your NATS instance.\n\n{{< goexample \"gocloud.dev/pubsub/natspubsub.ExampleOpenSubscription\" >}}\n\n[`*nats.Conn`]: https://godoc.org/github.com/nats-io/go-nats#Conn\n[`natspubsub.OpenSubscription`]: https://godoc.org/gocloud.dev/pubsub/natspubsub#OpenSubscription\n\n### Kafka {#kafka}\n\nThe Go CDK can receive messages from a [Kafka][] cluster.\nA Kafka URL includes the consumer group name, plus at least one instance\nof a query parameter specifying the topic to subscribe to.\nThe brokers in the Kafka cluster are discovered from the\n`KAFKA_BROKERS` environment variable (which is a comma-delimited list of\nhosts, something like `1.2.3.4:9092,5.6.7.8:9092`).\n\n{{< goexample \"gocloud.dev/pubsub/kafkapubsub.Example_openSubscriptionFromURL\" >}}\n\n[Kafka]: https://kafka.apache.org/\n\n#### Kafka Constructor {#kafka-ctor}\n\nThe [`kafkapubsub.OpenSubscription`][] constructor creates a consumer in a\nconsumer group, subscribed to one or more topics.\n\nIn addition to the list of brokers, you'll need a [`*sarama.Config`][], which\nexposes many knobs that can affect performance and semantics; review and set\nthem carefully. [`kafkapubsub.MinimalConfig`][] provides a minimal config to\nget you started.\n\n{{< goexample \"gocloud.dev/pubsub/kafkapubsub.ExampleOpenSubscription\" >}}\n\n[`*sarama.Config`]: https://godoc.org/github.com/IBM/sarama#Config\n[`kafkapubsub.OpenSubscription`]: https://godoc.org/gocloud.dev/pubsub/kafkapubsub#OpenSubscription\n[`kafkapubsub.MinimalConfig`]: https://godoc.org/gocloud.dev/pubsub/kafkapubsub#MinimalConfig\n\n### In-Memory {#mem}\n\nThe Go CDK includes an in-memory Pub/Sub provider useful for local testing.\nThe names in `mem://` URLs are a process-wide namespace, so subscriptions to\nthe same name will receive messages posted to that topic. For instance, if\nyou open a topic `mem://topicA` and open two subscriptions with\n`mem://topicA`, you will have two subscriptions to the same topic.\n\n{{< goexample \"gocloud.dev/pubsub/mempubsub.Example_openSubscriptionFromURL\" >}}\n\n#### In-Memory Constructor {#mem-ctor}\n\nTo create a subscription to an in-memory Pub/Sub topic, pass the [topic you\ncreated][publish-mem-ctor] into the [`mempubsub.NewSubscription` function][].\nYou will also need to pass an acknowledgement deadline: once a message is\nreceived, if it is not acknowledged after the deadline elapses, then it will be\nredelivered.\n\n{{< goexample \"gocloud.dev/pubsub/mempubsub.ExampleNewSubscription\" >}}\n\n[`mempubsub.NewSubscription` function]: https://godoc.org/gocloud.dev/pubsub/mempubsub#NewSubscription\n[publish-mem-ctor]: {{< ref \"./publish.md#mem-ctor\" >}}\n"
  },
  {
    "path": "internal/website/content/howto/runtimevar/_index.md",
    "content": "---\ntitle: \"Runtime Configuration\"\ndate: 2019-07-11T12:00:00-07:00\nlastmod: 2020-12-23T12:00:00-07:00\nshowInSidenav: true\ntoc: true\n---\n\nThe [`runtimevar` package][] provides an easy and portable way to watch runtime\nconfiguration variables. This guide shows how to work with runtime configuration\nvariables using the Go CDK.\n\n<!--more-->\n\nSubpackages contain driver implementations of runtimevar for various services,\nincluding Cloud and on-prem solutions. You can develop your application locally\nusing [`filevar`][] or [`constantvar`][], then deploy it to multiple Cloud\nproviders with minimal initialization reconfiguration.\n\n[`runtimevar` package]: https://godoc.org/gocloud.dev/runtimevar\n[`filevar`]: https://godoc.org/gocloud.dev/runtimevar/filevar\n[`constantvar`]: https://godoc.org/gocloud.dev/runtimevar/constantvar\n\n## Opening a Variable {#opening}\n\nThe first step in watching a variable is to instantiate a portable\n[`*runtimevar.Variable`][] for your service.\n\nThe easiest way to do so is to use [`runtimevar.OpenVariable`][] and a service-specific URL pointing\nto the variable, making sure you [\"blank import\"][] the driver package to link\nit in.\n\n```go\nimport (\n\t\"gocloud.dev/runtimevar\"\n\t_ \"gocloud.dev/runtimevar/<driver>\"\n)\n...\nv, err := runtimevar.OpenVariable(context.Background(), \"<driver-url>\")\nif err != nil {\n    return fmt.Errorf(\"could not open variable: %v\", err)\n}\ndefer v.Close()\n// v is a *runtimevar.Variable; see usage below\n...\n```\n\nSee [Concepts: URLs][] for general background and the [guide below][]\nfor URL usage for each supported service.\n\nAlternatively, if you need fine-grained control\nover the connection settings, you can call the constructor function in the\ndriver package directly (like `etcdvar.OpenVariable`).\n\n```go\nimport \"gocloud.dev/runtimevar/<driver>\"\n...\nv, err := <driver>.OpenVariable(...)\n...\n```\n\nYou may find the [`wire` package][] useful for managing your initialization code\nwhen switching between different backing services.\n\nSee the [guide below][] for constructor usage for each supported service.\n\nWhen opening the variable, you can provide a [decoder][] parameter (either as a\n[query parameter][] for URLs, or explicitly to the constructor) to specify\nwhether the raw value stored in the variable is interpreted as a `string`, a\n`[]byte`, or as JSON. Here's an example of using a JSON encoder:\n\n{{< goexample src=\"gocloud.dev/runtimevar.Example_jsonDecoder\" imports=\"0\" >}}\n\n[`*runtimevar.Variable`]: https://godoc.org/gocloud.dev/runtimevar#Variable\n[`runtimevar.OpenVariable`]: https://godoc.org/gocloud.dev/runtimevar#OpenVariable\n[\"blank import\"]: https://golang.org/doc/effective_go.html#blank_import\n[Concepts: URLs]: {{< ref \"/concepts/urls.md\" >}}\n[decoder]: https://godoc.org/gocloud.dev/runtimevar#Decoder\n[guide below]: {{< ref \"#services\" >}}\n[query parameter]: https://godoc.org/gocloud.dev/runtimevar#DecoderByName\n[`wire` package]: http://github.com/google/wire\n\n## Using a Variable {#using}\n\nOnce you have opened a `runtimevar.Variable` for the provider you want, you can\nuse it portably.\n\n### Latest {#latest}\n\nThe easiest way to a `Variable` is to use the [`Variable.Latest`][] method. It\nreturns the latest good [`Snapshot`][] of the variable value, blocking if no\ngood value has *ever* been detected. The dynamic type of `Snapshot.Value`\ndepends on the decoder you provided when creating the `Variable`.\n\n{{< goexample src=\"gocloud.dev/runtimevar.ExampleVariable_Latest\" imports=\"0\" >}}\n\nTo avoid blocking, you can pass an already-`Done` context. You can also use\n[`Variable.CheckHealth`][], which reports as healthy when `Latest` will\nreturn a value without blocking.\n\n[`Variable.Latest`]: https://godoc.org/gocloud.dev/runtimevar#Variable.Latest\n[`Variable.CheckHealth`]: https://godoc.org/gocloud.dev/runtimevar#Variable.CheckHealth\n[`Snapshot`]: https://godoc.org/gocloud.dev/runtimevar#Snapshot\n\n### Watch {#watch}\n\n`Variable` also has a [`Watch`][] method for obtaining the value of a variable;\nit has different semantics than `Latest` and may be useful in some scenarios. We\nrecommend starting with `Latest` as it's conceptually simpler to work with.\n\n[`Watch`]: https://godoc.org/gocloud.dev/runtimevar#Variable.Watch\n\n## Other Usage Samples\n\n* [CLI Sample](https://github.com/google/go-cloud/tree/master/samples/gocdk-runtimevar)\n* [Guestbook sample](https://gocloud.dev/tutorials/guestbook/)\n* [runtimevar package examples](https://godoc.org/gocloud.dev/runtimevar#pkg-examples)\n\n## Supported Services {#services}\n\n### GCP Runtime Configurator {#gcprc}\n\nTo open a variable stored in [GCP Runtime Configurator][] via a URL, you can use\nthe `runtimevar.OpenVariable` function as shown in the example below.\n\n[GCP Runtime Configurator]: https://cloud.google.com/deployment-manager/runtime-configurator/\n\n`runtimevar.OpenVariable` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample\n\"gocloud.dev/runtimevar/gcpruntimeconfig.Example_openVariableFromURL\" >}}\n\n#### GCP Constructor {#gcprc-ctor}\n\nThe [`gcpruntimeconfig.OpenVariable`][] constructor opens a Runtime Configurator\nvariable.\n\n{{< goexample \"gocloud.dev/runtimevar/gcpruntimeconfig.ExampleOpenVariable\" >}}\n\n[`gcpruntimeconfig.OpenVariable`]: https://godoc.org/gocloud.dev/runtimevar/gcpruntimeconfig#OpenVariable\n\n### GCP Secret Manager {#gcpsm}\n\nTo open a variable stored in [GCP Secret Manager][] via a URL, you can use\nthe `runtimevar.OpenVariable` function as shown in the example below.\n\n[GCP Secret Manager]: https://cloud.google.com/secret-manager\n\n`runtimevar.OpenVariable` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample\n\"gocloud.dev/runtimevar/gcpsecretmanager.Example_openVariableFromURL\" >}}\n\n#### GCP Constructor {#gcpsm-ctor}\n\nThe [`gcpsecretmanager.OpenVariable`][] constructor opens a Secret Manager\nvariable.\n\n{{< goexample \"gocloud.dev/runtimevar/gcpsecretmanager.ExampleOpenVariable\" >}}\n\n[`gcpsecretmanager.OpenVariable`]: https://godoc.org/gocloud.dev/runtimevar/gcpsecretmanager#OpenVariable\n\n### AWS Parameter Store {#awsps}\n\nTo open a variable stored in [AWS Parameter Store][] via a URL, you can use the\n`runtimevar.OpenVariable` function as shown in the example below.\n\n[AWS Parameter Store]:\nhttps://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html\n\nIt will create an AWS Config based on the AWS SDK V2; see [AWS V2 Config][] to learn more.\n\n[AWS V2 Config]: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/\n\n{{< goexample\n\"gocloud.dev/runtimevar/awsparamstore.Example_openVariableFromURL\" >}}\n\n#### AWS Constructor {#awsps-ctor}\n\nThe [`awsparamstore.OpenVariable`][] constructor opens a Parameter Store\nvariable.\n\n{{< goexample \"gocloud.dev/runtimevar/awsparamstore.ExampleOpenVariable\" >}}\n\n[`awsparamstore.OpenVariable`]:\nhttps://godoc.org/gocloud.dev/runtimevar/awsparamstore#OpenVariable\n\n### AWS Secrets Manager {#awssm}\n\nTo open a variable stored in [AWS Secrets Manager][] via a URL, you can use the\n`runtimevar.OpenVariable` function as shown in the example below.\n\n[AWS Secrets Manager]:\nhttps://aws.amazon.com/secrets-manager\n\nIt will create an AWS Config based on the AWS SDK V2; see [AWS V2 Config][] to learn more.\n\n[AWS V2 Config]: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/\n\n{{< goexample\n\"gocloud.dev/runtimevar/awssecretsmanager.Example_openVariableFromURL\" >}}\n\n#### AWS Constructor {#awssm-ctor}\n\nThe [`awssecretsmanager.OpenVariable`][] constructor opens a Secrets Manager\nvariable.\n\n{{< goexample \"gocloud.dev/runtimevar/awssecretsmanager.ExampleOpenVariable\" >}}\n\n[`awssecretsmanager.OpenVariable`]:\nhttps://godoc.org/gocloud.dev/runtimevar/awssecretsmanager#OpenVariable\n\nNote that both `secretsmanager:GetSecretValue` and `secretsmanager:DescribeSecret` actions must be allowed in\nthe caller's IAM policy.\n\n### etcd {#etcd}\n\n*NOTE*: Support for `etcd` has been temporarily dropped due to dependency\nissues. See https://github.com/google/go-cloud/issues/2914.\n\nYou can use `runtimevar.etcd` in Go CDK version `v0.20.0` or earlier.\n\n### HTTP {#http}\n\n`httpvar` supports watching a variable via an HTTP request. Use\n`runtimevar.OpenVariable` with a regular URL starting with `http` or `https`.\n`httpvar` will periodically make an HTTP `GET` request to that URL, with the\n`decode` URL parameter removed (if present).\n\n{{< goexample \"gocloud.dev/runtimevar/httpvar.Example_openVariableFromURL\" >}}\n\n#### HTTP Constructor {#http-ctor}\n\nThe [`httpvar.OpenVariable`][] constructor opens a variable with a `http.Client`\nand a URL.\n\n{{< goexample \"gocloud.dev/runtimevar/httpvar.ExampleOpenVariable\" >}}\n\n[`httpvar.OpenVariable`]: https://godoc.org/gocloud.dev/runtimevar/httpvar#OpenVariable\n\n### HashiCorp Vault {#hashivault}\n\n`hashivault` supports watching a variable stored in [HashiCorp Vault's KV Secrets Engine][].\nUse `runtimevar.OpenVariable` with a URL starting with `hashivault://`.\n\nThe default URL opener will use the environment variables `VAULT_SERVER_URL` (or\n`VAULT_ADDR`) for the server address, and `VAULT_SERVER_TOKEN` (or `VAULT_TOKEN`)\nfor authentication.\n\n[HashiCorp Vault's KV Secrets Engine]: https://www.vaultproject.io/docs/secrets/kv\n\n{{< goexample \"gocloud.dev/runtimevar/hashivault.Example_openVariableFromURL\" >}}\n\n#### HashiCorp Vault Constructor {#hashivault-ctor}\n\nThe [`hashivault.OpenVariable`][] constructor opens a variable with a Vault client.\n\n{{< goexample \"gocloud.dev/runtimevar/hashivault.ExampleOpenVariable\" >}}\n\n[`hashivault.OpenVariable`]: https://godoc.org/gocloud.dev/runtimevar/hashivault#OpenVariable\n\n### Blob {#blob}\n\n`blobvar` supports watching a variable based on the contents of a\n[Go CDK blob][]. Set the environment variable `BLOBVAR_BUCKET_URL` to the URL\nof the bucket, and then use `runtimevar.OpenVariable` as shown below.\n`blobvar` will periodically re-fetch the contents of the blob.\n\n{{< goexample \"gocloud.dev/runtimevar/blobvar.Example_openVariableFromURL\" >}}\n\n[Go CDK blob]: https://gocloud.dev/howto/blob/\n\nYou can also use [`blobvar.OpenVariable`][].\n\n[`blobvar.OpenVariable`]: https://godoc.org/gocloud.dev/runtimevar/blobvar#OpenVariable\n\n### Local {#local}\n\nYou can create an in-memory variable (useful for testing) using `constantvar`:\n\n{{< goexample \"gocloud.dev/runtimevar/constantvar.Example_openVariableFromURL\" >}}\n\nAlternatively, you can create a variable based on the contents of a file using\n`filevar`:\n\n{{< goexample \"gocloud.dev/runtimevar/filevar.Example_openVariableFromURL\" >}}\n"
  },
  {
    "path": "internal/website/content/howto/secrets/_index.md",
    "content": "---\ntitle: \"Secrets\"\ndate: 2019-03-21T17:42:18-07:00\nlastmod: 2019-07-29T12:00:00-07:00\nshowInSidenav: true\ntoc: true\n---\n\nThe [`secrets` package][] provides access to key management services in a\nportable way. This guide shows how to work with secrets in the Go CDK.\n\n<!--more-->\n\nCloud applications frequently need to store sensitive information like web\nAPI credentials or encryption keys in a medium that is not fully secure. For\nexample, an application that interacts with GitHub needs to store its OAuth2\nclient secret and use it when obtaining end-user credentials. If this\ninformation was compromised, it could allow someone else to impersonate the\napplication. In order to keep such information secret and secure, you can\nencrypt the data, but then you need to worry about rotating the encryption\nkeys and distributing them securely to all of your application servers.\nMost Cloud providers include a key management service to perform these tasks,\nusually with hardware-level security and audit logging.\n\nThe [`secrets` package][] supports encryption and decryption operations.\n\nSubpackages contain driver implementations of secrets for various services,\nincluding Cloud and on-prem solutions. You can develop your application\nlocally using [`localsecrets`][], then deploy it to multiple Cloud providers with\nminimal initialization reconfiguration.\n\n[`secrets` package]: https://godoc.org/gocloud.dev/secrets\n[`localsecrets`]: https://godoc.org/gocloud.dev/secrets/localsecrets\n\n## Opening a SecretsKeeper {#opening}\n\nThe first step in working with your secrets is\nto instantiate a portable [`*secrets.Keeper`][] for your service.\n\nThe easiest way to do so is to use [`secrets.OpenKeeper`][] and a service-specific\nURL pointing to the keeper, making sure you [\"blank import\"][] the driver\npackage to link it in.\n\n```go\nimport (\n\t\"gocloud.dev/secrets\"\n\t_ \"gocloud.dev/secrets/<driver>\"\n)\n...\nkeeper, err := secrets.OpenKeeper(context.Background(), \"<driver-url>\")\nif err != nil {\n    return fmt.Errorf(\"could not open keeper: %v\", err)\n}\ndefer keeper.Close()\n// keeper is a *secrets.Keeper; see usage below\n...\n``` \n\nSee [Concepts: URLs][] for general background and the [guide below][]\nfor URL usage for each supported service.\n\nAlternatively, if you need\nfine-grained control over the connection settings, you can call the constructor\nfunction in the driver package directly (like `awskms.OpenKeeper`).\n\n```go\nimport \"gocloud.dev/secrets/<driver>\"\n...\nkeeper, err := <driver>.OpenKeeper(...)\n...\n```\n\nYou may find the [`wire` package][] useful for managing your initialization code\nwhen switching between different backing services.\n\nSee the [guide below][] for constructor usage for each supported service.\n\n[`*secrets.Keeper`]: https://godoc.org/gocloud.dev/secrets#Keeper\n[`secrets.OpenKeeper`]:\nhttps://godoc.org/gocloud.dev/secrets#OpenKeeper\n[\"blank import\"]: https://golang.org/doc/effective_go.html#blank_import\n[Concepts: URLs]: {{< ref \"/concepts/urls.md\" >}}\n[guide below]: {{< ref \"#services\" >}}\n[`wire` package]: http://github.com/google/wire\n\n## Using a SecretsKeeper {#using}\n\nOnce you have [opened a secrets keeper][] for the secrets provider you want,\nyou can encrypt and decrypt small messages using the keeper.\n\n[opened a secrets keeper]: {{< ref \"#opening\" >}}\n\n### Encrypting Data {#encrypt}\n\nTo encrypt data with a keeper, you call `Encrypt` with the byte slice you\nwant to encrypt.\n\n{{< goexample src=\"gocloud.dev/secrets.ExampleKeeper_Encrypt\" imports=\"0\" >}}\n\n### Decrypting Data {#decrypt}\n\nTo decrypt data with a keeper, you call `Decrypt` with the byte slice you\nwant to decrypt. This should be data that you obtained from a previous call\nto `Encrypt` with a keeper that uses the same secret material (e.g. two AWS\nKMS keepers created with the same customer master key ID). The `Decrypt`\nmethod will return an error if the input data is corrupted.\n\n{{< goexample src=\"gocloud.dev/secrets.ExampleKeeper_Decrypt\" imports=\"0\" >}}\n\n### Large Messages {#large-messages}\n\nThe secrets keeper API is designed to work with small messages (i.e. <10 KiB\nin length.) Cloud key management services are high latency; using them for\nencrypting or decrypting large amounts of data is prohibitively slow (and in\nsome providers not permitted). If you need your application to encrypt or\ndecrypt large amounts of data, you should:\n\n1. Generate a key for the encryption algorithm (16KiB chunks with\n   [`secretbox`][] is a reasonable approach).\n2. Encrypt the key with secret keeper.\n3. Store the encrypted key somewhere accessible to the application.\n\nWhen your application needs to encrypt or decrypt a large message:\n\n1. Decrypt the key from storage using the secret keeper\n2. Use the decrypted key to encrypt or decrypt the message inside your\n   application.\n\n[`secretbox`]: https://godoc.org/golang.org/x/crypto/nacl/secretbox\n\n### Keep Secrets in Configuration {#runtimevar}\n\nOnce you have [opened a secrets keeper][] for the secrets provider you want,\nyou can use a secrets keeper to access sensitive configuration stored in an\nencrypted `runtimevar`.\n\nFirst, you create a [`*runtimevar.Decoder`][] configured to use your secrets\nkeeper using [`runtimevar.DecryptDecode`][]. In this example, we assume the\ndata is a plain string, but the configuration could be a more structured\ntype.\n\n{{< goexample src=\"gocloud.dev/runtimevar.ExampleDecryptDecode\" imports=\"0\" >}}\n\nThen you can pass the decoder to the runtime configuration provider of your\nchoice. See the [Runtime Configuration How-To Guide][] for more on how to set up\nruntime configuration.\n\n[opened a secrets keeper]: {{< ref \"#opening\" >}}\n[Runtime Configuration How-To Guide]: {{< ref \"/howto/runtimevar/_index.md\" >}}\n[`*runtimevar.Decoder`]: https://godoc.org/gocloud.dev/runtimevar#Decoder\n[`runtimevar.DecryptDecode`]: https://godoc.org/gocloud.dev/runtimevar#DecryptDecode\n\n## Other Usage Samples\n\n* [CLI Sample](https://github.com/google/go-cloud/tree/master/samples/gocdk-secrets)\n* [Secrets package examples](https://godoc.org/gocloud.dev/secrets#example-package)\n\n## Supported Services {#services}\n\n### Google Cloud Key Management Service {#gcp}\n\nThe Go CDK can use keys from Google Cloud Platform's [Key Management\nService][GCP KMS] (GCP KMS) to keep information secret. GCP KMS URLs are\nsimilar to [key resource IDs][].\n\n[GCP KMS]: https://cloud.google.com/kms/\n[key resource IDs]: https://cloud.google.com/kms/docs/object-hierarchy#key\n\n`secrets.OpenKeeper` will use Application Default Credentials; if you have\nauthenticated via [`gcloud auth application-default login`][], it will use those credentials. See\n[Application Default Credentials][GCP creds] to learn about authentication\nalternatives, including using environment variables.\n\n[GCP creds]: https://cloud.google.com/docs/authentication/production\n[`gcloud auth application-default login`]: https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login\n\n{{< goexample \"gocloud.dev/secrets/gcpkms.Example_openFromURL\" >}}\n\n#### GCP Constructor {#gcp-ctor}\n\nThe [`gcpkms.OpenKeeper`][] constructor opens a GCP KMS key. You must first\nobtain [GCP credentials][GCP creds] and then create a gRPC connection to GCP KMS.\n\n{{< goexample \"gocloud.dev/secrets/gcpkms.ExampleOpenKeeper\" >}}\n\n[`gcpkms.OpenKeeper`]: https://godoc.org/gocloud.dev/secrets/gcpkms#OpenKeeper\n\n### AWS Key Management Service {#aws}\n\nThe Go CDK can use customer master keys from Amazon Web Service's [Key\nManagement Service][AWS KMS] (AWS KMS) to keep information secret. AWS KMS\nURLs can use the key's ID, alias, or Amazon Resource Name (ARN) to identify\nthe key. You should specify the `region` query parameter to ensure your\napplication connects to the correct region.\n\n[AWS KMS]: https://aws.amazon.com/kms/\n\nIt will create an AWS Config based on the AWS SDK V2; see [AWS V2 Config][] to learn more.\n\n[AWS V2 Config]: https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/\n\n{{< goexample \"gocloud.dev/secrets/awskms.Example_openFromURL\" >}}\n\n#### AWS Constructor {#aws-ctor}\n\nThe [`awskms.OpenKeeper`][] constructor opens a customer master key. You must\nfirst create an AWS Config with the same region as your key and then\nconnect to KMS:\n\n{{< goexample \"gocloud.dev/secrets/awskms.ExampleOpenKeeper\" >}}\n\n[`awskms.OpenKeeper`]: https://godoc.org/gocloud.dev/secrets/awskms#OpenKeeper\n\n### Azure KeyVault {#azure}\n\nThe Go CDK can use keys from [Azure KeyVault][] to keep information secret.\n`secrets.OpenKeeper` will use [default credentials from the environment][Azure\nEnvironment Auth], unless you set the environment variable\n`AZURE_KEYVAULT_AUTH_VIA_CLI` to `true`, in which case it will use\ncredentials from the `az` command line.\n\nAzure KeyVault URLs are based on the [Azure Key object identifer][Azure Key ID]:\n\n{{< goexample \"gocloud.dev/secrets/azurekeyvault.Example_openFromURL\" >}}\n\n[Azure KeyVault]: https://azure.microsoft.com/en-us/services/key-vault/\n[Azure Environment Auth]: https://docs.microsoft.com/en-us/go/azure/azure-sdk-go-authorization#use-environment-based-authentication\n[Azure Key ID]: https://docs.microsoft.com/en-us/azure/key-vault/about-keys-secrets-and-certificates\n\n#### Azure Constructor {#azure-ctor}\n\nThe [`azurekeyvault.OpenKeeper`][] constructor opens an Azure KeyVault key.\n\n{{< goexample \"gocloud.dev/secrets/azurekeyvault.ExampleOpenKeeper\" >}}\n\n[`azurekeyvault.OpenKeeper`]: https://godoc.org/gocloud.dev/secrets/azurekeyvault#OpenKeeper\n\n### HashiCorp Vault {#vault}\n\nThe Go CDK can use the [transit secrets engine][] in [Vault][] to keep\ninformation secret. Vault URLs only specify the key ID. The Vault server\nendpoint and authentication token are specified using the environment\nvariables `VAULT_SERVER_URL` and `VAULT_SERVER_TOKEN`, respectively.\n\n{{< goexample \"gocloud.dev/secrets/hashivault.Example_openFromURL\" >}}\n\n[Vault]: https://www.vaultproject.io/\n[transit secrets engine]: https://www.vaultproject.io/docs/secrets/transit/index.html\n\n#### HashiCorp Vault Constructor {#vault-ctor}\n\nThe [`hashivault.OpenKeeper`][] constructor opens a transit secrets engine\nkey. You must first connect to your Vault instance.\n\n{{< goexample \"gocloud.dev/secrets/hashivault.ExampleOpenKeeper\" >}}\n\n[`hashivault.OpenKeeper`]: https://godoc.org/gocloud.dev/secrets/hashivault#OpenKeeper\n\n### Local Secrets {#local}\n\nThe Go CDK can use local encryption for keeping secrets. Internally, it uses\nthe [NaCl secret box][] algorithm to perform encryption and authentication.\n\n{{< goexample \"gocloud.dev/secrets/localsecrets.Example_openFromURL\" >}}\n\n[NaCl secret box]: https://godoc.org/golang.org/x/crypto/nacl/secretbox\n\n#### Local Secrets Constructor {#local-ctor}\n\nThe [`localsecrets.NewKeeper`][] constructor takes in its secret material as\na `[]byte`.\n\n{{< goexample \"gocloud.dev/secrets/localsecrets.ExampleNewKeeper\" >}}\n\n[`localsecrets.NewKeeper`]: https://godoc.org/gocloud.dev/secrets/localsecrets#NewKeeper\n\n"
  },
  {
    "path": "internal/website/content/howto/server/_index.md",
    "content": "---\ntitle: \"Server\"\ndate: 2019-06-21T10:36:43-07:00\nshowInSidenav: true\ntoc: true\n---\n\nThe Go CDK's `server` package provides a pre-configured HTTP server with \ndiagnostic hooks for request logging, health checks, and trace exporting via \nOpenCensus. This guide will show you how to start up and shut down the server,\nas well as how to work with the request logging and health checks.\n\n## Starting up the server\n\nThe Go CDK Server constructor takes an `http.Handler` and an `Options` struct. \nThe simplest way to start the server is to use `http.DefaultServeMux` and\npass `nil` for the options.\n\n{{< goexample src=\"gocloud.dev/server.ExampleServer\" >}}\n\n### Adding a request logger\n\nYou can use the `server.Options` struct to specify a request logger.\n\nThe example is shown with the Go CDK [`requestlog`](https://godoc.org/gocloud.dev/server/requestlog) package's `NCSALogger`.\nTo get logs in the Stackdriver JSON format, use `NewStackdriverLogger` in place\nof `NewNCSALogger`.\n\n{{< goexample src=\"gocloud.dev/server.ExampleServer_withRequestLogger\" >}}\n\n### Adding health checks\n\nThe Go CDK `server` package affords a hook for you to define health checks for\nyour application and see the results at `/healthz/readiness`. The server also\nruns an endpoint at `/healthz/liveness`, which is a conventional name for a\nliveness check and is where Kubernetes, if you are using it, will look.\n\nHealth checks are an important part of application monitoring, and readiness\nchecks are subtly different than liveness checks. The liveness check will return\n`200 OK` if the server can serve requests. But because each application may have\na different definition of what it means to be \"healthy\" (perhaps your\napplication has a dependency on a back end service), you will need to define a\nconcrete type to implement the `health.Checker` interface and define a \n`CheckHealth` method specific to your application for readiness checks.\n\n```go\n// customHealthCheck is an example health check. It implements the\n// health.Checker interface and reports the server is healthy when the healthy\n// field is set to true.\ntype customHealthCheck struct {\n\tmu      sync.RWMutex\n\thealthy bool\n}\n\n// customHealthCheck implements the health.Checker interface because it has a\n// CheckHealth method.\nfunc (h *customHealthCheck) CheckHealth() error {\n\th.mu.RLock()\n\tdefer h.mu.RUnlock()\n\tif !h.healthy {\n\t\treturn errors.New(\"not ready yet!\")\n\t}\n\treturn nil\n}\n```\n\n{{< goexample src=\"gocloud.dev/server.ExampleServer_withHealthChecks\" >}}\n\n## Other Usage Samples\n\n* [Minimal server sample](https://github.com/google/go-cloud/tree/master/samples/server)\n* [Guestbook sample](https://gocloud.dev/tutorials/guestbook/)\n"
  },
  {
    "path": "internal/website/content/howto/sql/_index.md",
    "content": "---\ntitle: \"MySQL/PostgreSQL\"\ndate: 2019-06-21T09:26:56-07:00\nshowInSidenav: true\ntoc: true\n---\n\nConnecting to Cloud providers' hosted database services requires additional\nsteps to ensure the security of the connection. For example, each of GCP,\nAWS and Azure require the use of custom certificate authorities to be\nconfigured in the client. GCP requires a custom proxy with authentication\ncredentials. The Go CDK makes opening these connections easier while still\nusing the standard [`*sql.DB`][] type.\n\n[`*sql.DB`]: https://godoc.org/database/sql#DB\n\n<!--more-->\n\n## Local or On-Premise {#local}\n\nThe Go CDK uses the same [URL opener pattern][] as seen in other Go CDK APIs. It\ndiffers from the standard library's `sql.Open` in that it automatically\ninstruments the connection with [OpenCensus metrics][].\n\nThe portable function for MySQL is [`mysql.Open`][]:\n\n{{< goexample \"gocloud.dev/mysql.ExampleOpen\" >}}\n\nAnd the portable function for PostgreSQL is [`postgres.Open`][]:\n\n{{< goexample \"gocloud.dev/postgres.ExampleOpen\" >}}\n\n[`mysql.Open`]: https://godoc.org/gocloud.dev/mysql#Open\n[OpenCensus metrics]: https://opencensus.io/integrations/sql/go_sql/\n[`postgres.Open`]: https://godoc.org/gocloud.dev/postgres#Open\n[URL opener pattern]: {{< ref \"/concepts/urls.md\" >}}\n\n## GCP {#gcp}\n\nUsers of [GCP Cloud SQL for MySQL][] should import the `gocloud.dev/mysql/gcpmysql` package:\n\n{{< goexample \"gocloud.dev/mysql/gcpmysql.Example\" >}}\n\nUsers of [GCP Cloud SQL for PostgreSQL][] should import the `gocloud.dev/postgres/gcppostgres` package:\n\n{{< goexample \"gocloud.dev/postgres/gcppostgres.Example\" >}}\n\n[GCP Cloud SQL for MySQL]: https://cloud.google.com/sql/docs/mysql/\n[GCP Cloud SQL for PostgreSQL]: https://cloud.google.com/sql/docs/postgres/\n\n## AWS {#aws}\n\nUsers of [AWS RDS for MySQL][] should import the `gocloud.dev/mysql/awsmysql` package:\n\n{{< goexample \"gocloud.dev/mysql/awsmysql.Example\" >}}\n\nUsers of [AWS RDS for PostgreSQL][] should import the `gocloud.dev/postgres/awspostgres` package:\n\n{{< goexample \"gocloud.dev/postgres/awspostgres.Example\" >}}\n\n[AWS RDS for MySQL]: https://aws.amazon.com/rds/mysql/\n[AWS RDS for PostgreSQL]: https://aws.amazon.com/rds/postgresql/\n\n## Azure {#azure}\n\nUsers of [Azure Database for MySQL][] should import the `gocloud.dev/mysql/azuremysql` package:\n\n{{< goexample \"gocloud.dev/mysql/azuremysql.Example\" >}}\n\n[Azure Database for MySQL]: https://azure.microsoft.com/en-us/services/mysql/\n\n## Other Usage Samples\n\n* [Guestbook sample](https://gocloud.dev/tutorials/guestbook/)\n"
  },
  {
    "path": "internal/website/content/internal/batcher/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/batcher\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/escape/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/escape\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/gcerr/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/gcerr\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/oc/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/oc\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/openurl/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/openurl\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/otel/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/otel\ntype: pkg\n---\n\nPackage otel provides OpenTelemetry integration for Go Cloud Development Kit, supporting tracing, metrics, and logging. It serves as the primary instrumentation framework, replacing the deprecated OpenCensus implementation.\n"
  },
  {
    "path": "internal/website/content/internal/releasehelper/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/releasehelper\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/retry/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/retry\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/cmdtest/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing/cmdtest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/octest/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing/octest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/oteltest/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing/oteltest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/setup/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing/setup\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/terraform/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing/terraform\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/testing/test-summary/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/testing/test-summary\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/trace/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/trace\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/useragent/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/useragent\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/internal/website/gatherexamples/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/website/gatherexamples\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/mysql/_index.md",
    "content": "---\ntitle: gocloud.dev/mysql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/mysql/awsmysql/_index.md",
    "content": "---\ntitle: gocloud.dev/mysql/awsmysql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/mysql/azuremysql/_index.md",
    "content": "---\ntitle: gocloud.dev/mysql/azuremysql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/mysql/cloudmysql/_index.md",
    "content": "---\ntitle: gocloud.dev/mysql/cloudmysql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/mysql/gcpmysql/_index.md",
    "content": "---\ntitle: gocloud.dev/mysql/gcpmysql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/mysql/rdsmysql/_index.md",
    "content": "---\ntitle: gocloud.dev/mysql/rdsmysql\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/postgres/_index.md",
    "content": "---\ntitle: gocloud.dev/postgres\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/postgres/awspostgres/_index.md",
    "content": "---\ntitle: gocloud.dev/postgres/awspostgres\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/postgres/cloudpostgres/_index.md",
    "content": "---\ntitle: gocloud.dev/postgres/cloudpostgres\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/postgres/gcppostgres/_index.md",
    "content": "---\ntitle: gocloud.dev/postgres/gcppostgres\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/postgres/rdspostgres/_index.md",
    "content": "---\ntitle: gocloud.dev/postgres/rdspostgres\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/awssnssqs/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/awssnssqs\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/azurepubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/azurepubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/azuresb/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/azuresb\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/batcher/_index.md",
    "content": "---\ntitle: gocloud.dev/internal/batcher\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/driver/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/driver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/drivertest/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/drivertest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/gcppubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/gcppubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/gcppubsubv2/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/gcppubsubv2\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/kafkapubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/kafkapubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/mempubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/mempubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/natspubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/natspubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/pubsub/rabbitpubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/pubsub/rabbitpubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/requestlog/_index.md",
    "content": "---\ntitle: gocloud.dev/requestlog\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/awsparamstore/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/awsparamstore\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/awssecretsmanager/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/awssecretsmanager\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/blobvar/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/blobvar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/constantvar/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/constantvar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/driver/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/driver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/drivertest/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/drivertest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/etcdvar/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/etcdvar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/filevar/_demo/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/filevar/_demo\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/filevar/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/filevar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/gcpruntimeconfig/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/gcpruntimeconfig\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/gcpsecretmanager/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/gcpsecretmanager\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/hashivault/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/hashivault\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/runtimevar/httpvar/_index.md",
    "content": "---\ntitle: gocloud.dev/runtimevar/httpvar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/appengine/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/appengine\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/gocdk-blob/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/gocdk-blob\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/gocdk-docstore/_index.md",
    "content": "---\ntitle: \"Gocdk Docstore\"\ndate: 2019-06-11T14:33:50-07:00\nshowInSidenav: false  # only for sections (any level)\npagesInSidenav: false  # only for top-level sections\nweight: 0\n---\n\n"
  },
  {
    "path": "internal/website/content/samples/gocdk-pubsub/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/gocdk-pubsub\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/gocdk-runtimevar/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/gocdk-runtimevar\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/gocdk-secrets/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/gocdk-secrets\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/guestbook/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/guestbook\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/guestbook/aws/provision_db/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/guestbook/aws/provision_db\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/guestbook/gcp/deploy/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/guestbook/gcp/deploy\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/guestbook/gcp/provision_db/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/guestbook/gcp/provision_db\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/guestbook/localdb/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/guestbook/localdb\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/order/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/order\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/server/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/server\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/samples/tutorial/_index.md",
    "content": "---\ntitle: gocloud.dev/samples/tutorial\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/awskms/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/awskms\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/azurekeyvault/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/azurekeyvault\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/driver/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/driver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/drivertest/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/drivertest\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/gcpkms/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/gcpkms\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/hashivault/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/hashivault\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/localsecrets/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/localsecrets\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/secrets/vault/_index.md",
    "content": "---\ntitle: gocloud.dev/secrets/vault\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/_index.md",
    "content": "---\ntitle: gocloud.dev/server\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/driver/_index.md",
    "content": "---\ntitle: gocloud.dev/server/driver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/health/_index.md",
    "content": "---\ntitle: gocloud.dev/server/health\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/health/sqlhealth/_index.md",
    "content": "---\ntitle: gocloud.dev/server/health/sqlhealth\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/requestlog/_index.md",
    "content": "---\ntitle: gocloud.dev/server/requestlog\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/sdserver/_index.md",
    "content": "---\ntitle: gocloud.dev/server/sdserver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/server/xrayserver/_index.md",
    "content": "---\ntitle: gocloud.dev/server/xrayserver\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/tests/aws/app/_index.md",
    "content": "---\ntitle: gocloud.dev/tests/aws/app\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/tests/gcp/app/_index.md",
    "content": "---\ntitle: gocloud.dev/tests/gcp/app\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/tests/internal/testutil/_index.md",
    "content": "---\ntitle: gocloud.dev/tests/internal/testutil\ntype: pkg\n---\n"
  },
  {
    "path": "internal/website/content/tutorials/_index.md",
    "content": "---\ntitle: \"Tutorials\"\ndate: 2019-03-19T18:45:15-07:00\nshowInSidenav: true\npagesInSidenav: true\nweight: 1\n---\n\n"
  },
  {
    "path": "internal/website/content/tutorials/cli-uploader.md",
    "content": "---\ntitle: \"Tutorial: Command-Line Uploader\"\nlinkTitle: \"Command-Line Uploader\"\ndate: 2019-03-19T18:45:53-07:00\nweight: 1\n---\n\nThis quickstart will build a command line application called `upload` that\nuploads files to blob storage on GCP, AWS, and Azure. Blob storage stores binary\ndata under a string key, and is one of the most frequently used cloud\nservices.\n\n<!--more-->\n\nWhen we're done, our command line application will work like this:\n\n```shell\n# uploads gopher.png to GCS\n$ ./upload gs://go-cloud-bucket gopher.png\n\n# uploads gopher.png to S3\n$ ./upload s3://go-cloud-bucket gopher.png\n\n# uploads gopher.png to Azure\n$ ./upload azblob://go-cloud-bucket gopher.png\n```\n\n(You can download the finished tutorial [from GitHub][samples/tutorial]).\n\n[samples/tutorial]: https://github.com/google/go-cloud/tree/master/samples/tutorial/\n\n## Setup\n\nWe start with a skeleton for our program to read from command-line\narguments to configure the bucket URL.\n\n```go\n// Command upload saves files to blob storage on GCP, AWS, and Azure.\npackage main\n\nimport (\n    \"log\"\n    \"os\"\n)\n\nfunc main() {\n    // Define our input.\n    if len(os.Args) != 3 {\n        log.Fatal(\"usage: upload BUCKET_URL FILE\")\n    }\n    bucketURL := os.Args[1]\n    file := os.Args[2]\n    _, _ = bucketURL, file\n}\n```\n\nNow that we have a basic skeleton in place, let's start filling in the pieces.\n\n## Connecting to the bucket\n\nThe easiest way to open a portable bucket API is with `blob.OpenBucket`.\n\n```go\npackage main\n\nimport (\n    // previous imports omitted\n\n    \"gocloud.dev/blob\"\n)\n\nfunc main() {\n    // previous code omitted\n\n    // Open a connection to the bucket.\n    b, err := blob.OpenBucket(context.Background(), bucketURL)\n    if err != nil {\n        log.Fatalf(\"Failed to setup bucket: %s\", err)\n    }\n    defer b.Close()\n}\n```\n\nThis is all we need in the `main` function to connect to the bucket. However,\nas written, this function call will always fail: the Go CDK does not link in any\ncloud-specific implementations of `blob.OpenBucket` unless you specifically\ndepend on them. This ensures you're only depending on the code you need.\nTo link in implementations, use blank imports:\n\n```go\npackage main\n\nimport (\n    // previous imports omitted\n\n    // Import the blob packages we want to be able to open.\n    _ \"gocloud.dev/blob/azureblob\"\n    _ \"gocloud.dev/blob/gcsblob\"\n    _ \"gocloud.dev/blob/s3blob\"\n)\n\nfunc main() {\n    // ...\n}\n```\n\nWith the setup done, we're ready to use the bucket connection. Note, as a design\nprinciple of the Go CDK, `blob.Bucket` does not support creating a bucket and\ninstead focuses solely on interacting with it. This separates the concerns of\nprovisioning infrastructure and using infrastructure.\n\n## Reading the file\n\nWe need to read our file into a slice of bytes before uploading it. The process\nis the usual one:\n\n```go\npackage main\n\nimport (\n    // previous imports omitted\n    \"os\"\n    \"io/ioutil\"\n)\n\nfunc main() {\n    // ... previous code omitted\n\n    // Prepare the file for upload.\n    data, err := os.ReadFile(file)\n    if err != nil {\n        log.Fatalf(\"Failed to read file: %s\", err)\n    }\n}\n```\n\n## Writing the file to the bucket\n\nNow, we have `data`, our file in a slice of bytes. Let's get to the fun part and\nwrite those bytes to the bucket!\n\n```go\npackage main\n\n// No new imports.\n\nfunc main() {\n    // ...\n\n    w, err := b.NewWriter(ctx, file, nil)\n    if err != nil {\n        log.Fatalf(\"Failed to obtain writer: %s\", err)\n    }\n    _, err = w.Write(data)\n    if err != nil {\n        log.Fatalf(\"Failed to write to bucket: %s\", err)\n    }\n    if err := w.Close(); err != nil {\n        log.Fatalf(\"Failed to close: %s\", err)\n    }\n}\n```\n\nFirst, we create a writer based on the bucket connection. In addition to a\n`context.Context` type, the method takes the key under which the data will be\nstored and the mime type of the data.\n\nThe call to `NewWriter` creates a `blob.Writer`, which implements `io.Writer`.\nWith the writer, we call `Write` passing in the data. In response, we get the\nnumber of bytes written and any error that might have occurred.\n\nFinally, we close the writer with `Close` and check the error.\n\nAlternatively, we could have used the shortcut `b.WriteAll(ctx, file, data,\nnil)`.\n\n## Uploading an image\n\nThat's it! Let's try it out. As setup, we will need to create a\n[GCS bucket][gcs-bucket], an [S3 bucket][s3-bucket], and an\n[Azure container][azure-container]. In the code above, I called that bucket\n`go-cloud-bucket`, but you can change that to match whatever your bucket is\ncalled. Of course, you are free to try the code on any subset of Cloud\nproviders.\n\n*   For GCP, you will need to login with\n    [gcloud](https://cloud.google.com/sdk/install). If you do not want to\n    install `gcloud`, see\n    [here](https://cloud.google.com/docs/authentication/production) for\n    alternatives.\n*   For AWS, you will need an access key ID and a secret access key. See\n    [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey)\n    for details. You then need to set the `AWS_REGION` environment variable to\n    the region your bucket is in.\n*   For Azure, you will need to add your storage account name and key as\n    environment variables (`AZURE_STORAGE_ACCOUNT` and\n    `AZURE_STORAGE_KEY`, respectively). See\n    [here](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal)\n    for details.\n\nWith our buckets created and our credentials set up, we'll build the program\nfirst:\n\n```shell\n$ go build -o upload\n```\n\nThen, we will send `gopher.png` (in the same directory as this README) to GCS:\n\n```shell\n$ ./upload gs://go-cloud-bucket gopher.png\n```\n\nThen, we send that same gopher to S3:\n\n```shell\n$ ./upload s3://go-cloud-bucket?region=us-west-1 gopher.png\n```\n\nFinally, we send that same gopher to Azure:\n\n```shell\n$ ./upload azblob://go-cloud-bucket gopher.png\n```\n\nIf we check the buckets, we should see our gopher in each of them! We're done!\n\n[s3-bucket]: https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html\n[gcs-bucket]: https://cloud.google.com/storage/docs/creating-buckets\n[azure-container]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction\n\n## Wrapping Up\n\nIn conclusion, we have a program that can seamlessly switch between multiple\nCloud storage providers using just one code path. You can see the finished\ntutorial [on GitHub][samples/tutorial].\n\nWe hope this example demonstrates how having one type for multiple clouds is a\nhuge win for simplicity and maintainability. By writing an application using a\ngeneric interface like `*blob.Bucket`, we retain the option of using\ninfrastructure in whichever cloud that best fits our needs all without having to\nworry about a rewrite. If you want to learn more, you can read about\n[Structuring Portable Code][].\n\nIf you want to see how to deploy a Go CDK application, see [other tutorials][].\nIf you want to see how to use Go CDK APIs in your application, see the\n[how-to guides][].\n\n[how-to guides]: {{< ref \"/howto/_index.md\" >}}\n[other tutorials]: {{< ref \"/tutorials/_index.md\" >}}\n[Structuring Portable Code]: {{< ref \"/concepts/structure/index.md\" >}}\n"
  },
  {
    "path": "internal/website/content/tutorials/guestbook.md",
    "content": "---\ntitle: \"Tutorial: Guestbook Application\"\nlinkTitle: \"Guestbook\"\ndate: 2019-07-10T16:58:00-07:00\nweight: 2\ntoc: true\n---\n\nIn this tutorial, we will deploy an existing Go CDK application called Guestbook\nlocally, then on Google Cloud Platform (GCP), Amazon Web Services (AWS), and\nAzure.\n\n<!--more-->\n\nGuestbook is a sample application that records visitors' messages and displays a\ncloud banner with an administrative message. The main business logic is written\nin a cloud-agnostic manner using MySQL, the generic blob API, and the generic\nruntimevar API. All platform-specific code is set up by\n[Wire](https://github.com/google/wire).\n\n## Prerequisites\n\nYou will need to install the following software for this tutorial:\n\n-   [Git](https://git-scm.com/)\n-   [Go](https://golang.org/doc/install)\n-   [Wire](https://github.com/google/wire/blob/master/README.md#installing)\n-   [Docker Desktop](https://docs.docker.com/install/)\n-   [Terraform](https://www.terraform.io/intro/getting-started/install.html)\n\n### Cloning the Sample\n\nBefore you can do anything else, you need to clone the Go CDK repository. The\nrepository contains the Guestbook sample.\n\n```shell\ngit clone https://github.com/google/go-cloud.git\ncd go-cloud/samples/guestbook\n```\n\n## Building\n\nRun the following in the `samples/guestbook` directory:\n\n```shell\ngo generate && go build\n```\n\n## Running Locally\n\nYou will need to run a local MySQL database server and create a local message of\nthe day. `localdb/main.go` runs the local MySQL database server using Docker:\n\n```shell\ngo get ./localdb/... # Get package dependencies.\ngo run localdb/main.go\n```\n\nIn another terminal, run the `guestbook` application:\n\n```shell\n# Set a local Message of the Day.\necho 'Hello, World!' > motd.txt\n\n# Run the server.\n# For blob, it uses fileblob, pointing at the local directory ./blobs.\n# For runtimevar, it uses filevar, pointing at the local file ./motd.txt.\n#   You can update the ./motd.txt while the server is running, refresh\n#   the page, and see it change.\n./guestbook -env=local -bucket=blobs -motd_var=motd.txt\n```\n\nYour server is now running on http://localhost:8080/.\n\nYou can stop the MySQL database server with Ctrl-\\\\. MySQL ignores Ctrl-C\n(SIGINT).\n\n## Running on Google Cloud Platform (GCP)\n\nIf you want to run this sample on GCP, you need to create a project, download\nthe [gcloud CLI][], install `kubectl` and log in.\n\n[gcloud CLI]: https://cloud.google.com/sdk/downloads\n\n```shell\n# Install kubectl.\ngcloud components install kubectl\n\n# Opens a browser to log you into GCP.\ngcloud auth login\n```\n\n### Provision resources\n\nYou can now use Terraform to set up your project.\n\n```shell\ngcloud auth application-default login\ncd gcp\nterraform init\n\n# Terraform will prompt you for your GCP project ID, desired region,\n# and desired zone.\nterraform apply\n```\n\n### Deploy the application\n\nThis sample provides a script for building the Guestbook binary and deploying it\nto the Kubernetes cluster created by Terraform.\n\n```shell\ngo run deploy/main.go\n```\n\nThe deploy script will display the URL of your running service.\n\n### Cleanup\n\nTo clean up the created resources, run `terraform destroy` inside the `gcp`\ndirectory using the same variables you entered during `terraform apply`.\n\n## Running on Amazon Web Services (AWS)\n\nIf you want to run this sample on AWS, you need to set up an account, download\nthe [AWS command line interface][], and log in. There's\n[help here][AWS Config Help] if you need it.\n\n```shell\naws configure\n```\n\n[AWS command line interface]: https://docs.aws.amazon.com/cli/latest/userguide/installing.html\n[AWS Config Help]: https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html\n\n### Agree to the Debian Terms and Conditions\n\nYou have to agree to the [Debian Terms and Conditions][] in order to provision\nthe resources. Click through the \"Continue to Subscribe\" button at the top, then\nlog in to your AWS account and subscribe to Debian.\n\n[Debian Terms and Conditions]: https://aws.amazon.com/marketplace/pp?sku=55q52qvgjfpdj2fpfy9mb1lo4\n\n### SSH Key\n\nYou will also need an SSH key to SSH into the EC2 instance. If you don't already\nhave one, you can follow [this guide from GitHub][GitHub SSH]. Follow the\ninstructions for \"Adding your key to the ssh-agent\" if you want the key to\npersist across terminal sessions.\n\n```shell\nssh-add\n```\n\n[GitHub SSH]: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/\n\n### Provision resources\n\nYou can now use Terraform to set up your project. This will create an EC2\ninstance you can SSH to and run your binary.\n\n```shell\n# Build for deploying on the AWS Linux VM.\nGOOS=linux GOARCH=amd64 go build\n\n# Enter AWS directory from samples/guestbook.\ncd aws\nterraform init\n\n# Provisioning can take up to 10 minutes.\n# Keep track of the output of this command as it is needed later.\n# You can replace us-west-1 with whatever region you want.\nterraform apply -var region=us-west-1 -var ssh_public_key=\"$(cat ~/.ssh/id_rsa.pub)\"\n```\n\n### Deploy the application\n\nYou now need to connect to the new remote server to execute the `guestbook`\nbinary. The final output of `terraform apply` lists the variables `guestbook`\nrequires as arguments. Here's an example, with actual strings replaced with\n`[redacted]`:\n\n```shell\n# Output from \"terraform apply\" command....\n<snip>\n\nOutputs:\n\nbucket = [redacted]\ndatabase_host = [redacted]\ndatabase_root_password = <sensitive>\ninstance_host = [redacted]\nparamstore_var = /guestbook/motd\nregion = us-west-1\n\n# Print out the database root password, since we'll need it below\n# Terraform hides it by default in the Outputs above.\nlocalhost$ terraform output database_root_password\n[redacted]\n\n# SSH into the EC2 instance.\nlocalhost$ ssh \"admin@$( terraform output instance_host )\"\n\n# Fill in each command-line argument with the values from the\n# Terraform output above.\nserver$ AWS_REGION=<your region> ./guestbook \\\n  -env=aws \\\n  -bucket=<your bucket> \\\n  -db_host=<your database_host> \\\n  -db_user=root \\\n  -db_password=<your database_root_password> \\\n  -motd_var=/guestbook/motd\n```\n\nYou can now visit the server at `http://<your instance_host>:8080/`.\n\n### Cleanup\n\nTo clean up the created resources, run `terraform destroy` inside the `aws`\ndirectory using the same variables you entered during `terraform apply`.\n\n## Running on Azure\n\nThe Go CDK doesn't have support for SQL on Azure yet ([#1305][]), so we'll run\nMySQL and the binary locally. This tutorial will show how to use Azure storage\nfor the MOTD and Gopher logo.\n\nYou first need to set up an Azure account and install the [Azure CLI][]. Then,\nuse the `az` CLI to log in.\n\n[#1305]: https://github.com/google/go-cloud/issues/1305\n[Azure CLI]: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest\n\n```shell\naz login\n```\n\n### Provision resources\n\nWe'll use Terraform to set up your project.\n\n```shell\n# Enter the Azure directory from samples/guestbook.\ncd azure\nterraform init\n\n# Provisioning can take up to 10 minutes.\n# Keep track of the output of this command as it is needed later.\nterraform apply -var location=\"West US\"\n\n<snip>\nOutputs:\n\naccess_key = [redacted]\nstorage_account = [redacated]\nstorage_container = [redacted]\n```\n\n### Deploy the application\n\nYou will need to run a local MySQL database server, similar to what we did for\nrunning locally earlier. Open a new terminal window, and run:\n\n```shell\ncd .. # back up to samples/guestbook\ngo get ./localdb/... # Get package dependencies.\ngo run localdb/main.go\n```\n\nIn the original terminal, add your Azure credentials to the environment and run\nthe `guestbook` application:\n\n```shell\n# You should be in the \"samples/guestbook/azure\" directory.\n\n# Enter the storage_account from the Terraform output earlier.\nexport AZURE_STORAGE_ACCOUNT=<your storage_account>\n# Enter the access_key from the Terraform output earlier.\nexport AZURE_STORAGE_KEY=<your access_key>\n\n# Run the binary.\n# Fill in the -bucket command-line argument with the value from the Terraform\n# output.\n#\n./guestbook -env=azure -bucket=<your storage_container> -motd_var=motd\n```\n\nYour server is now running on http://localhost:8080/.\n\nYou can stop the MySQL database server with Ctrl-\\\\. MySQL ignores Ctrl-C\n(SIGINT).\n\n### Cleanup\n\nTo clean up the created resources, run `terraform destroy` inside the `azure`\ndirectory using the same variables you entered during `terraform apply`.\n\n## Gophers\n\nThe Go gopher was designed by Renee French and used under the\n[Creative Commons 3.0 Attributions](https://creativecommons.org/licenses/by/3.0/)\nlicense.\n"
  },
  {
    "path": "internal/website/content/tutorials/order.md",
    "content": "---\ntitle: \"Order Processor\"\ndate: 2019-07-09T10:22:39-04:00\nweight: 5\ntoc: true\n---\n\nIn this tutorial, we will run a Go CDK application called Order Processor\non a local machine.\n\n<!--more-->\n\nOrder Processor is a sample application that lets users place orders to convert\nimages to PNG format, and to view the results. The main business logic is\nwritten in a cloud-agnostic manner using the generic APIs for blob, pubsub and\ndocstore.\n\nThe Order Processor application has two parts: a web frontend, and an\nimage-processing backend called a processor. They communicate over a pubsub\ntopic, store order information in a docstore collection, and store image files\nin a blob bucket.\n\n## Prerequisites\n\nYou will need to install the following software for this tutorial:\n\n-   [Git](https://git-scm.com/)\n-   [Go](https://golang.org/doc/install)\n\nThen you need to clone the Go CDK repository. The\nrepository contains the Order Processor sample.\n\n```shell\ngit clone https://github.com/google/go-cloud.git\ncd go-cloud/samples/order\n```\n\n## Building\n\nRun the following in the `samples/order` directory:\n\n```shell\ngo build\n```\n\n## Running Locally\n\nIf you run `order` with no arguments, both the frontend and the processor will\nrun together in the same process. \n\n```shell\n./order\n```\nThe frontend is now running on http://localhost:10538.\n\nVisit the home page in your browser and click \"Convert an Image\".\n\nEnter an email address (it need not be real) and select any image file from your\ncomputer. Then click Submit.\n\nNow visit the order list page by returning to the home page and clicking \"List\nConversions\". It may take a few seconds to process the order (thanks to an\nartificial delay in the processor), so refresh the page until you see your order\nin the list.\n\nThen click on the output image link to see the converted image in your browser.\n\n## Running on a Cloud Provider\n\nTo run the Order Processor application on a cloud provider like Google Cloud\nPlatform, Amazon AWS or Microsoft Azure, you will have to provision\nsome resources:\n\n- A storage bucket, to hold the image files. (See the \n  [`blob` How-To Guide](https://gocloud.dev/howto/blob/).)\n- A Pub/Sub topic and subscription, for requests from the frontend to the\n  processor. (See the [`pubsub` How-To Guide](https://gocloud.dev/howto/pubsub/).)\n- A document store collection to store order metadata. (See the [`docstore` How-To\n  Guide](https://gocloud.dev/howto/docstore/).)\n  \n\nThen launch the `order` program with flags that provide the URLs to your\nresources. Run `order -help` to see the list of flags.\n\n"
  },
  {
    "path": "internal/website/data/examples.json",
    "content": "{\n\t\"gocloud.dev/blob.ExampleBucket_Delete\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"if err := bucket.Delete(ctx, \\\"foo.txt\\\"); err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/blob.ExampleBucket_NewRangeReader\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"io\\\"\\n\\t\\\"os\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"// Open the key \\\"foo.txt\\\" for reading at offset 1024 and read up to 4096 bytes.\\nr, err := bucket.NewRangeReader(ctx, \\\"foo.txt\\\", 1024, 4096, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer r.Close()\\n// Copy from the read range to stdout.\\nif _, err := io.Copy(os.Stdout, r); err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/blob.ExampleBucket_NewReader\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\t\\\"io\\\"\\n\\t\\\"os\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"// Open the key \\\"foo.txt\\\" for reading with the default options.\\nr, err := bucket.NewReader(ctx, \\\"foo.txt\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer r.Close()\\n// Readers also have a limited view of the blob's metadata.\\nfmt.Println(\\\"Content-Type:\\\", r.ContentType())\\nfmt.Println()\\n// Copy from the reader to stdout.\\nif _, err := io.Copy(os.Stdout, r); err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/blob.ExampleBucket_NewWriter\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"// Open the key \\\"foo.txt\\\" for writing with the default options.\\nw, err := bucket.NewWriter(ctx, \\\"foo.txt\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\n_, writeErr := fmt.Fprintln(w, \\\"Hello, World!\\\")\\n// Always check the return value of Close when writing.\\ncloseErr := w.Close()\\nif writeErr != nil {\\n\\tlog.Fatal(writeErr)\\n}\\nif closeErr != nil {\\n\\tlog.Fatal(closeErr)\\n}\"\n\t},\n\t\"gocloud.dev/blob.ExampleBucket_NewWriter_cancel\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"// Create a cancelable context from the existing context.\\nwriteCtx, cancelWrite := context.WithCancel(ctx)\\ndefer cancelWrite()\\n\\n// Open the key \\\"foo.txt\\\" for writing with the default options.\\nw, err := bucket.NewWriter(writeCtx, \\\"foo.txt\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Assume some writes happened and we encountered an error.\\n// Now we want to abort the write.\\n\\nif err != nil {\\n\\t// First cancel the context.\\n\\tcancelWrite()\\n\\t// You must still close the writer to avoid leaking resources.\\n\\tw.Close()\\n}\"\n\t},\n\t\"gocloud.dev/blob.ExamplePrefixedBucket\": {\n\t\t\"imports\": \"import \\\"gocloud.dev/blob\\\"\",\n\t\t\"code\": \"// Wrap the bucket using blob.PrefixedBucket.\\n// The prefix should end with \\\"/\\\", so that the resulting bucket operates\\n// in a subfolder.\\nbucket = blob.PrefixedBucket(bucket, \\\"a/subfolder/\\\")\\n\\n// The original bucket is no longer usable; it has been closed.\\n// The wrapped bucket should be closed when done.\\ndefer bucket.Close()\\n\\n// Bucket operations on \\u003ckey\\u003e will be translated to \\\"a/subfolder/\\u003ckey\\u003e\\\".\"\n\t},\n\t\"gocloud.dev/blob.ExampleSingleKeyBucket\": {\n\t\t\"imports\": \"import \\\"gocloud.dev/blob\\\"\",\n\t\t\"code\": \"// Wrap the bucket using blob.SingleKeyBucket.\\n// The bucket always references the provided key.\\nbucket = blob.SingleKeyBucket(bucket, \\\"foo.txt\\\")\\n\\n// The original bucket is no longer usable; it has been closed.\\n// The wrapped bucket should be closed when done.\\ndefer bucket.Close()\\n\\n// Bucket operations will ignore the passed-in key and always reference foo.txt.\"\n\t},\n\t\"gocloud.dev/blob.Example_openFromURLWithPrefix\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"// Connect to a bucket using a URL, using the \\\"prefix\\\" query parameter to\\n// target a subfolder in the bucket.\\n// The prefix should end with \\\"/\\\", so that the resulting bucket operates\\n// in a subfolder.\\nb, err := blob.OpenBucket(ctx, \\\"mem://?prefix=a/subfolder/\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer b.Close()\\n\\n// Bucket operations on \\u003ckey\\u003e will be translated to \\\"a/subfolder/\\u003ckey\\u003e\\\".\"\n\t},\n\t\"gocloud.dev/blob.Example_openFromURLWithSingleKey\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n)\",\n\t\t\"code\": \"// Connect to a bucket using a URL, using the \\\"key\\\" query parameter to\\n// make the bucket always reference that key.\\nb, err := blob.OpenBucket(ctx, \\\"mem://?key=foo.txt\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer b.Close()\\n\\n// Bucket operations will ignore the passed-in key and always reference foo.txt.\"\n\t},\n\t\"gocloud.dev/blob/azureblob.ExampleOpenBucket\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob/azureblob\\\"\\n)\",\n\t\t\"code\": \"const (\\n\\t// The storage container to access.\\n\\tcontainerName = \\\"my-container\\\"\\n)\\n\\n// Construct the service URL.\\n// There are many forms of service URLs, see ServiceURLOptions.\\nopts := azureblob.NewDefaultServiceURLOptions()\\nserviceURL, err := azureblob.NewServiceURL(opts)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// There are many ways to authenticate to Azure.\\n// This approach uses environment variables as described in azureblob package\\n// documentation.\\n// For example, to use shared key authentication, you would set\\n// AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_KEY.\\n// To use a SAS token, you would set AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_SAS_TOKEN.\\n// You can also construct a client using the azblob constructors directly, like\\n// azblob.NewServiceClientWithSharedKey.\\nclient, err := azureblob.NewDefaultClient(serviceURL, containerName)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Create a *blob.Bucket.\\nb, err := azureblob.OpenBucket(ctx, client, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer b.Close()\\n\\n// Now we can use b to read or write files to the container.\\ndata, err := b.ReadAll(ctx, \\\"my-key\\\")\\nif err != nil {\\n\\treturn err\\n}\\n_ = data\"\n\t},\n\t\"gocloud.dev/blob/azureblob.Example_openBucketFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n\\t_ \\\"gocloud.dev/blob/azureblob\\\"\\n)\",\n\t\t\"code\": \"// blob.OpenBucket creates a *blob.Bucket from a URL.\\n// This URL will open the container \\\"my-container\\\" using default\\n// credentials found in environment variables as documented in\\n// the package.\\n// Assuming AZURE_STORAGE_ACCOUNT is set to \\\"myaccount\\\",\\n// and other options aren't set, the service URL will look like:\\n// \\\"https://myaccount.blob.core.windows.net/my-container\\\".\\nbucket, err := blob.OpenBucket(ctx, \\\"azblob://my-container\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer bucket.Close()\\n\\n// Another example, against a local emulator.\\n// Assuming AZURE_STORAGE_ACCOUNT is set to \\\"myaccount\\\",\\n// the service URL will look like:\\n// \\\"http://localhost:10001/myaccount/my-container\\\".\\nlocalbucket, err := blob.OpenBucket(ctx, \\\"azblob://my-container?protocol=http\\u0026domain=localhost:10001\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer localbucket.Close()\"\n\t},\n\t\"gocloud.dev/blob/fileblob.ExampleOpenBucket\": {\n\t\t\"imports\": \"import (\\n\\t\\\"os\\\"\\n\\n\\t\\\"gocloud.dev/blob/fileblob\\\"\\n)\",\n\t\t\"code\": \"// The directory you pass to fileblob.OpenBucket must exist first.\\nconst myDir = \\\"path/to/local/directory\\\"\\nif err := os.MkdirAll(myDir, 0o777); err != nil {\\n\\treturn err\\n}\\n\\n// Create a file-based bucket.\\nbucket, err := fileblob.OpenBucket(myDir, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer bucket.Close()\"\n\t},\n\t\"gocloud.dev/blob/gcsblob.ExampleOpenBucket\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob/gcsblob\\\"\\n\\t\\\"gocloud.dev/gcp\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Create an HTTP client.\\n// This example uses the default HTTP transport and the credentials\\n// created above.\\nclient, err := gcp.NewHTTPClient(\\n\\tgcp.DefaultTransport(),\\n\\tgcp.CredentialsTokenSource(creds))\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Create a *blob.Bucket.\\nbucket, err := gcsblob.OpenBucket(ctx, client, \\\"my-bucket\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer bucket.Close()\"\n\t},\n\t\"gocloud.dev/blob/gcsblob.Example_openBucketFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n\\t_ \\\"gocloud.dev/blob/gcsblob\\\"\\n)\",\n\t\t\"code\": \"// blob.OpenBucket creates a *blob.Bucket from a URL.\\n// This URL will open the bucket \\\"my-bucket\\\" using default credentials.\\nbucket, err := blob.OpenBucket(ctx, \\\"gs://my-bucket\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer bucket.Close()\"\n\t},\n\t\"gocloud.dev/blob/memblob.ExampleOpenBucket\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/blob/memblob\\\"\\n)\",\n\t\t\"code\": \"// Create an in-memory bucket.\\nbucket := memblob.OpenBucket(nil)\\ndefer bucket.Close()\\n\\n// Now we can use bucket to read or write files to the bucket.\\nerr := bucket.WriteAll(ctx, \\\"my-key\\\", []byte(\\\"hello world\\\"), nil)\\nif err != nil {\\n\\treturn err\\n}\\ndata, err := bucket.ReadAll(ctx, \\\"my-key\\\")\\nif err != nil {\\n\\treturn err\\n}\\nfmt.Println(string(data))\\n\\n// Output:\\n// hello world\"\n\t},\n\t\"gocloud.dev/blob/s3blob.ExampleOpenBucket\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/s3\\\"\\n\\t\\\"gocloud.dev/blob/s3blob\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Create a *blob.Bucket.\\nclient := s3.NewFromConfig(cfg)\\nbucket, err := s3blob.OpenBucket(ctx, client, \\\"my-bucket\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer bucket.Close()\"\n\t},\n\t\"gocloud.dev/blob/s3blob.Example_openBucketFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/blob\\\"\\n\\t_ \\\"gocloud.dev/blob/s3blob\\\"\\n)\",\n\t\t\"code\": \"// blob.OpenBucket creates a *blob.Bucket from a URL.\\nbucket, err := blob.OpenBucket(ctx, \\\"s3://my-bucket?region=us-west-1\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer bucket.Close()\"\n\t},\n\t\"gocloud.dev/docstore.ExampleCollection_Actions_bulkWrite\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n)\",\n\t\t\"code\": \"// Build an ActionList to create several new players, then execute it.\\n// The actions may happen in any order.\\nnewPlayers := []string{\\\"Pat\\\", \\\"Mel\\\", \\\"Fran\\\"}\\nactionList := coll.Actions()\\nfor _, p := range newPlayers {\\n\\tactionList.Create(\\u0026Player{Name: p, Score: 0})\\n}\\nif err := actionList.Do(ctx); err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/docstore.ExampleCollection_Actions_getAfterWrite\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n)\",\n\t\t\"code\": \"// Add a document to the collection, then retrieve it.\\n// Because both the Put and the Get refer to the same document,\\n// they happen in order.\\ngot := Player{Name: \\\"Pat\\\"}\\nerr := coll.Actions().Put(\\u0026Player{Name: \\\"Pat\\\", Score: 88}).Get(\\u0026got).Do(ctx)\\nif err != nil {\\n\\treturn err\\n}\\nfmt.Println(got.Name, got.Score)\"\n\t},\n\t\"gocloud.dev/docstore.ExampleCollection_Update\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n)\",\n\t\t\"code\": \"// Create a player.\\npat := \\u0026Player{Name: \\\"Pat\\\", Score: 0}\\nif err := coll.Create(ctx, pat); err != nil {\\n\\treturn err\\n}\\n\\n// Set the score to a new value.\\npat2 := \\u0026Player{Name: \\\"Pat\\\"}\\nerr := coll.Actions().Update(pat, docstore.Mods{\\\"Score\\\": 15}).Get(pat2).Do(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Increment the score.\\nerr = coll.Actions().Update(pat, docstore.Mods{\\\"Score\\\": docstore.Increment(5)}).Get(pat2).Do(ctx)\\nif err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/docstore.ExampleQuery_Get\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\t\\\"io\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n)\",\n\t\t\"code\": \"// Ask for all players with scores at least 20.\\niter := coll.Query().Where(\\\"Score\\\", \\\"\\u003e=\\\", 20).OrderBy(\\\"Score\\\", docstore.Descending).Get(ctx)\\ndefer iter.Stop()\\n\\n// Query.Get returns an iterator. Call Next on it until io.EOF.\\nfor {\\n\\tvar p Player\\n\\terr := iter.Next(ctx, \\u0026p)\\n\\tif err == io.EOF {\\n\\t\\tbreak\\n\\t} else if err != nil {\\n\\t\\treturn err\\n\\t} else {\\n\\t\\tfmt.Printf(\\\"%s: %d\\\\n\\\", p.Name, p.Score)\\n\\t}\\n}\"\n\t},\n\t\"gocloud.dev/docstore.Example_optimisticLocking\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\t\\\"time\\\"\\n\\n\\t\\\"gocloud.dev/docstore/memdocstore\\\"\\n\\t\\\"gocloud.dev/gcerrors\\\"\\n)\",\n\t\t\"code\": \"coll, err := memdocstore.OpenCollection(\\\"Name\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\\n\\n// Create a player.\\npat := \\u0026Player{Name: \\\"Pat\\\", Score: 7}\\nif err := coll.Create(ctx, pat); err != nil {\\n\\treturn err\\n}\\nfmt.Println(pat) // memdocstore revisions are deterministic, so we can check the output.\\n\\n// Double a player's score. We cannot use Update to multiply, so we use optimistic\\n// locking instead.\\n\\n// We may have to retry a few times; put a time limit on that.\\nctx, cancel := context.WithTimeout(ctx, 30*time.Second)\\ndefer cancel()\\nfor {\\n\\t// Get the document.\\n\\tplayer := \\u0026Player{Name: \\\"Pat\\\"}\\n\\tif err := coll.Get(ctx, player); err != nil {\\n\\t\\treturn err\\n\\t}\\n\\t// player.DocstoreRevision is set to the document's revision.\\n\\n\\t// Modify the document locally.\\n\\tplayer.Score *= 2\\n\\n\\t// Replace the document. player.DocstoreRevision will be checked against\\n\\t// the stored document's revision.\\n\\terr := coll.Replace(ctx, player)\\n\\tif err != nil {\\n\\t\\tcode := gcerrors.Code(err)\\n\\t\\t// On FailedPrecondition or NotFound, try again.\\n\\t\\tif code == gcerrors.FailedPrecondition || code == gcerrors.NotFound {\\n\\t\\t\\tcontinue\\n\\t\\t}\\n\\t\\treturn err\\n\\t}\\n\\tfmt.Println(player)\\n\\tbreak\\n}\\n\\n// Output:\\n// \\u0026{Pat 7 1}\\n// \\u0026{Pat 14 2}\"\n\t},\n\t\"gocloud.dev/docstore/awsdynamodb/v2.ExampleOpenCollection\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/dynamodb\\\"\\n\\t\\\"gocloud.dev/docstore/awsdynamodb/v2\\\"\\n)\",\n\t\t\"code\": \"cfg, err := config.LoadDefaultConfig(context.Background())\\nif err != nil {\\n\\treturn err\\n}\\ncoll, err := awsdynamodb.OpenCollection(\\n\\tdynamodb.NewFromConfig(cfg), \\\"docstore-test\\\", \\\"partitionKeyField\\\", \\\"\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/awsdynamodb/v2.Example_openCollectionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t_ \\\"gocloud.dev/docstore/awsdynamodb\\\"\\n)\",\n\t\t\"code\": \"// docstore.OpenCollection creates a *docstore.Collection from a URL.\\ncoll, err := docstore.OpenCollection(ctx, \\\"dynamodb://my-table?partition_key=name\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/gcpfirestore.ExampleOpenCollection\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore/gcpfirestore\\\"\\n\\t\\\"gocloud.dev/gcp\\\"\\n)\",\n\t\t\"code\": \"creds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\nclient, _, err := gcpfirestore.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\nresourceID := gcpfirestore.CollectionResourceID(\\\"my-project\\\", \\\"my-collection\\\")\\ncoll, err := gcpfirestore.OpenCollection(client, resourceID, \\\"userID\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/gcpfirestore.ExampleOpenCollectionWithNameFunc\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t\\\"gocloud.dev/docstore/gcpfirestore\\\"\\n\\t\\\"gocloud.dev/gcp\\\"\\n)\",\n\t\t\"code\": \"creds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\nclient, _, err := gcpfirestore.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// The name of a document is constructed from the Game and Player fields.\\nnameFromDocument := func(doc docstore.Document) string {\\n\\ths := doc.(*HighScore)\\n\\treturn hs.Game + \\\"|\\\" + hs.Player\\n}\\n\\nresourceID := gcpfirestore.CollectionResourceID(\\\"my-project\\\", \\\"my-collection\\\")\\ncoll, err := gcpfirestore.OpenCollectionWithNameFunc(client, resourceID, nameFromDocument, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/gcpfirestore.Example_openCollectionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t_ \\\"gocloud.dev/docstore/gcpfirestore\\\"\\n)\",\n\t\t\"code\": \"// docstore.OpenCollection creates a *docstore.Collection from a URL.\\nconst url = \\\"firestore://projects/my-project/databases/(default)/documents/my-collection?name_field=userID\\\"\\ncoll, err := docstore.OpenCollection(ctx, url)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/memdocstore.ExampleOpenCollection\": {\n\t\t\"imports\": \"import \\\"gocloud.dev/docstore/memdocstore\\\"\",\n\t\t\"code\": \"coll, err := memdocstore.OpenCollection(\\\"keyField\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/memdocstore.ExampleOpenCollectionWithKeyFunc\": {\n\t\t\"imports\": \"import (\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t\\\"gocloud.dev/docstore/memdocstore\\\"\\n)\",\n\t\t\"code\": \"// The name of a document is constructed from the Game and Player fields.\\nnameFromDocument := func(doc docstore.Document) any {\\n\\ths := doc.(*HighScore)\\n\\treturn hs.Game + \\\"|\\\" + hs.Player\\n}\\n\\ncoll, err := memdocstore.OpenCollectionWithKeyFunc(nameFromDocument, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/memdocstore.Example_openCollectionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t_ \\\"gocloud.dev/docstore/memdocstore\\\"\\n)\",\n\t\t\"code\": \"// docstore.OpenCollection creates a *docstore.Collection from a URL.\\ncoll, err := docstore.OpenCollection(ctx, \\\"mem://collection/keyField\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/mongodocstore.ExampleOpenCollection\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore/mongodocstore\\\"\\n)\",\n\t\t\"code\": \"client, err := mongodocstore.Dial(ctx, \\\"mongodb://my-host\\\")\\nif err != nil {\\n\\treturn err\\n}\\nmcoll := client.Database(\\\"my-db\\\").Collection(\\\"my-coll\\\")\\ncoll, err := mongodocstore.OpenCollection(mcoll, \\\"userID\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/mongodocstore.ExampleOpenCollectionWithIDFunc\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t\\\"gocloud.dev/docstore/mongodocstore\\\"\\n)\",\n\t\t\"code\": \"client, err := mongodocstore.Dial(ctx, \\\"mongodb://my-host\\\")\\nif err != nil {\\n\\treturn err\\n}\\nmcoll := client.Database(\\\"my-db\\\").Collection(\\\"my-coll\\\")\\n\\n// The name of a document is constructed from the Game and Player fields.\\nnameFromDocument := func(doc docstore.Document) interface{} {\\n\\ths := doc.(*HighScore)\\n\\treturn hs.Game + \\\"|\\\" + hs.Player\\n}\\n\\ncoll, err := mongodocstore.OpenCollectionWithIDFunc(mcoll, nameFromDocument, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/docstore/mongodocstore.Example_openCollectionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/docstore\\\"\\n\\t_ \\\"gocloud.dev/docstore/mongodocstore\\\"\\n)\",\n\t\t\"code\": \"// docstore.OpenCollection creates a *docstore.Collection from a URL.\\ncoll, err := docstore.OpenCollection(ctx, \\\"mongo://my-db/my-collection?id_field=userID\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer coll.Close()\"\n\t},\n\t\"gocloud.dev/mysql.ExampleOpen\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/mysql\\\"\\n)\",\n\t\t\"code\": \"// Replace this with your actual settings.\\ndb, err := mysql.Open(ctx, \\\"mysql://user:password@localhost/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.Exec(\\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/mysql/awsmysql.Example\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/mysql\\\"\\n\\t_ \\\"gocloud.dev/mysql/awsmysql\\\"\\n)\",\n\t\t\"code\": \"// Replace these with your actual settings.\\ndb, err := mysql.Open(ctx,\\n\\t\\\"awsmysql://myrole:swordfish@example01.xyzzy.us-west-1.rds.amazonaws.com/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.ExecContext(ctx, \\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/mysql/azuremysql.Example\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/mysql\\\"\\n\\t_ \\\"gocloud.dev/mysql/azuremysql\\\"\\n)\",\n\t\t\"code\": \"// Replace this with your actual settings.\\ndb, err := mysql.Open(ctx,\\n\\t\\\"azuremysql://user:password@example00.mysql.database.azure.com/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.Exec(\\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/mysql/gcpmysql.Example\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/mysql\\\"\\n\\t_ \\\"gocloud.dev/mysql/gcpmysql\\\"\\n)\",\n\t\t\"code\": \"// Replace this with your actual settings.\\ndb, err := mysql.Open(ctx,\\n\\t\\\"gcpmysql://user:password@example-project/region/my-instance01/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.Exec(\\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/postgres.ExampleOpen\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/postgres\\\"\\n)\",\n\t\t\"code\": \"// Replace this with your actual settings.\\ndb, err := postgres.Open(ctx, \\\"postgres://user:password@localhost/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.Exec(\\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/postgres/awspostgres.Example\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/postgres\\\"\\n\\t_ \\\"gocloud.dev/postgres/awspostgres\\\"\\n)\",\n\t\t\"code\": \"// Replace these with your actual settings.\\ndb, err := postgres.Open(ctx,\\n\\t\\\"awspostgres://myrole:swordfish@example01.xyzzy.us-west-1.rds.amazonaws.com/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.ExecContext(ctx, \\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/postgres/gcppostgres.Example\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/postgres\\\"\\n\\t_ \\\"gocloud.dev/postgres/gcppostgres\\\"\\n)\",\n\t\t\"code\": \"// Replace this with your actual settings.\\ndb, err := postgres.Open(ctx,\\n\\t\\\"gcppostgres://user:password@example-project/region/my-instance01/testdb\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer db.Close()\\n\\n// Use database in your program.\\ndb.Exec(\\\"CREATE TABLE foo (bar INT);\\\")\"\n\t},\n\t\"gocloud.dev/pubsub.ExampleSubscription_Receive\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n)\",\n\t\t\"code\": \"// Loop on received messages.\\nfor {\\n\\tmsg, err := subscription.Receive(ctx)\\n\\tif err != nil {\\n\\t\\t// Errors from Receive indicate that Receive will no longer succeed.\\n\\t\\tlog.Printf(\\\"Receiving message: %v\\\", err)\\n\\t\\tbreak\\n\\t}\\n\\t// Do work based on the message, for example:\\n\\tfmt.Printf(\\\"Got message: %q\\\\n\\\", msg.Body)\\n\\t// Messages must always be acknowledged with Ack.\\n\\tmsg.Ack()\\n}\"\n\t},\n\t\"gocloud.dev/pubsub.ExampleSubscription_Receive_concurrent\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n)\",\n\t\t\"code\": \"// Loop on received messages. We can use a channel as a semaphore to limit how\\n// many goroutines we have active at a time as well as wait on the goroutines\\n// to finish before exiting.\\nconst maxHandlers = 10\\nsem := make(chan struct{}, maxHandlers)\\nrecvLoop:\\nfor {\\n\\tmsg, err := subscription.Receive(ctx)\\n\\tif err != nil {\\n\\t\\t// Errors from Receive indicate that Receive will no longer succeed.\\n\\t\\tlog.Printf(\\\"Receiving message: %v\\\", err)\\n\\t\\tbreak\\n\\t}\\n\\n\\t// Wait if there are too many active handle goroutines and acquire the\\n\\t// semaphore. If the context is canceled, stop waiting and start shutting\\n\\t// down.\\n\\tselect {\\n\\tcase sem \\u003c- struct{}{}:\\n\\tcase \\u003c-ctx.Done():\\n\\t\\tbreak recvLoop\\n\\t}\\n\\n\\t// Handle the message in a new goroutine.\\n\\tgo func() {\\n\\t\\tdefer func() { \\u003c-sem }() // Release the semaphore.\\n\\t\\tdefer msg.Ack()          // Messages must always be acknowledged with Ack.\\n\\n\\t\\t// Do work based on the message, for example:\\n\\t\\tfmt.Printf(\\\"Got message: %q\\\\n\\\", msg.Body)\\n\\t}()\\n}\\n\\n// We're no longer receiving messages. Wait to finish handling any\\n// unacknowledged messages by totally acquiring the semaphore.\\nfor range maxHandlers {\\n\\tsem \\u003c- struct{}{}\\n}\"\n\t},\n\t\"gocloud.dev/pubsub.ExampleTopic_Send\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n)\",\n\t\t\"code\": \"err := topic.Send(ctx, \\u0026pubsub.Message{\\n\\tBody: []byte(\\\"Hello, World!\\\\n\\\"),\\n\\t// Metadata is optional and can be nil.\\n\\tMetadata: map[string]string{\\n\\t\\t// These are examples of metadata.\\n\\t\\t// There is nothing special about the key names.\\n\\t\\t\\\"language\\\":   \\\"en\\\",\\n\\t\\t\\\"importance\\\": \\\"high\\\",\\n\\t},\\n})\\nif err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/pubsub/awssnssqs.ExampleOpenSNSTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/sns\\\"\\n\\t\\\"gocloud.dev/pubsub/awssnssqs\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS V2 Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Create a *pubsub.Topic.\\nconst topicARN = \\\"arn:aws:sns:us-east-2:123456789012:mytopic\\\"\\nclient := sns.NewFromConfig(cfg)\\ntopic := awssnssqs.OpenSNSTopic(ctx, client, topicARN, nil)\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/awssnssqs.ExampleOpenSQSTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/sqs\\\"\\n\\t\\\"gocloud.dev/pubsub/awssnssqs\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS V2 Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Create a *pubsub.Topic.\\nconst queueURL = \\\"https://sqs.us-east-2.amazonaws.com/123456789012/myqueue\\\"\\nclient := sqs.NewFromConfig(cfg)\\ntopic := awssnssqs.OpenSQSTopic(ctx, client, queueURL, nil)\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/awssnssqs.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/sqs\\\"\\n\\t\\\"gocloud.dev/pubsub/awssnssqs\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS V2 Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *pubsub.Subscription.\\n// https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/QueueURL.html\\nconst queueURL = \\\"https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue\\\"\\nclient := sqs.NewFromConfig(cfg)\\nsubscription := awssnssqs.OpenSubscription(ctx, client, queueURL, nil)\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/awssnssqs.Example_openSNSTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/awssnssqs\\\"\\n)\",\n\t\t\"code\": \"const topicARN = \\\"arn:aws:sns:us-east-2:123456789012:mytopic\\\"\\n// Note the 3 slashes; ARNs have multiple colons and therefore aren't valid\\n// as hostnames in the URL.\\ntopic, err := pubsub.OpenTopic(ctx, \\\"awssns:///\\\"+topicARN+\\\"?region=us-east-2\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/awssnssqs.Example_openSQSTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/awssnssqs\\\"\\n)\",\n\t\t\"code\": \"// https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/QueueURL.html\\nconst queueURL = \\\"sqs.us-east-2.amazonaws.com/123456789012/myqueue\\\"\\ntopic, err := pubsub.OpenTopic(ctx, \\\"awssqs://\\\"+queueURL+\\\"?region=us-east-2\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/awssnssqs.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/awssnssqs\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// This URL will open the subscription with the URL\\n// \\\"https://sqs.us-east-2.amazonaws.com/123456789012/myqueue\\\".\\nsubscription, err := pubsub.OpenSubscription(ctx,\\n\\t\\\"awssqs://sqs.us-east-2.amazonaws.com/123456789012/\\\"+\\n\\t\\t\\\"myqueue?region=us-east-2\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/azuresb.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"os\\\"\\n\\n\\t\\\"gocloud.dev/pubsub/azuresb\\\"\\n)\",\n\t\t\"code\": \"// Change these as needed for your application.\\nserviceBusConnString := os.Getenv(\\\"SERVICEBUS_CONNECTION_STRING\\\")\\nconst topicName = \\\"test-topic\\\"\\nconst subscriptionName = \\\"test-subscription\\\"\\n\\n// Connect to Azure Service Bus for the given subscription.\\nsbClient, err := azuresb.NewClientFromConnectionString(serviceBusConnString, nil)\\nif err != nil {\\n\\treturn err\\n}\\nsbReceiver, err := azuresb.NewReceiver(sbClient, topicName, subscriptionName, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer sbReceiver.Close(ctx)\\n\\n// Construct a *pubsub.Subscription.\\nsubscription, err := azuresb.OpenSubscription(ctx, sbClient, sbReceiver, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/azuresb.ExampleOpenTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"os\\\"\\n\\n\\t\\\"gocloud.dev/pubsub/azuresb\\\"\\n)\",\n\t\t\"code\": \"// Change these as needed for your application.\\nconnString := os.Getenv(\\\"SERVICEBUS_CONNECTION_STRING\\\")\\ntopicName := \\\"test-topic\\\"\\n\\nif connString == \\\"\\\" {\\n\\tlog.Fatal(\\\"Service Bus ConnectionString is not set\\\")\\n}\\n\\n// Connect to Azure Service Bus for the given topic.\\nsbClient, err := azuresb.NewClientFromConnectionString(connString, nil)\\nif err != nil {\\n\\treturn err\\n}\\nsbSender, err := azuresb.NewSender(sbClient, topicName, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer sbSender.Close(ctx)\\n\\n// Construct a *pubsub.Topic.\\ntopic, err := azuresb.OpenTopic(ctx, sbSender, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/azuresb.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/azuresb\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// This URL will open the subscription \\\"mysubscription\\\" for the topic\\n// \\\"mytopic\\\" using a connection string from the environment variable\\n// SERVICEBUS_CONNECTION_STRING.\\nsubscription, err := pubsub.OpenSubscription(ctx,\\n\\t\\\"azuresb://mytopic?subscription=mysubscription\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/azuresb.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/azuresb\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\\n// This URL will open the topic \\\"mytopic\\\" using a connection string\\n// from the environment variable SERVICEBUS_CONNECTION_STRING.\\ntopic, err := pubsub.OpenTopic(ctx, \\\"azuresb://mytopic\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsub.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/gcp\\\"\\n\\t\\\"gocloud.dev/pubsub/gcppubsub\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Open a gRPC connection to the GCP Pub/Sub API.\\nconn, cleanup, err := gcppubsub.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\ndefer cleanup()\\n\\n// Construct a SubscriberClient using the connection.\\nsubClient, err := gcppubsub.SubscriberClient(ctx, conn)\\nif err != nil {\\n\\treturn err\\n}\\ndefer subClient.Close()\\n\\n// Construct a *pubsub.Subscription.\\nsubscription, err := gcppubsub.OpenSubscriptionByPath(\\n\\tsubClient, \\\"projects/myprojectID/subscriptions/example-subscription\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsub.ExampleOpenTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/gcp\\\"\\n\\t\\\"gocloud.dev/pubsub/gcppubsub\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n// Open a gRPC connection to the GCP Pub/Sub API.\\nconn, cleanup, err := gcppubsub.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\ndefer cleanup()\\n\\n// Construct a PublisherClient using the connection.\\npubClient, err := gcppubsub.PublisherClient(ctx, conn)\\nif err != nil {\\n\\treturn err\\n}\\ndefer pubClient.Close()\\n\\n// Construct a *pubsub.Topic.\\ntopic, err := gcppubsub.OpenTopicByPath(pubClient, \\\"projects/myprojectID/topics/example-topic\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsub.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/gcppubsub\\\"\\n)\",\n\t\t\"code\": \"subscription, err := pubsub.OpenSubscription(ctx,\\n\\t\\\"gcppubsub://projects/my-project/subscriptions/my-subscription\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsub.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/gcppubsub\\\"\\n)\",\n\t\t\"code\": \"topic, err := pubsub.OpenTopic(ctx, \\\"gcppubsub://projects/myproject/topics/mytopic\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsubv2.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/gcp\\\"\\n\\t\\\"gocloud.dev/pubsub/gcppubsubv2\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Open a gRPC connection to the GCP Pub/Sub API.\\n// Alternatively, skip this and pass nil to Client below to use the default.\\nconn, cleanup, err := gcppubsubv2.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\ndefer cleanup()\\n\\n// Construct a Client using the connection.\\nclient, err := gcppubsubv2.Client(ctx, \\\"myprojectID\\\", conn)\\nif err != nil {\\n\\treturn err\\n}\\ndefer client.Close()\\n\\n// Construct a *pubsub.Subscription.\\nsubscription := gcppubsubv2.OpenSubscription(client, \\\"example-subscription\\\", nil)\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsubv2.ExampleOpenTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/gcp\\\"\\n\\t\\\"gocloud.dev/pubsub/gcppubsubv2\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n// Open a gRPC connection to the GCP Pub/Sub API.\\n// Alternatively, skip this and pass nil to Client below to use the default.\\nconn, cleanup, err := gcppubsubv2.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\ndefer cleanup()\\n\\n// Construct a Client using the connection.\\nclient, err := gcppubsubv2.Client(ctx, \\\"myprojectid\\\", conn)\\nif err != nil {\\n\\treturn err\\n}\\ndefer client.Close()\\n\\n// Construct a *pubsub.Topic.\\ntopic := gcppubsubv2.OpenTopic(client, \\\"example-topic\\\", nil)\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsubv2.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/gcppubsubv2\\\"\\n)\",\n\t\t\"code\": \"subscription, err := pubsub.OpenSubscription(ctx,\\n\\t\\\"gcppubsubv2://projects/my-project/subscriptions/my-subscription\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/gcppubsubv2.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/gcppubsubv2\\\"\\n)\",\n\t\t\"code\": \"topic, err := pubsub.OpenTopic(ctx, \\\"gcppubsubv2://projects/myproject/topics/mytopic\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/kafkapubsub.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub/kafkapubsub\\\"\\n)\",\n\t\t\"code\": \"// The set of brokers in the Kafka cluster.\\naddrs := []string{\\\"1.2.3.4:9092\\\"}\\n// The Kafka client configuration to use.\\nconfig := kafkapubsub.MinimalConfig()\\n\\n// Construct a *pubsub.Subscription, joining the consumer group \\\"my-group\\\"\\n// and receiving messages from \\\"my-topic\\\".\\nsubscription, err := kafkapubsub.OpenSubscription(\\n\\taddrs, config, \\\"my-group\\\", []string{\\\"my-topic\\\"}, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/kafkapubsub.ExampleOpenTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub/kafkapubsub\\\"\\n)\",\n\t\t\"code\": \"// The set of brokers in the Kafka cluster.\\naddrs := []string{\\\"1.2.3.4:9092\\\"}\\n// The Kafka client configuration to use.\\nconfig := kafkapubsub.MinimalConfig()\\n\\n// Construct a *pubsub.Topic.\\ntopic, err := kafkapubsub.OpenTopic(addrs, config, \\\"my-topic\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/kafkapubsub.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/kafkapubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// The host + path are used as the consumer group name.\\n// The \\\"topic\\\" query parameter sets one or more topics to subscribe to.\\n// The set of brokers must be in an environment variable KAFKA_BROKERS.\\nsubscription, err := pubsub.OpenSubscription(ctx,\\n\\t\\\"kafka://my-group?topic=my-topic\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/kafkapubsub.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/kafkapubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\\n// The host + path are the topic name to send to.\\n// The set of brokers must be in an environment variable KAFKA_BROKERS.\\ntopic, err := pubsub.OpenTopic(ctx, \\\"kafka://my-topic?key_name=x-partition-key\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/mempubsub.ExampleNewSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"time\\\"\\n\\n\\t\\\"gocloud.dev/pubsub/mempubsub\\\"\\n)\",\n\t\t\"code\": \"// Construct a *pubsub.Topic.\\ntopic := mempubsub.NewTopic()\\ndefer topic.Shutdown(ctx)\\n\\n// Construct a *pubsub.Subscription for the topic.\\nsubscription := mempubsub.NewSubscription(topic, 1*time.Minute /* ack deadline */)\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/mempubsub.ExampleNewTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub/mempubsub\\\"\\n)\",\n\t\t\"code\": \"topic := mempubsub.NewTopic()\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/mempubsub.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/mempubsub\\\"\\n)\",\n\t\t\"code\": \"// Create a topic.\\ntopic, err := pubsub.OpenTopic(ctx, \\\"mem://topicA\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\\n\\n// Create a subscription connected to that topic.\\nsubscription, err := pubsub.OpenSubscription(ctx, \\\"mem://topicA\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/mempubsub.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/mempubsub\\\"\\n)\",\n\t\t\"code\": \"topic, err := pubsub.OpenTopic(ctx, \\\"mem://topicA\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/nats-io/nats.go\\\"\\n\\t\\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"natsConn, err := nats.Connect(\\\"nats://nats.example.com\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer natsConn.Close()\\n\\nsubscription, err := natspubsub.OpenSubscription(\\n\\tnatsConn,\\n\\t\\\"example.mysubject\\\",\\n\\tnil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.ExampleOpenSubscriptionV2\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/nats-io/nats.go\\\"\\n\\t\\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"subscription, err := natspubsub.OpenSubscriptionV2(\\n\\tnatsConn,\\n\\t\\\"example.mysubject\\\",\\n\\tnil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.ExampleOpenSubscription_queue\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/nats-io/nats.go\\\"\\n\\t\\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"natsConn, err := nats.Connect(\\\"nats://nats.example.com\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer natsConn.Close()\\n\\nsubscription, err := natspubsub.OpenSubscription(\\n\\tnatsConn,\\n\\t\\\"example.mysubject\\\",\\n\\t\\u0026natspubsub.SubscriptionOptions{Queue: \\\"queue1\\\"})\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.ExampleOpenTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/nats-io/nats.go\\\"\\n\\t\\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"natsConn, err := nats.Connect(\\\"nats://nats.example.com\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer natsConn.Close()\\n\\ntopic, err := natspubsub.OpenTopic(natsConn, \\\"example.mysubject\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.ExampleOpenTopicV2\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/nats-io/nats.go\\\"\\n\\t\\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"natsConn, err := nats.Connect(\\\"nats://nats.example.com\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer natsConn.Close()\\n\\ntopic, err := natspubsub.OpenTopicV2(natsConn, \\\"example.mysubject\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.Example_openQueueSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// This URL will Dial the NATS server at the URL in the environment variable\\n// NATS_SERVER_URL and receive messages with subject \\\"example.mysubject\\\"\\n// This URL will be parsed and the queue attribute will be used as the Queue parameter when creating the NATS Subscription.\\nsubscription, err := pubsub.OpenSubscription(ctx, \\\"nats://example.mysubject?queue=myqueue\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// This URL will Dial the NATS server at the URL in the environment variable\\n// NATS_SERVER_URL and receive messages with subject \\\"example.mysubject\\\".\\nsubscription, err := pubsub.OpenSubscription(ctx, \\\"nats://example.mysubject\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.Example_openSubscriptionV2FromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// This URL will Dial the NATS server at the URL in the environment variable\\n// NATS_SERVER_URL and receive messages with subject \\\"example.mysubject\\\".\\n// This URL will be parsed and the natsv2 attribute will be used to\\n// use NATS v2.2.0+ native message headers as the message metadata.\\nsubscription, err := pubsub.OpenSubscription(ctx, \\\"nats://example.mysubject?natsv2\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\\n// This URL will Dial the NATS server at the URL in the environment variable\\n// NATS_SERVER_URL and send messages with subject \\\"example.mysubject\\\".\\ntopic, err := pubsub.OpenTopic(ctx, \\\"nats://example.mysubject\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/natspubsub.Example_openTopicV2FromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/natspubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\\n// This URL will Dial the NATS server at the URL in the environment variable\\n// NATS_SERVER_URL and send messages with subject \\\"example.mysubject\\\".\\n// This URL will be parsed and the natsv2 attribute will be used to\\n// use NATS v2.2.0+ native message headers as the message metadata.\\ntopic, err := pubsub.OpenTopic(ctx, \\\"nats://example.mysubject?natsv2\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/rabbitpubsub.ExampleOpenSubscription\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\tamqp \\\"github.com/rabbitmq/amqp091-go\\\"\\n\\t\\\"gocloud.dev/pubsub/rabbitpubsub\\\"\\n)\",\n\t\t\"code\": \"rabbitConn, err := amqp.Dial(\\\"amqp://guest:guest@localhost:5672/\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer rabbitConn.Close()\\nsubscription := rabbitpubsub.OpenSubscription(rabbitConn, \\\"myqueue\\\", nil)\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/rabbitpubsub.ExampleOpenTopic\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\tamqp \\\"github.com/rabbitmq/amqp091-go\\\"\\n\\t\\\"gocloud.dev/pubsub/rabbitpubsub\\\"\\n)\",\n\t\t\"code\": \"rabbitConn, err := amqp.Dial(\\\"amqp://guest:guest@localhost:5672/\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer rabbitConn.Close()\\ntopic := rabbitpubsub.OpenTopic(rabbitConn, \\\"myexchange\\\", nil)\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/rabbitpubsub.Example_openSubscriptionFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/rabbitpubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\\n// This URL will Dial the RabbitMQ server at the URL in the environment\\n// variable RABBIT_SERVER_URL and open the queue \\\"myqueue\\\".\\nsubscription, err := pubsub.OpenSubscription(ctx, \\\"rabbit://myqueue\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer subscription.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/pubsub/rabbitpubsub.Example_openTopicFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/pubsub\\\"\\n\\t_ \\\"gocloud.dev/pubsub/rabbitpubsub\\\"\\n)\",\n\t\t\"code\": \"// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\\n// This URL will Dial the RabbitMQ server at the URL in the environment\\n// variable RABBIT_SERVER_URL and open the exchange \\\"myexchange\\\".\\ntopic, err := pubsub.OpenTopic(ctx, \\\"rabbit://myexchange\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer topic.Shutdown(ctx)\"\n\t},\n\t\"gocloud.dev/runtimevar.ExampleDecryptDecode\": {\n\t\t\"imports\": \"import (\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/secrets\\\"\\n)\",\n\t\t\"code\": \"decodeFunc := runtimevar.DecryptDecode(keeper, runtimevar.StringDecode)\\ndecoder := runtimevar.NewDecoder(\\\"\\\", decodeFunc)\"\n\t},\n\t\"gocloud.dev/runtimevar.ExampleVariable_Latest\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n)\",\n\t\t\"code\": \"snapshot, err := v.Latest(context.Background())\\nif err != nil {\\n\\tlog.Fatalf(\\\"Error in retrieving variable: %v\\\", err)\\n}\"\n\t},\n\t\"gocloud.dev/runtimevar.Example_jsonDecoder\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/constantvar\\\"\\n)\",\n\t\t\"code\": \"// Config is the sample config struct we're going to parse our JSON into.\\ntype Config struct {\\n\\tHost string\\n\\tPort int\\n}\\n\\n// A sample JSON config that will decode into Config.\\nconst jsonConfig = `{\\\"Host\\\": \\\"gocloud.dev\\\", \\\"Port\\\": 8080}`\\n\\n// Construct a Decoder that decodes raw bytes into our config.\\ndecoder := runtimevar.NewDecoder(Config{}, runtimevar.JSONDecode)\\n\\n// Next, a construct a *Variable using a constructor or URL opener.\\n// This example uses constantvar.\\n// If you're using a URL opener, you can't decode JSON into a struct, but\\n// you can use the query parameter \\\"decoder=jsonmap\\\" to decode into a map.\\nv := constantvar.NewBytes([]byte(jsonConfig), decoder)\\ndefer v.Close()\\n// snapshot.Value will be of type Config.\"\n\t},\n\t\"gocloud.dev/runtimevar/awsparamstore.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/ssm\\\"\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/awsparamstore\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS V2 Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\nctx := context.Background()\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *runtimevar.Variable that watches the variable.\\nclient := ssm.NewFromConfig(cfg)\\nv, err := awsparamstore.OpenVariable(client, \\\"cfg-variable-name\\\", runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/awsparamstore.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/awsparamstore\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\nv, err := runtimevar.OpenVariable(ctx, \\\"awsparamstore://myvar?region=us-west-1\\u0026decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/awssecretsmanager.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"github.com/aws/aws-sdk-go-v2/service/secretsmanager\\\"\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/awssecretsmanager\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS V2 Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\nctx := context.Background()\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *runtimevar.Variable that watches the variable.\\n// `secret-variable-name` must be a friendly name of the secret, NOT the Amazon Resource Name (ARN).\\nclient := secretsmanager.NewFromConfig(cfg)\\nv, err := awssecretsmanager.OpenVariable(client, \\\"secret-variable-name\\\", runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/awssecretsmanager.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/awssecretsmanager\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// `secret-variable-name` must be a friendly name of the secret, NOT the Amazon Resource Name (ARN).\\nv, err := runtimevar.OpenVariable(ctx, \\\"awssecretsmanager://secret-variable-name?region=us-east-2\\u0026decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/blobvar.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/blobvar\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The default opener opens a blob.Bucket via a URL, based on the environment\\n// variable BLOBVAR_BUCKET_URL.\\n\\nv, err := runtimevar.OpenVariable(ctx, \\\"blob://myvar.txt?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/constantvar.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\t\\\"fmt\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/constantvar\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The constant value is in the URL param \\\"val\\\".\\nv, err := runtimevar.OpenVariable(ctx, \\\"constant://?val=hello+world\\u0026decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\\n\\n// The constant value is read from an environment variable specified in \\\"envvar\\\".\\nv2, err := runtimevar.OpenVariable(ctx, \\\"constant://?envvar=MY_ENVIRONMENT_VARIABLE\\u0026decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v2.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/etcdvar.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"go.etcd.io/etcd/client/v3\\\"\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/etcdvar\\\"\\n)\",\n\t\t\"code\": \"// Connect to the etcd server.\\nclient, err := clientv3.NewFromURL(\\\"http://your.etcd.server:9999\\\")\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *runtimevar.Variable that watches the variable.\\nv, err := etcdvar.OpenVariable(client, \\\"cfg-variable-name\\\", runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/etcdvar.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/etcdvar\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The default opener connects to an etcd server based on the environment\\n// variable ETCD_SERVER_URL.\\n\\nv, err := runtimevar.OpenVariable(ctx, \\\"etcd://myvarname?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/filevar.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/filevar\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n\\nv, err := runtimevar.OpenVariable(ctx, \\\"file:///path/to/config.txt?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/gcpruntimeconfig.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/gcp\\\"\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/gcpruntimeconfig\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Connect to the Runtime Configurator service.\\nclient, cleanup, err := gcpruntimeconfig.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\ndefer cleanup()\\n\\n// You can use the VariableKey helper to construct a Variable key from\\n// your project ID, config ID, and the variable name; alternatively,\\n// you can construct the full string yourself (e.g.,\\n// \\\"projects/gcp-project-id/configs/config-id/variables/variable-name\\\").\\n// See https://cloud.google.com/deployment-manager/runtime-configurator/\\n// for more details.\\n//\\n// For this example, the GCP Cloud Runtime Configurator variable being\\n// referenced should have a JSON string that decodes into MyConfig.\\nvariableKey := gcpruntimeconfig.VariableKey(\\\"gcp-project-id\\\", \\\"config-id\\\", \\\"variable-name\\\")\\n\\n// Construct a *runtimevar.Variable that watches the variable.\\nv, err := gcpruntimeconfig.OpenVariable(client, variableKey, runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/gcpruntimeconfig.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/gcpruntimeconfig\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The URL Host+Path are used as the GCP Runtime Configurator Variable key;\\n// see https://cloud.google.com/deployment-manager/runtime-configurator/\\n// for more details.\\n\\nv, err := runtimevar.OpenVariable(ctx, \\\"gcpruntimeconfig://projects/myproject/configs/myconfigid/variables/myvar?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/gcpsecretmanager.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/gcp\\\"\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/gcpsecretmanager\\\"\\n)\",\n\t\t\"code\": \"// Your GCP credentials.\\n// See https://cloud.google.com/docs/authentication/production\\n// for more info on alternatives.\\ncreds, err := gcp.DefaultCredentials(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Connect to the GCP Secret Manager service.\\nclient, cleanup, err := gcpsecretmanager.Dial(ctx, creds.TokenSource)\\nif err != nil {\\n\\treturn err\\n}\\ndefer cleanup()\\n\\n// You can use the SecretKey helper to construct a secret key from\\n// your project ID and the secret ID; alternatively,\\n// you can construct the full string yourself (e.g.,\\n// \\\"projects/gcp-project-id/secrets/secret-id\\\").\\n// gcpsecretmanager package will always use the latest secret value,\\n// so `/version/latest` postfix must NOT be added to the secret key.\\n// See https://cloud.google.com/secret-manager\\n// for more details.\\n//\\n// For this example, the GCP Secret Manager secret being\\n// referenced should have a JSON string that decodes into MyConfig.\\nvariableKey := gcpsecretmanager.SecretKey(\\\"gcp-project-id\\\", \\\"secret-id\\\")\\n\\n// Construct a *runtimevar.Variable that watches the variable.\\nv, err := gcpsecretmanager.OpenVariable(client, variableKey, runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/gcpsecretmanager.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/gcpsecretmanager\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The URL Host+Path are used as the GCP Secret Manager secret key;\\n// see https://cloud.google.com/secret-manager\\n// for more details.\\n\\nv, err := runtimevar.OpenVariable(ctx, \\\"gcpsecretmanager://projects/myproject/secrets/mysecret?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/hashivault.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/hashicorp/vault/api\\\"\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/hashivault\\\"\\n)\",\n\t\t\"code\": \"// Get a client to use with the Vault API.\\nclient, err := hashivault.Dial(ctx, \\u0026hashivault.Config{\\n\\tToken: \\\"CLIENT_TOKEN\\\",\\n\\tAPIConfig: api.Config{\\n\\t\\tAddress: \\\"http://127.0.0.1:8200\\\",\\n\\t},\\n})\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *runtimevar.Variable that watches the secret.\\nv, err := hashivault.OpenVariable(client, \\\"myapp/config\\\", runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/hashivault.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/hashivault\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The default opener connects to a Vault server based on the environment\\n// variables VAULT_SERVER_URL/VAULT_ADDR and VAULT_SERVER_TOKEN/VAULT_TOKEN.\\nv, err := runtimevar.OpenVariable(ctx, \\\"hashivault://myapp/config?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/httpvar.ExampleOpenVariable\": {\n\t\t\"imports\": \"import (\\n\\t\\\"net/http\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t\\\"gocloud.dev/runtimevar/httpvar\\\"\\n)\",\n\t\t\"code\": \"// Create an HTTP.Client\\nhttpClient := http.DefaultClient\\n\\n// Construct a *runtimevar.Variable that watches the page.\\nv, err := httpvar.OpenVariable(httpClient, \\\"http://example.com\\\", runtimevar.StringDecoder, nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/runtimevar/httpvar.Example_openVariableFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/runtimevar\\\"\\n\\t_ \\\"gocloud.dev/runtimevar/httpvar\\\"\\n)\",\n\t\t\"code\": \"// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\\n// The default opener connects to an etcd server based on the environment\\n// variable ETCD_SERVER_URL.\\n\\nv, err := runtimevar.OpenVariable(ctx, \\\"http://myserver.com/foo.txt?decoder=string\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer v.Close()\"\n\t},\n\t\"gocloud.dev/secrets.ExampleKeeper_Decrypt\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n)\",\n\t\t\"code\": \"var cipherText []byte // obtained from elsewhere and random-looking\\nplainText, err := keeper.Decrypt(ctx, cipherText)\\nif err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/secrets.ExampleKeeper_Encrypt\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n)\",\n\t\t\"code\": \"plainText := []byte(\\\"Secrets secrets...\\\")\\ncipherText, err := keeper.Encrypt(ctx, plainText)\\nif err != nil {\\n\\treturn err\\n}\"\n\t},\n\t\"gocloud.dev/secrets/awskms.ExampleOpenKeeper\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/aws/aws-sdk-go-v2/config\\\"\\n\\t\\\"gocloud.dev/secrets/awskms\\\"\\n)\",\n\t\t\"code\": \"// Establish a AWS V2 Config.\\n// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\\nctx := context.Background()\\ncfg, err := config.LoadDefaultConfig(ctx)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Get a client to use with the KMS API.\\nclient, err := awskms.Dial(cfg)\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *secrets.Keeper.\\nkeeper := awskms.OpenKeeper(client, \\\"alias/test-secrets\\\", nil)\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/awskms.Example_openFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n\\t_ \\\"gocloud.dev/secrets/awskms\\\"\\n)\",\n\t\t\"code\": \"// Use one of the following:\\n\\n// 1. By ID.\\nkeeperByID, err := secrets.OpenKeeper(ctx,\\n\\t\\\"awskms://1234abcd-12ab-34cd-56ef-1234567890ab?region=us-east-1\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeperByID.Close()\\n\\n// 2. By alias.\\nkeeperByAlias, err := secrets.OpenKeeper(ctx,\\n\\t\\\"awskms://alias/ExampleAlias?region=us-east-1\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeperByAlias.Close()\\n\\n// 3. By ARN. Note that ARN may contain \\\":\\\" characters, which cannot be escaped\\n// in the Host part of a URL, so the \\\"awskms:///\\u003cARN\\u003e\\\" form should be used.\\nconst arn = \\\"arn:aws:kms:us-east-1:111122223333:key/\\\" +\\n\\t\\\"1234abcd-12ab-34bc-56ef-1234567890ab\\\"\\nkeeperByARN, err := secrets.OpenKeeper(ctx,\\n\\t\\\"awskms:///\\\"+arn+\\\"?region=us-east-1\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeperByARN.Close()\"\n\t},\n\t\"gocloud.dev/secrets/azurekeyvault.ExampleOpenKeeper\": {\n\t\t\"imports\": \"import \\\"gocloud.dev/secrets/azurekeyvault\\\"\",\n\t\t\"code\": \"// Makes a client to use with the Azure KeyVault API, using default\\n// authorization from the environment.\\nclientMaker := azurekeyvault.DefaultClientMaker\\n\\n// Construct a *secrets.Keeper.\\nkeeper, err := azurekeyvault.OpenKeeper(clientMaker, \\\"https://mykeyvaultname.vault.azure.net/keys/mykeyname\\\", nil)\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/azurekeyvault.Example_openFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n\\t_ \\\"gocloud.dev/secrets/azurekeyvault\\\"\\n)\",\n\t\t\"code\": \"// The \\\"azurekeyvault\\\" URL scheme is replaced with \\\"https\\\" to construct an Azure\\n// Key Vault keyID, as described in https://docs.microsoft.com/en-us/azure/key-vault/about-keys-secrets-and-certificates.\\n// You can add an optional \\\"/{key-version}\\\" to the path to use a specific\\n// version of the key; it defaults to the latest version.\\nkeeper, err := secrets.OpenKeeper(ctx, \\\"azurekeyvault://mykeyvaultname.vault.azure.net/keys/mykeyname\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/gcpkms.ExampleOpenKeeper\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets/gcpkms\\\"\\n)\",\n\t\t\"code\": \"// Get a client to use with the KMS API.\\nclient, done, err := gcpkms.Dial(ctx, nil)\\nif err != nil {\\n\\treturn err\\n}\\n// Close the connection when done.\\ndefer done()\\n\\n// You can also use gcpkms.KeyResourceID to construct this string.\\nconst keyID = \\\"projects/MYPROJECT/\\\" +\\n\\t\\\"locations/MYLOCATION/\\\" +\\n\\t\\\"keyRings/MYKEYRING/\\\" +\\n\\t\\\"cryptoKeys/MYKEY\\\"\\n\\n// Construct a *secrets.Keeper.\\nkeeper := gcpkms.OpenKeeper(client, keyID, nil)\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/gcpkms.Example_openFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n\\t_ \\\"gocloud.dev/secrets/gcpkms\\\"\\n)\",\n\t\t\"code\": \"keeper, err := secrets.OpenKeeper(ctx,\\n\\t\\\"gcpkms://projects/MYPROJECT/\\\"+\\n\\t\\t\\\"locations/MYLOCATION/\\\"+\\n\\t\\t\\\"keyRings/MYKEYRING/\\\"+\\n\\t\\t\\\"cryptoKeys/MYKEY\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/hashivault.ExampleOpenKeeper\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"github.com/hashicorp/vault/api\\\"\\n\\t\\\"gocloud.dev/secrets/hashivault\\\"\\n)\",\n\t\t\"code\": \"// Get a client to use with the Vault API.\\nclient, err := hashivault.Dial(ctx, \\u0026hashivault.Config{\\n\\tToken: \\\"CLIENT_TOKEN\\\",\\n\\tAPIConfig: api.Config{\\n\\t\\tAddress: \\\"http://127.0.0.1:8200\\\",\\n\\t},\\n})\\nif err != nil {\\n\\treturn err\\n}\\n\\n// Construct a *secrets.Keeper.\\nkeeper := hashivault.OpenKeeper(client, \\\"my-key\\\", nil)\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/hashivault.Example_openFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n\\t_ \\\"gocloud.dev/secrets/hashivault\\\"\\n)\",\n\t\t\"code\": \"keeper, err := secrets.OpenKeeper(ctx, \\\"hashivault://mykey\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/localsecrets.ExampleNewKeeper\": {\n\t\t\"imports\": \"import \\\"gocloud.dev/secrets/localsecrets\\\"\",\n\t\t\"code\": \"secretKey, err := localsecrets.NewRandomKey()\\nif err != nil {\\n\\treturn err\\n}\\nkeeper := localsecrets.NewKeeper(secretKey)\\ndefer keeper.Close()\"\n\t},\n\t\"gocloud.dev/secrets/localsecrets.Example_openFromURL\": {\n\t\t\"imports\": \"import (\\n\\t\\\"context\\\"\\n\\n\\t\\\"gocloud.dev/secrets\\\"\\n\\t_ \\\"gocloud.dev/secrets/localsecrets\\\"\\n)\",\n\t\t\"code\": \"// Using \\\"base64key://\\\", a new random key will be generated.\\nrandomKeyKeeper, err := secrets.OpenKeeper(ctx, \\\"base64key://\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer randomKeyKeeper.Close()\\n\\n// Otherwise, the URL hostname must be a base64-encoded key, of length 32 bytes when decoded.\\n// Note that base64.URLEncode should be used, to avoid URL-unsafe characters.\\nsavedKeyKeeper, err := secrets.OpenKeeper(ctx, \\\"base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=\\\")\\nif err != nil {\\n\\treturn err\\n}\\ndefer savedKeyKeeper.Close()\"\n\t},\n\t\"gocloud.dev/server.ExampleServer\": {\n\t\t\"imports\": \"import (\\n\\t\\\"fmt\\\"\\n\\t\\\"net/http\\\"\\n\\n\\t\\\"gocloud.dev/server\\\"\\n)\",\n\t\t\"code\": \"// Use the constructor function to create the server.\\nsrv := server.New(http.DefaultServeMux, nil)\\n\\n// Register a route.\\nhttp.HandleFunc(\\\"/\\\", func(w http.ResponseWriter, r *http.Request) {\\n\\tfmt.Fprintln(w, \\\"Hello, World!\\\")\\n})\\n\\n// Start the server. If ListenAndServe returns an error, print it and exit.\\nif err := srv.ListenAndServe(\\\":8080\\\"); err != nil {\\n\\tlog.Fatalf(\\\"%v\\\", err)\\n}\"\n\t},\n\t\"gocloud.dev/server.ExampleServer_withHealthChecks\": {\n\t\t\"imports\": \"import (\\n\\t\\\"fmt\\\"\\n\\t\\\"net/http\\\"\\n\\t\\\"time\\\"\\n\\n\\t\\\"gocloud.dev/server\\\"\\n\\t\\\"gocloud.dev/server/health\\\"\\n)\",\n\t\t\"code\": \"// Create a health.Checker from the type we defined for our application.\\n// In this example, healthCheck will report the server is unhealthy for 10 seconds\\n// after startup, and as healthy henceforth. Check the /healthz/readiness\\n// HTTP path to see readiness.\\nhealthCheck := new(customHealthCheck)\\ntime.AfterFunc(10*time.Second, func() {\\n\\thealthCheck.mu.Lock()\\n\\tdefer healthCheck.mu.Unlock()\\n\\thealthCheck.healthy = true\\n})\\n\\n// The server.Options struct takes a slice of health checks, because you\\n// may need to check several things.\\nsrvOptions := \\u0026server.Options{\\n\\tHealthChecks: []health.Checker{healthCheck},\\n}\\n\\n// Pass the options to the Server constructor.\\nsrv := server.New(http.DefaultServeMux, srvOptions)\\n\\n// Register a route.\\nhttp.HandleFunc(\\\"/\\\", func(w http.ResponseWriter, r *http.Request) {\\n\\tfmt.Fprintln(w, \\\"Hello, World!\\\")\\n})\\n\\n// Start the server. You will see requests logged to STDOUT.\\nif err := srv.ListenAndServe(\\\":8080\\\"); err != nil {\\n\\tlog.Fatalf(\\\"%v\\\", err)\\n}\"\n\t},\n\t\"gocloud.dev/server.ExampleServer_withRequestLogger\": {\n\t\t\"imports\": \"import (\\n\\t\\\"fmt\\\"\\n\\t\\\"net/http\\\"\\n\\t\\\"os\\\"\\n\\n\\t\\\"gocloud.dev/server\\\"\\n\\t\\\"gocloud.dev/server/requestlog\\\"\\n)\",\n\t\t\"code\": \"// Create a logger, and assign it to the RequestLogger field of a\\n// server.Options struct.\\nsrvOptions := \\u0026server.Options{\\n\\tRequestLogger: requestlog.NewNCSALogger(os.Stdout, func(error) {}),\\n}\\n\\n// Pass the options to the Server constructor.\\nsrv := server.New(http.DefaultServeMux, srvOptions)\\n\\n// Register a route.\\nhttp.HandleFunc(\\\"/\\\", func(w http.ResponseWriter, r *http.Request) {\\n\\tfmt.Fprintln(w, \\\"Hello, World!\\\")\\n})\\n\\n// Start the server. You will see requests logged to STDOUT.\\nif err := srv.ListenAndServe(\\\":8080\\\"); err != nil {\\n\\tlog.Fatalf(\\\"%v\\\", err)\\n}\"\n\t}\n}\n"
  },
  {
    "path": "internal/website/gatherexamples/gatherexamples.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Command gatherexamples extracts examples in a Go module into a JSON-formatted\n// object. This is used as input for building the Go CDK Hugo website.\n//\n// Examples must include a comment\n// \"// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\"\n// somewhere in the function body in order to be included in this tool's output.\n//\n// gatherexamples does some minimal rewriting of the example source code for\n// presentation:\n//\n//   - Any imports the example uses will be prepended to the code.\n//   - log.Fatal(err) -> return err\n//   - A comment line \"// PRAGMA: On gocloud.dev, hide lines until the next blank line.\" will\n//     remove any code up to the next blank line. This is intended for\n//     compiler-mandated setup like `ctx := context.Background()`.\n//   - A comment line \"// PRAGMA: On gocloud.dev, hide the rest of the function.\" will\n//     remove any code until the end of the function. This is intended for\n//     compiler-mandated assignments like `_ = bucket`.\n//   - A comment line \"// PRAGMA: On gocloud.dev, add a blank import: _ \"example.com/foo\"\"\n//     will add the blank import to the example's imports.\n//\n// The key of each JSON object entry will be the import path of the package,\n// followed by a dot (\".\"), followed by the name of the example function. The\n// value of each JSON object entry is an object like\n// {\"imports\": \"import (\\n\\t\\\"fmt\\\"\\n)\", \"code\": \"/* ... */\"}. These are\n// separated so that templating can format or show them separately.\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/format\"\n\t\"go/printer\"\n\t\"go/types\"\n\t\"os\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/go/packages\"\n)\n\nfunc main() {\n\tflag.Usage = func() {\n\t\tout := flag.CommandLine.Output()\n\t\tfmt.Fprintln(out, \"usage: gatherexamples [options] DIR [...]\")\n\t\tfmt.Fprintln(out)\n\t\tfmt.Fprintln(out, \"Options:\")\n\t\tflag.PrintDefaults()\n\t}\n\tpattern := flag.String(\"pattern\", \"./...\", \"Go package pattern to use at each directory argument\")\n\tflag.Parse()\n\tif flag.NArg() == 0 {\n\t\tflag.Usage()\n\t\tos.Exit(2) // matches with flag package\n\t}\n\n\t// Load packages in each module named on the command line and find\n\t// all examples.\n\tallExamples := make(map[string]example)\n\tfor _, dir := range flag.Args() {\n\t\tcfg := &packages.Config{\n\t\t\tMode:  gatherLoadMode,\n\t\t\tDir:   dir,\n\t\t\tTests: true,\n\t\t}\n\t\tpkgs, err := packages.Load(cfg, *pattern)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"gatherexamples: load %s: %v\\n\", dir, err)\n\t\t\tos.Exit(1)\n\t\t}\n\t\texamples, err := gather(pkgs)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"gatherexamples: gather: %v\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\t\tfor exampleName, ex := range examples {\n\t\t\tallExamples[exampleName] = ex\n\t\t}\n\t}\n\n\t// Write all examples as a JSON object.\n\tdata, err := json.MarshalIndent(allExamples, \"\", \"\\t\")\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"gatherexamples: generate JSON: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n\tdata = append(data, '\\n')\n\tif _, err := os.Stdout.Write(data); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"gatherexamples: write output: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n\nconst gatherLoadMode packages.LoadMode = packages.NeedName |\n\tpackages.NeedFiles |\n\tpackages.NeedTypes |\n\tpackages.NeedSyntax |\n\tpackages.NeedTypesInfo |\n\tpackages.NeedImports |\n\t// TODO(light): We really only need name from deps, but there's no way to\n\t// specify that in the current go/packages API. This sadly makes this program\n\t// 10x slower. Reported as https://github.com/golang/go/issues/31699.\n\tpackages.NeedDeps\n\n// pragmaPrefix is the prefix for all comments in examples that are used as\n// directives for formatting.\nconst pragmaPrefix = \"// PRAGMA: \"\n\n// inclusionComment is the comment used to signify whether the example should be\n// included in the output.\nconst inclusionComment = pragmaPrefix + \"This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\"\n\ntype example struct {\n\tImports string `json:\"imports\"`\n\tCode    string `json:\"code\"`\n}\n\n// gather extracts the code from the example functions in the given packages\n// and returns a map like the one described in the package documentation.\nfunc gather(pkgs []*packages.Package) (map[string]example, error) {\n\texamples := make(map[string]example)\n\tfor _, pkg := range pkgs {\n\t\tfor _, file := range pkg.Syntax {\n\t\t\tfor _, decl := range file.Decls {\n\t\t\t\t// Determine whether this declaration is an example function.\n\t\t\t\tfn, ok := decl.(*ast.FuncDecl)\n\t\t\t\tif !ok || !strings.HasPrefix(fn.Name.Name, \"Example\") || len(fn.Type.Params.List) > 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Format example into string.\n\t\t\t\tsb := new(strings.Builder)\n\t\t\t\terr := format.Node(sb, pkg.Fset, &printer.CommentedNode{\n\t\t\t\t\tNode:     fn.Body,\n\t\t\t\t\tComments: file.Comments,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err // will only occur for bad invocations of Fprint\n\t\t\t\t}\n\t\t\t\toriginal := sb.String()\n\t\t\t\tif !strings.Contains(original, inclusionComment) {\n\t\t\t\t\t// Does not contain the inclusion comment. Skip it, but first verify\n\t\t\t\t\t// that it doesn't contain any PRAGMA comments; only examples with\n\t\t\t\t\t// the inclusion comment should include pragmas.\n\t\t\t\t\tif strings.Contains(original, pragmaPrefix) {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"%s in package %s has PRAGMA(s) for gatherexamples, but is not marked for inclusion with %q\", fn.Name.Name, pkg.PkgPath, inclusionComment)\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\texampleCode, blankImports := rewriteBlock(original)\n\n\t\t\t\t// Gather map of imported packages to overridden identifier.\n\t\t\t\tusedPackages := make(map[string]string)\n\t\t\t\tfor _, path := range blankImports {\n\t\t\t\t\tusedPackages[path] = \"_\"\n\t\t\t\t}\n\t\t\t\tast.Inspect(fn.Body, func(node ast.Node) bool {\n\t\t\t\t\tid, ok := node.(*ast.Ident)\n\t\t\t\t\tif !ok {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\trefPkg, ok := pkg.TypesInfo.ObjectOf(id).(*types.PkgName)\n\t\t\t\t\tif !ok {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\toverrideName := \"\"\n\t\t\t\t\tif id.Name != refPkg.Imported().Name() {\n\t\t\t\t\t\toverrideName = id.Name\n\t\t\t\t\t}\n\t\t\t\t\tusedPackages[refPkg.Imported().Path()] = overrideName\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t// Remove \"log\" import since it's almost always used for log.Fatal(err).\n\t\t\t\tdelete(usedPackages, \"log\")\n\n\t\t\t\tpkgPath := strings.TrimSuffix(pkg.PkgPath, \"_test\")\n\t\t\t\texampleName := pkgPath + \".\" + fn.Name.Name\n\t\t\t\texamples[exampleName] = example{\n\t\t\t\t\tImports: formatImports(usedPackages),\n\t\t\t\t\tCode:    exampleCode,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn examples, nil\n}\n\n// rewriteBlock reformats a Go block statement for display as an example.\n// It also extracts any blank imports found\nfunc rewriteBlock(block string) (_ string, blankImports []string) {\n\t// Trim block.\n\tblock = strings.TrimPrefix(block, \"{\")\n\tblock = strings.TrimSuffix(block, \"}\")\n\n\t// Rewrite line-by-line.\n\tsb := new(strings.Builder)\nrewrite:\n\tfor len(block) > 0 {\n\t\tvar line string\n\t\tline, block = nextLine(block)\n\n\t\t// Dedent line.\n\t\t// TODO(light): In the case of a multi-line raw string literal,\n\t\t// this can produce incorrect rewrites.\n\t\tline = strings.TrimPrefix(line, \"\\t\")\n\n\t\t// Write the line to sb, performing textual substitutions as needed.\n\t\tstart := strings.IndexFunc(line, func(r rune) bool { return r != ' ' && r != '\\t' })\n\t\tif start == -1 {\n\t\t\t// Blank.\n\t\t\tsb.WriteString(line)\n\t\t\tsb.WriteByte('\\n')\n\t\t\tcontinue\n\t\t}\n\t\tconst importBlankPrefix = pragmaPrefix + \"On gocloud.dev, add a blank import: _ \"\n\t\tindent, lineContent := line[:start], line[start:]\n\t\tswitch {\n\t\tcase lineContent == pragmaPrefix+\"On gocloud.dev, hide lines until the next blank line.\":\n\t\t\t// Skip lines until we hit a blank line.\n\t\t\tfor len(block) > 0 {\n\t\t\t\tvar next string\n\t\t\t\tnext, block = nextLine(block)\n\t\t\t\tif strings.TrimSpace(next) == \"\" {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\tcase lineContent == pragmaPrefix+\"On gocloud.dev, hide the rest of the function.\":\n\t\t\t// Ignore remaining lines.\n\t\t\tbreak rewrite\n\t\tcase lineContent == \"log.Fatal(err)\":\n\t\t\tsb.WriteString(indent)\n\t\t\tsb.WriteString(\"return err\")\n\t\t\tsb.WriteByte('\\n')\n\t\tcase strings.HasPrefix(lineContent, importBlankPrefix):\n\t\t\t// Blank import.\n\t\t\tpath, err := strconv.Unquote(lineContent[len(importBlankPrefix):])\n\t\t\tif err == nil {\n\t\t\t\tblankImports = append(blankImports, path)\n\t\t\t}\n\t\tcase strings.Contains(lineContent, inclusionComment):\n\t\t\t// inclusion comment. Skip it.\n\t\tdefault:\n\t\t\t// Ordinary line, write as-is.\n\t\t\tsb.WriteString(line)\n\t\t\tsb.WriteByte('\\n')\n\t\t}\n\t}\n\treturn strings.TrimSpace(sb.String()), blankImports\n}\n\n// nextLine splits the string at the next linefeed.\nfunc nextLine(s string) (line, tail string) {\n\ti := strings.IndexByte(s, '\\n')\n\tif i == -1 {\n\t\treturn s, \"\"\n\t}\n\treturn s[:i], s[i+1:]\n}\n\n// formatImports formats a map of imports to their package identifiers into a\n// Go import declaration.\nfunc formatImports(usedPackages map[string]string) string {\n\tif len(usedPackages) == 0 {\n\t\treturn \"\"\n\t}\n\tif len(usedPackages) == 1 {\n\t\t// Special case: one-line import.\n\t\tfor path, id := range usedPackages {\n\t\t\tif id != \"\" {\n\t\t\t\treturn fmt.Sprintf(\"import %s %q\", id, path)\n\t\t\t}\n\t\t\treturn fmt.Sprintf(\"import %q\", path)\n\t\t}\n\t}\n\t// Typical case: multiple imports in factored declaration form.\n\t// Group into standard library imports then third-party imports.\n\tsortedStdlib := make([]string, 0, len(usedPackages))\n\tsortedThirdParty := make([]string, 0, len(usedPackages))\n\tfor path := range usedPackages {\n\t\tif strings.ContainsRune(path, '.') {\n\t\t\t// Third-party imports almost always contain a dot for a domain name,\n\t\t\t// especially in GOPATH/Go modules workspaces.\n\t\t\tsortedThirdParty = append(sortedThirdParty, path)\n\t\t} else {\n\t\t\tsortedStdlib = append(sortedStdlib, path)\n\t\t}\n\t}\n\tsort.Strings(sortedStdlib)\n\tsort.Strings(sortedThirdParty)\n\tsb := new(strings.Builder)\n\tsb.WriteString(\"import (\\n\")\n\tprintImports := func(paths []string) {\n\t\tfor _, path := range paths {\n\t\t\tid := usedPackages[path]\n\t\t\tif id == \"\" {\n\t\t\t\tfmt.Fprintf(sb, \"\\t%q\\n\", path)\n\t\t\t} else {\n\t\t\t\tfmt.Fprintf(sb, \"\\t%s %q\\n\", id, path)\n\t\t\t}\n\t\t}\n\t}\n\tprintImports(sortedStdlib)\n\tif len(sortedStdlib) > 0 && len(sortedThirdParty) > 0 {\n\t\t// Insert blank line to separate.\n\t\tsb.WriteByte('\\n')\n\t}\n\tprintImports(sortedThirdParty)\n\tsb.WriteString(\")\")\n\treturn sb.String()\n}\n"
  },
  {
    "path": "internal/website/gatherexamples/gatherexamples_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"golang.org/x/tools/go/packages\"\n\t\"golang.org/x/tools/go/packages/packagestest\"\n)\n\nfunc TestGather(t *testing.T) {\n\ttests := []struct {\n\t\tname    string\n\t\tmodule  packagestest.Module\n\t\twant    map[string]example\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname: \"NoExamples\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\nfunc main() {}\\n\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{},\n\t\t},\n\t\t{\n\t\t\tname: \"EmptyExample\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc Example() {}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{},\n\t\t},\n\t\t{\n\t\t\tname: \"EmptyExampleFoo\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc ExampleFoo() {\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{},\n\t\t},\n\t\t{\n\t\t\tname: \"NonSignifiedExampleWithPragma\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc ExampleFoo() {\n\t// PRAGMA: Do something.\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant:    map[string]example{},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"EmptyExampleWithComment\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {Code: \"\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"EmptyExampleFooWithComment\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc ExampleFoo() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.ExampleFoo\": {Code: \"\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"NoImportsExample\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Unattached comment.\n\n\t// Outside inner block comment.\n\tpanic(\"ohai\")\n\tif false {\n\t\t// something\n\t}\n\treturn\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {Code: \"// Unattached comment.\\n\\n\" +\n\t\t\t\t\t\"// Outside inner block comment.\\n\" +\n\t\t\t\t\t\"panic(\\\"ohai\\\")\\n\" +\n\t\t\t\t\t\"if false {\\n\\t// something\\n}\\n\" +\n\t\t\t\t\t\"return\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"OneImportExample\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nimport \"fmt\"\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\tfmt.Println(42)\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {\n\t\t\t\t\tImports: \"import \\\"fmt\\\"\",\n\t\t\t\t\tCode:    \"fmt.Println(42)\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"TwoImportsExample\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nimport \"fmt\"\nimport \"math\"\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\tfmt.Println(math.Pi)\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {\n\t\t\t\t\tImports: \"import (\\n\\t\\\"fmt\\\"\\n\\t\\\"math\\\"\\n)\",\n\t\t\t\t\tCode:    \"fmt.Println(math.Pi)\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"LogFatalToReturnErr\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nimport \"log\"\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\tvar err error\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {Code: \"var err error\\n\" +\n\t\t\t\t\t\"if err != nil {\\n\\treturn err\\n}\"},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"IgnoreSections\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nimport \"context\"\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// do something\n\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\t_ = ctx\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {\n\t\t\t\t\tImports: \"import \\\"context\\\"\",\n\t\t\t\t\tCode:    \"// do something\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"BlankImports\",\n\t\t\tmodule: packagestest.Module{\n\t\t\t\tName: \"example.com/foo\",\n\t\t\t\tFiles: map[string]any{\n\t\t\t\t\t\"foo.go\": \"package foo\\n\",\n\t\t\t\t\t\"example_test.go\": `package foo_test\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"example.com/bar\"\n\t_ = 42\n}`,\n\t\t\t\t},\n\t\t\t},\n\t\t\twant: map[string]example{\n\t\t\t\t\"example.com/foo.Example\": {\n\t\t\t\t\tImports: \"import _ \\\"example.com/bar\\\"\",\n\t\t\t\t\tCode:    \"_ = 42\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\texported := packagestest.Export(t, packagestest.Modules, []packagestest.Module{test.module})\n\t\t\tdefer exported.Cleanup()\n\t\t\texported.Config.Mode = gatherLoadMode\n\t\t\tpkgs, err := packages.Load(exported.Config, \"./...\")\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\n\t\t\tgot, err := gather(pkgs)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"gather(pkgs) got err %v want err? %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(test.want, got, cmpopts.EquateEmpty()); diff != \"\" {\n\t\t\t\tt.Errorf(\"gather(pkgs) diff (-want +got):\\n%s\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestFormatImports(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\tusedPackages map[string]string\n\t\twant         string\n\t}{\n\t\t{\n\t\t\tname:         \"Empty\",\n\t\t\tusedPackages: nil,\n\t\t\twant:         \"\",\n\t\t},\n\t\t{\n\t\t\tname:         \"One\",\n\t\t\tusedPackages: map[string]string{\"fmt\": \"\"},\n\t\t\twant:         \"import \\\"fmt\\\"\",\n\t\t},\n\t\t{\n\t\t\tname: \"Two\",\n\t\t\tusedPackages: map[string]string{\n\t\t\t\t\"fmt\": \"\",\n\t\t\t\t\"log\": \"\",\n\t\t\t},\n\t\t\twant: \"import (\\n\\t\\\"fmt\\\"\\n\\t\\\"log\\\"\\n)\",\n\t\t},\n\t\t{\n\t\t\tname: \"Renamed\",\n\t\t\tusedPackages: map[string]string{\n\t\t\t\t\"fmt\": \"zzz\",\n\t\t\t\t\"log\": \"aaa\",\n\t\t\t},\n\t\t\twant: \"import (\\n\\tzzz \\\"fmt\\\"\\n\\taaa \\\"log\\\"\\n)\",\n\t\t},\n\t\t{\n\t\t\tname: \"StdlibSeparateFromThirdParty\",\n\t\t\tusedPackages: map[string]string{\n\t\t\t\t\"context\":                      \"\",\n\t\t\t\t\"fmt\":                          \"\",\n\t\t\t\t\"log\":                          \"\",\n\t\t\t\t\"github.com/google/go-cmp/cmp\": \"\",\n\t\t\t\t\"gocloud.dev/blob\":             \"\",\n\t\t\t},\n\t\t\twant: \"import (\\n\" +\n\t\t\t\t\"\\t\\\"context\\\"\\n\" +\n\t\t\t\t\"\\t\\\"fmt\\\"\\n\" +\n\t\t\t\t\"\\t\\\"log\\\"\\n\" +\n\t\t\t\t\"\\n\" +\n\t\t\t\t\"\\t\\\"github.com/google/go-cmp/cmp\\\"\\n\" +\n\t\t\t\t\"\\t\\\"gocloud.dev/blob\\\"\\n\" +\n\t\t\t\t\")\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tgot := formatImports(test.usedPackages)\n\t\t\tif got != test.want {\n\t\t\t\tt.Errorf(\"formatImports(%+v) =\\n%s\\n// want:\\n%s\", test.usedPackages, got, test.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "internal/website/gatherexamples/run.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Run gatherexamples for the project.\n# The output of this script should be piped into\n# internal/website/data/examples.json, where it's picked up by Hugo.\n\nset -eo pipefail\ncd \"$(dirname \"${BASH_SOURCE[0]}\")/../../..\"\ncd internal/website/gatherexamples\ngo build gatherexamples.go\ncd ../../..\nsed -e '/^#/d' -e '/^$/d' allmodules | awk '{print $1}' | xargs internal/website/gatherexamples/gatherexamples\n"
  },
  {
    "path": "internal/website/go.mod",
    "content": "module gocloud.dev/internal/website\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/google/go-cmp v0.6.0\n\tgolang.org/x/tools v0.43.0\n\tgolang.org/x/tools/go/packages/packagestest v0.1.1-deprecated\n)\n\nrequire (\n\tgolang.org/x/mod v0.34.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/tools/go/expect v0.1.0-deprecated // indirect\n)\n"
  },
  {
    "path": "internal/website/go.sum",
    "content": "github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=\ngithub.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=\ngolang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI=\ngolang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s=\ngolang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0=\ngolang.org/x/tools/go/expect v0.1.0-deprecated h1:jY2C5HGYR5lqex3gEniOQL0r7Dq5+VGVgY1nudX5lXY=\ngolang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=\ngolang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM=\ngolang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8=\n"
  },
  {
    "path": "internal/website/layouts/404.html",
    "content": "{{ define \"main\" }}\n<h1>404: Page not found</h1>\n<p>\n  Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.\n  <a href=\"{{ .Site.BaseURL }}\">Head back home</a> to try finding it again.\n</p>\n{{ end }}\n"
  },
  {
    "path": "internal/website/layouts/_default/baseof.html",
    "content": "<!DOCTYPE html>\n<html {{- with .Site.LanguageCode}} lang=\"{{.}}\"{{end}}>\n<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n  {{ .Hugo.Generator }}\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n  {{ if .IsHome -}}\n  <title>{{ .Site.Title }}</title>\n  {{- else -}}\n  <title>{{ .Title }} &middot; {{ .Site.Title }}</title>\n  {{- end }}\n\n  <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Source+Code+Pro|Work+Sans:400,700\">\n  <link type=\"text/css\" rel=\"stylesheet\" href=\"{{ relURL \"css/syntax.css\" }}\">\n  <link type=\"text/css\" rel=\"stylesheet\" href=\"{{ relURL \"css/style.css\" }}\">\n  <link rel=\"shortcut icon\" href=\"{{ relURL \"/favicon-32x32.png\" }}\">\n  {{- range .AlternativeOutputFormats }}\n  <link rel=\"{{.Rel}}\" type=\"{{.MediaType.Type}}\" href=\"{{.RelPermalink}}\" title=\"{{with $.CurrentSection}}{{.Title}}{{else}}{{$.Page.Title}}{{end}}\" />\n  {{- end }}\n  {{- if .Page.Params.pkgmeta }}\n  <meta name=\"go-import\" content=\"gocloud.dev git https://github.com/google/go-cloud\">\n  <meta name=\"go-source\" content=\"gocloud.dev https://github.com/google/go-cloud https://github.com/google/go-cloud/tree/master{/dir} https://github.com/google/go-cloud/tree/master{/dir}/{file}#L{line}\">\n  {{- end }}\n  {{ template \"_internal/google_analytics_async.html\" . }}\n</head>\n<body>\n  <div class=\"PageLayout\">\n    <header class=\"PageHeader\">\n      <a href=\"{{ .Site.BaseURL }}\"><h1 class=\"PageLogo\"><img class=\"PageLogo-image\" src=\"{{ relURL \"/go-cdk-logo-white.png\" }}\" alt=\"{{ .Site.Title }}\"></h1></a>\n    </header>\n    <main class=\"MainContent\">\n      <div class=\"MainContent-bounds\">\n        {{- block \"main\" .}}{{end -}}\n      </div>\n    </main>\n    <nav class=\"Sidenav\">\n      <ul class=\"Sidenav-list\">\n        <li class=\"Sidenav-section\">\n          <a href=\"{{(.GetPage \"/_index.md\").RelPermalink}}\" class=\"Sidenav-sectionLink\">Home</a>\n        </li>\n        {{- range .Site.Sections}}\n        {{- if .Params.showInSidenav }}\n        <li class=\"Sidenav-section\">\n          <a href=\"{{.RelPermalink}}\" class=\"Sidenav-sectionLink\">{{.LinkTitle}}</a>\n          {{- if .Params.pagesInSidenav }}\n            <ul class=\"Sidenav-pageList\">\n              {{- range .Pages.GroupBy \"Weight\" }}\n              {{- range .Pages.ByTitle }}\n              <li class=\"Sidenav-page\">\n                <a href=\"{{.RelPermalink}}\" class=\"Sidenav-pageLink\">{{.LinkTitle}}</a>\n              </li>\n              {{- end }}\n              {{- end }}\n            </ul>\n          {{- end}}\n        </li>\n        {{- end }}\n        {{- end}}\n      </ul>\n    </nav>\n    <footer class=\"PageFooter\">\n      <nav>\n        <ul class=\"FooterLinks\">\n          {{- range .Site.Menus.footer}}\n          <li class=\"FooterLinks-item\"><a href=\"{{.URL}}\" class=\"FooterLinks-link\">{{.Name}}</a></li>\n          {{- end}}\n        </ul>\n      </nav>\n\n      {{with .Site.Copyright -}}\n      <p class=\"PageFooter-paragraph\">\n        {{.}}.\n        All content released under an <a href=\"https://github.com/google/go-cloud/blob/master/LICENSE\" target=\"_blank\" class=\"PageFooter-link\">Apache 2.0 License</a>.\n      </p>\n      {{- end}}\n      <p class=\"PageFooter-paragraph\"><a href=\"https://github.com/google/go-cloud/edit/master/internal/website/content/{{.Page.File.Path}}\" class=\"PageFooter-link\">Improve this page</a> on GitHub.</p>\n    </footer>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "internal/website/layouts/_default/li.html",
    "content": "<article class=\"PageList-item\">\n  <a href=\"{{.RelPermalink}}\"><h2 class=\"PageList-itemTitle\">{{ .LinkTitle }}</h2></a>\n  <div class=\"PageList-summary\">{{.Summary}}</div>\n  <div class=\"PageList-readMore\"><a href=\"{{.RelPermalink}}\">Read more&hellip;</a></div>\n</article>\n"
  },
  {
    "path": "internal/website/layouts/_default/list.html",
    "content": "{{ define \"main\" -}}\n<h1>{{ .Title }}</h1>\n{{ partial \"page-toc.html\" . }}\n{{ partial \"header-link.html\" .Content }}\n{{ with .Data.Pages.GroupBy \"Weight\" }}\n<div class=\"PageList\">\n{{- range .}}\n{{- range .Pages.ByTitle}}\n  {{.Render \"li\"}}\n{{- end }}\n{{- end }}\n</div>\n{{end}}\n{{- end }}\n"
  },
  {
    "path": "internal/website/layouts/_default/single.html",
    "content": "{{ define \"main\" -}}\n<h1>{{ .Title }}</h1>\n{{ partial \"page-toc.html\" . }}\n{{ partial \"header-link.html\" .Content }}\n{{- end }}\n"
  },
  {
    "path": "internal/website/layouts/_default/sitemap.xml",
    "content": "{{ printf \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\" standalone=\\\"yes\\\" ?>\" | safeHTML }}\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n  xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n  {{ range sort .Data.Pages \"Permalink\" }}\n  <url>\n    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}\n    <lastmod>{{ safeHTML ( .Lastmod.Format \"2006-01-02T15:04:05-07:00\" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}\n    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}\n    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}\n    <xhtml:link\n                rel=\"alternate\"\n                hreflang=\"{{ .Language.Lang }}\"\n                href=\"{{ .Permalink }}\"\n                />{{ end }}\n    <xhtml:link\n                rel=\"alternate\"\n                hreflang=\"{{ .Language.Lang }}\"\n                href=\"{{ .Permalink }}\"\n                />{{ end }}\n  </url>\n  {{ end }}\n</urlset>\n"
  },
  {
    "path": "internal/website/layouts/howto/li.html",
    "content": "<li class=\"HowtoList-item\">\n  <a href=\"{{.RelPermalink}}\">{{ .LinkTitle }}</a>\n</li>\n"
  },
  {
    "path": "internal/website/layouts/howto/list.html",
    "content": "{{ define \"main\" -}}\n<h1>{{ .Title }}</h1>\n{{ partial \"page-toc.html\" . }}\n{{ partial \"header-link.html\" .Content }}\n{{ if or .Data.Pages }}\n<ul class=\"HowtoList\">\n{{- range .Data.Pages.GroupBy \"Weight\" }}\n{{- range .ByTitle }}\n  {{.Render \"li\"}}\n{{- end }}\n{{- end }}\n</ul>\n{{- end }}\n{{- end }}\n"
  },
  {
    "path": "internal/website/layouts/index.html",
    "content": "{{ define \"main\" -}}\n{{ partial \"header-link.html\" .Content }}\n{{- end }}\n"
  },
  {
    "path": "internal/website/layouts/partials/header-link.html",
    "content": "{{- /* https://zwbetz.com/create-header-links-hugo-vs-javascript/ */ -}}\n{{ . | replaceRE \"(<h[2-9] id=\\\"([^\\\"]+)\\\">)(.+)(</h[2-9]+>)\" `${1} ${3}<a class=\"anchor\" href=\"#${2}\" aria-label=\"Link to Section\">🔗</a>${4}` | safeHTML -}}\n"
  },
  {
    "path": "internal/website/layouts/partials/hook_head_end.html",
    "content": "{{if .Page.Params.pkgmeta}}\n    <meta name=\"go-import\" content=\"gocloud.dev git https://github.com/google/go-cloud\">\n    <meta name=\"go-source\" content=\"gocloud.dev https://github.com/google/go-cloud https://github.com/google/go-cloud/tree/master{/dir} https://github.com/google/go-cloud/tree/master{/dir}/{file}#L{line}\">\n{{end}}\n"
  },
  {
    "path": "internal/website/layouts/partials/page-toc.html",
    "content": "{{if .Page.Params.toc}}\n<nav class=\"PageTOC\">\n  <div class=\"PageTOC-heading\">In this article</div>\n  {{ .Page.TableOfContents }}\n</nav>\n{{end -}}\n"
  },
  {
    "path": "internal/website/layouts/pkg/list.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta name=\"go-import\" content=\"gocloud.dev git https://github.com/google/go-cloud\">\n    <meta name=\"go-source\" content=\"gocloud.dev https://github.com/google/go-cloud https://github.com/google/go-cloud/tree/master{/dir} https://github.com/google/go-cloud/tree/master{/dir}/{file}#L{line}\">\n    <meta http-equiv=\"refresh\" content=\"0; url=https://godoc.org/gocloud.dev{{.Page.URL | strings.TrimSuffix \"/\"}}\">\n  </head>\n  <body>\n    Nothing to see here; <a href=\"https://godoc.org/gocloud.dev{{.Page.URL | strings.TrimSuffix \"/\"}}\">see the package on godoc</a>.\n  </body>\n</html>\n"
  },
  {
    "path": "internal/website/layouts/pkg/single.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta name=\"go-import\" content=\"gocloud.dev git https://github.com/google/go-cloud\">\n    <meta name=\"go-source\" content=\"gocloud.dev https://github.com/google/go-cloud https://github.com/google/go-cloud/tree/master{/dir} https://github.com/google/go-cloud/tree/master{/dir}/{file}#L{line}\">\n    <meta http-equiv=\"refresh\" content=\"0; url=https://godoc.org/gocloud.dev{{.Page.URL | strings.TrimSuffix \"/\"}}\">\n  </head>\n  <body>\n    Nothing to see here; <a href=\"https://godoc.org/gocloud.dev{{.Page.URL | strings.TrimSuffix \"/\"}}\">see the package on godoc</a>.\n  </body>\n</html>\n"
  },
  {
    "path": "internal/website/layouts/shortcodes/goexample.html",
    "content": "{{/*\nUsage:\n\ngoexample \"gocloud.dev/foo.ExampleBar\"\ngoexample src=\"gocloud.dev/foo.ExampleBar\"\ngoexample src=\"gocloud.dev/foo.ExampleBar\" imports=\"0\"\n\n*/ -}}\n{{ if .IsNamedParams -}}\n  {{ with index .Site.Data.examples (.Get \"src\") -}}\n    {{ if and .imports (ne ($.Get \"imports\") \"0\") -}}\n      {{ highlight (printf \"%s\\n\\n%s\\n\" .imports .code) \"go\" \"\" -}}\n    {{ else -}}\n      {{ highlight (printf \"%s\\n\" .code) \"go\" \"\" -}}\n    {{ end -}}\n  {{ else -}}\n    {{ errorf \"%s: Example %q does not exist\" ($.Page.File.Path) (.Get \"src\") -}}\n  {{end -}}\n{{ else -}}\n  {{ with index .Site.Data.examples (.Get 0) -}}\n    {{ if .imports -}}\n      {{ highlight (printf \"%s\\n\\n%s\\n\" .imports .code) \"go\" \"\" -}}\n    {{ else -}}\n      {{ highlight (printf \"%s\\n\" .code) \"go\" \"\" -}}\n    {{ end -}}\n  {{ else -}}\n    {{ errorf \"%s: Example %q does not exist\" ($.Page.File.Path) (.Get 0) -}}\n  {{end -}}\n{{ end -}}\n"
  },
  {
    "path": "internal/website/layouts/shortcodes/snippet.html",
    "content": "{{ readFile (.Get 0 | printf \"/snippets/%s\") | markdownify -}}\n"
  },
  {
    "path": "internal/website/listnewpkgs.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script lists the package names that makeimports.sh would create\n# _index.md files for, one per line.\n\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\n# except x is too verbose\nset -euo pipefail\n\n# Change into repository root.\ncd \"$(dirname \"$0\")/../..\"\nOUTDIR=internal/website/content\n\nshopt -s nullglob  # glob patterns that don't match turn into the empty string, instead of themselves\n\nfunction files_exist() {  # assumes nullglob\n  [[ ${1:-\"\"} != \"\" ]]\n}\n\n# Find all directories that do not begin with '.' or '_' or contain 'testdata'. Use the %P printf\n# directive to remove the initial './'.\nfor pkg in $(find . -type d \\( -name '[._]?*' -prune -o -name testdata -prune -o -printf '%P ' \\)); do\n  # Only consider directories that contain Go source files.\n  outfile=\"$OUTDIR/$pkg/_index.md\"\n  if files_exist $pkg/*.go && [[ ! -e \"$outfile\" ]]; then\n    echo \"$pkg\"\n  fi\ndone\n\n"
  },
  {
    "path": "internal/website/makeimports.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# This script generates Markdown files that will include <meta> suitable for\n# \"go get\"'s import path redirection feature (see\n# https://golang.org/cmd/go/#hdr-Remote_import_paths) in the final Hugo output.\n\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\n# except x is too verbose\nset -euo pipefail\n\n# Change into repository root.\ncd \"$(dirname \"$0\")/../..\"\nOUTDIR=internal/website/content\n\nfor pkg in $(internal/website/listnewpkgs.sh); do\n  # Only consider directories that contain Go source files.\n  outfile=\"$OUTDIR/$pkg/_index.md\"\n  mkdir -p \"$OUTDIR/$pkg\"\n  echo \"Generating gocloud.dev/$pkg\"\n  echo \"---\" >> \"$outfile\"\n  echo \"title: gocloud.dev/$pkg\" >> \"$outfile\"\n  echo \"type: pkg\" >> \"$outfile\"\n  echo \"---\" >> \"$outfile\"\ndone\n\n"
  },
  {
    "path": "internal/website/static/css/style.css",
    "content": "/*\nCopyright 2019 The Go Cloud Development Kit Authors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* Basic layout {{{1 */\nhtml {\n  font: 14px/1.5 'Roboto', sans-serif;\n  margin: 0;\n  padding: 0;\n}\n@media (min-width: 768px) {\n  html {\n    font-size: 16px;\n  }\n}\nbody {\n  background: #fff;\n  color: #000;\n  margin: 0;\n  padding: 0;\n}\n.PageLayout {\n  display: grid;\n  grid-template-columns: 15rem 1fr;\n  grid-template-rows: minmax(4rem, auto) 1fr minmax(4rem, auto);\n  grid-template-areas:\n    'hd hd'\n    'sd main'\n    'ft ft';\n  margin: 0;\n  min-height: 100vh;\n  padding: 0;\n  width: 100vw;\n}\n@media (max-width: 768px) {\n  .PageLayout {\n    grid-template-columns: 100%;\n    grid-template-areas: 'hd' 'main' 'sd' 'ft';\n  }\n}\n.PageHeader {\n  background: #00add8;\n  grid-area: hd;\n  margin: 0;\n  padding: 0;\n}\n.PageLogo {\n  box-sizing: border-box;\n  margin: 0 auto;\n  padding: 1.25rem 0;\n  text-align: center;\n  width: 20rem;\n}\n.PageLogo-image {\n  height: 80px;\n}\n@media (max-width: 768px) {\n  .PageLogo-image {\n    height: 72px;\n  }\n}\n.MainContent {\n  box-sizing: border-box;\n  grid-area: main;\n  margin: 0;\n  overflow-x: hidden;  /* creates a new block formatting context for children overflows */\n  padding: 2rem 2rem 3rem;\n}\n.MainContent-bounds {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  max-width: 50rem;\n}\n.Sidenav {\n  background: #dbd9d6;\n  box-sizing: border-box;\n  font-family: 'Work Sans', 'Roboto', sans-serif;\n  font-size: 0.8rem;\n  grid-area: sd;\n  margin: 0;\n  padding: 1rem 2rem 2rem 1rem;\n}\n.Sidenav-list {\n  margin: 0;\n  padding: 0;\n  list-style: none;\n}\n.Sidenav-pageList {\n  margin: 0 0 0 2rem;\n  padding: 0;\n  list-style: none;\n}\n.Sidenav-section {\n  margin: 0.5rem 0 0;\n  padding: 0;\n}\n.Sidenav-sectionLink {\n  color: #000;\n  font-weight: bold;\n  text-decoration: none;\n}\n.Sidenav-page {\n  margin: 0.3rem 0 0;\n  padding: 0;\n}\n.Sidenav-pageLink {\n  color: #000;\n  font-weight: normal;\n  text-decoration: none;\n}\n.Sidenav-sectionLink:hover,\n.Sidenav-sectionLink:active,\n.Sidenav-pageLink:hover,\n.Sidenav-pageLink:active {\n  text-decoration: underline;\n}\n.PageTOC {\n  border-left: 2px solid #dbd9d6;\n  float: right;\n  margin: 0.25rem 0 1rem 2rem;\n  max-width: 25%;\n  min-width: 15%;\n  padding: 0.5rem 0 0.5rem 1rem;\n}\n@media (max-width: 1024px) {\n  .PageTOC {\n    border: none;\n    float: none;\n    margin: 1.5rem 0 0.5rem;\n    max-width: none;\n    min-width: none;\n    padding: 0;\n  }\n}\n.PageTOC {\n  font-size: 0.85rem;\n}\n.PageTOC-heading {\n  font: 700 1rem/1.25 'Work Sans', 'Roboto', sans-serif;\n  margin: 0 0 0.5rem;\n  text-rendering: optimizeLegibility;\n}\n.PageTOC>nav>ul>li>ul {\n  /* Don't indent top-level list. */\n  margin: 0;\n}\n.PageTOC ul {\n  list-style: none;\n  margin: 0 0 0 1rem;\n  padding: 0;\n}\n.PageTOC li {\n  margin: 0.3rem 0;\n  padding: 0;\n}\n.PageTOC>nav>ul {\n  /* CSS trick to remove h1 level from TOC.\n   * https://github.com/gohugoio/hugo/issues/1778 */\n  display: block;\n  margin: 0;\n  padding: 0;\n}\n.PageTOC>nav>ul>li {\n  /* CSS trick to remove h1 level from TOC.\n   * https://github.com/gohugoio/hugo/issues/1778 */\n  display: block;\n  margin: 0;\n  padding: 0;\n}\n.PageFooter {\n  background: #555759;\n  box-sizing: border-box;\n  color: #ffffff;\n  font-size: 0.95rem;\n  grid-area: ft;\n  line-height: 1;\n  margin: 0;\n  padding: 2rem 2rem 1rem;\n}\n.PageFooter-paragraph {\n  margin: 1em auto;\n  max-width: 40rem;\n  text-align: justify;\n}\n.PageFooter-link {\n  color: #ffffff;\n  text-decoration: underline;\n}\n.FooterLinks {\n  box-sizing: border-box;\n  font-size: 1rem;\n  line-height: 1.5;\n  list-style: none;\n  margin: 0 auto 2rem;\n  padding: 0;\n  max-width: 40rem;\n}\n.FooterLinks-item {\n  margin: 0;\n  padding: 0;\n  text-align: justify;\n}\n.FooterLinks-link {\n  color: #9eecff;\n  text-decoration: none;\n}\n.FooterLinks-link:hover,\n.FooterLinks-link:active {\n  text-decoration: underline;\n}\n.PageList {\n  box-sizing: border-box;\n  display: grid;\n  grid-auto-rows: fit-content(5rem);\n  grid-template-columns: repeat(2, minmax(15rem, 1fr));\n  margin: 0;\n  padding: 0;\n}\n@media (max-width: 768px) {\n  .PageList {\n    grid-template-columns: minmax(15rem, 1fr);\n  }\n}\n.PageList-item {\n  box-sizing: border-box;\n  display: flex;\n  flex-direction: column;\n  margin: 0 0.5rem;\n  padding: 0 1rem;\n  place-content: start;\n}\n.PageList-itemTitle {\n  color: #000;\n}\n.PageList-summary {\n  flex: 1;\n  margin: 0;\n  padding: 0;\n}\n.PageList-readMore {\n  margin: 1rem 0 0;\n  padding: 0;\n}\n.HowtoList {\n  font: 300 1.5rem/1.25 'Roboto', sans-serif;\n  margin: 1rem 0 0;\n  padding: 0;\n}\n.HowtoList-item {\n  margin: 0.5rem 0 0.5rem 2rem;\n  padding: 0;\n}\n\n/* Content styling {{{1 */\n/* Headings */\n.MainContent h1 {\n  font: 700 2rem/1.25 'Work Sans', 'Roboto', sans-serif;\n  margin: 0 0 0.5rem;\n  text-rendering: optimizeLegibility;\n}\n.MainContent h2 {\n  font: 700 1.5rem/1.25 'Work Sans', 'Roboto', sans-serif;\n  margin: 2rem 0 0.5rem;\n  text-rendering: optimizeLegibility;\n}\n.MainContent h3 {\n  font: 700 1.25rem/1.25 'Work Sans', 'Roboto', sans-serif;\n  margin: 3rem 0 0.5rem;\n  text-rendering: optimizeLegibility;\n}\n.MainContent h4,\n.MainContent h5,\n.MainContent h6 {\n  font: 700 1rem/1.25 'Work Sans', 'Roboto', sans-serif;\n  margin: 2rem 0 0.5rem;\n  text-rendering: optimizeLegibility;\n}\n.MainContent h1 .anchor,\n.MainContent h2 .anchor,\n.MainContent h3 .anchor,\n.MainContent h4 .anchor,\n.MainContent h5 .anchor,\n.MainContent h6 .anchor {\n  display: none;\n  font-size: 1rem;\n  margin: 0 0.2rem;\n}\n.MainContent h1 :link:hover,\n.MainContent h2 :link:hover,\n.MainContent h3 :link:hover,\n.MainContent h4 :link:hover,\n.MainContent h5 :link:hover,\n.MainContent h6 :link:hover {\n  text-decoration: none;\n}\n.MainContent h1:hover .anchor,\n.MainContent h2:hover .anchor,\n.MainContent h3:hover .anchor,\n.MainContent h4:hover .anchor,\n.MainContent h5:hover .anchor,\n.MainContent h6:hover .anchor {\n  display: inline;\n}\n/* Code */\n.MainContent code {\n  font-size: 85%;\n  font-family: 'Source Code Pro', monospace;\n}\n.MainContent pre {\n  box-sizing: border-box;\n  background: #f9f9f9;\n  border-radius: 4px;\n  display: block;\n  font: 0.8rem/1.4 'Source Code Pro', monospace;\n  margin: 0 0 1rem;\n  overflow-x: auto;\n  padding: 1rem;\n  white-space: pre;\n  width: 100%;\n}\n.MainContent pre code {\n  font-size: 100%;\n}\n.highlight {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  width: 100%;\n}\n/* Figures */\n.FullWidthFigure {\n  border: thin solid #dbd9d6;\n  border-radius: 4px;\n  margin: 1rem 0;\n  padding: 0.5rem 0;\n}\n.FullWidthFigure img {\n  width: 100%;\n}\n/* Links */\n.MainContent :link {\n  color: #00758d;\n  text-decoration: none;\n}\n.MainContent :visited {\n  color: #00758d;\n  text-decoration: none;\n}\n.MainContent :link:hover,\n.MainContent :link:focus,\n.MainContent :visited:hover,\n.MainContent :visited:focus {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "internal/website/static/css/syntax.css",
    "content": "/* Keyword */ .chroma .k { color: #00758d; font-weight: bold }\n/* KeywordConstant */ .chroma .kc { color: #00758d; font-weight: bold }\n/* KeywordDeclaration */ .chroma .kd { color: #00758d; font-weight: bold }\n/* KeywordNamespace */ .chroma .kn { color: #00758d; font-weight: bold }\n/* KeywordPseudo */ .chroma .kp { color: #00758d }\n/* KeywordReserved */ .chroma .kr { color: #00758d; font-weight: bold }\n/* KeywordType */ .chroma .kt { color: #00758d }\n/* NameBuiltin */ .chroma .nb { color: #00758d }\n/* LiteralString */ .chroma .s { color: #ce3262 }\n/* LiteralStringAffix */ .chroma .sa { color: #ce3262 }\n/* LiteralStringBacktick */ .chroma .sb { color: #ce3262 }\n/* LiteralStringChar */ .chroma .sc { color: #ce3262 }\n/* LiteralStringDelimiter */ .chroma .dl { color: #ce3262 }\n/* LiteralStringDoc */ .chroma .sd { color: #ce3262; font-style: italic }\n/* LiteralStringDouble */ .chroma .s2 { color: #ce3262 }\n/* LiteralStringEscape */ .chroma .se { color: #ce3262; font-weight: bold }\n/* LiteralStringHeredoc */ .chroma .sh { color: #ce3262 }\n/* LiteralStringInterpol */ .chroma .si { color: #ce3262; font-style: italic }\n/* LiteralStringOther */ .chroma .sx { color: #ce3262 }\n/* LiteralStringRegex */ .chroma .sr { color: #ce3262 }\n/* LiteralStringSingle */ .chroma .s1 { color: #ce3262 }\n/* LiteralStringSymbol */ .chroma .ss { color: #ce3262 }\n/* LiteralNumber */ .chroma .m { color: #ce3262 }\n/* LiteralNumberBin */ .chroma .mb { color: #ce3262 }\n/* LiteralNumberFloat */ .chroma .mf { color: #ce3262 }\n/* LiteralNumberHex */ .chroma .mh { color: #ce3262 }\n/* LiteralNumberInteger */ .chroma .mi { color: #ce3262 }\n/* LiteralNumberIntegerLong */ .chroma .il { color: #ce3262 }\n/* LiteralNumberOct */ .chroma .mo { color: #ce3262 }\n/* Comment */ .chroma .c { color: #555759; font-style: italic }\n/* CommentHashbang */ .chroma .ch { color: #555759; font-style: italic }\n/* CommentMultiline */ .chroma .cm { color: #555759; font-style: italic }\n/* CommentSingle */ .chroma .c1 { color: #555759; font-style: italic }\n/* CommentSpecial */ .chroma .cs { color: #555759; font-style: italic }\n/* CommentPreproc */ .chroma .cp { color: #555759; font-style: italic }\n/* CommentPreprocFile */ .chroma .cpf { color: #555759; font-style: italic }\n/* GenericDeleted */ .chroma .gd { color: #a00000 }\n/* GenericEmph */ .chroma .ge { font-style: italic }\n/* GenericError */ .chroma .gr { color: #ff0000 }\n/* GenericHeading */ .chroma .gh { font-weight: bold }\n/* GenericInserted */ .chroma .gi { color: #00a000 }\n/* GenericPrompt */ .chroma .gp { font-weight: bold }\n/* GenericStrong */ .chroma .gs { font-weight: bold }\n/* GenericSubheading */ .chroma .gu { font-weight: bold }\n/* GenericUnderline */ .chroma .gl { text-decoration: underline }\n"
  },
  {
    "path": "mysql/awsmysql/awsmysql.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awsmysql provides connections to AWS RDS MySQL instances.\n//\n// # URLs\n//\n// For mysql.Open, awsmysql registers for the scheme \"awsmysql\".\n// The default URL opener will create a connection using the default\n// credentials from the environment, as described in\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/session/.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n//\n// See https://gocloud.dev/concepts/urls/ for background information.\npackage awsmysql // import \"gocloud.dev/mysql/awsmysql\"\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/credentials/stscreds\"\n\t\"github.com/aws/aws-sdk-go-v2/feature/rds/auth\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sts\"\n\t\"github.com/go-sql-driver/mysql\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/aws/rds\"\n\tgcmysql \"gocloud.dev/mysql\"\n)\n\n// Set is a Wire provider set that provides a *sql.DB given\n// *Params and an HTTP client.\nvar Set = wire.NewSet(\n\twire.Struct(new(URLOpener), \"CertSource\", \"HTTPClient\"),\n\trds.CertFetcherSet,\n)\n\n// URLOpener opens RDS MySQL URLs\n// like \"awsmysql://user:password@myinstance.borkxyzzy.us-west-1.rds.amazonaws.com:3306/mydb\".\n//\n// To use IAM authentication, omit the password:\n//\n//\tawsmysql://iam-user@myinstance.borkxyzzy.us-west-1.rds.amazonaws.com:3306/mydb\n//\n// To specify an AWS profile or assume a role, add the following query parameters:\n//\n//   - aws_profile: the AWS shared config profile to use\n//   - aws_role_arn: the ARN of the role to assume\ntype URLOpener struct {\n\t// HTTPClient is the HTTP client used to fetch RDS certificates,\n\t// and IAM authentication tokens.\n\tHTTPClient *http.Client\n\t// CertSource specifies how the opener will obtain the RDS Certificate\n\t// Authority. If nil, it will use the default *rds.CertFetcher.\n\tCertSource rds.CertPoolProvider\n\t// TraceOpts contains options for OpenTelemetry.\n\tTraceOpts []otelsql.Option\n}\n\n// Scheme is the URL scheme awsmysql registers its URLOpener under on\n// mysql.DefaultMux.\nconst Scheme = \"awsmysql\"\n\nfunc init() {\n\tgcmysql.DefaultURLMux().RegisterMySQL(Scheme, &URLOpener{})\n}\n\n// OpenMySQLURL opens a new RDS database connection wrapped with OpenTelemetry instrumentation.\nfunc (uo *URLOpener) OpenMySQLURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\tsource := uo.CertSource\n\tif source == nil {\n\t\tsource = &rds.CertFetcher{Client: uo.HTTPClient}\n\t}\n\tif u.Host == \"\" {\n\t\treturn nil, fmt.Errorf(\"open OpenMySQLURL: empty endpoint\")\n\t}\n\t// If no password provided, assume it's AWS IAM authentication.\n\t// awsmysql://iam-user@host:port/dbname\n\tvar iam func(context.Context) (string, error)\n\tif _, ok := u.User.Password(); !ok {\n\t\tvar (\n\t\t\tq       = u.Query()\n\t\t\tprofile = q.Get(\"aws_profile\")\n\t\t)\n\t\tq.Del(\"aws_profile\")\n\t\tcfg, err := config.LoadDefaultConfig(ctx,\n\t\t\tconfig.WithHTTPClient(uo.HTTPClient),    // Ignored if nil.\n\t\t\tconfig.WithSharedConfigProfile(profile)) // Ignored if empty.\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open OpenMySQLURL: load AWS config: %v\", err)\n\t\t}\n\t\tcreds := cfg.Credentials\n\t\tif roleARN := q.Get(\"aws_role_arn\"); roleARN != \"\" {\n\t\t\t// If a RoleARN is specified, replace the credentials with AssumeRole provider.\n\t\t\tcreds = stscreds.NewAssumeRoleProvider(sts.NewFromConfig(cfg), roleARN)\n\t\t\tq.Del(\"aws_role_arn\")\n\t\t}\n\t\tu.RawQuery = q.Encode()\n\t\tcreds = aws.NewCredentialsCache(creds)\n\t\tiam = func(ctx context.Context) (string, error) {\n\t\t\t// BuildAuthToken is local-operation\n\t\t\t// and does not make network calls.\n\t\t\t// The credentials provider may make network calls,\n\t\t\t// but we are wrapped it with caching.\n\t\t\treturn auth.BuildAuthToken(ctx, u.Host, cfg.Region, u.User.Username(), creds)\n\t\t}\n\t}\n\tcfg, err := gcmysql.ConfigFromURL(u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc := &connector{\n\t\tcfg:      cfg,\n\t\tiam:      iam,\n\t\tprovider: source,\n\n\t\tsem:   make(chan struct{}, 1),\n\t\tready: make(chan struct{}),\n\t}\n\tc.sem <- struct{}{}\n\treturn otelsql.OpenDB(c, uo.TraceOpts...), nil\n}\n\ntype connector struct {\n\tsem      chan struct{} // receive to acquire, send to release\n\tprovider CertPoolProvider\n\n\tready chan struct{} // closed after resolving dsn\n\tcfg   *mysql.Config\n\tiam   func(context.Context) (string, error)\n}\n\nfunc (c *connector) Connect(ctx context.Context) (driver.Conn, error) {\n\tselect {\n\tcase <-c.sem:\n\t\tcertPool, err := c.provider.RDSCertPool(ctx)\n\t\tif err != nil {\n\t\t\tc.sem <- struct{}{} // release\n\t\t\treturn nil, fmt.Errorf(\"connect RDS: %v\", err)\n\t\t}\n\t\tc.cfg.TLS = &tls.Config{RootCAs: certPool}\n\t\tclose(c.ready)\n\t\t// Don't release sem: make it block forever, so this case won't be run again.\n\tcase <-c.ready:\n\t\t// Already succeeded.\n\tcase <-ctx.Done():\n\t\treturn nil, fmt.Errorf(\"connect RDS: waiting for certificates: %v\", ctx.Err())\n\t}\n\tcfg := c.cfg.Clone()\n\tif c.iam != nil {\n\t\tvar err error\n\t\tif cfg.Passwd, err = c.iam(ctx); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"connect RDS: refresh auth token: %v\", err)\n\t\t}\n\t}\n\tinner, err := mysql.NewConnector(cfg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"connect RDS: create connector: %v\", err)\n\t}\n\treturn inner.Connect(ctx)\n}\n\nfunc (c *connector) Driver() driver.Driver {\n\treturn mysql.MySQLDriver{}\n}\n\n// A CertPoolProvider obtains a certificate pool that contains the RDS CA certificate.\ntype CertPoolProvider = rds.CertPoolProvider\n\n// CertFetcher pulls the RDS CA certificates from Amazon's servers. The zero\n// value will fetch certificates using the default HTTP client.\ntype CertFetcher = rds.CertFetcher\n"
  },
  {
    "path": "mysql/awsmysql/awsmysql_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsmysql\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/terraform\"\n\t\"gocloud.dev/mysql\"\n)\n\nfunc TestOpen(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tendpoint, _ := tfOut[\"endpoint\"].Value.(string)\n\tusername, _ := tfOut[\"username\"].Value.(string)\n\tpassword, _ := tfOut[\"password\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tif endpoint == \"\" || username == \"\" || databaseName == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got endpoint=%q username=%q database=%q\", endpoint, username, databaseName)\n\t}\n\n\tctx := context.Background()\n\turlstr := fmt.Sprintf(\"awsmysql://%s:%s@%s/%s\", username, password, endpoint, databaseName)\n\tt.Log(\"Connecting to:\", urlstr)\n\tdb, err := mysql.Open(ctx, urlstr)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := db.Ping(); err != nil {\n\t\tt.Error(\"Ping:\", err)\n\t}\n\tif err := db.Close(); err != nil {\n\t\tt.Error(\"Close:\", err)\n\t}\n}\n\nfunc TestOpenIAM(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tendpoint, _ := tfOut[\"endpoint\"].Value.(string)\n\tusername, _ := tfOut[\"iam_db_username\"].Value.(string)\n\troleARN, _ := tfOut[\"iam_role_arn\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tif endpoint == \"\" || username == \"\" || databaseName == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got endpoint=%q iam_db_username=%q database=%q\", endpoint, username, databaseName)\n\t}\n\tctx := context.Background()\n\turlstr := fmt.Sprintf(\"awsmysql://%s@%s/%s?aws_role_arn=%s\",\n\t\tusername, endpoint, databaseName, roleARN)\n\tt.Log(\"Connecting to:\", urlstr)\n\tdb, err := mysql.Open(ctx, urlstr)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := db.Ping(); err != nil {\n\t\tt.Error(\"Ping:\", err)\n\t}\n\tif err := db.Close(); err != nil {\n\t\tt.Error(\"Close:\", err)\n\t}\n}\n"
  },
  {
    "path": "mysql/awsmysql/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsmysql_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/mysql\"\n\t_ \"gocloud.dev/mysql/awsmysql\"\n)\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/mysql/awsmysql\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace these with your actual settings.\n\tdb, err := mysql.Open(ctx,\n\t\t\"awsmysql://myrole:swordfish@example01.xyzzy.us-west-1.rds.amazonaws.com/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.ExecContext(ctx, \"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "mysql/awsmysql/main.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Harness for MySQL tests.\n\nterraform {\n  required_version = \"~>1.13.2\"\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \"~> 6.0\"\n    }\n    random = {\n      source = \"hashicorp/random\"\n    }\n  }\n}\n\nprovider \"aws\" {\n  region = var.region\n}\n\nprovider \"random\" {\n}\n\nvariable \"region\" {\n  type        = string\n  description = \"Region to create resources in. See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html for valid values.\"\n}\n\nresource \"aws_security_group\" \"main\" {\n  name_prefix = \"testdb\"\n  description = \"Security group for the Go CDK MySQL test database.\"\n\n  ingress {\n    from_port   = 3306\n    to_port     = 3306\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Public MySQL access\"\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"All outgoing traffic allowed\"\n  }\n}\n\nresource \"random_string\" \"db_password\" {\n  keepers = {\n    region = var.region\n  }\n\n  special = false\n  length  = 20\n}\n\nlocals {\n  iamUser = \"iam-user\"\n}\n\nresource \"aws_db_instance\" \"main\" {\n  identifier_prefix      = \"go-cloud-test\"\n  engine                 = \"mysql\"\n  engine_version         = \"8.0.43\"\n  instance_class         = \"db.t3.micro\"\n  allocated_storage      = 20\n  username               = \"root\"\n  password               = random_string.db_password.result\n  db_name                = \"testdb\"\n  publicly_accessible    = true\n  vpc_security_group_ids = [aws_security_group.main.id]\n  skip_final_snapshot    = true\n\n  iam_database_authentication_enabled = true\n}\n\n# Data source to get current AWS account information\ndata \"aws_caller_identity\" \"current\" {}\n\n# IAM Role that can be assumed to connect to the database\nresource \"aws_iam_role\" \"rds_connect\" {\n  name_prefix = \"rds-connect-\"\n\n  assume_role_policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Action = \"sts:AssumeRole\"\n        Effect = \"Allow\"\n        Principal = {\n          AWS = data.aws_caller_identity.current.arn\n        }\n      }\n    ]\n  })\n}\n\n# IAM Policy to allow RDS connection using IAM authentication\nresource \"aws_iam_policy\" \"rds_connect\" {\n  name_prefix = \"rds-connect-\"\n  description = \"Allow connecting to RDS MySQL instance using IAM authentication\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Effect = \"Allow\"\n        Action = [\n          \"rds-db:connect\"\n        ]\n        Resource = format(\"arn:aws:rds-db:%s:%s:dbuser:%s/%s\",\n          var.region, data.aws_caller_identity.current.account_id,\n          aws_db_instance.main.resource_id,\n          local.iamUser,\n        )\n      }\n    ]\n  })\n}\n\n# Attach the policy to the role\nresource \"aws_iam_role_policy_attachment\" \"rds_connect\" {\n  role       = aws_iam_role.rds_connect.name\n  policy_arn = aws_iam_policy.rds_connect.arn\n}\n\n# Automatically create the IAM database user\nresource \"null_resource\" \"create_iam_user\" {\n  depends_on = [aws_db_instance.main]\n\n  provisioner \"local-exec\" {\n    command = <<-EOT\n      docker run --rm mysql:8.0 \\\n        mysql -h ${split(\":\", aws_db_instance.main.endpoint)[0]} \\\n              -P ${split(\":\", aws_db_instance.main.endpoint)[1]} \\\n              -u ${aws_db_instance.main.username} \\\n              -p${random_string.db_password.result} \\\n              -e \"CREATE USER IF NOT EXISTS '${local.iamUser}' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; GRANT ALL PRIVILEGES ON ${aws_db_instance.main.db_name}.* TO 'iam-user'@'%'; FLUSH PRIVILEGES;\"\n    EOT\n  }\n\n  triggers = {\n    endpoint = aws_db_instance.main.endpoint\n  }\n}\n\noutput \"endpoint\" {\n  value       = aws_db_instance.main.endpoint\n  description = \"The RDS instance's host/port.\"\n}\n\noutput \"username\" {\n  value       = \"root\"\n  description = \"The MySQL username to connect with.\"\n}\n\noutput \"password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"The RDS instance password for the user.\"\n}\n\noutput \"database\" {\n  value       = \"testdb\"\n  description = \"The name of the database inside the RDS instance.\"\n}\n\noutput \"iam_role_arn\" {\n  value       = aws_iam_role.rds_connect.arn\n  description = \"The ARN of the IAM role that can connect to the database\"\n}\n\noutput \"iam_db_username\" {\n  value       = local.iamUser\n  description = \"The IAM database username to use for IAM authentication\"\n}\n"
  },
  {
    "path": "mysql/awsmysql/otel_test.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsmysql_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log/slog\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"go.opentelemetry.io/otel/attribute\"\n\t\"gocloud.dev/internal/testing/oteltest\"\n\t\"gocloud.dev/internal/testing/terraform\"\n\t\"gocloud.dev/mysql\"\n)\n\nfunc TestOpenTelemetry(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tendpoint, _ := tfOut[\"endpoint\"].Value.(string)\n\tusername, _ := tfOut[\"iam_db_username\"].Value.(string)\n\troleARN, _ := tfOut[\"iam_role_arn\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tif endpoint == \"\" || username == \"\" || databaseName == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got endpoint=%q iam_db_username=%q database=%q\", endpoint, username, databaseName)\n\t}\n\tctx := context.Background()\n\n\t// Setup the test exporter for both trace and metrics.\n\tte := oteltest.NewTestExporter(t, nil)\n\tdefer te.Shutdown(ctx)\n\n\t// Open the database with otelsql.\n\turlstr := fmt.Sprintf(\"awsmysql://%s@%s/%s?parseTime=true&aws_role_arn=%s\",\n\t\tusername, endpoint, databaseName, roleARN)\n\tt.Log(\"Connecting to:\", urlstr)\n\tdb, err := mysql.Open(ctx, urlstr)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\tquery := func() error {\n\t\trows, err := db.QueryContext(ctx, `SELECT CURRENT_TIMESTAMP`)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer func() { _ = rows.Close() }()\n\n\t\tvar currentTime time.Time\n\t\tfor rows.Next() {\n\t\t\terr = rows.Scan(&currentTime)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\t// Check for errors from iterating over rows\n\t\tif err = rows.Err(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tslog.Info(\"Current time\", \"time\", currentTime)\n\t\treturn nil\n\t}\n\tif err = query(); err != nil {\n\t\tt.Error(\"QueryContext:\", err)\n\t}\n\n\tspans := te.GetSpans().Snapshots()\n\tif !cmp.Equal(3, len(spans)) {\n\t\tt.Errorf(\"expected 3 spans, got %d: %v\", len(spans), spans)\n\t}\n\tif !cmp.Equal(\"sql.connector.connect\", spans[0].Name()) {\n\t\tt.Errorf(\"expected first span name to be sql.connector.connect, got %q\", spans[0].Name())\n\t}\n\tif !cmp.Equal(\"sql.conn.query\", spans[1].Name()) {\n\t\tt.Errorf(\"expected second span name to be sql.conn.query, got %q\", spans[1].Name())\n\t} else {\n\t\tattrs := spans[1].Attributes()\n\t\tslog.Info(\"Span Attributes\", \"attributes\", attrs)\n\t\tif !cmp.Equal(1, len(attrs)) {\n\t\t\tt.Errorf(\"expected 1 attribute, got %d: %v\", len(attrs), attrs)\n\t\t}\n\t\tif !cmp.Equal(attribute.Key(\"db.statement\"), attrs[0].Key) {\n\t\t\tt.Errorf(\"expected attribute key to be db.statement, got %q\", attrs[0].Key)\n\t\t}\n\t\tif !cmp.Equal(\"SELECT CURRENT_TIMESTAMP\", attrs[0].Value.AsString()) {\n\t\t\tt.Errorf(\"expected attribute value to be 'SELECT CURRENT_TIMESTAMP', got %q\", attrs[0].Value.AsString())\n\t\t}\n\t}\n\tif !cmp.Equal(\"sql.rows\", spans[2].Name()) {\n\t\tt.Errorf(\"expected second span name to be sql.rows, got %q\", spans[2].Name())\n\t} else {\n\t\tattrs := spans[2].Attributes()\n\t\tslog.Info(\"Span Attributes\", \"attributes\", attrs)\n\t\tif !cmp.Equal(0, len(attrs)) {\n\t\t\tt.Errorf(\"expected 0 attribute, got %d: %v\", len(attrs), attrs)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "mysql/azuremysql/azuremysql.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package azuremysql provides connections to Azure Database for MySQL.\n// See https://docs.microsoft.com/en-us/azure/mysql.\n//\n// # URLs\n//\n// For mysql.Open, azuremysql registers for the scheme \"azuremysql\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n//\n// See https://gocloud.dev/concepts/urls/ for background information.\npackage azuremysql // import \"gocloud.dev/mysql/azuremysql\"\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/go-sql-driver/mysql\"\n\t\"gocloud.dev/azure/azuredb\"\n\tcdkmysql \"gocloud.dev/mysql\"\n)\n\n// URLOpener opens Azure MySQL URLs\n// like \"azuremysql://user:password@myinstance.mysql.database.azure.com/mydb\".\ntype URLOpener struct {\n\t// CertSource specifies how the opener will obtain the Azure Certificate\n\t// Authority. If nil, it will use the default *azuredb.CertFetcher.\n\tCertSource azuredb.CertPoolProvider\n\t// TraceOpts contains options for OpenTelemetry.\n\tTraceOpts []otelsql.Option\n}\n\n// Scheme is the URL scheme azuremysql registers its URLOpener under on\n// mysql.DefaultMux.\nconst Scheme = \"azuremysql\"\n\nfunc init() {\n\tcdkmysql.DefaultURLMux().RegisterMySQL(Scheme, &URLOpener{})\n}\n\n// OpenMySQLURL opens an encrypted connection to an Azure MySQL database.\nfunc (uo *URLOpener) OpenMySQLURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\tsource := uo.CertSource\n\tif source == nil {\n\t\tsource = new(azuredb.CertFetcher)\n\t}\n\tif u.Host == \"\" {\n\t\treturn nil, fmt.Errorf(\"open Azure database: empty endpoint\")\n\t}\n\tpassword, _ := u.User.Password()\n\tc := &connector{\n\t\tcfg: &mysql.Config{\n\t\t\tNet:                     \"tcp\",\n\t\t\tAddr:                    u.Host,\n\t\t\tUser:                    u.User.Username(),\n\t\t\tPasswd:                  password,\n\t\t\tAllowCleartextPasswords: true,\n\t\t\tAllowNativePasswords:    true,\n\t\t\tDBName:                  strings.TrimPrefix(u.Path, \"/\"),\n\t\t},\n\t\tprovider: source,\n\t\tsem:      make(chan struct{}, 1),\n\t\tready:    make(chan struct{}),\n\t}\n\tc.sem <- struct{}{}\n\treturn otelsql.OpenDB(c, uo.TraceOpts...), nil\n}\n\ntype connector struct {\n\tsem      chan struct{}    // receive to acquire, send to release\n\tprovider CertPoolProvider // provides the CA certificate pool\n\tready    chan struct{}    // closed after fetching certs successfully\n\tcfg      *mysql.Config\n}\n\nfunc (c *connector) Connect(ctx context.Context) (driver.Conn, error) {\n\tselect {\n\tcase <-c.sem:\n\t\tcertPool, err := c.provider.AzureCertPool(ctx)\n\t\tif err != nil {\n\t\t\tc.sem <- struct{}{} // release\n\t\t\treturn nil, fmt.Errorf(\"connect Azure MySql: %v\", err)\n\t\t}\n\t\tc.cfg.TLS = &tls.Config{RootCAs: certPool}\n\t\tclose(c.ready)\n\t\t// Don't release sem: make it block forever, so this case won't be run again.\n\tcase <-c.ready:\n\t\t// Already succeeded.\n\tcase <-ctx.Done():\n\t\treturn nil, fmt.Errorf(\"connect Azure MySql: waiting for certificates: %v\", ctx.Err())\n\t}\n\tinner, err := mysql.NewConnector(c.cfg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"connect Azure MySql: create connector: %v\", err)\n\t}\n\treturn inner.Connect(ctx)\n}\n\nfunc (c *connector) Driver() driver.Driver {\n\treturn mysql.MySQLDriver{}\n}\n\nvar tlsConfigCounter uint32\n\n// A CertPoolProvider obtains a certificate pool that contains the Azure CA certificate.\ntype CertPoolProvider = azuredb.CertPoolProvider\n\n// CertFetcher is a default CertPoolProvider that can fetch CA certificates from\n// any publicly accessible URI or File.\ntype CertFetcher = azuredb.CertFetcher\n"
  },
  {
    "path": "mysql/azuremysql/azuremysql_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Read the documentation on Azure Database for MySql for more information.\n// See https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl.\n// To run this test, create a MySQL instance using Azure Portal or Terraform.\n// For Azure Portal, see https://docs.microsoft.com/en-us/azure/mysql/quickstart-create-mysql-server-database-using-azure-portal.\n// For Terraform, see https://www.terraform.io/docs/providers/azurerm/r/mysql_database.html.\npackage azuremysql\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/terraform\"\n\t\"gocloud.dev/mysql\"\n)\n\nfunc TestURLOpener(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test:\n\t//\n\t// 1. Install Azure CLI (az) (https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux)\n\t// 2. Run \"az login\"\n\t// 3. terraform init\n\t// 4. terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\n\tserverName, _ := tfOut[\"servername\"].Value.(string)\n\tusername, _ := tfOut[\"username\"].Value.(string)\n\tpassword, _ := tfOut[\"password\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\n\tctx := context.Background()\n\tdb, err := mysql.Open(ctx, fmt.Sprintf(\"azuremysql://%s:%s@%s/%s\", username, password, serverName, databaseName))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := db.Ping(); err != nil {\n\t\tt.Error(\"Ping: \", err)\n\t}\n\tif _, err = db.ExecContext(ctx, \"CREATE TABLE tblTester (id INT NOT NULL, PRIMARY KEY(id))\"); err != nil {\n\t\tt.Error(\"ExecContext: \", err)\n\t}\n\tif _, err = db.ExecContext(ctx, \"DROP TABLE tblTester\"); err != nil {\n\t\tt.Error(\"ExecContext: \", err)\n\t}\n\tif err := db.Close(); err != nil {\n\t\tt.Error(\"Close: \", err)\n\t}\n}\n"
  },
  {
    "path": "mysql/azuremysql/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage azuremysql_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/mysql\"\n\t_ \"gocloud.dev/mysql/azuremysql\"\n)\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/mysql/azuremysql\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace this with your actual settings.\n\tdb, err := mysql.Open(ctx,\n\t\t\"azuremysql://user:password@example00.mysql.database.azure.com/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.Exec(\"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "mysql/azuremysql/main.tf",
    "content": "terraform {\n  required_version = \"~>0.12\"\n}\n\n# See documentation for more info: https://www.terraform.io/docs/providers/azurerm/auth/azure_cli.html\nprovider \"azurerm\" {\n  version = \"~> 1.22\"\n}\n\nprovider \"random\" {\n  version = \"~> 2.1\"\n}\n\n# Run Azure CLI command \"az account list-locations\" to see list of all locations.\nvariable \"location\" {\n  description = \"The Azure Region in which all resources in this example should be created.\"\n}\n\n# See documentation for more info: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview\nvariable \"resourcegroup\" {\n  description = \"The Azure Resource Group Name within your Subscription in which this resource will be created.\"\n}\n\nresource \"random_string\" \"db_password\" {\n  keepers = {\n    region = var.location\n  }\n\n  special = false\n  length  = 20\n}\n\nresource \"random_id\" \"serverid\" {\n  keepers = {\n    region = var.location\n  }\n\n  byte_length = 2\n}\n\nresource \"azurerm_resource_group\" \"mysqlrg\" {\n  name     = var.resourcegroup\n  location = var.location\n}\n\nresource \"azurerm_mysql_server\" \"mysqlserver\" {\n  name                = format(\"go-cdk-test-%v\", random_id.serverid.dec)\n  location            = azurerm_resource_group.mysqlrg.location\n  resource_group_name = azurerm_resource_group.mysqlrg.name\n\n  sku {\n    name     = \"B_Gen5_2\"\n    capacity = 2\n    tier     = \"Basic\"\n    family   = \"Gen5\"\n  }\n\n  storage_profile {\n    storage_mb            = 5120\n    backup_retention_days = 7\n    geo_redundant_backup  = \"Disabled\"\n  }\n\n  administrator_login          = \"gocloudadmin\"\n  administrator_login_password = random_string.db_password.result\n  version                      = \"5.7\"\n  ssl_enforcement              = \"Enabled\"\n}\n\n# See documentation for more info: https://www.terraform.io/docs/providers/azurerm/r/sql_firewall_rule.html\nresource \"azurerm_mysql_firewall_rule\" \"addrule\" {\n  name                = \"ClientIPAddress\"\n  resource_group_name = azurerm_resource_group.mysqlrg.name\n  server_name         = azurerm_mysql_server.mysqlserver.name\n  start_ip_address    = \"0.0.0.0\"\n  end_ip_address      = \"255.255.255.255\"\n}\n\nresource \"azurerm_mysql_database\" \"mysqldb\" {\n  name                = \"testdb\"\n  resource_group_name = azurerm_resource_group.mysqlrg.name\n  server_name         = azurerm_mysql_server.mysqlserver.name\n  charset             = \"utf8\"\n  collation           = \"utf8_unicode_ci\"\n}\n\noutput \"username\" {\n  value       = \"${azurerm_mysql_server.mysqlserver.administrator_login}@${azurerm_mysql_server.mysqlserver.name}\"\n  description = \"The MySQL username to connect with.\"\n}\n\noutput \"password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"The MySQL instance password for the user.\"\n}\n\noutput \"servername\" {\n  value       = azurerm_mysql_server.mysqlserver.fqdn\n  description = \"The host name of the Azure Database for MySQL instance.\"\n}\n\noutput \"database\" {\n  value       = \"testdb\"\n  description = \"The databasename of the Azure Database for MySQL instance.\"\n}\n\n"
  },
  {
    "path": "mysql/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mysql_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/mysql\"\n)\n\nfunc ExampleOpen() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace this with your actual settings.\n\tdb, err := mysql.Open(ctx, \"mysql://user:password@localhost/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.Exec(\"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "mysql/gcpmysql/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpmysql_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/mysql\"\n\t_ \"gocloud.dev/mysql/gcpmysql\"\n)\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/mysql/gcpmysql\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace this with your actual settings.\n\tdb, err := mysql.Open(ctx,\n\t\t\"gcpmysql://user:password@example-project/region/my-instance01/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.Exec(\"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "mysql/gcpmysql/gcpmysql.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcpmysql provides connections to managed MySQL Cloud SQL instances.\n// See https://cloud.google.com/sql/docs/mysql/ for more information.\n//\n// # URLs\n//\n// For mysql.Open, gcpmysql registers for the scheme \"gcpmysql\".\n// The default URL opener will create a connection using the default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n//\n// See https://gocloud.dev/concepts/urls/ for background information.\npackage gcpmysql // import \"gocloud.dev/mysql/gcpmysql\"\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/proxy\"\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/go-sql-driver/mysql\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/gcp/cloudsql\"\n\tcdkmysql \"gocloud.dev/mysql\"\n)\n\n// Scheme is the URL scheme gcpmysql registers its URLOpener under on\n// mysql.DefaultMux.\nconst Scheme = \"gcpmysql\"\n\nfunc init() {\n\tcdkmysql.DefaultURLMux().RegisterMySQL(Scheme, new(lazyCredsOpener))\n}\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenMySQLURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenMySQLURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\to.init.Do(func() {\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tclient, err := gcp.NewHTTPClient(gcp.DefaultTransport(), creds.TokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tcertSource := cloudsql.NewCertSource(client)\n\t\to.opener = &URLOpener{CertSource: certSource}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"gcpmysql open %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenMySQLURL(ctx, u)\n}\n\n// URLOpener opens Cloud MySQL URLs like\n// \"gcpmysql://user:password@project/region/instance/dbname\".\ntype URLOpener struct {\n\t// CertSource specifies how the opener will obtain authentication information.\n\t// CertSource must not be nil.\n\tCertSource proxy.CertSource\n\n\t// TraceOpts contains options for OpenTelemetry.\n\tTraceOpts []otelsql.Option\n}\n\n// OpenMySQLURL opens a new GCP database connection wrapped with OpenTelemetry instrumentation.\nfunc (uo *URLOpener) OpenMySQLURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\tif uo.CertSource == nil {\n\t\treturn nil, fmt.Errorf(\"gcpmysql: URLOpener CertSource is nil\")\n\t}\n\tvar (\n\t\tclient   = &proxy.Client{Certs: uo.CertSource, Port: 3307}\n\t\tcfg, err = configFromURL(u)\n\t)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"gcpmysql: open config %v\", err)\n\t}\n\tcfg.DialFunc = func(ctx context.Context, _, addr string) (net.Conn, error) {\n\t\t// MySQL driver's addr is in the form \"[host]:3306\" after normalized.\n\t\t// https://github.com/go-sql-driver/mysql/blob/76c00e35a8d48f8f70f0e7dffe584692bd3fa612/dsn.go#L193-L195\n\t\tinstance, _, err := net.SplitHostPort(addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn client.DialContext(ctx, instance)\n\t}\n\tc, err := mysql.NewConnector(cfg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"gcpmysql: open connector %v\", err)\n\t}\n\treturn otelsql.OpenDB(c, uo.TraceOpts...), nil\n}\n\nfunc configFromURL(u *url.URL) (*mysql.Config, error) {\n\tinstance, dbName, err := instanceFromURL(u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar cfg *mysql.Config\n\tswitch {\n\tcase len(u.RawQuery) > 0:\n\t\toptDsn := fmt.Sprintf(\"/%s?%s\", dbName, u.RawQuery)\n\t\tif cfg, err = mysql.ParseDSN(optDsn); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\tdefault:\n\t\tcfg = mysql.NewConfig()\n\t}\n\n\tpassword, _ := u.User.Password()\n\n\tcfg.AllowNativePasswords = true\n\tcfg.Net = \"tcp\"\n\tcfg.Addr = instance\n\tcfg.User = u.User.Username()\n\tcfg.Passwd = password\n\tcfg.DBName = dbName\n\n\treturn cfg, nil\n}\n\nfunc instanceFromURL(u *url.URL) (instance, db string, _ error) {\n\tpath := u.Host + u.Path // everything after scheme but before query or fragment\n\tparts := strings.SplitN(path, \"/\", 4)\n\tif len(parts) < 4 {\n\t\treturn \"\", \"\", fmt.Errorf(\"%s is not in the form project/region/instance/dbname\", path)\n\t}\n\tif slices.Contains(parts, \"\") {\n\t\treturn \"\", \"\", fmt.Errorf(\"%s is not in the form project/region/instance/dbname\", path)\n\t}\n\treturn parts[0] + \":\" + parts[1] + \":\" + parts[2], parts[3], nil\n}\n"
  },
  {
    "path": "mysql/gcpmysql/gcpmysql_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpmysql\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"testing\"\n\n\tdrvr \"github.com/go-sql-driver/mysql\"\n\t\"gocloud.dev/internal/testing/terraform\"\n\t\"gocloud.dev/mysql\"\n)\n\nfunc TestOpen(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tproject, _ := tfOut[\"project\"].Value.(string)\n\tregion, _ := tfOut[\"region\"].Value.(string)\n\tinstance, _ := tfOut[\"instance\"].Value.(string)\n\tusername, _ := tfOut[\"username\"].Value.(string)\n\tpassword, _ := tfOut[\"password\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tif project == \"\" || region == \"\" || instance == \"\" || username == \"\" || databaseName == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got project=%q region=%q instance=%q username=%q database=%q\", project, region, instance, username, databaseName)\n\t}\n\n\tctx := context.Background()\n\turlstr := fmt.Sprintf(\"gcpmysql://%s:%s@%s/%s/%s/%s\", username, password, project, region, instance, databaseName)\n\tt.Log(\"Connecting to\", urlstr)\n\tdb, err := mysql.Open(ctx, urlstr)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := db.Ping(); err != nil {\n\t\tt.Error(\"Ping:\", err)\n\t}\n\tif err := db.Close(); err != nil {\n\t\tt.Error(\"Close:\", err)\n\t}\n}\n\nfunc TestInstanceFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\turlString    string\n\t\twantInstance string\n\t\twantDatabase string\n\t\twantErr      bool\n\t}{\n\t\t{\n\t\t\tname:         \"AllValuesSpecified\",\n\t\t\turlString:    \"gcpmysql://username:password@my-project-id/us-central1/my-instance-id/my-db?foo=bar&baz=quux\",\n\t\t\twantInstance: \"my-project-id:us-central1:my-instance-id\",\n\t\t\twantDatabase: \"my-db\",\n\t\t},\n\t\t{\n\t\t\tname:         \"OptionalValuesOmitted\",\n\t\t\turlString:    \"gcpmysql://my-project-id/us-central1/my-instance-id/my-db\",\n\t\t\twantInstance: \"my-project-id:us-central1:my-instance-id\",\n\t\t\twantDatabase: \"my-db\",\n\t\t},\n\t\t{\n\t\t\tname:      \"DatabaseNameEmpty\",\n\t\t\turlString: \"gcpmysql://my-project-id/us-central1/my-instance-id/\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:      \"InstanceEmpty\",\n\t\t\turlString: \"gcpmysql://my-project-id/us-central1//my-db\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:      \"RegionEmpty\",\n\t\t\turlString: \"gcpmysql://my-project-id//my-instance-id/my-db\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:      \"ProjectEmpty\",\n\t\t\turlString: \"gcpmysql:///us-central1/my-instance-id/my-db\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:         \"DatabaseNameWithSlashes\",\n\t\t\turlString:    \"gcpmysql://my-project-id/us-central1/my-instance-id/foo/bar/baz\",\n\t\t\twantInstance: \"my-project-id:us-central1:my-instance-id\",\n\t\t\twantDatabase: \"foo/bar/baz\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tu, err := url.Parse(test.urlString)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse URL %q: %v\", test.urlString, err)\n\t\t\t}\n\t\t\tinstance, database, err := instanceFromURL(u)\n\t\t\tif err != nil {\n\t\t\t\tt.Logf(\"instanceFromURL(url.Parse(%q)): %v\", u, err)\n\t\t\t\tif !test.wantErr {\n\t\t\t\t\tt.Fail()\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif test.wantErr {\n\t\t\t\tt.Fatalf(\"instanceFromURL(url.Parse(%q)) = %q, %q, <nil>; want error\", test.urlString, instance, database)\n\t\t\t}\n\t\t\tif instance != test.wantInstance || database != test.wantDatabase {\n\t\t\t\tt.Errorf(\"instanceFromURL(url.Parse(%q)) = %q, %q, <nil>; want %q, %q, <nil>\", test.urlString, instance, database, test.wantInstance, test.wantDatabase)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc Test_configFromURL(t *testing.T) {\n\ttype args struct {\n\t\turlStr string\n\t}\n\ttests := []struct {\n\t\tname    string\n\t\targs    args\n\t\twant    *drvr.Config\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname: \"ConfigWithNoOptions\",\n\t\t\targs: args{\n\t\t\t\turlStr: \"gcpmysql://user:password@my-project-id/us-central1/my-instance-id/my-db\",\n\t\t\t},\n\t\t\twant: func() *drvr.Config {\n\t\t\t\tcfg := drvr.NewConfig()\n\t\t\t\tcfg.AllowNativePasswords = true\n\t\t\t\tcfg.Net = \"tcp\"\n\t\t\t\tcfg.Addr = \"my-project-id:us-central1:my-instance-id\"\n\t\t\t\tcfg.User = \"user\"\n\t\t\t\tcfg.Passwd = \"password\"\n\t\t\t\tcfg.DBName = \"my-db\"\n\t\t\t\treturn cfg\n\t\t\t}(),\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"ConfigWithSignalOptions\",\n\t\t\targs: args{\n\t\t\t\turlStr: \"gcpmysql://user:password@my-project-id/us-central1/my-instance-id/my-db?parseTime=true\",\n\t\t\t},\n\t\t\twant: func() *drvr.Config {\n\t\t\t\tcfg := drvr.NewConfig()\n\t\t\t\tcfg.AllowNativePasswords = true\n\t\t\t\tcfg.ParseTime = true\n\t\t\t\tcfg.Net = \"tcp\"\n\t\t\t\tcfg.Addr = \"my-project-id:us-central1:my-instance-id\"\n\t\t\t\tcfg.User = \"user\"\n\t\t\t\tcfg.Passwd = \"password\"\n\t\t\t\tcfg.DBName = \"my-db\"\n\t\t\t\treturn cfg\n\t\t\t}(),\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"ConfigWithMultipleOptions\",\n\t\t\targs: args{\n\t\t\t\turlStr: \"gcpmysql://user:password@my-project-id/us-central1/my-instance-id/my-db?columnsWithAlias=true&parseTime=true\",\n\t\t\t},\n\t\t\twant: func() *drvr.Config {\n\t\t\t\tcfg := drvr.NewConfig()\n\t\t\t\tcfg.AllowNativePasswords = true\n\t\t\t\tcfg.ColumnsWithAlias = true\n\t\t\t\tcfg.ParseTime = true\n\t\t\t\tcfg.Net = \"tcp\"\n\t\t\t\tcfg.Addr = \"my-project-id:us-central1:my-instance-id\"\n\t\t\t\tcfg.User = \"user\"\n\t\t\t\tcfg.Passwd = \"password\"\n\t\t\t\tcfg.DBName = \"my-db\"\n\t\t\t\treturn cfg\n\t\t\t}(),\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"InstanceFromURLError\",\n\t\t\targs: args{\n\t\t\t\turlStr: \"gcpmysql://user:password@my-project-id/us-central1/my-db\",\n\t\t\t},\n\t\t\twant:    nil,\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"DNSParseError\",\n\t\t\targs: args{\n\t\t\t\turlStr: \"gcpmysql://user:password@my-project-id/us-central1/my-instance-id/my-db?parseTime=nope\",\n\t\t\t},\n\t\t\twant:    nil,\n\t\t\twantErr: true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tu, err := url.Parse(tt.args.urlStr)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse URL %q: %v\", tt.args.urlStr, err)\n\t\t\t}\n\t\t\tgot, err := configFromURL(u)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"configFromURL() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !reflect.DeepEqual(got, tt.want) {\n\t\t\t\tt.Errorf(\"configFromURL() = %v, want %v\", got, tt.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "mysql/gcpmysql/main.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Harness for MySQL tests.\n\nterraform {\n  required_version = \"~>1.13.2\"\n  required_providers {\n    google = {\n      source  = \"hashicorp/google\"\n      version = \"7.9.0\"\n    }\n    random = {\n      source  = \"random\"\n      version = \"3.7.2\"\n    }\n  }\n}\n\nprovider \"google\" {\n  project = var.project\n}\n\nvariable \"project\" {\n  type        = string\n  description = \"Project to set up.\"\n}\n\nvariable \"region\" {\n  default     = \"us-central1\"\n  description = \"GCP region to create database and storage in, for example 'us-central1'. See https://cloud.google.com/compute/docs/regions-zones/ for valid values.\"\n}\n\nlocals {\n  sql_instance = \"go-cloud-test-${random_id.sql_instance.hex}\"\n}\n\nresource \"google_project_service\" \"sql\" {\n  service            = \"sql-component.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_project_service\" \"sqladmin\" {\n  service            = \"sqladmin.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"random_id\" \"sql_instance\" {\n  keepers = {\n    project = var.project\n    region  = var.region\n  }\n\n  byte_length = 12\n}\n\nresource \"google_sql_database_instance\" \"main\" {\n  name                = local.sql_instance\n  database_version    = \"MYSQL_5_6\"\n  region              = var.region\n  project             = var.project\n  deletion_protection = false\n  settings {\n    tier      = \"db-f1-micro\"\n    disk_size = 10 # GiB\n  }\n\n  depends_on = [\n    google_project_service.sql,\n    google_project_service.sqladmin,\n  ]\n}\n\nresource \"google_sql_database\" \"main\" {\n  name     = \"testdb\"\n  instance = google_sql_database_instance.main.name\n}\n\nresource \"random_string\" \"db_password\" {\n  keepers = {\n    project = var.project\n    db_name = local.sql_instance\n    region  = var.region\n  }\n\n  special = false\n  length  = 20\n}\n\nresource \"google_sql_user\" \"root\" {\n  name     = \"root\"\n  instance = google_sql_database_instance.main.name\n  password = random_string.db_password.result\n}\n\noutput \"project\" {\n  value       = var.project\n  description = \"The GCP project ID.\"\n}\n\noutput \"region\" {\n  value       = var.region\n  description = \"The Cloud SQL instance region.\"\n}\n\noutput \"instance\" {\n  value       = local.sql_instance\n  description = \"The Cloud SQL instance region.\"\n}\n\noutput \"username\" {\n  value       = \"root\"\n  description = \"The Cloud SQL username to connect with.\"\n}\n\noutput \"password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"The Cloud SQL instance password for the user.\"\n}\n\noutput \"database\" {\n  value       = \"testdb\"\n  description = \"The name of the database inside the Cloud SQL instance.\"\n}\n\n"
  },
  {
    "path": "mysql/main.tf",
    "content": "# Copyright 2020 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Harness for MySQL tests.\n\nterraform {\n  required_version = \">= 0.13\"\n  required_providers {\n    docker = {\n      source  = \"terraform-providers/docker\"\n      version = \"~> 2.0\"\n    }\n    random = {\n      source  = \"hashicorp/random\"\n      version = \"~> 2.0\"\n    }\n  }\n}\n\nvariable port {\n  type        = number\n  description = \"Port exposed out of the MySQL container.\"\n  default     = 3306\n}\n\nresource random_pet mysql {}\n\nresource random_password db_password {\n  special = false\n  length  = 20\n}\n\nlocals {\n  db_name = \"testdb\"\n}\n\nresource docker_container mysql {\n  name  = random_pet.mysql.id\n  image = docker_image.mysql.latest\n\n  env = [\n    \"MYSQL_ROOT_PASSWORD=${random_password.db_password.result}\",\n    \"MYSQL_DATABASE=${local.db_name}\",\n  ]\n  ports {\n    internal = 3306\n    external = var.port\n  }\n}\n\nresource docker_image mysql {\n  name = \"mysql\"\n}\n\noutput endpoint {\n  value       = \"localhost:${var.port}\"\n  description = \"The MySQL instance's host/port.\"\n}\n\noutput username {\n  value       = \"root\"\n  description = \"The MySQL username to connect with.\"\n}\n\noutput password {\n  value       = random_password.db_password.result\n  sensitive   = true\n  description = \"The MySQL instance password for the user.\"\n}\n\noutput database {\n  value       = local.db_name\n  description = \"The name of the database inside the MySQL instance.\"\n}\n\n"
  },
  {
    "path": "mysql/mysql.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package mysql provides functions to open MySQL databases with OpenTelemetry instrumentation.\npackage mysql\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/go-sql-driver/mysql\"\n\t\"gocloud.dev/internal/openurl\"\n)\n\n// Scheme is the URL scheme this package registers its URLOpener under on\n// DefaultMux.\nconst Scheme = \"mysql\"\n\nfunc init() {\n\tDefaultURLMux().RegisterMySQL(Scheme, &URLOpener{})\n}\n\n// URLOpener opens URLs like \"mysql://\" by using the underlying MySQL driver.\n// like \"mysql://user:password@localhost:3306/mydb\".\ntype URLOpener struct {\n\tTraceOpts []otelsql.Option\n}\n\n// OpenMySQLURL opens a new database connection wrapped with OpenTelemetry instrumentation.\nfunc (uo *URLOpener) OpenMySQLURL(_ context.Context, u *url.URL) (*sql.DB, error) {\n\tcfg, err := ConfigFromURL(u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc, err := mysql.NewConnector(cfg)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"mysql: could not create connector: %v\", err)\n\t}\n\treturn otelsql.OpenDB(c, uo.TraceOpts...), nil\n}\n\nvar netAddrRE = regexp.MustCompile(`^(.+)\\((.+)\\)$`)\n\n// ConfigFromURL creates a mysql.Config from URL.\nfunc ConfigFromURL(u *url.URL) (cfg *mysql.Config, err error) {\n\tdbName := strings.TrimPrefix(u.Path, \"/\")\n\tif u.RawQuery != \"\" {\n\t\toptDsn := fmt.Sprintf(\"/%s?%s\", dbName, u.RawQuery)\n\t\tif cfg, err = mysql.ParseDSN(optDsn); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\tcfg = mysql.NewConfig()\n\t}\n\tif matches := netAddrRE.FindStringSubmatch(u.Host); len(matches) == 3 {\n\t\tcfg.Net = matches[1]\n\t\tcfg.Addr = matches[2]\n\t} else {\n\t\tcfg.Net = \"tcp\"\n\t\tcfg.Addr = u.Host\n\t}\n\tcfg.User = u.User.Username()\n\tcfg.Passwd, _ = u.User.Password()\n\tcfg.DBName = dbName\n\tcfg.AllowCleartextPasswords = true\n\tcfg.AllowNativePasswords = true\n\treturn cfg, nil\n}\n\n// MySQLURLOpener implements MySQLURLOpener and can open connections based on a URL.\n// The opener must not modify the URL argument. OpenMySQLURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype MySQLURLOpener interface {\n\tOpenMySQLURL(ctx context.Context, u *url.URL) (*sql.DB, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n\tschemes openurl.SchemeMap\n}\n\n// RegisterMySQL registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterMySQL panics.\nfunc (mux *URLMux) RegisterMySQL(scheme string, opener MySQLURLOpener) {\n\tmux.schemes.Register(\"mysql\", \"DB\", scheme, opener)\n}\n\n// OpenMySQL calls OpenMySQLURL with the URL parsed from urlstr.\n// OpenMySQL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenMySQL(ctx context.Context, urlstr string) (*sql.DB, error) {\n\topener, u, err := mux.schemes.FromString(\"DB\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(MySQLURLOpener).OpenMySQLURL(ctx, u)\n}\n\n// OpenMySQLURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenMySQLURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenMySQLURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\topener, err := mux.schemes.FromURL(\"DB\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(MySQLURLOpener).OpenMySQLURL(ctx, u)\n}\n\nvar defaultURLMux = new(URLMux)\n\n// DefaultURLMux returns the URLMux used by OpenMySql.\n//\n// Driver packages can use this to register their MySQLURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// Open opens the bucket identified by the URL given. URL openers must be\n// registered in the DefaultURLMux, which is typically done in driver\n// packages' initialization.\n//\n// See the URLOpener documentation in driver subpackages for more\n// details on supported scheme(s) and URL parameter(s).\nfunc Open(ctx context.Context, urlstr string) (*sql.DB, error) {\n\treturn defaultURLMux.OpenMySQL(ctx, urlstr)\n}\n"
  },
  {
    "path": "mysql/mysql_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mysql\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/terraform\"\n)\n\nfunc TestOpen(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tendpoint, _ := tfOut[\"endpoint\"].Value.(string)\n\tusername, _ := tfOut[\"username\"].Value.(string)\n\tpassword, _ := tfOut[\"password\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tif endpoint == \"\" || username == \"\" || databaseName == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got endpoint=%q username=%q database=%q\", endpoint, username, databaseName)\n\t}\n\n\tctx := context.Background()\n\turlstr := fmt.Sprintf(\"%s://%s:%s@%s/%s\", Scheme, username, password, endpoint, databaseName)\n\tt.Log(\"Connecting to:\", urlstr)\n\tdb, err := Open(ctx, urlstr)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := db.Ping(); err != nil {\n\t\tt.Error(\"Ping:\", err)\n\t}\n\tif err := db.Close(); err != nil {\n\t\tt.Error(\"Close:\", err)\n\t}\n}\n\nfunc TestConfigFromURL(t *testing.T) {\n\tfor _, host := range []string{\n\t\t\"localhost\",\n\t\t\"tcp(localhost)\",\n\t} {\n\t\turlstr := \"mysql://user:password@\" + host + \"/db?parseTime=true&interpolateParams=true\"\n\t\tu, err := url.Parse(urlstr)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tcfg, err := ConfigFromURL(u)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif got, want := cfg.User, \"user\"; got != want {\n\t\t\tt.Errorf(`User = %q; want %q`, got, want)\n\t\t}\n\t\tif got, want := cfg.Passwd, \"password\"; got != want {\n\t\t\tt.Errorf(`Passwd = %q; want %q`, got, want)\n\t\t}\n\t\tif got, want := cfg.Net, \"tcp\"; got != want {\n\t\t\tt.Errorf(`Net = %q; want %q`, got, want)\n\t\t}\n\t\tif got, want := cfg.Addr, \"localhost\"; got != want {\n\t\t\tt.Errorf(`Addr = %q; want %q`, got, want)\n\t\t}\n\t\tif !cfg.ParseTime {\n\t\t\tt.Error(\"ParseTime = false; want true\")\n\t\t}\n\t\tif !cfg.InterpolateParams {\n\t\t\tt.Error(\"InterpolateParams = false; want true\")\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "postgres/awspostgres/awspostgres.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awspostgres provides connections to AWS RDS PostgreSQL instances.\n//\n// # URLs\n//\n// For postgres.Open, awspostgres registers for the scheme \"awspostgres\".\n// The default URL opener will create a connection using the default\n// credentials from the environment, as described in\n// https://docs.aws.amazon.com/sdk-for-go/api/aws/session/.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n//\n// See https://gocloud.dev/concepts/urls/ for background information.\npackage awspostgres // import \"gocloud.dev/postgres/awspostgres\"\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/lib/pq\"\n\t\"gocloud.dev/aws/rds\"\n\t\"gocloud.dev/postgres\"\n)\n\n// URLOpener opens RDS PostgreSQL URLs\n// like \"awspostgres://user:password@myinstance.borkxyzzy.us-west-1.rds.amazonaws.com:5432/mydb\".\ntype URLOpener struct {\n\t// CertSource specifies how the opener will obtain the RDS Certificate\n\t// Authority. If nil, it will use the default *rds.CertFetcher.\n\tCertSource rds.CertPoolProvider\n\t// TraceOpts contains options for OpenTelemetry.\n\tTraceOpts []otelsql.Option\n}\n\n// Scheme is the URL scheme awspostgres registers its URLOpener under on\n// postgres.DefaultMux.\nconst Scheme = \"awspostgres\"\n\nfunc init() {\n\tpostgres.DefaultURLMux().RegisterPostgres(Scheme, &URLOpener{})\n}\n\n// OpenPostgresURL opens a new RDS database connection wrapped with OpenTelemetry instrumentation.\nfunc (uo *URLOpener) OpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\tsource := uo.CertSource\n\tif source == nil {\n\t\tsource = new(rds.CertFetcher)\n\t}\n\n\tquery := u.Query()\n\tfor k := range query {\n\t\t// Forbid SSL-related parameters.\n\t\tif k == \"sslmode\" || k == \"sslcert\" || k == \"sslkey\" || k == \"sslrootcert\" {\n\t\t\treturn nil, fmt.Errorf(\"awspostgres: open: parameter %q not allowed; sslmode must be disabled because the underlying dialer is already providing TLS\", k)\n\t\t}\n\t}\n\t// sslmode must be disabled because the underlying dialer is already providing TLS.\n\tquery.Set(\"sslmode\", \"disable\")\n\n\tu2 := new(url.URL)\n\t*u2 = *u\n\tu2.Scheme = \"postgres\"\n\tu2.RawQuery = query.Encode()\n\tdb := sql.OpenDB(connector{\n\t\tprovider:  source,\n\t\tpqConn:    u2.String(),\n\t\ttraceOpts: append([]otelsql.Option(nil), uo.TraceOpts...),\n\t})\n\treturn db, nil\n}\n\ntype pqDriver struct {\n\tprovider  rds.CertPoolProvider\n\ttraceOpts []otelsql.Option\n}\n\nfunc (d pqDriver) Open(name string) (driver.Conn, error) {\n\tc, _ := d.OpenConnector(name)\n\treturn c.Connect(context.Background())\n}\n\nfunc (d pqDriver) OpenConnector(name string) (driver.Connector, error) {\n\treturn connector{d.provider, name + \" sslmode=disable\", d.traceOpts}, nil\n}\n\ntype connector struct {\n\tprovider  rds.CertPoolProvider\n\tpqConn    string\n\ttraceOpts []otelsql.Option\n}\n\nfunc (c connector) Connect(context.Context) (driver.Conn, error) {\n\tconn, err := pq.DialOpen(dialer{c.provider}, c.pqConn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn conn, nil\n}\n\nfunc (c connector) Driver() driver.Driver {\n\treturn otelsql.WrapDriver(pqDriver{c.provider, c.traceOpts}, c.traceOpts...)\n}\n\ntype dialer struct {\n\tprovider rds.CertPoolProvider\n}\n\nfunc (d dialer) dial(ctx context.Context, network, address string) (net.Conn, error) {\n\thost, _, err := net.SplitHostPort(address)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"awspostgres: parse address: %v\", err)\n\t}\n\tcertPool, err := d.provider.RDSCertPool(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tconn, err := new(net.Dialer).DialContext(ctx, network, address)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Write the PostgreSQL SSLRequest message described in\n\t// https://www.postgresql.org/docs/11/protocol-message-formats.html\n\t// to upgrade to a TLS connection.\n\t_, err = conn.Write([]byte{\n\t\t// Message length (Int32), including message length.\n\t\t0x00, 0x00, 0x00, 0x08,\n\t\t// Magic number: 80877103.\n\t\t0x04, 0xd2, 0x16, 0x2f,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Server must respond back with 'S'.\n\tvar readBuf [1]byte\n\tif _, err := io.ReadFull(conn, readBuf[:]); err != nil {\n\t\treturn nil, err\n\t}\n\tif readBuf[0] != 'S' {\n\t\treturn nil, pq.ErrSSLNotSupported\n\t}\n\n\t// Begin TLS communication.\n\tcrypt := tls.Client(conn, &tls.Config{\n\t\tServerName:    host,\n\t\tRootCAs:       certPool,\n\t\tRenegotiation: tls.RenegotiateFreelyAsClient,\n\t})\n\terr = crypt.Handshake()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn crypt, nil\n}\n\nfunc (d dialer) Dial(network, address string) (net.Conn, error) {\n\treturn d.dial(context.Background(), network, address)\n}\n\nfunc (d dialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) {\n\tctx, cancel := context.WithTimeout(context.Background(), timeout)\n\tconn, err := d.dial(ctx, network, address)\n\tcancel()\n\treturn conn, err\n}\n"
  },
  {
    "path": "postgres/awspostgres/awspostgres_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awspostgres\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/terraform\"\n\t\"gocloud.dev/postgres\"\n)\n\nfunc TestURLOpener(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tendpoint, _ := tfOut[\"endpoint\"].Value.(string)\n\tusername, _ := tfOut[\"username\"].Value.(string)\n\tpassword, _ := tfOut[\"password\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tif endpoint == \"\" || username == \"\" || databaseName == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got endpoint=%q username=%q database=%q\", endpoint, username, databaseName)\n\t}\n\n\ttests := []struct {\n\t\turlstr      string\n\t\twantErr     bool\n\t\twantPingErr bool\n\t}{\n\t\t// OK.\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/%s\", username, password, endpoint, databaseName), false, false},\n\t\t// Invalid URL parameters: db creation fails.\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/%s?sslcert=foo\", username, password, endpoint, databaseName), true, false},\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/%s?sslkey=foo\", username, password, endpoint, databaseName), true, false},\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/%s?sslrootcert=foo\", username, password, endpoint, databaseName), true, false},\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/%s?sslmode=require\", username, password, endpoint, databaseName), true, false},\n\t\t// Invalid connection info: db is created, but Ping fails.\n\t\t{fmt.Sprintf(\"awspostgres://%s:badpwd@%s/%s\", username, endpoint, databaseName), false, true},\n\t\t{fmt.Sprintf(\"awspostgres://badusername:%s@%s/%s\", password, endpoint, databaseName), false, true},\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@localhost:9999/%s\", username, password, databaseName), false, true},\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/wrongdbname\", username, password, endpoint), false, true},\n\t\t{fmt.Sprintf(\"awspostgres://%s:%s@%s/%s?foo=bar\", username, password, endpoint, databaseName), false, true},\n\t}\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.urlstr, func(t *testing.T) {\n\t\t\tdb, err := postgres.Open(ctx, test.urlstr)\n\t\t\tif err != nil != test.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, wanted error? %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer func() {\n\t\t\t\tif err := db.Close(); err != nil {\n\t\t\t\t\tt.Error(\"Close:\", err)\n\t\t\t\t}\n\t\t\t}()\n\t\t\terr = db.Ping()\n\t\t\tif err != nil != test.wantPingErr {\n\t\t\t\tt.Errorf(\"ping got err %v, wanted error? %v\", err, test.wantPingErr)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "postgres/awspostgres/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awspostgres_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/postgres\"\n\t_ \"gocloud.dev/postgres/awspostgres\"\n)\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/postgres/awspostgres\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace these with your actual settings.\n\tdb, err := postgres.Open(ctx,\n\t\t\"awspostgres://myrole:swordfish@example01.xyzzy.us-west-1.rds.amazonaws.com/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.ExecContext(ctx, \"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "postgres/awspostgres/main.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Harness for RDS PostgreSQL tests.\n\nterraform {\n  required_version = \"~>0.12\"\n}\n\nprovider \"aws\" {\n  version = \"~> 2.7\"\n  region  = var.region\n}\n\nprovider \"random\" {\n  version = \"~> 2.1\"\n}\n\nvariable \"region\" {\n  type        = string\n  description = \"Region to create resources in. See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html for valid values.\"\n}\n\nresource \"aws_security_group\" \"main\" {\n  name_prefix = \"testdb\"\n  description = \"Security group for the Go CDK Postgres test database.\"\n\n  ingress {\n    from_port   = 5432\n    to_port     = 5432\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Public Postgres access\"\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"All outgoing traffic allowed\"\n  }\n}\n\nresource \"random_string\" \"db_password\" {\n  keepers = {\n    region = var.region\n  }\n\n  special = false\n  length  = 20\n}\n\nresource \"aws_db_instance\" \"main\" {\n  identifier_prefix      = \"go-cloud-test\"\n  engine                 = \"postgres\"\n  engine_version         = \"10.5\"\n  instance_class         = \"db.t2.micro\"\n  allocated_storage      = 20\n  username               = \"root\"\n  password               = random_string.db_password.result\n  name                   = \"testdb\"\n  publicly_accessible    = true\n  vpc_security_group_ids = [aws_security_group.main.id]\n  skip_final_snapshot    = true\n  parameter_group_name   = aws_db_parameter_group.main.name\n}\n\nresource \"aws_db_parameter_group\" \"main\" {\n  name_prefix = \"go-cloud-test\"\n  family      = \"postgres10\"\n\n  parameter {\n    name  = \"rds.force_ssl\"\n    value = \"1\"\n  }\n}\n\noutput \"endpoint\" {\n  value       = aws_db_instance.main.endpoint\n  description = \"The RDS instance's host/port.\"\n}\n\noutput \"username\" {\n  value       = \"root\"\n  description = \"The PostgreSQL username to connect with.\"\n}\n\noutput \"password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"The RDS instance password for the user.\"\n}\n\noutput \"database\" {\n  value       = \"testdb\"\n  description = \"The name of the database inside the RDS instance.\"\n}\n\n"
  },
  {
    "path": "postgres/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage postgres_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/postgres\"\n)\n\nfunc ExampleOpen() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace this with your actual settings.\n\tdb, err := postgres.Open(ctx, \"postgres://user:password@localhost/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.Exec(\"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "postgres/gcppostgres/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcppostgres_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/postgres\"\n\t_ \"gocloud.dev/postgres/gcppostgres\"\n)\n\nfunc Example() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/postgres/gcppostgres\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Replace this with your actual settings.\n\tdb, err := postgres.Open(ctx,\n\t\t\"gcppostgres://user:password@example-project/region/my-instance01/testdb\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer db.Close()\n\n\t// Use database in your program.\n\tdb.Exec(\"CREATE TABLE foo (bar INT);\")\n}\n"
  },
  {
    "path": "postgres/gcppostgres/gcppostgres.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcppostgres provides connections to managed PostgreSQL Cloud SQL instances.\n// See https://cloud.google.com/sql/docs/postgres/ for more information.\n//\n// # URLs\n//\n// For postgres.Open, gcppostgres registers for the scheme \"gcppostgres\".\n// The default URL opener will create a connection using the default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n//\n// See https://gocloud.dev/concepts/urls/ for background information.\npackage gcppostgres // import \"gocloud.dev/postgres/gcppostgres\"\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/url\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/proxy\"\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/lib/pq\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/gcp/cloudsql\"\n\t\"gocloud.dev/postgres\"\n)\n\n// Scheme is the URL scheme gcppostgres registers its URLOpener under on\n// postgres.DefaultMux.\nconst Scheme = \"gcppostgres\"\n\nfunc init() {\n\tpostgres.DefaultURLMux().RegisterPostgres(Scheme, new(lazyCredsOpener))\n}\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenPostgresURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\to.init.Do(func() {\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tclient, err := gcp.NewHTTPClient(gcp.DefaultTransport(), creds.TokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tcertSource := cloudsql.NewCertSourceWithIAM(client, creds.TokenSource)\n\t\to.opener = &URLOpener{CertSource: certSource}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"gcppostgres open %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenPostgresURL(ctx, u)\n}\n\n// URLOpener opens GCP PostgreSQL URLs\n// like \"gcppostgres://user:password@myproject/us-central1/instanceId/mydb\".\ntype URLOpener struct {\n\t// CertSource specifies how the opener will obtain authentication information.\n\t// CertSource must not be nil.\n\tCertSource proxy.CertSource\n\n\t// TraceOpts contains options for OpenTelemetry.\n\tTraceOpts []otelsql.Option\n}\n\n// OpenPostgresURL opens a new GCP database connection wrapped with OpenTelemetry instrumentation.\nfunc (uo *URLOpener) OpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\tif uo.CertSource == nil {\n\t\treturn nil, fmt.Errorf(\"gcppostgres: URLOpener CertSource is nil\")\n\t}\n\tinstance, dbName, err := instanceFromURL(u)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"gcppostgres: open %v: %v\", u, err)\n\t}\n\n\tquery := u.Query()\n\tfor k := range query {\n\t\t// Only permit parameters that do not conflict with other behavior.\n\t\tif k == \"sslmode\" || k == \"sslcert\" || k == \"sslkey\" || k == \"sslrootcert\" {\n\t\t\treturn nil, fmt.Errorf(\"gcppostgres: open: extra parameter %s not allowed\", k)\n\t\t}\n\t}\n\tquery.Set(\"sslmode\", \"disable\")\n\n\tu2 := new(url.URL)\n\t*u2 = *u\n\tu2.Scheme = \"postgres\"\n\tu2.Host = \"cloudsql\"\n\tu2.Path = \"/\" + dbName\n\tu2.RawQuery = query.Encode()\n\tdb := sql.OpenDB(connector{\n\t\tclient: &proxy.Client{\n\t\t\tPort:  3307,\n\t\t\tCerts: uo.CertSource,\n\t\t},\n\t\tinstance:  instance,\n\t\tpqConn:    u2.String(),\n\t\ttraceOpts: append([]otelsql.Option(nil), uo.TraceOpts...),\n\t})\n\treturn db, nil\n}\n\nfunc instanceFromURL(u *url.URL) (instance, db string, _ error) {\n\tpath := u.Host + u.Path // everything after scheme but before query or fragment\n\tparts := strings.SplitN(path, \"/\", 4)\n\tif len(parts) < 4 {\n\t\treturn \"\", \"\", fmt.Errorf(\"%s is not in the form project/region/instance/dbname\", path)\n\t}\n\tif slices.Contains(parts, \"\") {\n\t\treturn \"\", \"\", fmt.Errorf(\"%s is not in the form project/region/instance/dbname\", path)\n\t}\n\treturn parts[0] + \":\" + parts[1] + \":\" + parts[2], parts[3], nil\n}\n\ntype pqDriver struct {\n\tclient    *proxy.Client\n\tinstance  string\n\ttraceOpts []otelsql.Option\n}\n\nfunc (d pqDriver) Open(name string) (driver.Conn, error) {\n\tc, _ := d.OpenConnector(name)\n\treturn c.Connect(context.Background())\n}\n\nfunc (d pqDriver) OpenConnector(name string) (driver.Connector, error) {\n\treturn connector{d.client, d.instance, name, d.traceOpts}, nil\n}\n\ntype connector struct {\n\tclient    *proxy.Client\n\tinstance  string\n\tpqConn    string\n\ttraceOpts []otelsql.Option\n}\n\nfunc (c connector) Connect(context.Context) (driver.Conn, error) {\n\tconn, err := pq.DialOpen(dialer{c.client, c.instance}, c.pqConn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn conn, nil\n}\n\nfunc (c connector) Driver() driver.Driver {\n\treturn otelsql.WrapDriver(pqDriver{c.client, c.instance, c.traceOpts}, c.traceOpts...)\n}\n\ntype dialer struct {\n\tclient   *proxy.Client\n\tinstance string\n}\n\nfunc (d dialer) Dial(network, address string) (net.Conn, error) {\n\treturn d.client.Dial(d.instance)\n}\n\nfunc (d dialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) {\n\treturn nil, errors.New(\"gcppostgres: DialTimeout not supported\")\n}\n"
  },
  {
    "path": "postgres/gcppostgres/gcppostgres_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcppostgres\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/terraform\"\n\t\"gocloud.dev/postgres\"\n)\n\nfunc TestURLOpener(t *testing.T) {\n\t// This test will be skipped unless the project is set up with Terraform.\n\t// Before running go test, run in this directory:\n\t//\n\t// terraform init\n\t// terraform apply\n\n\ttfOut, err := terraform.ReadOutput(\".\")\n\tif err != nil || len(tfOut) == 0 {\n\t\tt.Skipf(\"Could not obtain harness info: %v\", err)\n\t}\n\tproject, _ := tfOut[\"project\"].Value.(string)\n\tregion, _ := tfOut[\"region\"].Value.(string)\n\tinstance, _ := tfOut[\"instance\"].Value.(string)\n\tusername, _ := tfOut[\"username\"].Value.(string)\n\tpassword, _ := tfOut[\"password\"].Value.(string)\n\tdatabaseName, _ := tfOut[\"database\"].Value.(string)\n\tuserEmail, _ := tfOut[\"user_email\"].Value.(string)\n\tif project == \"\" || region == \"\" || instance == \"\" || username == \"\" || databaseName == \"\" || userEmail == \"\" {\n\t\tt.Fatalf(\"Missing one or more required Terraform outputs; got project=%q region=%q instance=%q username=%q database=%q userEmail=%q\", project, region, instance, username, databaseName, userEmail)\n\t}\n\ttests := []struct {\n\t\tname    string\n\t\turlstr  string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:   \"SuccessIam\",\n\t\t\turlstr: fmt.Sprintf(\"gcppostgres://%s@%s/%s/%s/%s\", userEmail, project, region, instance, databaseName),\n\t\t},\n\t\t{\n\t\t\tname:   \"SuccessBuiltin\",\n\t\t\turlstr: fmt.Sprintf(\"gcppostgres://%s:%s@%s/%s/%s/%s\", username, password, project, region, instance, databaseName),\n\t\t},\n\t\t{\n\t\t\tname:    \"SSLModeForbidden\",\n\t\t\turlstr:  fmt.Sprintf(\"gcppostgres://%s:%s@%s/%s/%s/%s?sslmode=require\", username, password, project, region, instance, databaseName),\n\t\t\twantErr: true,\n\t\t},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tdb, err := postgres.Open(ctx, test.urlstr)\n\t\t\tif err != nil {\n\t\t\t\tt.Log(err)\n\t\t\t\tif !test.wantErr {\n\t\t\t\t\tt.Fail()\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif test.wantErr {\n\t\t\t\tdb.Close()\n\t\t\t\tt.Fatal(\"Open succeeded; want error\")\n\t\t\t}\n\t\t\tif err := db.Ping(); err != nil {\n\t\t\t\tt.Error(\"Ping:\", err)\n\t\t\t}\n\t\t\tif err := db.Close(); err != nil {\n\t\t\t\tt.Error(\"Close:\", err)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestInstanceFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tname         string\n\t\turlString    string\n\t\twantInstance string\n\t\twantDatabase string\n\t\twantErr      bool\n\t}{\n\t\t{\n\t\t\tname:         \"AllValuesSpecified\",\n\t\t\turlString:    \"gcppostgres://username:password@my-project-id/us-central1/my-instance-id/my-db?foo=bar&baz=quux\",\n\t\t\twantInstance: \"my-project-id:us-central1:my-instance-id\",\n\t\t\twantDatabase: \"my-db\",\n\t\t},\n\t\t{\n\t\t\tname:         \"OptionalValuesOmitted\",\n\t\t\turlString:    \"gcppostgres://my-project-id/us-central1/my-instance-id/my-db\",\n\t\t\twantInstance: \"my-project-id:us-central1:my-instance-id\",\n\t\t\twantDatabase: \"my-db\",\n\t\t},\n\t\t{\n\t\t\tname:      \"DatabaseNameEmpty\",\n\t\t\turlString: \"gcppostgres://my-project-id/us-central1/my-instance-id/\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:      \"InstanceEmpty\",\n\t\t\turlString: \"gcppostgres://my-project-id/us-central1//my-db\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:      \"RegionEmpty\",\n\t\t\turlString: \"gcppostgres://my-project-id//my-instance-id/my-db\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:      \"ProjectEmpty\",\n\t\t\turlString: \"gcppostgres:///us-central1/my-instance-id/my-db\",\n\t\t\twantErr:   true,\n\t\t},\n\t\t{\n\t\t\tname:         \"DatabaseNameWithSlashes\",\n\t\t\turlString:    \"gcppostgres://my-project-id/us-central1/my-instance-id/foo/bar/baz\",\n\t\t\twantInstance: \"my-project-id:us-central1:my-instance-id\",\n\t\t\twantDatabase: \"foo/bar/baz\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tu, err := url.Parse(test.urlString)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to parse URL %q: %v\", test.urlString, err)\n\t\t\t}\n\t\t\tinstance, database, err := instanceFromURL(u)\n\t\t\tif err != nil {\n\t\t\t\tt.Logf(\"instanceFromURL(url.Parse(%q)): %v\", u, err)\n\t\t\t\tif !test.wantErr {\n\t\t\t\t\tt.Fail()\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif test.wantErr {\n\t\t\t\tt.Fatalf(\"instanceFromURL(url.Parse(%q)) = %q, %q, <nil>; want error\", test.urlString, instance, database)\n\t\t\t}\n\t\t\tif instance != test.wantInstance || database != test.wantDatabase {\n\t\t\t\tt.Errorf(\"instanceFromURL(url.Parse(%q)) = %q, %q, <nil>; want %q, %q, <nil>\", test.urlString, instance, database, test.wantInstance, test.wantDatabase)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "postgres/gcppostgres/main.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Harness for Cloud SQL Postgres tests.\n\nterraform {\n  required_version = \">= 1.1.0\"\n  required_providers {\n    google = {\n      version = \"4.40.0\"\n    }\n    random = {\n      version = \"3.4.3\"\n    }\n  }\n}\n\nprovider \"google\" {\n  project = var.project\n  region  = var.region\n}\n\nvariable \"project\" {\n  type        = string\n  description = \"Project ID - Google Cloud project ID in which to create resources.\"\n}\n\nvariable \"user_email\" {\n  type        = string\n  description = \"User email address - Google identity to be used for testing IAM authentication.\"\n}\n\nvariable \"region\" {\n  default     = \"us-central1\"\n  description = \"GCP region to create database and storage in, for example 'us-central1'. See https://cloud.google.com/compute/docs/regions-zones/ for valid values.\"\n}\n\nlocals {\n  sql_instance = \"go-cloud-test-${random_id.sql_instance.hex}\"\n}\n\nresource \"google_project_service\" \"sql\" {\n  service            = \"sql-component.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_project_service\" \"sqladmin\" {\n  service            = \"sqladmin.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"random_id\" \"sql_instance\" {\n  keepers = {\n    project = var.project\n    region  = var.region\n  }\n\n  byte_length = 12\n}\n\nresource \"google_project_iam_member\" \"cloudsql_client\" {\n  project = var.project\n  role    = \"roles/cloudsql.client\"\n  member  = \"user:${var.user_email}\"\n}\n\nresource \"google_project_iam_member\" \"cloudsql_instanceUser\" {\n  project = var.project\n  role    = \"roles/cloudsql.instanceUser\"\n  member  = \"user:${var.user_email}\"\n}\n\nresource \"google_sql_database_instance\" \"main\" {\n  name             = local.sql_instance\n  database_version = \"POSTGRES_9_6\"\n  region           = var.region\n  project          = var.project\n\n  settings {\n    tier      = \"db-f1-micro\"\n    disk_size = 10 # GiB\n    database_flags {\n      name  = \"cloudsql.iam_authentication\"\n      value = \"on\"\n    }\n  }\n\n  depends_on = [\n    google_project_service.sql,\n    google_project_service.sqladmin,\n  ]\n}\n\nresource \"google_sql_database\" \"main\" {\n  project  = var.project\n  name     = \"testdb\"\n  instance = google_sql_database_instance.main.name\n}\n\nresource \"random_string\" \"db_password\" {\n  keepers = {\n    project = var.project\n    db_name = local.sql_instance\n    region  = var.region\n  }\n\n  special = false\n  length  = 20\n}\n\nresource \"google_sql_user\" \"root\" {\n  type     = \"BUILT_IN\"\n  name     = \"root\"\n  instance = google_sql_database_instance.main.name\n  password = random_string.db_password.result\n}\n\nresource \"google_sql_user\" \"user_account\" {\n  type     = \"CLOUD_IAM_USER\"\n  name     = var.user_email\n  instance = google_sql_database_instance.main.name\n}\n\noutput \"project\" {\n  value       = var.project\n  description = \"The GCP project ID.\"\n}\n\noutput \"region\" {\n  value       = var.region\n  description = \"The Cloud SQL instance region.\"\n}\n\noutput \"instance\" {\n  value       = local.sql_instance\n  description = \"The Cloud SQL instance region.\"\n}\n\noutput \"username\" {\n  value       = \"root\"\n  description = \"The Cloud SQL username to connect with.\"\n}\n\noutput \"password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"The Cloud SQL instance password for the user.\"\n}\n\noutput \"database\" {\n  value       = \"testdb\"\n  description = \"The name of the database inside the Cloud SQL instance.\"\n}\n\noutput \"user_email\" {\n  value       = var.user_email\n  description = \"The email of a GCP service account used for testing connections.\"\n}\n"
  },
  {
    "path": "postgres/postgres.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package postgres provides functions to open PostgreSQL databases with OpenTelemetry instrumentation.\npackage postgres\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"net/url\"\n\n\t\"github.com/XSAM/otelsql\"\n\t\"github.com/lib/pq\"\n\t\"gocloud.dev/internal/openurl\"\n)\n\n// Scheme is the URL scheme this package registers its URLOpener under on\n// DefaultMux.\nconst Scheme = \"postgres\"\n\nfunc init() {\n\tDefaultURLMux().RegisterPostgres(Scheme, &URLOpener{})\n}\n\n// URLOpener opens URLs like \"postgres://\" by using the underlying PostgreSQL driver.\n// See https://godoc.org/github.com/lib/pq#hdr-Connection_String_Parameters for details.\ntype URLOpener struct {\n\tTraceOpts []otelsql.Option\n}\n\n// OpenPostgresURL opens a new database connection wrapped with OpenTelemetry instrumentation.\nfunc (uo *URLOpener) OpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\tu2 := new(url.URL)\n\t*u2 = *u\n\tu2.Scheme = \"postgres\"\n\treturn sql.OpenDB(connector{dsn: u2.String(), traceOpts: append([]otelsql.Option(nil), uo.TraceOpts...)}), nil\n}\n\ntype connector struct {\n\tdsn       string\n\ttraceOpts []otelsql.Option\n}\n\nfunc (c connector) Connect(ctx context.Context) (driver.Conn, error) {\n\treturn c.Driver().Open(c.dsn)\n}\n\nfunc (c connector) Driver() driver.Driver {\n\treturn otelsql.WrapDriver(&pq.Driver{}, c.traceOpts...)\n}\n\n// PostgresURLOpener can open Postgres connections based on a URL.\n// The opener must not modify the URL argument. OpenPostgresURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype PostgresURLOpener interface {\n\t// OpenPostgresURL opens a Postgres connection based on the URL.\n\tOpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n\tschemes openurl.SchemeMap\n}\n\n// RegisterPostgres registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterPostgres panics.\nfunc (mux *URLMux) RegisterPostgres(scheme string, opener PostgresURLOpener) {\n\tmux.schemes.Register(\"postgres\", \"DB\", scheme, opener)\n}\n\n// OpenPostgres calls OpenPostgresURL with the URL parsed from urlstr.\n// OpenPostgres is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenPostgres(ctx context.Context, urlstr string) (*sql.DB, error) {\n\topener, u, err := mux.schemes.FromString(\"DB\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(PostgresURLOpener).OpenPostgresURL(ctx, u)\n}\n\n// OpenPostgresURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenPostgresURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenPostgresURL(ctx context.Context, u *url.URL) (*sql.DB, error) {\n\topener, err := mux.schemes.FromURL(\"DB\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(PostgresURLOpener).OpenPostgresURL(ctx, u)\n}\n\nvar defaultURLMux = new(URLMux)\n\n// DefaultURLMux returns the URLMux used by OpenPostgres.\n//\n// Driver packages can use this to register their PostgresURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// Open opens the bucket identified by the URL given. URL openers must be\n// registered in the DefaultURLMux, which is typically done in driver\n// packages' initialization.\n//\n// See the URLOpener documentation in driver subpackages for more\n// details on supported scheme(s) and URL parameter(s).\nfunc Open(ctx context.Context, urlstr string) (*sql.DB, error) {\n\treturn defaultURLMux.OpenPostgres(ctx, urlstr)\n}\n"
  },
  {
    "path": "postgres/postgres_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage postgres\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/user\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestOpen(t *testing.T) {\n\tif runtime.GOOS == \"windows\" {\n\t\tt.Skip(\"Can't use Unix sockets on Windows\")\n\t}\n\tpostgresPath, err := exec.LookPath(\"postgres\")\n\tif err != nil {\n\t\tt.Skip(\"Can't find postgres:\", err)\n\t}\n\tinitdbPath, err := exec.LookPath(\"initdb\")\n\tif err != nil {\n\t\tt.Skip(\"Can't find initdb:\", err)\n\t}\n\n\t// Create a temporary database data directory.\n\tcurrUser, err := user.Current()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tdir := t.TempDir()\n\n\tdataDir := filepath.Join(dir, \"data\")\n\tinitdbCmd := exec.Command(initdbPath, \"-U\", currUser.Username, \"-D\", dataDir)\n\tinitdbOutput := new(bytes.Buffer)\n\tinitdbCmd.Stdout = initdbOutput\n\tinitdbCmd.Stderr = initdbOutput\n\terr = initdbCmd.Run()\n\tif err != nil {\n\t\tt.Log(initdbOutput)\n\t\tt.Fatal(err)\n\t}\n\n\t// Configure the database server to listen on a Unix socket located in the temporary directory.\n\tsocketDir, err := filepath.Abs(filepath.Join(dir, \"socket\"))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := os.Mkdir(socketDir, 0o777); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tconfData := new(bytes.Buffer)\n\tfmt.Fprintf(confData, \"unix_socket_directories = '%s'\\n\", socketDir)\n\terr = os.WriteFile(filepath.Join(dataDir, \"postgresql.conf\"), confData.Bytes(), 0o666)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Start the database server (and arrange for it to be stopped at test end).\n\tserver := exec.Command(postgresPath, \"-D\", dataDir)\n\tserverOutput := new(bytes.Buffer)\n\tserver.Stdout = serverOutput\n\tserver.Stderr = serverOutput\n\tif err := server.Start(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tserverSignaled := false\n\tdefer func() {\n\t\tif !serverSignaled {\n\t\t\tif err := server.Process.Kill(); err != nil {\n\t\t\t\tt.Error(\"Stopping server:\", err)\n\t\t\t}\n\t\t}\n\t\t// Wait for server to exit, but ignore the expected failure error code.\n\t\tserver.Wait()\n\t\tif t.Failed() {\n\t\t\tt.Log(serverOutput)\n\t\t}\n\t}()\n\n\t// Now the actual test: can we connect to the database via URL opener?\n\tctx := context.Background()\n\tdbURL := &url.URL{\n\t\tScheme: \"blablabla\", // Intentionally not \"postgres\" to ensure any scheme works.\n\t\tUser:   url.User(currUser.Username),\n\t\tPath:   \"/postgres\",\n\t\t// Use the query parameter to avoid https://github.com/lib/pq/issues/796\n\t\tRawQuery: url.Values{\"host\": {socketDir}}.Encode(),\n\t}\n\tt.Logf(\"PostgreSQL URL: %s\", dbURL)\n\tdb, err := new(URLOpener).OpenPostgresURL(ctx, dbURL)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// Developing a realistic query would be hard, so instead we trust that the\n\t// PostgreSQL library reports healthy correctly. Since there's no way to\n\t// synchronize the server start and the ping, we might have to ping a few\n\t// times before it is healthy. (The overall test runner timeout will interrupt\n\t// if this takes too long.)\n\tfor {\n\t\terr := db.Ping()\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tt.Log(\"Ping:\", err)\n\t\ttime.Sleep(100 * time.Millisecond)\n\t}\n\tif err := db.Close(); err != nil {\n\t\tt.Error(\"Close:\", err)\n\t}\n\tserver.Process.Signal(os.Interrupt)\n\tserverSignaled = true\n}\n"
  },
  {
    "path": "pubsub/acks_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//\thttps://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\npackage pubsub_test\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"math/rand\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\ntype ackingDriverSub struct {\n\tdriver.Subscription\n\tq        []*driver.Message\n\tsendAcks func(context.Context, []driver.AckID) error\n}\n\nfunc (s *ackingDriverSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tif len(s.q) <= maxMessages {\n\t\tms := s.q\n\t\ts.q = nil\n\t\treturn ms, nil\n\t}\n\tms := s.q[:maxMessages]\n\ts.q = s.q[maxMessages:]\n\treturn ms, nil\n}\n\nfunc (s *ackingDriverSub) SendAcks(ctx context.Context, ackIDs []driver.AckID) error {\n\treturn s.sendAcks(ctx, ackIDs)\n}\n\nfunc (*ackingDriverSub) IsRetryable(error) bool             { return false }\nfunc (*ackingDriverSub) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Internal }\nfunc (*ackingDriverSub) CanNack() bool                      { return false }\nfunc (*ackingDriverSub) Close() error                       { return nil }\n\nfunc TestAckTriggersDriverSendAcksForOneMessage(t *testing.T) {\n\tctx := context.Background()\n\tvar mu sync.Mutex\n\tvar sentAcks []driver.AckID\n\tid := rand.Int()\n\tm := &driver.Message{AckID: id}\n\tackChan := make(chan struct{})\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{m},\n\t\tsendAcks: func(_ context.Context, ackIDs []driver.AckID) error {\n\t\t\tmu.Lock()\n\t\t\tdefer mu.Unlock()\n\t\t\tsentAcks = ackIDs\n\t\t\tackChan <- struct{}{}\n\t\t\treturn nil\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tm2, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm2.Ack()\n\t<-ackChan\n\tif len(sentAcks) != 1 {\n\t\tt.Fatalf(\"len(sentAcks) = %d, want exactly 1\", len(sentAcks))\n\t}\n\tif sentAcks[0] != id {\n\t\tt.Errorf(\"sentAcks[0] = %d, want %d\", sentAcks[0], id)\n\t}\n}\n\nfunc TestMultipleAcksCanGoIntoASingleBatch(t *testing.T) {\n\tctx := context.Background()\n\tvar wg sync.WaitGroup\n\tvar mu sync.Mutex\n\tsentAcks := make(map[driver.AckID]int)\n\tids := []int{1, 2}\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{{AckID: ids[0]}, {AckID: ids[1]}},\n\t\tsendAcks: func(_ context.Context, ackIDs []driver.AckID) error {\n\t\t\tmu.Lock()\n\t\t\tdefer mu.Unlock()\n\t\t\tfor _, id := range ackIDs {\n\t\t\t\tsentAcks[id]++\n\t\t\t\twg.Done()\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\n\t// Receive and ack the messages concurrently.\n\tfor range 2 {\n\t\twg.Add(1)\n\t\tgo func() {\n\t\t\tmr, err := sub.Receive(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tmr.Ack()\n\t\t}()\n\t}\n\twg.Wait()\n\n\tif len(sentAcks) != 2 {\n\t\tt.Errorf(\"len(sentAcks) = %d, want exactly 2\", len(sentAcks))\n\t}\n\tfor _, id := range ids {\n\t\tif sentAcks[id] != 1 {\n\t\t\tt.Errorf(\"sentAcks[%v] = %d, want 1\", id, sentAcks[id])\n\t\t}\n\t}\n}\n\nfunc TestTooManyAcksForASingleBatchGoIntoMultipleBatches(t *testing.T) {\n\tctx := context.Background()\n\tvar mu sync.Mutex\n\tvar wg sync.WaitGroup\n\tvar sentAckBatches [][]driver.AckID\n\t// This value of n is chosen large enough that it should create more\n\t// than one batch. Admittedly, there is currently no explicit guarantee\n\t// of this.\n\tn := 1000\n\tvar ms []*driver.Message\n\tfor i := range n {\n\t\tms = append(ms, &driver.Message{AckID: i})\n\t}\n\tds := &ackingDriverSub{\n\t\tq: ms,\n\t\tsendAcks: func(_ context.Context, ackIDs []driver.AckID) error {\n\t\t\tmu.Lock()\n\t\t\tdefer mu.Unlock()\n\t\t\tsentAckBatches = append(sentAckBatches, ackIDs)\n\t\t\tfor range ackIDs {\n\t\t\t\twg.Done()\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\n\terrs := make(chan error, n)\n\t// Receive and ack the messages concurrently.\n\trecv := func() {\n\t\tmr, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\terrs <- err\n\t\t}\n\t\tmr.Ack()\n\t}\n\twg.Add(n)\n\tfor range n {\n\t\tgo recv()\n\t}\n\twg.Wait()\n\n\tclose(errs)\n\n\tif len(sentAckBatches) < 2 {\n\t\tt.Errorf(\"got %d batches, want at least 2\", len(sentAckBatches))\n\t}\n\n\tfor err := range errs {\n\t\tt.Fatalf(\"got error from goroutine: %v\", err)\n\t}\n}\n\nfunc TestAckDoesNotBlock(t *testing.T) {\n\tctx, cancel := context.WithCancel(context.Background())\n\tm := &driver.Message{AckID: 0} // the batcher doesn't like nil interfaces\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{m},\n\t\tsendAcks: func(_ context.Context, ackIDs []driver.AckID) error {\n\t\t\t<-ctx.Done()\n\t\t\treturn nil\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tdefer cancel()\n\tmr, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// If Ack blocks here, waiting for sendAcks to finish, then the\n\t// deferred cancel() will never run, so sendAcks can never finish. That\n\t// would cause the test to hang. Thus hanging is how this test signals\n\t// failure.\n\tmr.Ack()\n}\n\nfunc TestDoubleAckCausesPanic(t *testing.T) {\n\tctx := context.Background()\n\tm := &driver.Message{AckID: 0} // the batcher doesn't like nil interfaces\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{m},\n\t\tsendAcks: func(_ context.Context, ackIDs []driver.AckID) error {\n\t\t\treturn nil\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tmr, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmr.Ack()\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\t// ok, panic was expected.\n\t\t\treturn\n\t\t}\n\t\tt.Errorf(\"second ack failed to panic\")\n\t}()\n\tmr.Ack()\n}\n\n// For best results, run this test with -race.\nfunc TestConcurrentDoubleAckCausesPanic(t *testing.T) {\n\tctx := context.Background()\n\tm := &driver.Message{AckID: 0} // the batcher doesn't like nil interfaces\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{m},\n\t\tsendAcks: func(_ context.Context, ackIDs []driver.AckID) error {\n\t\t\treturn nil\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tmr, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Spin up some goroutines to ack the message.\n\tvar mu sync.Mutex\n\tpanics := 0\n\tvar wg sync.WaitGroup\n\tfor range 2 {\n\t\twg.Add(1)\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tdefer func() {\n\t\t\t\tif r := recover(); r != nil {\n\t\t\t\t\tmu.Lock()\n\t\t\t\t\tdefer mu.Unlock()\n\t\t\t\t\tpanics++\n\t\t\t\t}\n\t\t\t}()\n\t\t\tmr.Ack()\n\t\t}()\n\t}\n\twg.Wait()\n\n\t// Check that one of the goroutines panicked.\n\tif panics != 1 {\n\t\tt.Errorf(\"panics = %d, want %d\", panics, 1)\n\t}\n}\n\nfunc TestSubShutdownCanBeCanceledEvenWithHangingSendAcks(t *testing.T) {\n\tctx := context.Background()\n\tm := &driver.Message{AckID: 0} // the batcher doesn't like nil interfaces\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{m},\n\t\tsendAcks: func(ctx context.Context, ackIDs []driver.AckID) error {\n\t\t\t<-ctx.Done()\n\t\t\treturn ctx.Err()\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tmr, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmr.Ack()\n\n\tdone := make(chan struct{})\n\tgo func() {\n\t\tctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)\n\t\tdefer cancel()\n\t\tsub.Shutdown(ctx)\n\t\tclose(done)\n\t}()\n\ttooLong := 5 * time.Second\n\tselect {\n\tcase <-done:\n\tcase <-time.After(tooLong):\n\t\tt.Fatalf(\"waited too long (%v) for Shutdown to run\", tooLong)\n\t}\n}\n\nfunc TestReceiveReturnsErrorFromSendAcks(t *testing.T) {\n\t// If SendAcks fails, the error is returned via receive.\n\tctx := context.Background()\n\tserr := errors.New(\"SendAcks failed\")\n\tackChan := make(chan struct{})\n\tds := &ackingDriverSub{\n\t\tq: []*driver.Message{\n\t\t\t{AckID: 0},\n\t\t\t{AckID: 1},\n\t\t\t{AckID: 2},\n\t\t\t{AckID: 3},\n\t\t},\n\t\tsendAcks: func(context.Context, []driver.AckID) error {\n\t\t\tclose(ackChan)\n\t\t\treturn serr\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tm, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm.Ack()\n\t// Wait for the ack to be sent.\n\t<-ackChan\n\t// It might take a bit longer for the logic after SendAcks returns to happen, so\n\t// keep calling Receive.\n\tctx, cancel := context.WithTimeout(ctx, 5*time.Second)\n\tdefer cancel()\n\tfor {\n\t\t_, err = sub.Receive(ctx)\n\t\tif gcerrors.Code(err) == gcerrors.Internal && err.(*gcerr.Error).Unwrap() == serr {\n\t\t\tbreak // success\n\t\t}\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"got %v, want %v\", err, serr)\n\t\t}\n\t}\n}\n\n// callbackDriverSub implements driver.Subscription and allows something like\n// monkey patching of both its ReceiveBatch and SendAcks methods.\ntype callbackDriverSub struct {\n\tdriver.Subscription\n\tmu           sync.Mutex\n\treceiveBatch func(context.Context) ([]*driver.Message, error)\n\tsendAcks     func(context.Context, []driver.AckID) error\n}\n\nfunc (s *callbackDriverSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\treturn s.receiveBatch(ctx)\n}\n\nfunc (s *callbackDriverSub) SendAcks(ctx context.Context, acks []driver.AckID) error {\n\treturn s.sendAcks(ctx, acks)\n}\n\nfunc (*callbackDriverSub) IsRetryable(error) bool             { return false }\nfunc (*callbackDriverSub) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Internal }\nfunc (*callbackDriverSub) CanNack() bool                      { return false }\nfunc (*callbackDriverSub) Close() error                       { return nil }\n\n// This test detects the root cause of\n// https://github.com/google/go-cloud/issues/1238.\n// If the issue is present, this test times out. The problem was that when\n// there were no messages available from the driver,\n// pubsub.Subscription.Receive would spin trying to get more messages without\n// checking to see if an unrecoverable error had occurred while sending a batch\n// of acks to the driver.\nfunc TestReceiveReturnsAckErrorOnNoMoreMessages(t *testing.T) {\n\t// If SendAcks fails, the error is returned via receive.\n\tctx := context.Background()\n\tserr := errors.New(\"unrecoverable error\")\n\treceiveHappened := make(chan struct{})\n\tackHappened := make(chan struct{})\n\tds := &callbackDriverSub{\n\t\t// First call to receiveBatch will return a single message.\n\t\treceiveBatch: func(context.Context) ([]*driver.Message, error) {\n\t\t\tms := []*driver.Message{{AckID: 1}}\n\t\t\treturn ms, nil\n\t\t},\n\t\tsendAcks: func(context.Context, []driver.AckID) error {\n\t\t\tackHappened <- struct{}{}\n\t\t\treturn serr\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tm, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm.Ack()\n\n\t// Second call to receiveBatch will wait for the pull from the\n\t// receiveHappened channel below, and return a nil slice of messages.\n\tds.mu.Lock()\n\tds.receiveBatch = func(context.Context) ([]*driver.Message, error) {\n\t\tds.mu.Lock()\n\t\t// Subsequent calls to receiveBatch won't wait on receiveHappened,\n\t\t// and will also return nil slices of messages.\n\t\tds.receiveBatch = func(context.Context) ([]*driver.Message, error) {\n\t\t\treturn nil, nil\n\t\t}\n\t\tds.mu.Unlock()\n\t\treceiveHappened <- struct{}{}\n\t\treturn nil, nil\n\t}\n\tds.mu.Unlock()\n\n\terrc := make(chan error)\n\tgo func() {\n\t\t_, err := sub.Receive(ctx)\n\t\terrc <- err\n\t}()\n\n\t// sub.Receive has to start running first and then we need to trigger the unrecoverable error.\n\t<-receiveHappened\n\n\t// Trigger the unrecoverable error.\n\t<-ackHappened\n\n\t// Wait for sub.Receive to return so we can check the error it returns against serr.\n\terr = <-errc\n\n\t// Check the error returned from sub.Receive.\n\tif got := gcerrors.Code(err); got != gcerrors.Internal {\n\t\tt.Fatalf(\"error code = %v; want %v\", got, gcerrors.Internal)\n\t}\n\tif got := errors.Unwrap(err); got != serr {\n\t\tt.Errorf(\"error = %v; want %v\", got, serr)\n\t}\n}\n"
  },
  {
    "path": "pubsub/awssnssqs/awssnssqs.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awssnssqs provides two implementations of pubsub.Topic, one that\n// sends messages to AWS SNS (Simple Notification Service), and one that sends\n// messages to SQS (Simple Queuing Service). It also provides an implementation\n// of pubsub.Subscription that receives messages from SQS.\n//\n// # URLs\n//\n// For pubsub.OpenTopic, awssnssqs registers for the scheme \"awssns\" for\n// an SNS topic, and \"awssqs\" for an SQS topic. For pubsub.OpenSubscription,\n// it registers for the scheme \"awssqs\".\n//\n// The default URL opener will use an AWS session with the default credentials\n// and configuration.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Message Delivery Semantics\n//\n// AWS SQS supports at-least-once semantics; applications must call Message.Ack\n// after processing a message, or it will be redelivered.\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # Escaping\n//\n// Go CDK supports all UTF-8 strings; to make this work with services lacking\n// full UTF-8 support, strings must be escaped (during writes) and unescaped\n// (during reads). The following escapes are required for awssnssqs:\n//   - Metadata keys: Characters other than \"a-zA-z0-9_-.\", and additionally \".\"\n//     when it's at the start of the key or the previous character was \".\",\n//     are escaped using \"__0x<hex>__\". These characters were determined by\n//     experimentation.\n//   - Metadata values: Escaped using URL encoding.\n//   - Message body: AWS SNS/SQS only supports UTF-8 strings. See the\n//     BodyBase64Encoding enum in TopicOptions for strategies on how to send\n//     non-UTF-8 message bodies. By default, non-UTF-8 message bodies are base64\n//     encoded.\n//\n// # As\n//\n// awssnssqs exposes the following types for As:\n//   - Topic: *sns.Client for OpenSNSTopic, *sqs.Client for OpenSQSTopic\n//   - Subscription: *sqs.Client\n//   - Message: sqstypes.Message\n//   - Message.BeforeSend: *sns.PublishBatchRequestEntry or *sns.PublishInput (deprecated) for OpenSNSTopic, *sqstypes.SendMessageBatchRequestEntry for OpenSQSTopic\n//   - Message.AfterSend: snstypes.PublishBatchResultEntry or *sns.PublishOutput (deprecated) for OpenSNSTopic, sqstypes.SendMessageBatchResultEntry for OpenSQSTopic\n//   - Error: any error type returned by the service, notably smithy.APIError\npackage awssnssqs // import \"gocloud.dev/pubsub/awssnssqs\"\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sns\"\n\tsnstypes \"github.com/aws/aws-sdk-go-v2/service/sns/types\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sqs\"\n\tsqstypes \"github.com/aws/aws-sdk-go-v2/service/sqs/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/wire\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/escape\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nconst (\n\t// base64EncodedKey is the Message Attribute key used to flag that the\n\t// message body is base64 encoded.\n\tbase64EncodedKey = \"base64encoded\"\n\t// How long ReceiveBatch should wait if no messages are available; controls\n\t// the poll interval of requests to SQS.\n\tnoMessagesPollDuration = 250 * time.Millisecond\n)\n\nvar sendBatcherOptsSNS = &batcher.Options{\n\tMaxBatchSize: 10,  // SNS SendBatch supports 10 message at a time\n\tMaxHandlers:  100, // max concurrency for sends\n}\n\nvar sendBatcherOptsSQS = &batcher.Options{\n\tMaxBatchSize: 10,  // SQS SendBatch supports 10 messages at a time\n\tMaxHandlers:  100, // max concurrency for sends\n}\n\nvar recvBatcherOpts = &batcher.Options{\n\t// SQS supports receiving at most 10 messages at a time:\n\t// https://godoc.org/github.com/aws/aws-sdk-go/service/sqs#SQS.ReceiveMessage\n\tMaxBatchSize: 10,\n\tMaxHandlers:  100, // max concurrency for receives\n}\n\nvar ackBatcherOpts = &batcher.Options{\n\t// SQS supports deleting/updating at most 10 messages at a time:\n\t// https://godoc.org/github.com/aws/aws-sdk-go/service/sqs#SQS.DeleteMessageBatch\n\t// https://godoc.org/github.com/aws/aws-sdk-go/service/sqs#SQS.ChangeMessageVisibilityBatch\n\tMaxBatchSize: 10,\n\tMaxHandlers:  100, // max concurrency for acks\n}\n\nfunc init() {\n\tlazy := new(lazySessionOpener)\n\tpubsub.DefaultURLMux().RegisterTopic(SNSScheme, lazy)\n\tpubsub.DefaultURLMux().RegisterTopic(SQSScheme, lazy)\n\tpubsub.DefaultURLMux().RegisterSubscription(SQSScheme, lazy)\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDialSNS,\n\tDialSQS,\n)\n\n// DialSNS gets an AWS SNS service client using the AWS SDK V2.\nfunc DialSNS(cfg aws.Config) *sns.Client {\n\treturn sns.NewFromConfig(cfg)\n}\n\n// DialSQS gets an AWS SQS service client using the AWS SDK V2.\nfunc DialSQS(cfg aws.Config) *sqs.Client {\n\treturn sqs.NewFromConfig(cfg)\n}\n\n// lazySessionOpener obtains the AWS session from the environment on the first\n// call to OpenXXXURL.\ntype lazySessionOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazySessionOpener) defaultOpener(u *url.URL) (*URLOpener, error) {\n\treturn &URLOpener{}, nil\n}\n\nfunc (o *lazySessionOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topener, err := o.defaultOpener(u)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: failed to open default session: %v\", u, err)\n\t}\n\treturn opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *lazySessionOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topener, err := o.defaultOpener(u)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: failed to open default session: %v\", u, err)\n\t}\n\treturn opener.OpenSubscriptionURL(ctx, u)\n}\n\n// SNSScheme is the URL scheme for pubsub.OpenTopic (for an SNS topic) that\n// awssnssqs registers its URLOpeners under on pubsub.DefaultMux.\nconst SNSScheme = \"awssns\"\n\n// SQSScheme is the URL scheme for pubsub.OpenTopic (for an SQS topic) and for\n// pubsub.OpenSubscription that awssnssqs registers its URLOpeners under on\n// pubsub.DefaultMux.\nconst SQSScheme = \"awssqs\"\n\n// URLOpener opens AWS SNS/SQS URLs like \"awssns:///sns-topic-arn\" for\n// SNS topics or \"awssqs://sqs-queue-url\" for SQS topics and subscriptions.\n//\n// For SNS topics, the URL's host+path is used as the topic Amazon Resource Name\n// (ARN). Since ARNs have \":\" in them, and \":\" precedes a port in URL\n// hostnames, leave the host blank and put the ARN in the path\n// (e.g., \"awssns:///arn:aws:service:region:accountid:resourceType/resourcePath\").\n//\n// For SQS topics and subscriptions, the URL's host+path is prefixed with\n// \"https://\" to create the queue URL.\n//\n// See https://pkg.go.dev/gocloud.dev/aws#V2ConfigFromURLParams.\n//\n// In addition, the following query parameters are supported:\n//\n//   - raw (for \"awssqs\" Subscriptions only): sets SubscriberOptions.Raw. The\n//     value must be parseable by `strconv.ParseBool`.\n//   - nacklazy (for \"awssqs\" Subscriptions only): sets SubscriberOptions.NackLazy. The\n//     value must be parseable by `strconv.ParseBool`.\n//   - waittime: sets SubscriberOptions.WaitTime, in time.ParseDuration formats.\ntype URLOpener struct {\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\t// Trim leading \"/\" if host is empty, so that\n\t// awssns:///arn:aws:service:region:accountid:resourceType/resourcePath\n\t// gives \"arn:...\" instead of \"/arn:...\".\n\ttopicARN := strings.TrimPrefix(path.Join(u.Host, u.Path), \"/\")\n\tqURL := \"https://\" + path.Join(u.Host, u.Path)\n\tcfg, err := gcaws.V2ConfigFromURLParams(ctx, u.Query())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: %v\", u, err)\n\t}\n\tswitch u.Scheme {\n\tcase SNSScheme:\n\t\treturn OpenSNSTopic(ctx, sns.NewFromConfig(cfg), topicARN, &o.TopicOptions), nil\n\tcase SQSScheme:\n\t\treturn OpenSQSTopic(ctx, sqs.NewFromConfig(cfg), qURL, &o.TopicOptions), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"open topic %v: unsupported scheme\", u)\n\t}\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\t// Clone the options since we might override Raw.\n\topts := o.SubscriptionOptions\n\tq := u.Query()\n\tif rawStr := q.Get(\"raw\"); rawStr != \"\" {\n\t\tvar err error\n\t\topts.Raw, err = strconv.ParseBool(rawStr)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid value %q for raw: %v\", rawStr, err)\n\t\t}\n\t\tq.Del(\"raw\")\n\t}\n\tif nackLazyStr := q.Get(\"nacklazy\"); nackLazyStr != \"\" {\n\t\tvar err error\n\t\topts.NackLazy, err = strconv.ParseBool(nackLazyStr)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid value %q for nacklazy: %v\", nackLazyStr, err)\n\t\t}\n\t\tq.Del(\"nacklazy\")\n\t}\n\tif waitTimeStr := q.Get(\"waittime\"); waitTimeStr != \"\" {\n\t\tvar err error\n\t\topts.WaitTime, err = time.ParseDuration(waitTimeStr)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid value %q for waittime: %v\", waitTimeStr, err)\n\t\t}\n\t\tq.Del(\"waittime\")\n\t}\n\tqURL := \"https://\" + path.Join(u.Host, u.Path)\n\tcfg, err := gcaws.V2ConfigFromURLParams(ctx, q)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: %v\", u, err)\n\t}\n\treturn OpenSubscription(ctx, sqs.NewFromConfig(cfg), qURL, &opts), nil\n}\n\ntype snsTopic struct {\n\tclient *sns.Client\n\tarn    string\n\topts   *TopicOptions\n}\n\n// BodyBase64Encoding is an enum of strategies for when to base64 message\n// bodies.\ntype BodyBase64Encoding int\n\nconst (\n\t// NonUTF8Only means that message bodies that are valid UTF-8 encodings are\n\t// sent as-is. Invalid UTF-8 message bodies are base64 encoded, and a\n\t// MessageAttribute with key \"base64encoded\" is added to the message.\n\t// When receiving messages, the \"base64encoded\" attribute is used to determine\n\t// whether to base64 decode, and is then filtered out.\n\tNonUTF8Only BodyBase64Encoding = 0\n\t// Always means that all message bodies are base64 encoded.\n\t// A MessageAttribute with key \"base64encoded\" is added to the message.\n\t// When receiving messages, the \"base64encoded\" attribute is used to determine\n\t// whether to base64 decode, and is then filtered out.\n\tAlways BodyBase64Encoding = 1\n\t// Never means that message bodies are never base64 encoded. Non-UTF-8\n\t// bytes in message bodies may be modified by SNS/SQS.\n\tNever BodyBase64Encoding = 2\n)\n\nfunc (e BodyBase64Encoding) wantEncode(b []byte) bool {\n\tswitch e {\n\tcase Always:\n\t\treturn true\n\tcase Never:\n\t\treturn false\n\tcase NonUTF8Only:\n\t\treturn !utf8.Valid(b)\n\t}\n\tpanic(\"unreachable\")\n}\n\n// TopicOptions contains configuration options for topics.\ntype TopicOptions struct {\n\t// BodyBase64Encoding determines when message bodies are base64 encoded.\n\t// The default is NonUTF8Only.\n\tBodyBase64Encoding BodyBase64Encoding\n\n\t// BatcherOptions adds constraints to the default batching done for sends.\n\tBatcherOptions batcher.Options\n}\n\n// OpenSNSTopic opens a topic that sends to the SNS topic with the given Amazon\n// Resource Name (ARN), using AWS SDK V2.\nfunc OpenSNSTopic(ctx context.Context, client *sns.Client, topicARN string, opts *TopicOptions) *pubsub.Topic {\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tbo := sendBatcherOptsSNS.NewMergedOptions(&opts.BatcherOptions)\n\treturn pubsub.NewTopic(openSNSTopic(ctx, client, topicARN, opts), bo)\n}\n\nvar OpenSNSTopicV2 = OpenSNSTopic\n\n// openSNSTopic returns the driver for OpenSNSTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openSNSTopic(ctx context.Context, client *sns.Client, topicARN string, opts *TopicOptions) driver.Topic {\n\treturn &snsTopic{\n\t\tclient: client,\n\t\tarn:    topicARN,\n\t\topts:   opts,\n\t}\n}\n\nvar stringDataType = aws.String(\"String\")\n\n// encodeMetadata encodes the keys and values of md as needed.\nfunc encodeMetadata(md map[string]string) map[string]string {\n\tretval := map[string]string{}\n\tfor k, v := range md {\n\t\t// See the package comments for more details on escaping of metadata\n\t\t// keys & values.\n\t\tk = escape.HexEscape(k, func(runes []rune, i int) bool {\n\t\t\tc := runes[i]\n\t\t\tswitch {\n\t\t\tcase escape.IsASCIIAlphanumeric(c):\n\t\t\t\treturn false\n\t\t\tcase c == '_' || c == '-':\n\t\t\t\treturn false\n\t\t\tcase c == '.' && i != 0 && runes[i-1] != '.':\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t})\n\t\tretval[k] = escape.URLEscape(v)\n\t}\n\treturn retval\n}\n\n// maybeEncodeBody decides whether body should base64-encoded based on opt, and\n// returns the (possibly encoded) body as a string, along with a boolean\n// indicating whether encoding occurred.\nfunc maybeEncodeBody(body []byte, opt BodyBase64Encoding) (string, bool) {\n\tif opt.wantEncode(body) {\n\t\treturn base64.StdEncoding.EncodeToString(body), true\n\t}\n\treturn string(body), false\n}\n\n// Defines values for Metadata keys used by the driver for setting message\n// attributes on SNS ([sns.PublishBatchRequestEntry]/[snstypes.PublishBatchRequestEntry])\n// and SQS ([sqs.SendMessageBatchRequestEntry]/[sqstypes.SendMessageBatchRequestEntry])\n// messages.\n//\n// For example, to set a deduplication ID and message group ID on a message:\n//\n//\timport (\n//\t\t\"gocloud.dev/pubsub\"\n//\t\t\"gocloud.dev/pubsub/awssnssqs\"\n//\t)\n//\n//\tmessage := pubsub.Message{\n//\t\tBody: []byte(\"Hello, World!\"),\n//\t\tMetadata: map[string]string{\n//\t\t\tawssnssqs.MetadataKeyDeduplicationID: \"my-dedup-id\",\n//\t\t\tawssnssqs.MetadataKeyMessageGroupID:  \"my-group-id\",\n//\t\t},\n//\t}\nconst (\n\tMetadataKeyDeduplicationID = \"DeduplicationId\"\n\tMetadataKeyMessageGroupID  = \"MessageGroupId\"\n)\n\n// reviseSnsEntryAttributes sets attributes on a [snstypes.PublishBatchRequestEntry] based on [driver.Message.Metadata].\nfunc reviseSnsEntryAttributes(dm *driver.Message, entry *snstypes.PublishBatchRequestEntry) {\n\tif dedupID, ok := dm.Metadata[MetadataKeyDeduplicationID]; ok {\n\t\tentry.MessageDeduplicationId = aws.String(dedupID)\n\t}\n\tif groupID, ok := dm.Metadata[MetadataKeyMessageGroupID]; ok {\n\t\tentry.MessageGroupId = aws.String(groupID)\n\t}\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *snsTopic) SendBatch(ctx context.Context, dms []*driver.Message) error {\n\treq := &sns.PublishBatchInput{\n\t\tTopicArn: &t.arn,\n\t}\n\tfor _, dm := range dms {\n\t\tattrs := map[string]snstypes.MessageAttributeValue{}\n\t\tfor k, v := range encodeMetadata(dm.Metadata) {\n\t\t\tattrs[k] = snstypes.MessageAttributeValue{\n\t\t\t\tDataType:    stringDataType,\n\t\t\t\tStringValue: aws.String(v),\n\t\t\t}\n\t\t}\n\t\tbody, didEncode := maybeEncodeBody(dm.Body, t.opts.BodyBase64Encoding)\n\t\tif didEncode {\n\t\t\tattrs[base64EncodedKey] = snstypes.MessageAttributeValue{\n\t\t\t\tDataType:    stringDataType,\n\t\t\t\tStringValue: aws.String(\"true\"),\n\t\t\t}\n\t\t}\n\t\tif len(attrs) == 0 {\n\t\t\tattrs = nil\n\t\t}\n\t\tentry := &snstypes.PublishBatchRequestEntry{\n\t\t\tId:                aws.String(strconv.Itoa(len(req.PublishBatchRequestEntries))),\n\t\t\tMessageAttributes: attrs,\n\t\t\tMessage:           aws.String(body),\n\t\t}\n\t\treviseSnsEntryAttributes(dm, entry)\n\t\tif dm.BeforeSend != nil {\n\t\t\t// A previous revision used the non-batch API PublishInput, which takes\n\t\t\t// a *sns.PublishInput. For backwards compatibility for As, continue\n\t\t\t// to support that type. If it is requested, create a PublishInput\n\t\t\t// with the fields from PublishBatchRequestEntry that were set, and\n\t\t\t// then copy all of the matching fields back after calling dm.BeforeSend.\n\t\t\tvar pi *sns.PublishInput\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**sns.PublishInput); ok {\n\t\t\t\t\tpi = &sns.PublishInput{\n\t\t\t\t\t\t// Id does not exist on PublishInput.\n\t\t\t\t\t\tMessageAttributes: entry.MessageAttributes,\n\t\t\t\t\t\tMessage:           entry.Message,\n\t\t\t\t\t}\n\t\t\t\t\t*p = pi\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif p, ok := i.(**snstypes.PublishBatchRequestEntry); ok {\n\t\t\t\t\t*p = entry\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := dm.BeforeSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif pi != nil {\n\t\t\t\t// Copy all of the fields that may have been modified back to the entry.\n\t\t\t\tentry.MessageAttributes = pi.MessageAttributes\n\t\t\t\tentry.Message = pi.Message\n\t\t\t\tentry.MessageDeduplicationId = pi.MessageDeduplicationId\n\t\t\t\tentry.MessageGroupId = pi.MessageGroupId\n\t\t\t\tentry.MessageStructure = pi.MessageStructure\n\t\t\t\tentry.Subject = pi.Subject\n\t\t\t}\n\t\t}\n\t\treq.PublishBatchRequestEntries = append(req.PublishBatchRequestEntries, *entry)\n\t}\n\tresp, err := t.client.PublishBatch(ctx, req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif numFailed := len(resp.Failed); numFailed > 0 {\n\t\tfirst := resp.Failed[0]\n\t\treturn fmt.Errorf(\"sns.PublishBatch failed for %d message(s): %s, %s\", numFailed, aws.ToString(first.Code), aws.ToString(first.Message))\n\t}\n\tif len(resp.Successful) == len(dms) {\n\t\tfor n, dm := range dms {\n\t\t\tif dm.AfterSend != nil {\n\t\t\t\tasFunc := func(i any) bool {\n\t\t\t\t\tif p, ok := i.(*snstypes.PublishBatchResultEntry); ok {\n\t\t\t\t\t\t*p = resp.Successful[n]\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\tif p, ok := i.(**sns.PublishOutput); ok {\n\t\t\t\t\t\t// For backwards compability.\n\t\t\t\t\t\t*p = &sns.PublishOutput{\n\t\t\t\t\t\t\tMessageId:      resp.Successful[n].MessageId,\n\t\t\t\t\t\t\tSequenceNumber: resp.Successful[n].SequenceNumber,\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif err := dm.AfterSend(asFunc); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (t *snsTopic) IsRetryable(error) bool {\n\t// The client handles retries.\n\treturn false\n}\n\n// As implements driver.Topic.As.\nfunc (t *snsTopic) As(i any) bool {\n\tc, ok := i.(**sns.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = t.client\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs.\nfunc (t *snsTopic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\n// ErrorCode implements driver.Topic.ErrorCode.\nfunc (t *snsTopic) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\n// Close implements driver.Topic.Close.\nfunc (*snsTopic) Close() error { return nil }\n\ntype sqsTopic struct {\n\tclient *sqs.Client\n\tqURL   string\n\topts   *TopicOptions\n}\n\n// OpenSQSTopic opens a topic that sends to the SQS topic with the given SQS\n// queue URL, using AWS SDK V2.\nfunc OpenSQSTopic(ctx context.Context, client *sqs.Client, qURL string, opts *TopicOptions) *pubsub.Topic {\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tbo := sendBatcherOptsSQS.NewMergedOptions(&opts.BatcherOptions)\n\treturn pubsub.NewTopic(openSQSTopic(ctx, client, qURL, opts), bo)\n}\n\nvar OpenSQSTopicV2 = OpenSQSTopic\n\n// openSQSTopic returns the driver for OpenSQSTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openSQSTopic(ctx context.Context, client *sqs.Client, qURL string, opts *TopicOptions) driver.Topic {\n\treturn &sqsTopic{\n\t\tclient: client,\n\t\tqURL:   qURL,\n\t\topts:   opts,\n\t}\n}\n\n// reviseSqsEntryAttributes sets attributes on a [sqstypes.SendMessageBatchRequestEntry] based on [driver.Message.Metadata].\nfunc reviseSqsEntryAttributes(dm *driver.Message, entry *sqstypes.SendMessageBatchRequestEntry) {\n\tif dedupID, ok := dm.Metadata[MetadataKeyDeduplicationID]; ok {\n\t\tentry.MessageDeduplicationId = aws.String(dedupID)\n\t}\n\tif groupID, ok := dm.Metadata[MetadataKeyMessageGroupID]; ok {\n\t\tentry.MessageGroupId = aws.String(groupID)\n\t}\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *sqsTopic) SendBatch(ctx context.Context, dms []*driver.Message) error {\n\treq := &sqs.SendMessageBatchInput{\n\t\tQueueUrl: aws.String(t.qURL),\n\t}\n\tfor _, dm := range dms {\n\t\tattrs := map[string]sqstypes.MessageAttributeValue{}\n\t\tfor k, v := range encodeMetadata(dm.Metadata) {\n\t\t\tattrs[k] = sqstypes.MessageAttributeValue{\n\t\t\t\tDataType:    stringDataType,\n\t\t\t\tStringValue: aws.String(v),\n\t\t\t}\n\t\t}\n\t\tbody, didEncode := maybeEncodeBody(dm.Body, t.opts.BodyBase64Encoding)\n\t\tif didEncode {\n\t\t\tattrs[base64EncodedKey] = sqstypes.MessageAttributeValue{\n\t\t\t\tDataType:    stringDataType,\n\t\t\t\tStringValue: aws.String(\"true\"),\n\t\t\t}\n\t\t}\n\t\tif len(attrs) == 0 {\n\t\t\tattrs = nil\n\t\t}\n\t\tentry := &sqstypes.SendMessageBatchRequestEntry{\n\t\t\tId:                aws.String(strconv.Itoa(len(req.Entries))),\n\t\t\tMessageAttributes: attrs,\n\t\t\tMessageBody:       aws.String(body),\n\t\t}\n\t\treviseSqsEntryAttributes(dm, entry)\n\t\tif dm.BeforeSend != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**sqstypes.SendMessageBatchRequestEntry); ok {\n\t\t\t\t\t*p = entry\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := dm.BeforeSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treq.Entries = append(req.Entries, *entry)\n\t}\n\tresp, err := t.client.SendMessageBatch(ctx, req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif numFailed := len(resp.Failed); numFailed > 0 {\n\t\tfirst := resp.Failed[0]\n\t\treturn fmt.Errorf(\"sqs.SendMessageBatch failed for %d message(s): %s, %s\", numFailed, aws.ToString(first.Code), aws.ToString(first.Message))\n\t}\n\tif len(resp.Successful) == len(dms) {\n\t\tfor n, dm := range dms {\n\t\t\tif dm.AfterSend != nil {\n\t\t\t\tasFunc := func(i any) bool {\n\t\t\t\t\tif p, ok := i.(*sqstypes.SendMessageBatchResultEntry); ok {\n\t\t\t\t\t\t*p = resp.Successful[n]\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif err := dm.AfterSend(asFunc); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (t *sqsTopic) IsRetryable(error) bool {\n\t// The client handles retries.\n\treturn false\n}\n\n// As implements driver.Topic.As.\nfunc (t *sqsTopic) As(i any) bool {\n\tc, ok := i.(**sqs.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = t.client\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs.\nfunc (t *sqsTopic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\n// ErrorCode implements driver.Topic.ErrorCode.\nfunc (t *sqsTopic) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\n// Close implements driver.Topic.Close.\nfunc (*sqsTopic) Close() error { return nil }\n\nfunc errorCode(err error) gcerrors.ErrorCode {\n\tvar code string\n\tvar ae smithy.APIError\n\tif errors.As(err, &ae) {\n\t\tcode = ae.ErrorCode()\n\t} else {\n\t\treturn gcerrors.Unknown\n\t}\n\tec, ok := errorCodeMap[code]\n\tif !ok {\n\t\treturn gcerrors.Unknown\n\t}\n\treturn ec\n}\n\nvar errorCodeMap = map[string]gcerrors.ErrorCode{\n\t(&snstypes.AuthorizationErrorException{}).ErrorCode():        gcerrors.PermissionDenied,\n\t(&snstypes.KMSAccessDeniedException{}).ErrorCode():           gcerrors.PermissionDenied,\n\t(&snstypes.KMSDisabledException{}).ErrorCode():               gcerrors.FailedPrecondition,\n\t(&snstypes.KMSInvalidStateException{}).ErrorCode():           gcerrors.FailedPrecondition,\n\t(&snstypes.KMSOptInRequired{}).ErrorCode():                   gcerrors.FailedPrecondition,\n\t(&sqstypes.MessageNotInflight{}).ErrorCode():                 gcerrors.FailedPrecondition,\n\t(&sqstypes.PurgeQueueInProgress{}).ErrorCode():               gcerrors.FailedPrecondition,\n\t(&sqstypes.QueueDeletedRecently{}).ErrorCode():               gcerrors.FailedPrecondition,\n\t(&sqstypes.QueueNameExists{}).ErrorCode():                    gcerrors.FailedPrecondition,\n\t(&snstypes.InternalErrorException{}).ErrorCode():             gcerrors.Internal,\n\t(&snstypes.InvalidParameterException{}).ErrorCode():          gcerrors.InvalidArgument,\n\t(&snstypes.InvalidParameterValueException{}).ErrorCode():     gcerrors.InvalidArgument,\n\t(&sqstypes.BatchEntryIdsNotDistinct{}).ErrorCode():           gcerrors.InvalidArgument,\n\t(&sqstypes.BatchRequestTooLong{}).ErrorCode():                gcerrors.InvalidArgument,\n\t(&sqstypes.EmptyBatchRequest{}).ErrorCode():                  gcerrors.InvalidArgument,\n\t(&sqstypes.InvalidAttributeName{}).ErrorCode():               gcerrors.InvalidArgument,\n\t(&sqstypes.InvalidBatchEntryId{}).ErrorCode():                gcerrors.InvalidArgument,\n\t(&sqstypes.InvalidIdFormat{}).ErrorCode():                    gcerrors.InvalidArgument,\n\t(&sqstypes.InvalidMessageContents{}).ErrorCode():             gcerrors.InvalidArgument,\n\t(&sqstypes.ReceiptHandleIsInvalid{}).ErrorCode():             gcerrors.InvalidArgument,\n\t(&sqstypes.TooManyEntriesInBatchRequest{}).ErrorCode():       gcerrors.InvalidArgument,\n\t(&sqstypes.UnsupportedOperation{}).ErrorCode():               gcerrors.InvalidArgument,\n\t(&snstypes.InvalidSecurityException{}).ErrorCode():           gcerrors.PermissionDenied,\n\t(&snstypes.KMSNotFoundException{}).ErrorCode():               gcerrors.NotFound,\n\t(&snstypes.NotFoundException{}).ErrorCode():                  gcerrors.NotFound,\n\t(&sqstypes.QueueDoesNotExist{}).ErrorCode():                  gcerrors.NotFound,\n\t\"AWS.SimpleQueueService.NonExistentQueue\":                    gcerrors.NotFound,\n\t(&snstypes.FilterPolicyLimitExceededException{}).ErrorCode(): gcerrors.ResourceExhausted,\n\t(&snstypes.SubscriptionLimitExceededException{}).ErrorCode(): gcerrors.ResourceExhausted,\n\t(&snstypes.TopicLimitExceededException{}).ErrorCode():        gcerrors.ResourceExhausted,\n\t(&sqstypes.OverLimit{}).ErrorCode():                          gcerrors.ResourceExhausted,\n\t(&snstypes.KMSThrottlingException{}).ErrorCode():             gcerrors.ResourceExhausted,\n\t(&snstypes.ThrottledException{}).ErrorCode():                 gcerrors.ResourceExhausted,\n\t\"RequestCanceled\": gcerrors.Canceled,\n\t(&snstypes.EndpointDisabledException{}).ErrorCode():            gcerrors.Unknown,\n\t(&snstypes.PlatformApplicationDisabledException{}).ErrorCode(): gcerrors.Unknown,\n}\n\ntype subscription struct {\n\tclient *sqs.Client\n\tqURL   string\n\topts   *SubscriptionOptions\n}\n\n// SubscriptionOptions will contain configuration for subscriptions.\ntype SubscriptionOptions struct {\n\t// Raw determines how the Subscription will process message bodies.\n\t//\n\t// If the subscription is expected to process messages sent directly to\n\t// SQS, or messages from SNS topics configured to use \"raw\" delivery,\n\t// set this to true. Message bodies will be passed through untouched.\n\t//\n\t// If false, the Subscription will use best-effort heuristics to\n\t// identify whether message bodies are raw or SNS JSON; this may be\n\t// inefficient for raw messages.\n\t//\n\t// See https://aws.amazon.com/sns/faqs/#Raw_message_delivery.\n\tRaw bool\n\n\t// NackLazy determines what Nack does.\n\t//\n\t// By default, Nack uses ChangeMessageVisibility to set the VisibilityTimeout\n\t// for the nacked message to 0, so that it will be redelivered immediately.\n\t// Set NackLazy to true to bypass this behavior; Nack will do nothing,\n\t// and the message will be redelivered after the existing VisibilityTimeout\n\t// expires (defaults to 30s, but can be configured per queue).\n\t//\n\t// See https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html.\n\tNackLazy bool\n\n\t// WaitTime passed to ReceiveMessage to enable long polling.\n\t// https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html#sqs-long-polling.\n\t// Note that a non-zero WaitTime can delay delivery of messages\n\t// by up to that duration.\n\tWaitTime time.Duration\n\n\t// ReceiveBatcherOptions adds constraints to the default batching done for receives.\n\tReceiveBatcherOptions batcher.Options\n\n\t// AckBatcherOptions adds constraints to the default batching done for acks.\n\tAckBatcherOptions batcher.Options\n}\n\n// OpenSubscription opens a subscription based on AWS SQS for the given SQS\n// queue URL, using AWS SDK V2. The queue is assumed to be subscribed to some SNS topic, though\n// there is no check for this.\nfunc OpenSubscription(ctx context.Context, client *sqs.Client, qURL string, opts *SubscriptionOptions) *pubsub.Subscription {\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\trbo := recvBatcherOpts.NewMergedOptions(&opts.ReceiveBatcherOptions)\n\tabo := ackBatcherOpts.NewMergedOptions(&opts.AckBatcherOptions)\n\treturn pubsub.NewSubscription(openSubscription(ctx, client, qURL, opts), rbo, abo)\n}\n\nvar OpenSubscriptionV2 = OpenSubscription\n\n// openSubscription returns a driver.Subscription.\nfunc openSubscription(ctx context.Context, client *sqs.Client, qURL string, opts *SubscriptionOptions) driver.Subscription {\n\treturn &subscription{\n\t\tclient: client,\n\t\tqURL:   qURL,\n\t\topts:   opts,\n\t}\n}\n\n// ReceiveBatch implements driver.Subscription.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tvar ms []*driver.Message\n\treq := &sqs.ReceiveMessageInput{\n\t\tQueueUrl:              aws.String(s.qURL),\n\t\tMaxNumberOfMessages:   int32(maxMessages),\n\t\tMessageAttributeNames: []string{\"All\"},\n\t\tAttributeNames:        []sqstypes.QueueAttributeName{\"All\"},\n\t}\n\tif s.opts.WaitTime != 0 {\n\t\treq.WaitTimeSeconds = int32(s.opts.WaitTime.Seconds())\n\t}\n\toutput, err := s.client.ReceiveMessage(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, m := range output.Messages {\n\t\tbodyStr := aws.ToString(m.Body)\n\t\trawAttrs := map[string]string{}\n\t\tfor k, v := range m.MessageAttributes {\n\t\t\trawAttrs[k] = aws.ToString(v.StringValue)\n\t\t}\n\t\tbodyStr, rawAttrs = extractBody(bodyStr, rawAttrs, s.opts.Raw)\n\n\t\tdecodeIt := false\n\t\tattrs := map[string]string{}\n\t\tfor k, v := range rawAttrs {\n\t\t\t// See BodyBase64Encoding for details on when we base64 decode message bodies.\n\t\t\tif k == base64EncodedKey {\n\t\t\t\tdecodeIt = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// See the package comments for more details on escaping of metadata\n\t\t\t// keys & values.\n\t\t\tattrs[escape.HexUnescape(k)] = escape.URLUnescape(v)\n\t\t}\n\n\t\tvar b []byte\n\t\tif decodeIt {\n\t\t\tvar err error\n\t\t\tb, err = base64.StdEncoding.DecodeString(bodyStr)\n\t\t\tif err != nil {\n\t\t\t\t// Fall back to using the raw message.\n\t\t\t\tb = []byte(bodyStr)\n\t\t\t}\n\t\t} else {\n\t\t\tb = []byte(bodyStr)\n\t\t}\n\n\t\tm2 := &driver.Message{\n\t\t\tLoggableID: aws.ToString(m.MessageId),\n\t\t\tBody:       b,\n\t\t\tMetadata:   attrs,\n\t\t\tAckID:      m.ReceiptHandle,\n\t\t\tAsFunc: func(i any) bool {\n\t\t\t\tp, ok := i.(*sqstypes.Message)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t*p = m\n\t\t\t\treturn true\n\t\t\t},\n\t\t}\n\t\tms = append(ms, m2)\n\t}\n\tif len(ms) == 0 {\n\t\t// When we return no messages and no error, the portable type will call\n\t\t// ReceiveBatch again immediately. Sleep for a bit to avoid hammering SQS\n\t\t// with RPCs.\n\t\ttime.Sleep(noMessagesPollDuration)\n\t}\n\treturn ms, nil\n}\n\nfunc extractBody(bodyStr string, rawAttrs map[string]string, raw bool) (body string, attributes map[string]string) {\n\t// If the user told us that message bodies are raw, or if there are\n\t// top-level MessageAttributes, then it's raw.\n\t// (SNS JSON message can have attributes, but they are encoded in\n\t// the JSON instead of being at the top level).\n\traw = raw || len(rawAttrs) > 0\n\tif raw {\n\t\t// For raw messages, the attributes are at the top level\n\t\t// and we leave bodyStr alone.\n\t\treturn bodyStr, rawAttrs\n\t}\n\n\t// It might be SNS JSON; try to parse the raw body as such.\n\t// https://aws.amazon.com/sns/faqs/#Raw_message_delivery\n\t// If it parses as JSON and has a TopicArn field, assume it's SNS JSON.\n\tvar bodyJSON struct {\n\t\tTopicArn          string\n\t\tMessage           string\n\t\tMessageAttributes map[string]struct{ Value string }\n\t}\n\tif err := json.Unmarshal([]byte(bodyStr), &bodyJSON); err == nil && bodyJSON.TopicArn != \"\" {\n\t\t// It looks like SNS JSON. Get attributes from the decoded struct,\n\t\t// and update the body to be the JSON Message field.\n\t\tfor k, v := range bodyJSON.MessageAttributes {\n\t\t\trawAttrs[k] = v.Value\n\t\t}\n\t\treturn bodyJSON.Message, rawAttrs\n\t}\n\t// It doesn't look like SNS JSON, either because it\n\t// isn't JSON or because the JSON doesn't have a TopicArn\n\t// field. Treat it as raw.\n\t//\n\t// As above in the other \"raw\" case, we leave bodyStr\n\t// alone. There can't be any top-level attributes (because\n\t// then we would have known it was raw earlier).\n\treturn bodyStr, rawAttrs\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ids []driver.AckID) error {\n\treq := &sqs.DeleteMessageBatchInput{QueueUrl: aws.String(s.qURL)}\n\tfor _, id := range ids {\n\t\treq.Entries = append(req.Entries, sqstypes.DeleteMessageBatchRequestEntry{\n\t\t\tId:            aws.String(strconv.Itoa(len(req.Entries))),\n\t\t\tReceiptHandle: id.(*string),\n\t\t})\n\t}\n\tresp, err := s.client.DeleteMessageBatch(ctx, req)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Note: DeleteMessageBatch doesn't return failures when you try\n\t// to Delete an id that isn't found.\n\tif numFailed := len(resp.Failed); numFailed > 0 {\n\t\tfirst := resp.Failed[0]\n\t\treturn fmt.Errorf(\"sqs.DeleteMessageBatch failed for %d message(s): %s, %s\", numFailed, aws.ToString(first.Code), aws.ToString(first.Message))\n\t}\n\treturn nil\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool { return true }\n\n// SendNacks implements driver.Subscription.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ids []driver.AckID) error {\n\tif s.opts.NackLazy {\n\t\treturn nil\n\t}\n\treq := &sqs.ChangeMessageVisibilityBatchInput{QueueUrl: aws.String(s.qURL)}\n\tfor _, id := range ids {\n\t\treq.Entries = append(req.Entries, sqstypes.ChangeMessageVisibilityBatchRequestEntry{\n\t\t\tId:                aws.String(strconv.Itoa(len(req.Entries))),\n\t\t\tReceiptHandle:     id.(*string),\n\t\t\tVisibilityTimeout: 1,\n\t\t})\n\t}\n\tresp, err := s.client.ChangeMessageVisibilityBatch(ctx, req)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// Note: ChangeMessageVisibilityBatch returns failures when you try to\n\t// modify an id that isn't found; drop those.\n\tvar firstFail sqstypes.BatchResultErrorEntry\n\tnumFailed := 0\n\tfor _, fail := range resp.Failed {\n\t\tif aws.ToString(fail.Code) == (&sqstypes.ReceiptHandleIsInvalid{}).ErrorCode() {\n\t\t\tcontinue\n\t\t}\n\t\tif numFailed == 0 {\n\t\t\tfirstFail = fail\n\t\t}\n\t\tnumFailed++\n\t}\n\tif numFailed > 0 {\n\t\treturn fmt.Errorf(\"sqs.ChangeMessageVisibilityBatch failed for %d message(s): %s, %s\", numFailed, aws.ToString(firstFail.Code), aws.ToString(firstFail.Message))\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (*subscription) IsRetryable(error) bool {\n\t// The client handles retries.\n\treturn false\n}\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tc, ok := i.(**sqs.Client)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = s.client\n\treturn true\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs.\nfunc (s *subscription) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\n// ErrorCode implements driver.Subscription.ErrorCode.\nfunc (s *subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\nfunc errorAs(err error, i any) bool {\n\treturn errors.As(err, i)\n}\n\n// Close implements driver.Subscription.Close.\nfunc (*subscription) Close() error { return nil }\n"
  },
  {
    "path": "pubsub/awssnssqs/awssnssqs_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awssnssqs\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"maps\"\n\t\"net/http\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sns\"\n\tsnstypes \"github.com/aws/aws-sdk-go-v2/service/sns/types\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sqs\"\n\tsqstypes \"github.com/aws/aws-sdk-go-v2/service/sqs/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n)\n\nconst (\n\tregion        = \"us-east-2\"\n\taccountNumber = \"456752665576\"\n)\n\n// We run conformance tests against multiple kinds of topics; this enum\n// represents which one we're doing.\ntype topicKind string\n\nconst (\n\ttopicKindSNS    = topicKind(\"SNS\")    // send through an SNS topic\n\ttopicKindSNSRaw = topicKind(\"SNSRaw\") // send through an SNS topic using RawMessageDelivery=true\n\ttopicKindSQS    = topicKind(\"SQS\")    // send directly to an SQS queue\n)\n\ntype harness struct {\n\tsnsClient       *sns.Client\n\tsqsClient       *sqs.Client\n\ttopicKind       topicKind\n\trt              http.RoundTripper\n\tcloser          func()\n\tnumTopics       uint32\n\tnumSubs         uint32\n\tuseFIFO         bool\n\ttopicAttributes map[string]string\n}\n\ntype harnessOption func(h *harness)\n\nfunc newHarness(ctx context.Context, t *testing.T, topicKind topicKind) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tcfg, rt, closer, _ := setup.NewAWSv2Config(context.Background(), t, region, false)\n\treturn &harness{snsClient: sns.NewFromConfig(cfg), sqsClient: sqs.NewFromConfig(cfg), rt: rt, topicKind: topicKind, closer: closer}, nil\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (dt driver.Topic, cleanup func(), err error) {\n\ttopicName := sanitize(fmt.Sprintf(\"%s-top-%d\", testName, atomic.AddUint32(&h.numTopics, 1)))\n\tif h.useFIFO {\n\t\ttopicName += \".fifo\"\n\t}\n\treturn createTopic(ctx, topicName, h.snsClient, h.sqsClient, h.topicKind, h.topicAttributes)\n}\n\nfunc convertStringToPtrMap(m map[string]string) map[string]*string {\n\tif m == nil {\n\t\treturn nil\n\t}\n\tout := make(map[string]*string, len(m))\n\tfor k, v := range m {\n\t\tout[k] = aws.String(v)\n\t}\n\treturn out\n}\n\nfunc createTopic(ctx context.Context, topicName string, snsClient *sns.Client, sqsClient *sqs.Client, topicKind topicKind, attributes map[string]string) (dt driver.Topic, cleanup func(), err error) {\n\tswitch topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\t// Create an SNS topic.\n\t\tinput := &sns.CreateTopicInput{Name: aws.String(topicName), Attributes: attributes}\n\t\tout, err := snsClient.CreateTopic(ctx, input)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"creating SNS topic %q: %v\", topicName, err)\n\t\t}\n\t\tdt = openSNSTopic(ctx, snsClient, *out.TopicArn, &TopicOptions{})\n\t\tcleanup = func() {\n\t\t\tsnsClient.DeleteTopic(ctx, &sns.DeleteTopicInput{TopicArn: out.TopicArn})\n\t\t}\n\t\treturn dt, cleanup, nil\n\tcase topicKindSQS:\n\t\t// Create an SQS queue.\n\t\tqURL, _, err := createSQSQueue(ctx, sqsClient, topicName, attributes)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"creating SQS queue %q: %v\", topicName, err)\n\t\t}\n\t\tdt = openSQSTopic(ctx, sqsClient, qURL, &TopicOptions{})\n\t\tcleanup = func() {\n\t\t\tsqsClient.DeleteQueue(ctx, &sqs.DeleteQueueInput{QueueUrl: aws.String(qURL)})\n\t\t}\n\t\treturn dt, cleanup, nil\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\tswitch h.topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\tconst fakeTopicARN = \"arn:aws:sns:\" + region + \":\" + accountNumber + \":nonexistenttopic\"\n\t\treturn openSNSTopic(ctx, h.snsClient, fakeTopicARN, &TopicOptions{}), nil\n\tcase topicKindSQS:\n\t\tconst fakeQueueURL = \"https://\" + region + \".amazonaws.com/\" + accountNumber + \"/nonexistent-queue\"\n\t\treturn openSQSTopic(ctx, h.sqsClient, fakeQueueURL, &TopicOptions{}), nil\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error) {\n\tsubName := sanitize(fmt.Sprintf(\"%s-sub-%d\", testName, atomic.AddUint32(&h.numSubs, 1)))\n\treturn createSubscription(ctx, dt, subName, h.snsClient, h.sqsClient, h.topicKind)\n}\n\nfunc createSubscription(ctx context.Context, dt driver.Topic, subName string, snsClient *sns.Client, sqsClient *sqs.Client, topicKind topicKind) (ds driver.Subscription, cleanup func(), err error) {\n\tswitch topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\t// Create an SQS queue, and subscribe it to the SNS topic.\n\t\tqURL, qARN, err := createSQSQueue(ctx, sqsClient, subName, nil)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"creating SQS queue %q: %v\", subName, err)\n\t\t}\n\t\tds = openSubscription(ctx, sqsClient, qURL, &SubscriptionOptions{})\n\n\t\tsnsTopicARN := dt.(*snsTopic).arn\n\t\tvar cleanup func()\n\t\treq := &sns.SubscribeInput{\n\t\t\tTopicArn: aws.String(snsTopicARN),\n\t\t\tEndpoint: aws.String(qARN),\n\t\t\tProtocol: aws.String(\"sqs\"),\n\t\t}\n\t\t// Enable RawMessageDelivery on the subscription if needed.\n\t\tif topicKind == topicKindSNSRaw {\n\t\t\treq.Attributes = map[string]string{\"RawMessageDelivery\": \"true\"}\n\t\t}\n\t\tout, err := snsClient.Subscribe(ctx, req)\n\t\tif err != nil {\n\t\t\treturn nil, nil, fmt.Errorf(\"subscribing: %v\", err)\n\t\t}\n\t\tcleanup = func() {\n\t\t\tsnsClient.Unsubscribe(ctx, &sns.UnsubscribeInput{SubscriptionArn: out.SubscriptionArn})\n\t\t\tsqsClient.DeleteQueue(ctx, &sqs.DeleteQueueInput{QueueUrl: aws.String(qURL)})\n\t\t}\n\t\treturn ds, cleanup, nil\n\tcase topicKindSQS:\n\t\t// The SQS queue already exists; we created it for the topic. Re-use it\n\t\t// for the subscription.\n\t\tqURL := dt.(*sqsTopic).qURL\n\t\treturn openSubscription(ctx, sqsClient, qURL, &SubscriptionOptions{}), func() {}, nil\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n}\n\nfunc createSQSQueue(ctx context.Context, sqsClient *sqs.Client, topicName string, attributes map[string]string) (string, string, error) {\n\tout, err := sqsClient.CreateQueue(ctx, &sqs.CreateQueueInput{QueueName: aws.String(topicName), Attributes: attributes})\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"creating SQS queue %q: %v\", topicName, err)\n\t}\n\tqURL := aws.ToString(out.QueueUrl)\n\n\t// Get the ARN.\n\tout2, err := sqsClient.GetQueueAttributes(ctx, &sqs.GetQueueAttributesInput{\n\t\tQueueUrl:       aws.String(qURL),\n\t\tAttributeNames: []sqstypes.QueueAttributeName{\"QueueArn\"},\n\t})\n\tif err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"getting queue ARN for %s: %v\", qURL, err)\n\t}\n\tqARN := out2.Attributes[\"QueueArn\"]\n\n\tqueuePolicy := `{\n\t\t\"Version\": \"2012-10-17\",\n\t\t\"Id\": \"AllowQueue\",\n\t\t\"Statement\": [\n\t\t{\n\t\t\"Sid\": \"MySQSPolicy001\",\n\t\t\"Effect\": \"Allow\",\n\t\t\"Principal\": {\n\t\t\"AWS\": \"*\"\n\t\t},\n\t\t\"Action\": \"sqs:SendMessage\",\n\t\t\"Resource\": \"` + qARN + `\"\n\t\t}\n\t\t]\n\t\t}`\n\tif _, err := sqsClient.SetQueueAttributes(ctx, &sqs.SetQueueAttributesInput{\n\t\tAttributes: map[string]string{\"Policy\": queuePolicy},\n\t\tQueueUrl:   aws.String(qURL),\n\t}); err != nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"setting policy: %v\", err)\n\t}\n\treturn qURL, qARN, nil\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\tconst fakeSubscriptionQueueURL = \"https://\" + region + \".amazonaws.com/\" + accountNumber + \"/nonexistent-subscription\"\n\treturn openSubscription(ctx, h.sqsClient, fakeSubscriptionQueueURL, &SubscriptionOptions{}), func() {}, nil\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) MaxBatchSizes() (int, int) {\n\tif h.topicKind == topicKindSQS {\n\t\treturn sendBatcherOptsSQS.MaxBatchSize, ackBatcherOpts.MaxBatchSize\n\t}\n\treturn sendBatcherOptsSNS.MaxBatchSize, ackBatcherOpts.MaxBatchSize\n}\n\nfunc (h *harness) SupportsMultipleSubscriptions() bool {\n\t// If we're publishing to an SQS topic, we're reading from the same topic,\n\t// so there's no way to get multiple subscriptions.\n\treturn h.topicKind != topicKindSQS\n}\n\nfunc TestConformanceSNSTopic(t *testing.T) {\n\tasTests := []drivertest.AsTest{awsAsTest{topicKind: topicKindSNS}}\n\tnewSNSHarness := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, topicKindSNS)\n\t}\n\tdrivertest.RunConformanceTests(t, newSNSHarness, asTests)\n}\n\nfunc TestConformanceSNSTopicRaw(t *testing.T) {\n\tasTests := []drivertest.AsTest{awsAsTest{topicKind: topicKindSNSRaw}}\n\tnewSNSHarness := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, topicKindSNSRaw)\n\t}\n\tdrivertest.RunConformanceTests(t, newSNSHarness, asTests)\n}\n\nfunc TestConformanceSQSTopic(t *testing.T) {\n\tasTests := []drivertest.AsTest{awsAsTest{topicKind: topicKindSQS}}\n\tnewSQSHarness := func(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn newHarness(ctx, t, topicKindSQS)\n\t}\n\tdrivertest.RunConformanceTests(t, newSQSHarness, asTests)\n}\n\ntype awsAsTest struct {\n\ttopicKind topicKind\n}\n\nfunc (awsAsTest) Name() string {\n\treturn \"aws test\"\n}\n\nfunc (t awsAsTest) TopicCheck(topic *pubsub.Topic) error {\n\tswitch t.topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\tvar s *sns.Client\n\t\tif !topic.As(&s) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", s)\n\t\t}\n\tcase topicKindSQS:\n\t\tvar s *sqs.Client\n\t\tif !topic.As(&s) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", s)\n\t\t}\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n\treturn nil\n}\n\nfunc (t awsAsTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar s *sqs.Client\n\tif !sub.As(&s) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", s)\n\t}\n\treturn nil\n}\n\nfunc (t awsAsTest) TopicErrorCheck(topic *pubsub.Topic, err error) error {\n\tvar e smithy.APIError\n\tif !topic.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Topic.ErrorAs failed\")\n\t}\n\tswitch t.topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\tif got, want := e.ErrorCode(), (&snstypes.NotFoundException{}).ErrorCode(); want != got {\n\t\t\treturn fmt.Errorf(\"got %q, want %q\", got, want)\n\t\t}\n\tcase topicKindSQS:\n\t\tif got, want := e.ErrorCode(), \"AWS.SimpleQueueService.NonExistentQueue\"; got != want {\n\t\t\treturn fmt.Errorf(\"got %q, want %q\", got, want)\n\t\t}\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n\treturn nil\n}\n\nfunc (t awsAsTest) SubscriptionErrorCheck(s *pubsub.Subscription, err error) error {\n\tvar e smithy.APIError\n\tif !s.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Subscription.ErrorAs failed\")\n\t}\n\tif got, want := e.ErrorCode(), \"AWS.SimpleQueueService.NonExistentQueue\"; got != want {\n\t\treturn fmt.Errorf(\"got %q, want %q\", got, want)\n\t}\n\treturn nil\n}\n\nfunc (t awsAsTest) MessageCheck(m *pubsub.Message) error {\n\tvar sm sqstypes.Message\n\tif !m.As(&sm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &sm)\n\t}\n\treturn nil\n}\n\nfunc (t awsAsTest) BeforeSend(as func(any) bool) error {\n\tswitch t.topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\tvar pub *sns.PublishInput\n\t\tif !as(&pub) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &pub)\n\t\t}\n\t\tvar entry *snstypes.PublishBatchRequestEntry\n\t\tif !as(&entry) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &entry)\n\t\t}\n\tcase topicKindSQS:\n\t\tvar entry *sqstypes.SendMessageBatchRequestEntry\n\t\tif !as(&entry) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &entry)\n\t\t}\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n\treturn nil\n}\n\nfunc (t awsAsTest) AfterSend(as func(any) bool) error {\n\tswitch t.topicKind {\n\tcase topicKindSNS, topicKindSNSRaw:\n\t\tvar pub *sns.PublishOutput\n\t\tif !as(&pub) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &pub)\n\t\t}\n\t\tvar entry snstypes.PublishBatchResultEntry\n\t\tif !as(&entry) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &entry)\n\t\t}\n\tcase topicKindSQS:\n\t\tvar entry sqstypes.SendMessageBatchResultEntry\n\t\tif !as(&entry) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &entry)\n\t\t}\n\tdefault:\n\t\tpanic(\"unreachable\")\n\t}\n\treturn nil\n}\n\nfunc sanitize(s string) string {\n\t// AWS doesn't like names that are too long; trim some not-so-useful stuff.\n\tconst maxNameLen = 80\n\ts = strings.Replace(s, \"TestConformance\", \"\", 1)\n\ts = strings.Replace(s, \"/Test\", \"\", 1)\n\ts = strings.Replace(s, \"/\", \"_\", -1)\n\tif len(s) > maxNameLen {\n\t\t// Drop prefix, not suffix, because suffix includes something to make\n\t\t// entities unique within a test.\n\t\ts = s[len(s)-maxNameLen:]\n\t}\n\treturn s\n}\n\nfunc BenchmarkSNSSQS(b *testing.B) {\n\tbenchmark(b, topicKindSNS)\n}\n\nfunc BenchmarkSQS(b *testing.B) {\n\tbenchmark(b, topicKindSQS)\n}\n\nfunc benchmark(b *testing.B, topicKind topicKind) {\n\tb.Helper()\n\n\tctx := context.Background()\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\ttopicName := fmt.Sprintf(\"%s-topic\", b.Name())\n\tsnsClient := sns.NewFromConfig(cfg)\n\tsqsClient := sqs.NewFromConfig(cfg)\n\tdt, cleanup1, err := createTopic(ctx, topicName, snsClient, sqsClient, topicKind, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup1()\n\tsendBatcherOpts := sendBatcherOptsSNS\n\tif topicKind == topicKindSQS {\n\t\tsendBatcherOpts = sendBatcherOptsSQS\n\t}\n\ttopic := pubsub.NewTopic(dt, sendBatcherOpts)\n\tdefer topic.Shutdown(ctx)\n\tsubName := fmt.Sprintf(\"%s-subscription\", b.Name())\n\tds, cleanup2, err := createSubscription(ctx, dt, subName, snsClient, sqsClient, topicKind)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup2()\n\tsub := pubsub.NewSubscription(ds, recvBatcherOpts, ackBatcherOpts)\n\tdefer sub.Shutdown(ctx)\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// SNS...\n\n\t\t// OK.\n\t\t{\"awssns:///arn:aws:service:region:accountid:resourceType/resourcePath\", false},\n\t\t// OK, setting region.\n\t\t{\"awssns:///arn:aws:service:region:accountid:resourceType/resourcePath?region=us-east-2\", false},\n\t\t// Invalid parameter.\n\t\t{\"awssns:///arn:aws:service:region:accountid:resourceType/resourcePath?param=value\", true},\n\n\t\t// SQS...\n\t\t// OK.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue\", false},\n\t\t// OK, setting region.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?region=us-east-2\", false},\n\t\t// Invalid parameter.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue\", false},\n\t\t// OK, setting region.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?region=us-east-2\", false},\n\t\t// OK, setting raw.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?raw=true\", false},\n\t\t// OK, setting raw.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?raw=1\", false},\n\t\t// Invalid raw.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?raw=foo\", true},\n\t\t// OK, setting nacklazy.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?nacklazy=1\", false},\n\t\t// Invalid nacklazy.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?nacklazy=foo\", true},\n\t\t// OK, setting waittime.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?waittime=5s\", false},\n\t\t// Invalid waittime.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?waittime=foo\", true},\n\t\t// Invalid parameter.\n\t\t{\"awssqs://sqs.us-east-2.amazonaws.com/99999/my-queue?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestFIFO(t *testing.T) {\n\tfor _, tt := range []struct {\n\t\tname string\n\t\tkind topicKind\n\t}{\n\t\t{\n\t\t\tname: \"TestSNSTopic\",\n\t\t\tkind: topicKindSNS,\n\t\t},\n\t\t// This test is flaky because it sets 2 attributes for CreateTopic,\n\t\t// and the HTTP record/replay randomly re-sorts them. I'm not sure how\n\t\t// to fix that, so disabling the test. It's also unclear why only\n\t\t// this test appears affected, maybe the AWS code iterates over the\n\t\t// map here and doesn't in other cases?\n\t\t/*\n\t\t\t{\n\t\t\t\tname:  \"TestSQSTopic\",\n\t\t\t\tkind:  topicKindSQS,\n\t\t\t},\n\t\t*/\n\t} {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\ttestFIFOTopic(t, tt.kind)\n\t\t})\n\t}\n}\n\n// testFIFOTopic tests FIFO topics.\n//\n// FIFO topics require a message group ID to be set on the message.\n//\n// The content-based deduplication attribute must be set to true on the topic.\n//   - If set to true, the message deduplication ID is generated using the message body (sha256 hash).\n//   - If not set, then the DeduplicationID must be set on the message.\n//\n// For more information see:\n//   - https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sns#CreateTopicInput.Attributes\n//   - https://pkg.go.dev/github.com/aws/aws-sdk-go/service/sqs#CreateQueueInput.Attributes\nfunc testFIFOTopic(t *testing.T, kind topicKind) {\n\tt.Helper()\n\ttype harnessArgs struct {\n\t\tattributes map[string]string\n\t}\n\n\tconst (\n\t\tattributeKeyContentBasedDeduplication = \"ContentBasedDeduplication\"\n\t\tattributeKeyFifoTopic                 = \"FifoTopic\"\n\t\tattributeKeyFifoQueue                 = \"FifoQueue\"\n\t)\n\n\ttests := []struct {\n\t\tname    string\n\t\tharness harnessArgs\n\t\tmessage *pubsub.Message\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname: \"TestSendReceiveValid\",\n\t\t\tharness: harnessArgs{\n\t\t\t\tattributes: map[string]string{\n\t\t\t\t\tattributeKeyContentBasedDeduplication: \"true\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tmessage: &pubsub.Message{\n\t\t\t\tBody: []byte(\"hello world\"),\n\t\t\t\tMetadata: map[string]string{\n\t\t\t\t\tMetadataKeyMessageGroupID: \"1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: false,\n\t\t},\n\t\t{\n\t\t\tname: \"TestSendReceiveInvalidNoMessageGroupID\",\n\t\t\tharness: harnessArgs{\n\t\t\t\tattributes: map[string]string{\n\t\t\t\t\tattributeKeyContentBasedDeduplication: \"true\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tmessage: &pubsub.Message{\n\t\t\t\tBody: []byte(\"hello world\"),\n\t\t\t\tMetadata: map[string]string{\n\t\t\t\t\tMetadataKeyDeduplicationID: \"1\",\n\t\t\t\t},\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"TestSendReceiveInvalidNoDeduplicationID\",\n\t\t\t// We dont set the ContentBasedDeduplication attribute to trigger the error.\n\t\t\tharness: harnessArgs{},\n\t\t\tmessage: &pubsub.Message{\n\t\t\t\tBody:     []byte(\"hello world\"),\n\t\t\t\tMetadata: map[string]string{},\n\t\t\t},\n\t\t\twantErr: true,\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// Create the harness.\n\t\t\tctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)\n\t\t\tdefer cancel()\n\t\t\th, err := newHarness(ctx, t, kind)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdefer h.Close()\n\n\t\t\t// Set the FIFO attributes.\n\t\t\tattributes := make(map[string]string)\n\t\t\tmaps.Copy(attributes, tt.harness.attributes)\n\t\t\tswitch kind {\n\t\t\tcase topicKindSNS:\n\t\t\t\tattributes[attributeKeyFifoTopic] = \"true\"\n\t\t\tcase topicKindSQS:\n\t\t\t\tattributes[attributeKeyFifoQueue] = \"true\"\n\t\t\t}\n\t\t\th.(*harness).topicAttributes = attributes\n\t\t\th.(*harness).useFIFO = true\n\n\t\t\t// Create the topic and subscription.\n\t\t\tdt, cleanup, err := h.CreateTopic(ctx, t.Name())\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"harness.CreateTopic() error = %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer cleanup()\n\t\t\ttopic := pubsub.NewTopic(dt, sendBatcherOptsSNS)\n\t\t\tdefer topic.Shutdown(ctx)\n\t\t\tds, cleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"harness.CreateSubscription() error = %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer cleanup()\n\t\t\tsub := pubsub.NewSubscription(ds, recvBatcherOpts, ackBatcherOpts)\n\t\t\tdefer sub.Shutdown(ctx)\n\n\t\t\t// Send and receive the message.\n\t\t\terr = topic.Send(ctx, tt.message)\n\t\t\tif (err != nil) != tt.wantErr {\n\t\t\t\tt.Errorf(\"Topic.Send() error = %v, wantErr %v\", err, tt.wantErr)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif tt.wantErr {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tm, err := sub.Receive(ctx)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"Subscription.Receive() error = %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tt.message.Body, m.Body); diff != \"\" {\n\t\t\t\tt.Errorf(\"Received message body: -got, +want: %s\", diff)\n\t\t\t}\n\t\t\tm.Ack()\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pubsub/awssnssqs/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awssnssqs_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sns\"\n\t\"github.com/aws/aws-sdk-go-v2/service/sqs\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/awssnssqs\"\n)\n\nfunc ExampleOpenSNSTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Establish a AWS V2 Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a *pubsub.Topic.\n\tconst topicARN = \"arn:aws:sns:us-east-2:123456789012:mytopic\"\n\tclient := sns.NewFromConfig(cfg)\n\ttopic := awssnssqs.OpenSNSTopic(ctx, client, topicARN, nil)\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSQSTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Establish a AWS V2 Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a *pubsub.Topic.\n\tconst queueURL = \"https://sqs.us-east-2.amazonaws.com/123456789012/myqueue\"\n\tclient := sqs.NewFromConfig(cfg)\n\ttopic := awssnssqs.OpenSQSTopic(ctx, client, queueURL, nil)\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSNSTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/awssnssqs\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tconst topicARN = \"arn:aws:sns:us-east-2:123456789012:mytopic\"\n\t// Note the 3 slashes; ARNs have multiple colons and therefore aren't valid\n\t// as hostnames in the URL.\n\ttopic, err := pubsub.OpenTopic(ctx, \"awssns:///\"+topicARN+\"?region=us-east-2\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSQSTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/awssnssqs\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/QueueURL.html\n\tconst queueURL = \"sqs.us-east-2.amazonaws.com/123456789012/myqueue\"\n\ttopic, err := pubsub.OpenTopic(ctx, \"awssqs://\"+queueURL+\"?region=us-east-2\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Establish a AWS V2 Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *pubsub.Subscription.\n\t// https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/QueueURL.html\n\tconst queueURL = \"https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue\"\n\tclient := sqs.NewFromConfig(cfg)\n\tsubscription := awssnssqs.OpenSubscription(ctx, client, queueURL, nil)\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/awssnssqs\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// This URL will open the subscription with the URL\n\t// \"https://sqs.us-east-2.amazonaws.com/123456789012/myqueue\".\n\tsubscription, err := pubsub.OpenSubscription(ctx,\n\t\t\"awssqs://sqs.us-east-2.amazonaws.com/123456789012/\"+\n\t\t\t\"myqueue?region=us-east-2\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestAs/aws_test.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2fGPSxkQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"51c5d0bc966be3c9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNBc19hd3NfdGVzdC10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"74680f87-9ba5-59e5-9687-6db1837a81ad\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjc0NjgwZjg3LTliYTUtNTllNS05Njg3LTZkYjE4MzdhODFhZDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"adb2731fc901ea78\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"41\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"45c9262c-9467-5298-b263-441a8cb8a2c8\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"c583a255cad58a58\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b9e98d17-3eed-5356-96fe-ef21260db306\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"6fa64c38fc7012f9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"464\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfYXdzX3Rlc3Qtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e5f312da-c3b0-5c4e-b31e-70ecdb50ac1e\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b9087982d150c434\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"208\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX2F3c190ZXN0LXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"86bf96ad-eab1-5f71-9847-f49bf2510739\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTE6ZWEwYWMxODAtZjQzOC00ODhiLWE3N2UtNzg0M2MzMTk1ODRiPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjg2YmY5NmFkLWVhYjEtNWY3MS05ODQ3LWY0OWJmMjUxMDczOTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"33ac38a87cca6b77\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"205\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9eCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX2F3c190ZXN0LXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fc709954-6ac7-5fbf-ad7b-fb62722727f7\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjE5MTA5MTg2LTU4ZTAtNWY5ZC04YWZhLWYzYjA0MDAwNzdkNTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmZjNzA5OTU0LTZhYzctNWZiZi1hZDdiLWZiNjI3MjI3MjdmNzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"a0d45804f986f0aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1734\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d9692197-f87b-5b58-bc48-43a1e09b3b08\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjQwNTYzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNDA1MjEifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIxOTEwOTE4Ni01OGUwLTVmOWQtOGFmYS1mM2IwNDAwMDc3ZDVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcInhcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDo0MC40OTJaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIkR0eWl2V0pLYkdjR2YwNU5EbXhSVTlOOExadHUyK3Z0d0t2UkFFUHV6WmJkUDd4VTJQRXdnS1VoTFF4dDY2aTRQempGTWF1blZEYkk5V245Mkc5Q0VMMEV1a1FKaTJxZDJSRklPbVN3M09vUmFycGxSL25BazJ5cjNoS2J5c1NFZ216aWlwYXZEQ0FQSTBKUmxZcHp0SWQyREhET1NqTldOa3dCT0J2K2dlQXZ5YmpsbXVoS1BjTmIwSXB5UzY2d2RWNW5jV3B3R3AxRkE5K2JPODI3RXo5UjlVUS9zSmk4UVpXZ1d3WG0zWnBrKzdXVm5WZWd2eGtHNk1pc0FFTHZPYVMweE8zb1MyY2ZxaTNHUzNQRnlLOVBTQXlPTDdORzRUUDlmQkZSNENUOHRVQTVKdTdKMHRHMVpBbkhwSUtSRnFuVHN2Rllpb2FqbUNVc1Zmb0JaZz09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTE6ZWEwYWMxODAtZjQzOC00ODhiLWE3N2UtNzg0M2MzMTk1ODRiXCJcbn0iLCJNRDVPZkJvZHkiOiJhZmIzNGVmNmU3YTk3MTAwZDk5OTVkM2Y5NmYxYTI3NSIsIk1lc3NhZ2VJZCI6ImQ4NTAxMzZkLTRmNmEtNDE3My1iMzVhLWJmMDg1N2I1MzBmZSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNGdLcDNyNmVleDhmM3BuM3Y4aGJydkNCZEhCRWduY1dQbkFlWXJEZ3ZqMjE5MGdsbzdDL0hkUCtwQUdJWmxpYUNTVkkxZ1E1VDNicnFBb2xoZUx3WWxLVFhWUm16aXl6M2RlMzFNQWs5NnpQc05RemRCbk43d3Brall3WkU3VWVRNUsvWk9tb3ZxQ1ZEN0JHVC9GQWJlVk91YkdVTGgxb0sxWW1iaFpqa2V4TDBBcFN5TERuRVZhOVcrQnprcFhzMlEwdEVNck8zRUthU2o3dCsyQzFnb1RjTXdSNnBNbVEzMW9rdTg3Z0RCMU8xVG00bTB4OE1FU21NOVVsTmQwRG4xNU5BaVFPOW5RR2UrTHRHU3l4d2pweEZpSFc1L0NkR1FqUkdldU1EY21zSFlQK281VEIvMURNY1h0RU1nNXM0ZGFrTTBsNm5MU2thNm9WK3lPbk5COTVkT2tQMGpqNld2Mjg1SWJZR1FkYUpYT1M3UVhiNkNJemhVdFpFOEgwL2NLOWRsS3RPa01MTjRUcHBpVFYwTzBYSmdHeDh2QmIxWEs5RmJMNGE0bz0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"1e0dcf3625f04c4e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQW5vbmV4aXN0ZW50dG9waWMmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"abd76304-a8a6-56b5-8707-0132b046defd\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPk5vdEZvdW5kPC9Db2RlPgogICAgPE1lc3NhZ2U+VG9waWMgZG9lcyBub3QgZXhpc3Q8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPmFiZDc2MzA0LWE4YTYtNTZiNS04NzA3LTAxMzJiMDQ2ZGVmZDwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"1812f8d81f6e2c4a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjRnS3AzcjZlZXg4ZjNwbjN2OGhicnZDQmRIQkVnbmNXUG5BZVlyRGd2ajIxOTBnbG83Qy9IZFArcEFHSVpsaWFDU1ZJMWdRNVQzYnJxQW9saGVMd1lsS1RYVlJteml5ejNkZTMxTUFrOTZ6UHNOUXpkQm5ON3dwa2pZd1pFN1VlUTVLL1pPbW92cUNWRDdCR1QvRkFiZVZPdWJHVUxoMW9LMVltYmhaamtleEwwQXBTeUxEbkVWYTlXK0J6a3BYczJRMHRFTXJPM0VLYVNqN3QrMkMxZ29UY013UjZwTW1RMzFva3U4N2dEQjFPMVRtNG0weDhNRVNtTTlVbE5kMERuMTVOQWlRTzluUUdlK0x0R1N5eHdqcHhGaUhXNS9DZEdRalJHZXVNRGNtc0hZUCtvNVRCLzFETWNYdEVNZzVzNGRha00wbDZuTFNrYTZvVit5T25OQjk1ZE9rUDBqajZXdjI4NUliWUdRZGFKWE9TN1FYYjZDSXpoVXRaRThIMC9jSzlkbEt0T2tNTE40VHBwaVRWME8wWEpnR3g4dkJiMVhLOUZiTDRhNG89In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1fea5ec1-41f9-5207-8534-3cf759192257\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"ccd1308ac6641891\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"573b1c23-24d5-5a5b-9df3-7e153c35ba0b\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"1addb601dafea6d2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX2F3c190ZXN0LXRvcC0xJTNBZWEwYWMxODAtZjQzOC00ODhiLWE3N2UtNzg0M2MzMTk1ODRiJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"65030c87-bd82-5ead-a655-6eb1a56276e5\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD42NTAzMGM4Ny1iZDgyLTVlYWQtYTY1NS02ZWIxYTU2Mjc2ZTU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"f9b2b5e254b8c975\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"34b57b06-24e1-5bea-8c00-19303c017bba\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0c2506313f6d421a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:41 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c60b452a-28f1-5fbf-b777-271c301097f7\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jNjBiNDUyYS0yOGYxLTVmYmYtYjc3Ny0yNzFjMzAxMDk3Zjc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2hCDOUQAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6491494d11baaea8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"363\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:41 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8f203960-2327-5392-8740-5b563bc672f6\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD44ZjIwMzk2MC0yMzI3LTUzOTItODc0MC01YjU2M2JjNjcyZjY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"a22212ec88c97fc5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:41 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"62ff2d0d-9877-5031-83f1-4f3b8096b403\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"8b69877c0875b77f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"121\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:41 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7af79273-5c4e-5624-8342-f04544aff216\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"c491c7d999699bbd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"526\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3acc26b2-613d-59fe-9d0a-448479df7dcc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a918ba91cbfceccd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"270\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"406\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a8ab0fea-e757-5013-9b04-6ddcffb5f177\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xOmI2OWE3ZDAwLTI4ZjMtNDhmMy05MmYwLTkwNDUwYTY4ZjJjZDwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5hOGFiMGZlYS1lNzU3LTUwMTMtOWIwNC02ZGRjZmZiNWYxNzc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"3ebbaa37fa249fe0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"236\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9eCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9bb8879d-a363-5f03-8788-e5abbb812e67\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjJkYzYyMzkzLTViNzItNTYwMC04ZWY5LTQxYTU0MzkwNTc2NDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjliYjg4NzlkLWEzNjMtNWYwMy04Nzg4LWU1YWJiYjgxMmU2NzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"6929608e9b61b283\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1816\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d9a34a54-46f8-59ee-b26d-28625e1aeddc\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjQyMzk1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNDIzNTcifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIyZGM2MjM5My01YjcyLTU2MDAtOGVmOS00MWE1NDM5MDU3NjRcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCJ4XCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6NDIuMzI0WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJZWS8rWXFrR2JCQjRmZHZpUWhySHJxTklTR2wwNHdsaXl1YWl2c1lKM21HYUpDYVhJMXRxcTdvQmZnL2w3UlhBU0FQUXZxQXl3RU5PYkFRUm9CMjNZRU05eXdzRlNwMmk1c1lkUE5aUndSUE1INDFGTS94dktqOWcyakR5UC9BMFJpNS84VnFidDNrN0UrdkRlTDR0UzNpR2syUXBVSjlpWlZZNTVxRlA5MUcwb1pBLytrZS9Fd2Fpd2ZjdFhZQ2U0ME5IbWZDTXFjNGRIRS9EMEtvNUtnbHBzSU9ZWjkxMFBIbGxLaDJqQnMxYTRySmlobXJpUTgxZ0cwaFBhNUF6T3Z3Nm9HWVRjNWZMKzUyMUhndlNvQVBaVFJYbk81K2RtVmlGbVd0dVVOT1hZK1R6OFFJNEt3bmNMWmd2bFJiSGFhM0RYeUtkdlp3RCs4d0FIaFBQOWc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMTpiNjlhN2QwMC0yOGYzLTQ4ZjMtOTJmMC05MDQ1MGE2OGYyY2RcIlxufSIsIk1ENU9mQm9keSI6ImRmMmY1ZjBkNWNjNDc5ZWYxYTExYWU4YWM1NDQ1Y2Q4IiwiTWVzc2FnZUlkIjoiMDlmMThkZjUtMjExZC00YTNjLWExZmUtNDA0Y2I4ZWQ2MjkxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJDU2VRK0htS0RiNTZjN2VaaUN4bXl1NVR0T01sZVJsRFMxL2lpb3B3amJ3L3hJaXVMNUszMW1IQkV3NVVyVGtmcWdTdmUxSWJZOFNnUDQ0V0gwbzBhMXNockdtVmNPSWo4TktwVUJETkd2bkk4ZEROcWZUdFNxWDI2WVE5ZVNIVG1FM3I5R1psTVpnYVZNQXBWZ3hROFNTeVhhbm1pbTQ0WDBsYjFuR0JYNWc2dHZaU3N4ajZHV2VuR0lVYjFhTXMvaStNaEg3Rk0rdEZGUk54d1VIMFpMbzJTa09QWklicXVHcVZqQ0RGWWthUzhJeUhuZ3FFaXdmbUFOOFpXcDNVNjdTNkVnN0oxWC82Z1pMSkZHeGFLZzEzb3RXZW4vN2Q3c1diZ0xyNGpuQkJvTUVTREtzQ0Y2dHIrQVZGaGhaK0RJUnkrbTB3VGlJMVBVUkt1ZUVmUjZUSnRSVitBcVlQelo0RC9RZHVKWnBSV0lLOEdkWXJ1Nm51KzgrN21LSlp5SEg0UFRYZER3ZWNETHBUdXF6ZUZacWJFTFExY0RYbGo3amVEN3FaZEZxK3ltbllFZ3ZyZjV0VFNPbktINnVHIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"651972947adf7287\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQW5vbmV4aXN0ZW50dG9waWMmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ad62c327-d025-5970-86d3-a111c8c76814\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPk5vdEZvdW5kPC9Db2RlPgogICAgPE1lc3NhZ2U+VG9waWMgZG9lcyBub3QgZXhpc3Q8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPmFkNjJjMzI3LWQwMjUtNTk3MC04NmQzLWExMTFjOGM3NjgxNDwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"97bfe240fffdc9c3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"614\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkNTZVErSG1LRGI1NmM3ZVppQ3hteXU1VHRPTWxlUmxEUzEvaWlvcHdqYncveElpdUw1SzMxbUhCRXc1VXJUa2ZxZ1N2ZTFJYlk4U2dQNDRXSDBvMGExc2hyR21WY09JajhOS3BVQkROR3ZuSThkRE5xZlR0U3FYMjZZUTllU0hUbUUzcjlHWmxNWmdhVk1BcFZneFE4U1N5WGFubWltNDRYMGxiMW5HQlg1ZzZ0dlpTc3hqNkdXZW5HSVViMWFNcy9pK01oSDdGTSt0RkZSTnh3VUgwWkxvMlNrT1BaSWJxdUdxVmpDREZZa2FTOEl5SG5ncUVpd2ZtQU44WldwM1U2N1M2RWc3SjFYLzZnWkxKRkd4YUtnMTNvdFdlbi83ZDdzV2JnTHI0am5CQm9NRVNES3NDRjZ0citBVkZoaForRElSeSttMHdUaUkxUFVSS3VlRWZSNlRKdFJWK0FxWVB6WjREL1FkdUpacFJXSUs4R2RZcnU2bnUrOCs3bUtKWnlISDRQVFhkRHdlY0RMcFR1cXplRlpxYkVMUTFjRFhsajdqZUQ3cVpkRnEreW1uWUVndnJmNXRUU09uS0g2dUcifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d2d72a35-ba74-5b89-96fd-4803a2967fbb\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"0c1e4d67db5c50ed\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"db076a21-1f23-577c-9f09-081707c1334e\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"1e1ca6fc38277b6a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"194\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSUzQWI2OWE3ZDAwLTI4ZjMtNDhmMy05MmYwLTkwNDUwYTY4ZjJjZCZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"74119de2-05de-5194-8689-ffd41d3cf0f0\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD43NDExOWRlMi0wNWRlLTUxOTQtODY4OS1mZmQ0MWQzY2YwZjA8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"8015857d038e9748\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cf09c61d-55a7-5664-9de0-a42b4d456256\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fbec26d76f4a7d1b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"148\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e865cae1-0272-5861-9b4c-a8d71a907905\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5lODY1Y2FlMS0wMjcyLTU4NjEtOWI0Yy1hOGQ3MWE5MDc5MDU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestBatching.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2PCkOLMgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fcba94a5662149db\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNCYXRjaGluZy10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"329\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"120c9848-bdf7-5366-8de1-fa7ea5381a20\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjEyMGM5ODQ4LWJkZjctNTM2Ni04ZGUxLWZhN2VhNTM4MWEyMDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"ce460cb78ab2959f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c9a70633-4726-567c-92ab-64055fe9ffae\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"59d5c632ce7fa493\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"116\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"dbb1d1f3-3920-51b7-bcaa-b3c521ef7865\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"5c726ec906eb4cb0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"458\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3479ae4c-1684-5608-9160-cc7a0e4b0fda\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"efe9eb9998323a19\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"202\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0JhdGNoaW5nLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0JhdGNoaW5nLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"372\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c534699c-cf33-58b5-8d59-0baad7e311f3\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTE6ZTViZjFjMGQtMTI4MC00ZWQ4LWI3ZWUtZDIyMWIwMDA1ZGM4PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmM1MzQ2OTljLWNmMzMtNThiNS04ZDU5LTBiYWFkN2UzMTFmMzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"025aebfa34815702\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"697\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjIuSWQ9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMi5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4zLklkPTImUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjMuTWVzc2FnZT1oZWxsbyt3b3JsZCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNC5JZD0zJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci40Lk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjUuSWQ9NCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNS5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci42LklkPTUmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjYuTWVzc2FnZT1oZWxsbyt3b3JsZCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0JhdGNoaW5nLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1007\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"05b33fe8-6804-5331-bf82-5dde70d4aa77\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjc3YzBhNTlhLTkwNDgtNWM5Mi05Zjc2LWM3YWM4ODk4ZjVkNDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD43MWQyNTlhZC1lZTEzLTU5YmMtYjQ1Zi0zYjliZjZjM2YwZmE8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+MTwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+NWVkMjJmZTAtNGM1Ny01MTIyLThmNGQtNGRkNjU0ODcwODY0PC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjI8L0lkPgogICAgICA8L21lbWJlcj4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjRmOWZkZjNjLWM1MDgtNWMyZC1iNzkxLWJkMGFkZGQ4ZTU2YjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4zPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD41Y2E5ZmZjOS05MzFjLTVhNWMtYTg4Yy05ZGZmOGJjYzIzMWE8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+NDwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+NDRiMzgzYjYtNzNiMi01NjUzLTgxYTItZTE4MDZiNjI4ZjE1PC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjU8L0lkPgogICAgICA8L21lbWJlcj4KICAgIDwvU3VjY2Vzc2Z1bD4KICA8L1B1Ymxpc2hCYXRjaFJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+MDViMzNmZTgtNjgwNC01MzMxLWJmODItNWRkZTcwZDRhYTc3PC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1B1Ymxpc2hCYXRjaFJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"8323595469278099\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"697\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjIuSWQ9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMi5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4zLklkPTImUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjMuTWVzc2FnZT1oZWxsbyt3b3JsZCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNC5JZD0zJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci40Lk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjUuSWQ9NCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNS5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci42LklkPTUmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjYuTWVzc2FnZT1oZWxsbyt3b3JsZCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0JhdGNoaW5nLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1007\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d4f55e89-cb7d-5ffd-80b8-3cbfd3ade6bb\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmFiNjFjZjY4LTc0ZDYtNTg0OC04OGE1LWFkNWU2YzA2YjEwZTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD5kMzI1YzMxMi00MTA1LTU5NjktYTA1NC1hMTI0NTlkNTIwMmY8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+MTwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+NWUyNzZkYjItM2NkMy01Y2NjLWFiZGEtMGY4NDI0MDMwNThhPC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjI8L0lkPgogICAgICA8L21lbWJlcj4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjJhMzFmZWVmLTMyN2ItNWU5Ni05N2U1LTljZDkyYWFiNjdkMDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4zPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD5iYTcxM2Q5Mi1iMTAwLTU2NjktYTc2MS01ZmE0YTlkMGRmMmY8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+NDwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+OWI2ZGQyY2MtNzljYi01ZWExLThhNzktYjBmYTYxMWIyN2U3PC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjU8L0lkPgogICAgICA8L21lbWJlcj4KICAgIDwvU3VjY2Vzc2Z1bD4KICA8L1B1Ymxpc2hCYXRjaFJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+ZDRmNTVlODktY2I3ZC01ZmZkLTgwYjgtM2NiZmQzYWRlNmJiPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1B1Ymxpc2hCYXRjaFJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"2d1a269c0ee2d468\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fab082ad-079e-5c2c-8088-e09b1f4eb5fe\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0NDA0IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQyODEifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI3MWQyNTlhZC1lZTEzLTU5YmMtYjQ1Zi0zYjliZjZjM2YwZmFcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMjQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJMVEN4eFcreklBQk81MFF0dGhHY29XREhabFlIbkY0enFVdGswU051eERWM2lyMld4L1RmbmJPdXJtZCsvbkVBNUlnMGtZQktHdk5MakppVEYxRkx0RDR3RUh1SjRNS1BCQ0Nnb25GWVlwTC9IekhaeW80WGhwWnZBVVBqTmRhYm1HakRKL3d0WnhpckZjK0FmM2l6Y3QxN29Jd1VuVTV1b3VYRVJVZHRYTEN4Vy9TK01vbFNNc05jaHRxVEpxdTI2clVGK3c1aHgvUG94dnVXOHpUQVlsazZQUlhLekIzYTN1RkdCRThsTjI4aXpXL0J4QWovRFBCSVlwblRxTEUvejV5K25tTFI0cUhjcEVUU2Jza1U1eHJCWGxKdVUzUnVYaXBBY3BOWUUwdFdNZWkyUkRscE5Kdnd0TjRLVTQ2Y0hsdmZPQzlvbDhvY2hHSGdNSlpqaWc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiOGI3NmJlYjY1OWM2ZDc1MmZiYmU4ZDI2NzM4YTE0NGQiLCJNZXNzYWdlSWQiOiI2NjczZWRhYS1jZWFmLTQ4NmYtOGFiNS1mNzAwYjUzYjExZDQiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnA4ZFNUVmVydTZ4US8zTzFrUGl1ZEtUVko1aC9XQmdqTVFiRDhZU0VQSWlnemxYR3hFbElIaU1iOEkwT1hKSldJTzhROFVKSm5mN0hya1JBdEVaclVQbHhCMUViRmRzMTRKUEg2Q00wSmZKM1dtdy9Yakp2NXZOZDRUcVdGSVc3dmZ4NVJzbldhbDQ0TlNqZFFjT3IzbmUzTEVBSDBMQnlvMUllNW1sS0lEaEVZNHN4ZXpVa2RTSFg2aEViSW9zZURkSm5paGRrSXMxYlU1WVozUFYrMkF2OUhkME9Qa2VWMFVIOENINk81WktNUWxTM2hTdjRSaFpDRVgrTUVvbDRtWElrY1Q2Szl3Ty9vdXBVYlpCbElHdFpja3ZPa1U1czBOUS9BRU1rSVdjZ3ZXQkpPQXB3Z1J6cFp3L1dLNDNUdXdxK3dHRkl2U0FoQTVIbTBDY0pheUcwWHdrR1BGYm9mTTY3c2NFNUt1NVkwalJ3bU4yU0xrbTdNWkhzbjgrY1FjUzcrMGlMSTVMcDRJbVdUYzAxeXc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"da526e4e47221f2f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ac969a74-d577-58cd-a5f3-f842cda7e11f\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0NDcxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQyODIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI0ZjlmZGYzYy1jNTA4LTVjMmQtYjc5MS1iZDBhZGRkOGU1NmJcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMjQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJEUW1qczNDR213L2htZ1lVNWh6MkRPUS9ScGl3TXYrWEFoR09PZm45WHdZbGJNWUxqWlZ1UTdvN3c5RnlNTExUaVhwSHVqS3VVVCtGSjVibWlOL3VsVkFkd2ZPUTZleGExY3FvOEZxZk94K2xHTFZkRUxWbkVCNlI1VG5vR1BESmluanFjZUdLMjRwRWNFMjUxSXdXZ2txbHNSVUZveGJ5eFh5dytRQjg4TUtrd1BITW0yUy96S2RNUk9rSXBVL2xnUzRWc2phRnA3ZG5naGJaVHpoZUExSUtnTk5FZnpOOFoyUGdqem16bzdEZzZsNTFXcmhLUWxxVXorUlljQ0x1U2hxWDZFdENCY1A5SGxkb0dGWnNRaythMWh2WnZVcnh5NDJFdVR3MitOM0FOQTdLV1hTQVJBM0NhR0diVXlGU3JnQWRDV1o4MGRKYVM1SlppMjBvdEE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiOWMxNjE0MDdiNTU5MzM1ZmI1MTAxMTE3NjhjMmU4ZWQiLCJNZXNzYWdlSWQiOiJiNTBlNmI1Mi1hYzVlLTQ2YjktODQ5Zi1mMTg1ODU3YzQ4MzYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQm9SeVE1b3ZnWUdwVUN5UmplcnlmN1dRb3hvTEZLQW93K0cyRnV3TUhyVXluQ0xMdFhXd2pNalE4Yyt6K0lJWGdtYlFtRE9PSlR6eE1jVkhhalJWWkpEVjd1eGdEMXBBZVhEM1VZM3ROU3g2dTB6bk5RZkU4cU1YRmh6N3ZSSmxaTDYzRDZPbVFqTjdaNGI5VUVtTFVHN1ArbS9UczlBdXlxMTl5Wno1Z3I2dERWMklqSHd0MDBlSUVteDV0Y0hiQTI3WW9xWjRaODNDOXhJalM0NGZOdE4rM1pGMEtLdTJ0OGRjTExLREJIbjUrS0xTK3RYQlhtM2xONXY4RzNhL0htci9ZVnNMQ1JYTHhUcmwvY29pd1FSZXEvbjd4bTVFd2xnVk5haUc0aXp3SC8zTStpUFEzYWM3cFZwRUZWWE5NcEpBdGk0aVlNWmt5U05HZklSb3RpNUtrVXdmMWR5c0k0Uy9jWFZDemZXd1BHMENEQlUxWnMxVzJDNE9FUFhWbWJpRFRKNTdaNTlpYTV6eEluRkpFdnc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"cac82ea3f6eb5f2d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c00e2295-ed33-546f-bb2b-40a3f5e30dbd\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0NTM5IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQyODIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI1ZWQyMmZlMC00YzU3LTUxMjItOGY0ZC00ZGQ2NTQ4NzA4NjRcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMjQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJFQmQ1MjdBbXEzR3pqUEU5d2tvTXF6ZlR6dE5CQkNCajhqanB5aCtEdmxXU2puRzdIak9tU29FcGVFMFh3M2xzdHJvSjZJRWVRWjJCckMrK2R1bG4rSzNTcks1R2cwT0FNeWQ0dTJic0Q4dUttOWJ2QUJyRGpFZVNnNDJmbFNaUjdoWlBQWVc1U1V3VVJuWHdSV202aG5vaEYwVVMrRDdKUE5NdWxEODEveVpwTjJOMkpmaW5IdmV6ZHd5U0kvT0c3SFZEaGZkbUpJVXRnaGkrdzVoWU8ydG5GV2NxaU42VUZDOCtRVEVJR2pURmNUZ25nNmErcGhTQlhESE5raTJkcnhLUXpmVTlqYzdrV3h4dVZJUmlrZHhYL1BoY1U3QTZLamdMNVZEQ0VITlcyaW92MGtaVE5OMDFPOGVTc3R0aVlMb2pzN0NvOTFCd0hGNlR1N2VqYkE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiMjczY2JlNTI2ZjRhZDZhNTVjMzBjY2I4MjY5M2RiNzQiLCJNZXNzYWdlSWQiOiI2ZGVkOTE0ZC0zZjQ2LTQ0ZjktODU0OC03ZDljNzRmNzNmMjQiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkcwKzh5NzZjMnJYTSs1SVdNSVBwYTU5dnVvK3JYdEdtVlBhQ1FsblAvRzNaUEVsbjlzSDRVMExkcE5kdkJhWW1iVXBPQmh4OTZyaEVlMHF0bTFiTDhRdE9sbjMreGx2U3hVZG5UcTQxY2ZWNHV6cWF0c1djZW5qbWZGWTd5aFRYUjRZOFJCT1lyaUt0SmNZT1RFQ1RoWHljMTE2cC9Wc3c0cThOR2VDSGlJckV5TjQ3clpESmdURnJGTUZUV2FoUDJ0ajZ3dis3ZFNzWWs5WDdBS2c5SVk3S2NHYU5MdHBMTjJxU0RzaEJjNWFvdU90T1FLbXlsSVllUUU4dWIwTnNnclRkSVlGN0ZYTGltcnNhMHZBVEJHTldwM080OUJFL1dXL29jRTNGUDBzZ3lIMmVMUkZNejZabUNMaHJBMHp2TnR6QkpndUNvMUY3em4vSGxJenFKcXRiajgxbTgvdlMzRk5LRityeXdMQ21SWGg2aktOU0wyVmxxYmxQdjIzNDhWWm1IeW4yWXYrZWZzam1xMCt4L3c9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"9bbceb0f12bcf2f2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a05a53c1-8861-5807-affc-31f790b1e1d5\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0NjA3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQzNTUifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJiYTcxM2Q5Mi1iMTAwLTU2NjktYTc2MS01ZmE0YTlkMGRmMmZcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMzI1WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJXRngwUFRacGMxZy9MdjJLNVJlWm42Tkx3ZGtEY1c1akd5QSsxMmdoZEVCZGFPT1UyaTJyUFRCZHd4c2pBZ2VYbVM3ZWdsYWpXdHFuVS9OeDdud3prK1VzdEYwekUwd1k2UWhvUmlySEZLUUFtdkFkbDBka1EvWnVoSktrQ3VZS1FnVlpQVEU5NWl1K0xpYzg3emlwUmM1TVpXd3dPalA2VEh0MEhuL2gzRldjMWM3L2ozaUV5ell5SllaMVlHdkRpWnBrL2RQUmRoakJQaFdIeCs0NkJkNUVsOHBJZU9CVTBhRnFEVnpXZDRqd0RJM2JlOUNSZlB2KzExYUFqeDkwcWpJd0lUYzB0OTNDZ1pNb05kRUsyRnRjUHo5Um9aVUsxMTlHUTlpeFY3ZUllQ1lub0hBaXExSHdqQ2tYbFVWbWFrOE5qVm04dTFSQTRLb0hhZTdJSlE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiMWVkYzk2M2EwNDMzNDAwMDU5MzExYTI2M2E4NWJhN2YiLCJNZXNzYWdlSWQiOiJjZTUwMmViMC01MGVhLTRkMWUtYTcwMC1jZDZhNjk2Nzg0NTMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnJvVnAwZnBFS1FHS1BmV1BJQnd3TGdiVUZOSndqL2RXWEV6bkVCK1JBV2g4L0FYRHhxbGUvTlFNNWQxLzJjMFNiR09hcjN3NlFyU21GUXVsdi93TFIrSUNsK0J3NW1mZVFRT0xOQmJlQ2l6SDJhaHZYZTM4Z0pKQXpOeHRQN0pSNDdnYUdnQXZMOXA4QnhqT3NtV1pEV3czNFJiUmdyUzBKWnI4aXplWXJqUDRvQmoxendLUm84TitVa0V5M091NWlTQlJNYlBlMzlWQzYwd0NEcTVhSVVRQ3VSVTRnelBYZDRwYU5hZjkzRU9CNjE1SmZsZFh3dnd2aVg2UG1xWndQL2RnbStmSGh5TFM0VkpFSUkxanp6ZzRua2RXSU4yeExxbTFabHd2UzBPWjc1bWR3d01EQ3BOWU9HamVGQXZ1ZGZIVFk3dUZ0ZFByb1QyQXpkVk1ickE3cDA4U2x6M2hTb2hXQ2VwTXNLRHQ4ZXUybmZXNlJqWHRGSEJuOFEzbHp3MXA4TTQzWkd4NDdtTEpEYWt3bHc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"04c657022fd59aa4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e6c4b60b-3eb9-55e4-8215-d43d2669fc36\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0Njc1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQzNTYifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI1ZTI3NmRiMi0zY2QzLTVjY2MtYWJkYS0wZjg0MjQwMzA1OGFcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMzI1WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJHN0c4M0RtaFJGZExZb3hVaG1KcEhMUVBHYVFYQjRaWjkrQVkxNmVaaHVlM1ArcisrWk85NmdrYTdlaFlSSXNTZ1JXMTVMR0hsMlJzOCtEUDVZRkdib01US1BYMHd4SnU5WVNJa1pqQ2lXblZrOUl5M0hLemw1a3l3QTY1YlF2aDRzMHlSc25GbGRZUjNtV1ZWYllBYzFZN0JwOGxER045TlQ3OGExdmZiTHF4YTFRSWRSS3N4SElKSTk1dTFrcTlsTjhUL1hPL3ViRWRzZHp6TjBVeWkwOW1lcnpDaVg4N0xHNUtGOGYyZjdTL1Yxa0NPWC9WRWU0RTdPcGdORFdkSUZ1WWs3VWVnR3QwcDB5bFVGNlI5a2YwZG9wek5WRXhRS1RGVXFqRnZYU25BUitsdllDS1hjS09NZ0dFa0s1SjZwV3ZzLzhPZS9nSUNxK001SHNYWnc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiOTliNGIyM2QzODZmZjhlODkyMTY2MzQzOGFhNmMzYmYiLCJNZXNzYWdlSWQiOiIwOWJiYjMxYS0yZDMxLTRhYzAtYjMyMi00MGYxZjcyYTYzNmQiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjZDb1lkV3g1QTRKaUUyY3AwaHFmWWtvOGpHV2oxY21vUW1Gb29OVGc2TjZaOXZyclBsaFp3MFhSQU15eENkYllwNWQzUSt5blN5NjBMTENLTXpzZk9ScDlqRnRjbjNZOE5HMWRyOFowaFIrbTlSUGtmaHlUeS9mc1VxZ0dIWXVYeXI4SGx6eDd0ZG9wUGR3UVhLMExURHdIS2FqcGRXK0xDYVBZSjFxVGJYRzdmdStuVWRYcGFxSnB1bXM5b21seXpnSSsrWVVXK254S3hhRzlqdDRZdmxDWS9nUjJteldSaUZmOC9oQk9CRUUxeFZIcHpLL2JNbUM3Q2QxWnJ4ellnMUZCZlFwWkZHb0ZKNHdnU0RiNkZFQVh6bHdQem9MWWpYVi9lWWdEKzNrblNQazJMaEZZdnhKcTVZc2Rhejl2K0dLZ3R6TUREZHRTS2RaU2wySGxmMkQ0dkN3emVpaGV1ejc5aEFxSFV3QnR2SElpOXk1NVVSR3hzelhCcGZoTWFLWUVYV1RjOEEzajVVYzJGOEZDR0E9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"32b70854418741d9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"eeb8dcc8-e6fb-580b-8c0f-befefe2b61d9\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0NzQ3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQyODEifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI3N2MwYTU5YS05MDQ4LTVjOTItOWY3Ni1jN2FjODg5OGY1ZDRcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMjQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJBdU9BbHQ5NTNQcmUyaTZFc3RZMzl5OWhtZTN2V1huNDJyWUQ2RE5uZFJwZW1ULy9NTzM5QzdIWlpBUVorclJNeE94d3k0NWpWRGRzNzhNWlFUVEU3WXJJbUFVYTU3cFQ2U3ZTQXBYOWtBUHpSWi93a0hPYW9OWVc3bmlKejlUSFoxSW8rWUxyQk01VkVwZ1NIRWxWZEdzVjVaanNNRnNYY011TWNJdi9tQmpFRzBDUFh6NTZkY3hhKy9kb0tZVmxCWWU0UmxDbDRlNlpwUkRrUWVoNzNteGcyK1g1Y29wZysxYWtIQmx0WEZjYlFYRGgwR1BvdFQycFA2VWpwRTJnc25wSWs0blJ5UExucmFzNWpRS2w2aDlIajR0MGo2QUpCQjlXQjN0UFk2T3NiTlBOQWFGSjBWSHBhYjFibE55WjJjUlN1YUwrTlhHbUtPTkRyTHpaUnc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiMTZlOTgzY2ExNTEwMzk4MmY4ZmMyNGJhMDU2ZmU1ODYiLCJNZXNzYWdlSWQiOiI4ZDViOTVkYi03Y2IzLTQyZDEtOTNjZS1kNzU5NDY4ZTE1ZTQiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQm5VYld1S0syZXNMTDN0UVlMMU5zLzNZQkJ2VVFiUkpSdU9xbHNRVm1jUERnRjNjMHNhQ1Jhc3ovZ212ZjNUTVNZd2NnTmZsRFhHZFIxL1NNbm84bW9rb3FmTy91dERhenFOU1JYZ1NMY0d5aEdRWVdicStZNVBSV3BhdE41V1A0dGplbHNyWU9PUjhxTjc4Rm1WcGo5bDJmZFRDMVZmTk5zYmVnM3RtOU5qb0ZyaW9YYnFaSk16bUsrVzF0U2Mxa0VvOEMxblBHbGRWaW9MRkNVOEdmUjZwZi9rMHh2Z2dkUyswT3RqVjdXdjFPRkhYa3RpMXBZaFdKeUd0K282bEo3OUpYNjNuK0xZWkpQc2UwVk9WUlpCMFNmeGdsS2Nmc016SzZDeEpNeGlKZ1I5QW5LT1YrMG1VNTBWa0FzUjlNM2dOL001Z2NSMEl4NXBqUFppb3pMSzlsN3Uzc0tsUEtYM1lXNURXVlRiZ2dHejBhTHlVeWx3NnVjcnN1aXA0b3luTUhiajBtYVF5eWQ3V3kxOWtHbnc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"b509744d38283b40\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2750\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnA4ZFNUVmVydTZ4US8zTzFrUGl1ZEtUVko1aC9XQmdqTVFiRDhZU0VQSWlnemxYR3hFbElIaU1iOEkwT1hKSldJTzhROFVKSm5mN0hya1JBdEVaclVQbHhCMUViRmRzMTRKUEg2Q00wSmZKM1dtdy9Yakp2NXZOZDRUcVdGSVc3dmZ4NVJzbldhbDQ0TlNqZFFjT3IzbmUzTEVBSDBMQnlvMUllNW1sS0lEaEVZNHN4ZXpVa2RTSFg2aEViSW9zZURkSm5paGRrSXMxYlU1WVozUFYrMkF2OUhkME9Qa2VWMFVIOENINk81WktNUWxTM2hTdjRSaFpDRVgrTUVvbDRtWElrY1Q2Szl3Ty9vdXBVYlpCbElHdFpja3ZPa1U1czBOUS9BRU1rSVdjZ3ZXQkpPQXB3Z1J6cFp3L1dLNDNUdXdxK3dHRkl2U0FoQTVIbTBDY0pheUcwWHdrR1BGYm9mTTY3c2NFNUt1NVkwalJ3bU4yU0xrbTdNWkhzbjgrY1FjUzcrMGlMSTVMcDRJbVdUYzAxeXc9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJvUnlRNW92Z1lHcFVDeVJqZXJ5ZjdXUW94b0xGS0FvdytHMkZ1d01IclV5bkNMTHRYV3dqTWpROGMreitJSVhnbWJRbURPT0pUenhNY1ZIYWpSVlpKRFY3dXhnRDFwQWVYRDNVWTN0TlN4NnUwem5OUWZFOHFNWEZoejd2UkpsWkw2M0Q2T21Rak43WjRiOVVFbUxVRzdQK20vVHM5QXV5cTE5eVp6NWdyNnREVjJJakh3dDAwZUlFbXg1dGNIYkEyN1lvcVo0WjgzQzl4SWpTNDRmTnROKzNaRjBLS3UydDhkY0xMS0RCSG41K0tMUyt0WEJYbTNsTjV2OEczYS9IbXIvWVZzTENSWEx4VHJsL2NvaXdRUmVxL243eG01RXdsZ1ZOYWlHNGl6d0gvM00raVBRM2FjN3BWcEVGVlhOTXBKQXRpNGlZTVpreVNOR2ZJUm90aTVLa1V3ZjFkeXNJNFMvY1hWQ3pmV3dQRzBDREJVMVpzMVcyQzRPRVBYVm1iaURUSjU3WjU5aWE1enhJbkZKRXZ3PT0ifSx7IklkIjoiMiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCRzArOHk3NmMyclhNKzVJV01JUHBhNTl2dW8rclh0R21WUGFDUWxuUC9HM1pQRWxuOXNINFUwTGRwTmR2QmFZbWJVcE9CaHg5NnJoRWUwcXRtMWJMOFF0T2xuMyt4bHZTeFVkblRxNDFjZlY0dXpxYXRzV2NlbmptZkZZN3loVFhSNFk4UkJPWXJpS3RKY1lPVEVDVGhYeWMxMTZwL1ZzdzRxOE5HZUNIaUlyRXlONDdyWkRKZ1RGckZNRlRXYWhQMnRqNnd2KzdkU3NZazlYN0FLZzlJWTdLY0dhTkx0cExOMnFTRHNoQmM1YW91T3RPUUtteWxJWWVRRTh1YjBOc2dyVGRJWUY3RlhMaW1yc2EwdkFUQkdOV3AzTzQ5QkUvV1cvb2NFM0ZQMHNneUgyZUxSRk16NlptQ0xockEwenZOdHpCSmd1Q28xRjd6bi9IbEl6cUpxdGJqODFtOC92UzNGTktGK3J5d0xDbVJYaDZqS05TTDJWbHFibFB2MjM0OFZabUh5bjJZditlZnNqbXEwK3gvdz09In0seyJJZCI6IjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnJvVnAwZnBFS1FHS1BmV1BJQnd3TGdiVUZOSndqL2RXWEV6bkVCK1JBV2g4L0FYRHhxbGUvTlFNNWQxLzJjMFNiR09hcjN3NlFyU21GUXVsdi93TFIrSUNsK0J3NW1mZVFRT0xOQmJlQ2l6SDJhaHZYZTM4Z0pKQXpOeHRQN0pSNDdnYUdnQXZMOXA4QnhqT3NtV1pEV3czNFJiUmdyUzBKWnI4aXplWXJqUDRvQmoxendLUm84TitVa0V5M091NWlTQlJNYlBlMzlWQzYwd0NEcTVhSVVRQ3VSVTRnelBYZDRwYU5hZjkzRU9CNjE1SmZsZFh3dnd2aVg2UG1xWndQL2RnbStmSGh5TFM0VkpFSUkxanp6ZzRua2RXSU4yeExxbTFabHd2UzBPWjc1bWR3d01EQ3BOWU9HamVGQXZ1ZGZIVFk3dUZ0ZFByb1QyQXpkVk1ickE3cDA4U2x6M2hTb2hXQ2VwTXNLRHQ4ZXUybmZXNlJqWHRGSEJuOFEzbHp3MXA4TTQzWkd4NDdtTEpEYWt3bHc9PSJ9LHsiSWQiOiI0IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUI2Q29ZZFd4NUE0SmlFMmNwMGhxZllrbzhqR1dqMWNtb1FtRm9vTlRnNk42Wjl2cnJQbGhadzBYUkFNeXhDZGJZcDVkM1EreW5TeTYwTExDS016c2ZPUnA5akZ0Y24zWThORzFkcjhaMGhSK205UlBrZmh5VHkvZnNVcWdHSFl1WHlyOEhseng3dGRvcFBkd1FYSzBMVER3SEthanBkVytMQ2FQWUoxcVRiWEc3ZnUrblVkWHBhcUpwdW1zOW9tbHl6Z0krK1lVVytueEt4YUc5anQ0WXZsQ1kvZ1IybXpXUmlGZjgvaEJPQkVFMXhWSHB6Sy9iTW1DN0NkMVpyeHpZZzFGQmZRcFpGR29GSjR3Z1NEYjZGRUFYemx3UHpvTFlqWFYvZVlnRCsza25TUGsyTGhGWXZ4SnE1WXNkYXo5ditHS2d0ek1ERGR0U0tkWlNsMkhsZjJENHZDd3plaWhldXo3OWhBcUhVd0J0dkhJaTl5NTVVUkd4c3pYQnBmaE1hS1lFWFdUYzhBM2o1VWMyRjhGQ0dBPT0ifSx7IklkIjoiNSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCblViV3VLSzJlc0xMM3RRWUwxTnMvM1lCQnZVUWJSSlJ1T3Fsc1FWbWNQRGdGM2Mwc2FDUmFzei9nbXZmM1RNU1l3Y2dOZmxEWEdkUjEvU01ubzhtb2tvcWZPL3V0RGF6cU5TUlhnU0xjR3loR1FZV2JxK1k1UFJXcGF0TjVXUDR0amVsc3JZT09SOHFONzhGbVZwajlsMmZkVEMxVmZOTnNiZWczdG05TmpvRnJpb1hicVpKTXptSytXMXRTYzFrRW84QzFuUEdsZFZpb0xGQ1U4R2ZSNnBmL2sweHZnZ2RTKzBPdGpWN1d2MU9GSFhrdGkxcFloV0p5R3QrbzZsSjc5Slg2M24rTFlaSlBzZTBWT1ZSWkIwU2Z4Z2xLY2ZzTXpLNkN4Sk14aUpnUjlBbktPViswbVU1MFZrQXNSOU0zZ04vTTVnY1IwSXg1cGpQWmlvekxLOWw3dTNzS2xQS1gzWVc1RFdWVGJnZ0d6MGFMeVV5bHc2dWNyc3VpcDRveW5NSGJqMG1hUXl5ZDdXeTE5a0dudz09In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4ea84a4e-d892-5f64-b373-2878c042a6b6\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjMifSx7IklkIjoiNCJ9LHsiSWQiOiIxIn0seyJJZCI6IjIifSx7IklkIjoiMCJ9LHsiSWQiOiI1In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"c92670946a4aadf5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5c817278-2d7e-5a19-a333-104e35ae23cb\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0ODgyIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQzNTcifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJhYjYxY2Y2OC03NGQ2LTU4NDgtODhhNS1hZDVlNmMwNmIxMGVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMzI1WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJjL3A5d0ZLRHUyYy9QMExSRDJvZ3QrekRYWnJwSWdDdHFjRXUxRlRMT1lzZXRUTzR0VmNJcmZrenFIUUJvaU91YmxNSnJoZUdNVGtuL2hLb3M0OWtMbkVWZzh2L2ZrUmk0dmtiWGdsSDF0dmZaT1Z6TVZnWnozbExubCs2YVE3Sk5PelVxTVF5S0VTZEYzcHdiNEE5dU5jT3FoakU4bVY5NjUzUFJTQXoxTjJVUFcwR0R2aTQ3TXNBVVgyZGMyak15c285eU55bGNTSWdDdjFpUFhzR2NBM2JKWWFRQXZZZkNqUURhMWQxUGdNVVNtOE1RWmhqeGE5czZZODVyT0lVckR4Vms4aUpDME5zK1lEcVRjTkNVUVBoN1V6akRNS3hwejhCR3p1TTdGMlk5U1dGcy94WnJNWWxNSU1LVUFZOUd3N3JaQ09TZTlvWXNFdllkRmpJOWc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiYjY5MjZjZTBlZWNhNjQyMzg4MDQ5YjM5ZTU3Y2ViYWQiLCJNZXNzYWdlSWQiOiJjMWE3YjI3NS05ODBjLTQ0NGMtOGU4Ni1mYWRlYTM1ODFlZjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmowOEpGUDc3RFZ4aGkxVWNISURnTDhNNDJBUUJYSHltMW42OStFc2hOY1FmTkdQbDYwL2ZwT2NERWZpYUdyNHlISk51UDdraEFWRXNIUHhObzdWNnZRVnpPUER6ZGpyVmhxaDllY1BiRVAxRHRxZ05aOE5ucVQwcDExRGpwTm1Na3NaQUZEdTZ0SmcxNDNoT1k2WTJVZTF2dldFNkJldXlLaVVodmhWNVBhbXN1Q21tNm1jVWdJdnFhbGFWMlhvMFZjL0xWOHA5U1oyY1E3WU54bVlPcGZQUWpQb1R4Qll1bjc3VXU1R3JoSkhKTEFqWm03cWt6T215b3I1Z1NWRlM2NE5oeVVPbC90d2VnL0RyWXNaSmRhVlp1blB0M1BOeW5WLzlLQTBHekNIeTV4Y21XMTN3bnBhbWdYcEMvKzJXc1NsSVZJNGFsSVcxZER2VjQya01tUWFjNUx0L1BPL0JIN1JZNkg0OHFvcHhNVE5pQUsvSThvZlBZT2huNEtoK0cxUnlFMWhTakVlK3piWDQrTyt6ZGc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"bf8a91a7c0ce76c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"075ac407-873c-566c-898e-a6319fecefbe\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI0OTUwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQzNTgifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI5YjZkZDJjYy03OWNiLTVlYTEtOGE3OS1iMGZhNjExYjI3ZTdcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMzI1WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJGaTR1RjVvUVhhUFBqYVBvZWYvd1gyK0hCL0JjNWVrdFN6T0RMUGhGZW51bjRuSUhCVXQ0TlZpSWx3UTJlK2FwUGpaZllHdmdzS2dPWW4xNHBaWitGVXJKYnRQOHdENXdiSkl0WjZLM0VWUDhNZ3dPM21URXYvMkNBbXdiK3ZJQys5THYyZmdqWVZzWVNPRFpoWjkzN0JZSW9Ma1dTWWc2OWNRRDliNHFKZXpGbldiZHFMWVMvM1VPdEU4REgxK05EWHdOQndkMkVXTFpKTVZmWXVxUWF0TjBWeUl6Mjhrd0lUaForb0xOK3RjMGRRZFpWckVzSW52UUx0RHQ1eUQwTFRzUW5oYUNZVEZvYU9Qakt3TTM2VWY0ZXp3YzFjdHBUZGtNWjhBSDFjSzluSVpva1BqajI4UXVFMHRqVHdxc1UvZXB3Rm5xdFNxUkNrOGEvWktJQ2c9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiMDNjM2Q4YzI1MGM1NTVlM2FlN2Y1Yjk4ZTVjOWE5NjUiLCJNZXNzYWdlSWQiOiJmZWM1NTJmYS0wNDAyLTQ2MDQtOWJlOC1kN2ZmNmZmYzRjNzIiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlR4a1FiQ0ZKbUVxdUhJTnZrODg1bGw2Z0s3dll6UnI2NEhqR09hZ3ZUL0tjREQvYll0MkpQVDZCREpOem5iSkhrWURpU3ZaZzFEUjNLNEhHTWdVMWVyOWdEcXJtWjEyZVRyVng3TDBjellkWVpxeDlGYU1qdUZWc1lrYnhIVVROdnF6dVVKYnNkREFTREtMcnFhRDBQWlFubkI0MU4wbTJhSW1LUFBrRFV6ZGd2TWlvVGFFTXEwRDNCRUxVQ2piYzk3azBkL3dHbGNoYjREVUpjNkdFOVVaVlgwWEVOMDVGSHhrQ3ZNVDJPWlI4Zlh3N3RjZ1VMZ0FwWmZxMVBZK1dyeW82bnRneElraWl4SDZBRmgrYWVwQ3lZUnJlVDFONGRFaWZ1ZHZvY0kwRit6LzRQSm1QSS8wTHpDSzV2ZEFycnJtOXNQaExnVThqMklUZldnTFo4V1hBb2IxandFVWUyTUJNR0RCbS9ucVJVNC9yUEViZDZhK0YxZWFkWmF1L095L25LSkxGU2JieHFLOEVzOHAzRFE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"6ae140efb95f3abc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3e5f6908-b8d7-540f-bbbe-0b3ea0065ddd\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI1MDE3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQyODEifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI0NGIzODNiNi03M2IyLTU2NTMtODFhMi1lMTgwNmI2MjhmMTVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMjQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJHQk1XY2hEOEtHajhxY0JhcFhHZ0F3RmZKMU96UnZpSlV6RDBZT2RCdnI4UE5mMTZCWUVKRkR6UlFaem05NHp4Q3llNkQwcUQ3YnBkSDBnS21zQnZ1OHhmUW5ZZkRyU0szbnpUa2JrREtraFc0VEJvTmloSEZjOGRRMUhTZzR4bEg0NXpsR2xFNklCVlR4VWZnV09ndktYczJjbDFWa1BET3F5MXJTRnlEZmtIYW9IYWRPT2RCUGhUSEZLVmpuc1pVTVRPajZBaHQyN0pNK0ZiVDNGZHRXangwYThLc1NTU2dFa29VSGN5Tll1NDdhTkRsWTd0Z0ZwQld2dDBZYVFubG5FelIwWVJhTlRkeUpKZUtaN3JleXViUmJyT2xpNit0U3dSYVZQK21YZWsyajBWQjNsclRoMVlXYVhiLzVOQjBYR2V2UjhtUktxNGVKMUxMQnBNWWc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiYWI5NDFkNDRiNjY0ZGE5N2M0NDhjYmVkMDVmY2Y1NTUiLCJNZXNzYWdlSWQiOiJlYjFmYjAxMS1mNTBlLTRkYjItODhiYS00OWRmMDRjOGY4OTUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmtWOXdYSEtXL0N0UmEzNHlQRlJYaE5lbjVESGVST3ZEZG43MFpTd3RkNktwL01KKzRwb1kyQjZqbmd2N3Jwck9SV2JDR3FVd2VXMlRhTmZuR3diek5jdVlTdEQwbEx5dm1ZUzRjaldBUUpmM1ZtOFh1dXZWTHRXUGkrYXlSUnVhbHFyTW5ERURqSXF5VmJvZ1dabXJNOXh5Z01uVk1RV004cnRwNklSUUhEMk5PQ01kTlJSaUl4STRwSklqdERPNmlUcllzV1FlOFA5R2xXZVJtTHpxNU1HL05kWnN1a0w3Q0pON2lxa2dHUkQzREt1b0lLZW16T3pFN3pOdnJUSmgwOFZWNU4xY3NaU3ZFZVZIVWJ4UGpBSnlBS05IN0MydmNPb2lNc0FERnA2OWxzMXdqTU5MSEIraEtKRk8zS1BVcnpkRFVtMWIvTjNlMEg2OTROZlhVdUMvQldGdUZ6MlcxMEdwaXRiVUEweGFYc2MvT2FVQkloZDBiU2ovRjBkcHNHaFA2VkVoeTU4TS95cGRYMlN4NlE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"641ffa87acae6dd3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cc990056-c392-5f0b-9fa1-6260db4316d9\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI1MDg2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQyODQifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI1Y2E5ZmZjOS05MzFjLTVhNWMtYTg4Yy05ZGZmOGJjYzIzMWFcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMjQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJKQXR3d0kzQlpqTmtrdmdtV21LYlhZNzYwQkY0NVc1MGNBZ01Eejc5bjFlWVV6VUI5MTBFR0NxZ29icmlVNm5YMytUQmRqVzNsWWo4ZllEM3FSVmVkVWNLSEEveW4vT1F2M1NJVUpLN2pZWXgrM3Z5cUdKclZBQS9lQ0cveWIwWk9LK1hyUCtzV1MzS09oWlduUnY3RDBPem1sT3hheVJLWW1hdFJkQ3ZoY1BCazhBbGdsVGZNczlZUXJ1VC9YZEhiQ3E2Z3Vnazd6dFdGTnVwMDl4djV3ajJrNDQ2eTVtbkxSM2t2TnArdXhmTXpZR292M281cTFiOVlqdFdtYzVENmtLaVFDOFZTV0ZhOW40eXpsUzh0RU0zbHozSnM0WGorbmVVcjZpNHd2Zjh5TEZyK2tEMG5sU2oyNzU2bitScFB4ZVhPT0ZIY0FuOFBmRUFoZ1p0UEE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiMjliNzI1ZWVmNTI2NmU4YmMwZTZhOTJmNjg3YmU0MGMiLCJNZXNzYWdlSWQiOiJiMTM0NWNhMi0wZDlkLTRlYmEtYjYxYS03MTRmM2MzZTQ1OWIiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkI0K0IrSm9HV21HTTgzZDJKbGJFWEZGb1NvOXZIaytudUJBYktobkx0aHJ3M05DSkFDK2pEQW1VM3lPZTdyVGJjUE5kUjIycnhoTW1XREdERlRSMXZwOEJPaXV1N2N4WXZyc3lZVkhid3FFUzhRUUpqeUNLSGNGaytqT2xJR2lxY0JOejQvalI4V0ZIZ2F5dmJESVRQSVFmWTBqOXFoMnMva2doNVZVMW8wanVFdVdyYTdzSVdYZ1lhZFdLcWc5bC9McnVwREtRbjdTWlJPR2J1b3ZFNUM1WG5kWGUrZW5ubDd5NjZkOFc4N2VocjZYVFp2c2ZsZEhFcWNVZkI5bExLaHpTbW1hQmdZRWhKc2hVU0pOZVdUZkVxY3VnVVFXSFVSdFkzUDR6em1IOTVqcFBDUExLNVVKejI2aTlyc1pRaVpzTWZYcmhTNFRKM0Z4M2E2OUdZVzU4aGU2dWxvVHpYL2JEek1RV3FrMEtkZ09EM1NWa2p3UVMwT1BIK0V3Z05LVW55bXBBWG9ZbmFUVC9ZVmd2ZEE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d23501108fa946a2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1d4d53e0-d348-521f-ad77-31d6cb993bcd\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI1MTUzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQzNjUifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJkMzI1YzMxMi00MTA1LTU5NjktYTA1NC1hMTI0NTlkNTIwMmZcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMzI1WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJuVk9TaXduVzRXeWJtRWVCSU4rMVVJRXdRSjRSbEY0YWJOd2U5M1dWTDhpWDVWSmptc1d2WlFnMzdJa3dLeGdzUHMvdjBha0IwNW8yYyttNmFScG56NTRxRXhYQ0tMSE1ldWFTeTYrTGMyWlV1WjQrUWY2eWZkVFhoNEtjNnBSckMxT2FCWHpsUWNoK0wvdkpjWTEybllqRCtHcUhGUUtNempVaFpnT3cxWDIrYktEeDBDZGFlcmFoNTJDZkdUMHpWQUhzd1hsQmhEMDJVWjdjVGJTRHZtSm5ocXdPbHhXbEhIUlNnTVBFOXFhZHFBN21iejljTXBsY0YwY1lFMVJHd01wYURTRld0MzU1dC9nNkJFMEtqQXlEZHJzLzFMdVZLTmxhT2VmUDluajhvd3Z0bDJsRkpjNVZlTFQrN09xZjlKbEV6YUNIc0ZvS09zKzRwWTAxMFE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiZmJlMTQ2ODE5NzQ4NDM4ZDVhZWVmMTgzMjdiY2YyOTQiLCJNZXNzYWdlSWQiOiI5YWVjNjMxMC05N2YwLTQ5ZTItYjAxYS01NzEyZDQ5MzFiNTMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnpIbkE3WnBUMnFvUjQyZmF6b1NrUmpWN2paazh1Q1dDUGhWNEdOYmZCY3l3Z08wRTBqdmlLdHZPT1E5bnlmcGJxQUlkeFFPbi9EM1g4RFJuMGFORzBEVkd2d2lHc3ZaYWZ1QkxoVmJ0TGIweWg3WWs1TU5tVWhXbk5HZm9iUGcvK1ZrYTd6cnBxLzBnSmRWMVNBY0JJR0J6Y3lxbmRqWFc3S0lzVll1aHc2V0hSY3BRLys4NVo0S0s1RVV6QWYrd2ZIRkt4U0tGOFZOb3pMa2dEcmx5c3ljSVVmRFBHNnBVNHUrV1dRTFdZSkNWcWlUWXRFYTNxWlpoaGNjK2N4ck9WbUY3N3l4T05CUXpab0s5a2pZOGp4WmVWWlNlYVpqeU5kOEZIUmVYU3ZjLytHbFVpTi9teDQ0NERyQ1dpK3RYS1lxaVMvTTdzVVJrZFRFRWw2V21wZzBucFJUQ2Y0ZGwzYWwxb25HRENGZU85MTBKZFAxZS8xZWlSOFpSTHBCc1BadTAvZjNjMzNYenhDait4Q0lod0E9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"4a9cfa4a55c12016\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1718\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c6696c9d-3016-509e-8743-0eab28c7c94c\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI1MjI2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjQzNTQifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIyYTMxZmVlZi0zMjdiLTVlOTYtOTdlNS05Y2Q5MmFhYjY3ZDBcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQmF0Y2hpbmctdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjQuMzI1WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJETnh6eUpWN2FrTzhxU2swSnhZZjNBYTVWeDlrNkwyWkVHUWpBUEs3RmtjRCs5V0Y0aXNxTXVMeWVUN2ppK3hsbHBmNTU4aDdzckRTOU1KclhxTENoOVFTaG4yTUxuZU8xSWZDTGxDeWc0YytacFhXbjZ2UkVYTHhuZ1JNV1RlQW01VzlUY2dabENwb095bUNEckdKNUxPWjNPaEY2N2twMWh0U2JaSXgxM1dSSHZvdkwvTUJVVU80c1lWY2ppU3B2cFIxaWJWd2JidDBkaVJKSk55eDF0cTNCeU9iVHF1alExelc3NEduVkFNcDdzRyt0YkJ2VGlBVCtaczBMdE5XMFFSS0p2RFAxRyt1NXVKbDhmWG9sandOU1E2VzZrV1F1Rk12VFI2WnRmOWs3RGQ3SkJ3NHp0QndpeDhiY3VPVnpENkd4SE1lMGgvUmVWZzRtcDhHZXc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0JhdGNoaW5nLXRvcC0xOmU1YmYxYzBkLTEyODAtNGVkOC1iN2VlLWQyMjFiMDAwNWRjOFwiXG59IiwiTUQ1T2ZCb2R5IjoiM2VlYjY2YjM0MGU1MWU2MjZkMTRlM2YyYWNhYjA1MzgiLCJNZXNzYWdlSWQiOiI4YWZhYzMyYy0wYTVjLTRkMTktOGRkMi04YjkzNzExMmI1NjYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlVoZkR0SVEzVDYvZmVYelVPNVFaR2t5d1pVcGRTamtCUjFDY256aFBTak8zeThwR2dqMmxFVTZqNVN2MHY4Z2FKWmV2UCtmaFBONkRoVk5yeVlsaU4xdkh1K2NVdGVHTFovT2lUN0VrRElzRlZSSUpKZktVSUxRL21acXVTRHVtcURkYnJ4ZVp3VDJTMlhaeFZPajA3S212WGkrMUtqUTNvMjFKTGR3M3NOY1RQRXd2VWR5Sk53VlJkczZ3SkIzanlkOHcxeWJNdXpySWpudngzZ0kvSnJxQzJKQXBMbFJiUnhSZE9FaWVhcWNQV1dzRGpFUUwybzRXcEpVeHk5SGJPSUdmc2RWT1VqUFAwT0lSNVdxUXVXSWQ4ZDFuQk1md2JFT2VKLzVJUUIrUVorNk9scFRKUkVQOGdUUy9pd3lvZTFpaSs4aWdXOEIySW5LUCsyTE1xRHZKc014UkkrTUlLQk51RGh1dThPYzN2WnRoZ003Wi8zenJEL1lHZWRaUWZjR09pb2NiRUhtQS92Sk9Sd3lNeEE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"e260ecaecdebb899\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2750\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmowOEpGUDc3RFZ4aGkxVWNISURnTDhNNDJBUUJYSHltMW42OStFc2hOY1FmTkdQbDYwL2ZwT2NERWZpYUdyNHlISk51UDdraEFWRXNIUHhObzdWNnZRVnpPUER6ZGpyVmhxaDllY1BiRVAxRHRxZ05aOE5ucVQwcDExRGpwTm1Na3NaQUZEdTZ0SmcxNDNoT1k2WTJVZTF2dldFNkJldXlLaVVodmhWNVBhbXN1Q21tNm1jVWdJdnFhbGFWMlhvMFZjL0xWOHA5U1oyY1E3WU54bVlPcGZQUWpQb1R4Qll1bjc3VXU1R3JoSkhKTEFqWm03cWt6T215b3I1Z1NWRlM2NE5oeVVPbC90d2VnL0RyWXNaSmRhVlp1blB0M1BOeW5WLzlLQTBHekNIeTV4Y21XMTN3bnBhbWdYcEMvKzJXc1NsSVZJNGFsSVcxZER2VjQya01tUWFjNUx0L1BPL0JIN1JZNkg0OHFvcHhNVE5pQUsvSThvZlBZT2huNEtoK0cxUnlFMWhTakVlK3piWDQrTyt6ZGc9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJUeGtRYkNGSm1FcXVISU52azg4NWxsNmdLN3ZZelJyNjRIakdPYWd2VC9LY0REL2JZdDJKUFQ2QkRKTnpuYkpIa1lEaVN2WmcxRFIzSzRIR01nVTFlcjlnRHFybVoxMmVUclZ4N0wwY3pZZFlacXg5RmFNanVGVnNZa2J4SFVUTnZxenVVSmJzZERBU0RLTHJxYUQwUFpRbm5CNDFOMG0yYUltS1BQa0RVemRndk1pb1RhRU1xMEQzQkVMVUNqYmM5N2swZC93R2xjaGI0RFVKYzZHRTlVWlZYMFhFTjA1Rkh4a0N2TVQyT1pSOGZYdzd0Y2dVTGdBcFpmcTFQWStXcnlvNm50Z3hJa2lpeEg2QUZoK2FlcEN5WVJyZVQxTjRkRWlmdWR2b2NJMEYrei80UEptUEkvMEx6Q0s1dmRBcnJybTlzUGhMZ1U4ajJJVGZXZ0xaOFdYQW9iMWp3RVVlMk1CTUdEQm0vbnFSVTQvclBFYmQ2YStGMWVhZFphdS9PeS9uS0pMRlNiYnhxSzhFczhwM0RRPT0ifSx7IklkIjoiMiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCa1Y5d1hIS1cvQ3RSYTM0eVBGUlhoTmVuNURIZVJPdkRkbjcwWlN3dGQ2S3AvTUorNHBvWTJCNmpuZ3Y3cnByT1JXYkNHcVV3ZVcyVGFOZm5Hd2J6TmN1WVN0RDBsTHl2bVlTNGNqV0FRSmYzVm04WHV1dlZMdFdQaStheVJSdWFscXJNbkRFRGpJcXlWYm9nV1ptck05eHlnTW5WTVFXTThydHA2SVJRSEQyTk9DTWROUlJpSXhJNHBKSWp0RE82aVRyWXNXUWU4UDlHbFdlUm1MenE1TUcvTmRac3VrTDdDSk43aXFrZ0dSRDNES3VvSUtlbXpPekU3ek52clRKaDA4VlY1TjFjc1pTdkVlVkhVYnhQakFKeUFLTkg3QzJ2Y09vaU1zQURGcDY5bHMxd2pNTkxIQitoS0pGTzNLUFVyemREVW0xYi9OM2UwSDY5NE5mWFV1Qy9CV0Z1RnoyVzEwR3BpdGJVQTB4YVhzYy9PYVVCSWhkMGJTai9GMGRwc0doUDZWRWh5NThNL3lwZFgyU3g2UT09In0seyJJZCI6IjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkI0K0IrSm9HV21HTTgzZDJKbGJFWEZGb1NvOXZIaytudUJBYktobkx0aHJ3M05DSkFDK2pEQW1VM3lPZTdyVGJjUE5kUjIycnhoTW1XREdERlRSMXZwOEJPaXV1N2N4WXZyc3lZVkhid3FFUzhRUUpqeUNLSGNGaytqT2xJR2lxY0JOejQvalI4V0ZIZ2F5dmJESVRQSVFmWTBqOXFoMnMva2doNVZVMW8wanVFdVdyYTdzSVdYZ1lhZFdLcWc5bC9McnVwREtRbjdTWlJPR2J1b3ZFNUM1WG5kWGUrZW5ubDd5NjZkOFc4N2VocjZYVFp2c2ZsZEhFcWNVZkI5bExLaHpTbW1hQmdZRWhKc2hVU0pOZVdUZkVxY3VnVVFXSFVSdFkzUDR6em1IOTVqcFBDUExLNVVKejI2aTlyc1pRaVpzTWZYcmhTNFRKM0Z4M2E2OUdZVzU4aGU2dWxvVHpYL2JEek1RV3FrMEtkZ09EM1NWa2p3UVMwT1BIK0V3Z05LVW55bXBBWG9ZbmFUVC9ZVmd2ZEE9PSJ9LHsiSWQiOiI0IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJ6SG5BN1pwVDJxb1I0MmZhem9Ta1JqVjdqWms4dUNXQ1BoVjRHTmJmQmN5d2dPMEUwanZpS3R2T09ROW55ZnBicUFJZHhRT24vRDNYOERSbjBhTkcwRFZHdndpR3N2WmFmdUJMaFZidExiMHloN1lrNU1ObVVoV25OR2ZvYlBnLytWa2E3enJwcS8wZ0pkVjFTQWNCSUdCemN5cW5kalhXN0tJc1ZZdWh3NldIUmNwUS8rODVaNEtLNUVVekFmK3dmSEZLeFNLRjhWTm96TGtnRHJseXN5Y0lVZkRQRzZwVTR1K1dXUUxXWUpDVnFpVFl0RWEzcVpaaGhjYytjeHJPVm1GNzd5eE9OQlF6Wm9LOWtqWThqeFplVlpTZWFaanlOZDhGSFJlWFN2Yy8rR2xVaU4vbXg0NDREckNXaSt0WEtZcWlTL003c1VSa2RURUVsNldtcGcwbnBSVENmNGRsM2FsMW9uR0RDRmVPOTEwSmRQMWUvMWVpUjhaUkxwQnNQWnUwL2YzYzMzWHp4Q2oreENJaHdBPT0ifSx7IklkIjoiNSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCVWhmRHRJUTNUNi9mZVh6VU81UVpHa3l3WlVwZFNqa0JSMUNjbnpoUFNqTzN5OHBHZ2oybEVVNmo1U3YwdjhnYUpaZXZQK2ZoUE42RGhWTnJ5WWxpTjF2SHUrY1V0ZUdMWi9PaVQ3RWtESXNGVlJJSkpmS1VJTFEvbVpxdVNEdW1xRGRicnhlWndUMlMyWFp4Vk9qMDdLbXZYaSsxS2pRM28yMUpMZHczc05jVFBFd3ZVZHlKTndWUmRzNndKQjNqeWQ4dzF5Yk11enJJam52eDNnSS9KcnFDMkpBcExsUmJSeFJkT0VpZWFxY1BXV3NEakVRTDJvNFdwSlV4eTlIYk9JR2ZzZFZPVWpQUDBPSVI1V3FRdVdJZDhkMW5CTWZ3YkVPZUovNUlRQitRWis2T2xwVEpSRVA4Z1RTL2l3eW9lMWlpKzhpZ1c4QjJJbktQKzJMTXFEdkpzTXhSSStNSUtCTnVEaHV1OE9jM3ZadGhnTTdaLzN6ckQvWUdlZFpRZmNHT2lvY2JFSG1BL3ZKT1J3eU14QT09In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cd9fd249-fba5-5696-9514-b07fe374af44\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjMifSx7IklkIjoiNSJ9LHsiSWQiOiIwIn0seyJJZCI6IjEifSx7IklkIjoiMiJ9LHsiSWQiOiI0In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"232100d87fb7dc9e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"160\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0JhdGNoaW5nLXRvcC0xJTNBZTViZjFjMGQtMTI4MC00ZWQ4LWI3ZWUtZDIyMWIwMDA1ZGM4JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"119596c7-10c6-5ba4-ace8-f4f1081702e2\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4xMTk1OTZjNy0xMGM2LTViYTQtYWNlOC1mNGYxMDgxNzAyZTI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"cf8f8bab406165d3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"461c178f-590d-5d2e-946d-75b941dc34fc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"40639601191d7217\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljQmF0Y2hpbmctdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d45d3588-5fc7-5be5-a6d8-57be471622a3\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5kNDVkMzU4OC01ZmM3LTViZTUtYTZkOC01N2JlNDcxNjIyYTM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestCancelSendReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2VHt+RkAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fcab75f8775b3384\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNDYW5jZWxTZW5kUmVjZWl2ZS10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"338\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1430cbc6-e0fd-5187-9fde-a9f0f828e423\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQ2FuY2VsU2VuZFJlY2VpdmUtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjE0MzBjYmM2LWUwZmQtNTE4Ny05ZmRlLWE5ZjBmODI4ZTQyMzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"beb729f1fb9e4a53\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"47\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"af3105f6-530e-569d-9dd6-67c04bd8e270\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"d0d6f19505dff1d9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"125\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1a4b56f4-8b0f-5b23-91d3-34c293d98fce\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"80b397f4de78b7c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"476\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQ2FuY2VsU2VuZFJlY2VpdmUtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8b7a36be-5dd7-5258-96ea-5488450196b5\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ca2268eafc7d4d0a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"220\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"64e1b1b2-33d0-56bc-8c4e-d3842b06d318\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljQ2FuY2VsU2VuZFJlY2VpdmUtdG9wLTE6YWFkZjg5NTktYmUxNy00OWJkLWI1ZjEtOWQ0NDhiYjc0NDBlPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjY0ZTFiMWIyLTMzZDAtNTZiYy04YzRlLWQzODQyYjA2ZDMxODwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"5089b6bfd513de8f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xJTNBYWFkZjg5NTktYmUxNy00OWJkLWI1ZjEtOWQ0NDhiYjc0NDBlJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"784b6f9e-6044-5d7b-9ab6-0da87892d8df\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD43ODRiNmY5ZS02MDQ0LTVkN2ItOWFiNi0wZGE4Nzg5MmQ4ZGY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"7e70a5f8e8a58e78\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5e2e3488-5dcb-531d-8a9c-56be451d07f0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e5e24533b0ead1d1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljQ2FuY2VsU2VuZFJlY2VpdmUtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"566d5b6f-041c-5640-b0e2-39591cca83e4\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD41NjZkNWI2Zi0wNDFjLTU2NDAtYjBlMi0zOTU5MWNjYTgzZTQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestDoubleAck.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2RKgYQ3wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b93bd36140057a0c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"66\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNEb3VibGVBY2stdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"330\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"061d318c-41e0-54d9-a153-53ba593156b2\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wNjFkMzE4Yy00MWUwLTU0ZDktYTE1My01M2JhNTkzMTU2YjI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3238c63f6f96c72f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"30a0de53-a8b2-5220-bbde-bc65b0600c49\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"815b1385543f362c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"88\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bcae3575-17fd-5b94-8158-57430f2ff5fd\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"f9cce731e1a7b652\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"460\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNEb3VibGVBY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"311fd5c8-8aeb-555a-9d90-b7fe92393b33\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e467491eb7820fde\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0RvdWJsZUFjay1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNEb3VibGVBY2stdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"373\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e3b64400-5551-53da-aa2b-26364d8311b1\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXRvcC0xOjAwMmY5NmRlLTE4MjEtNDlmNS05NzVhLTE5MmI2MDM2NTk1NDwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5lM2I2NDQwMC01NTUxLTUzZGEtYWEyYi0yNjM2NGQ4MzExYjE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"6fb16c75a305f026\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"203\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0RvdWJsZUFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"704783d7-a08d-54dd-aa7a-e1e1b85fb6b6\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmMwMjI1NGI4LTI3NmMtNWY0ZS05ZDAzLTM2OGUzZmJlNWQyNTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjcwNDc4M2Q3LWEwOGQtNTRkZC1hYTdhLWUxZTFiODVmYjZiNjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"cb3688748a094564\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"203\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0RvdWJsZUFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"028879a5-9ae1-5adb-a31c-1b938233c8b0\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjgzODAwMmI2LTVlMGUtNTViNS05YmFjLTYwODA0NmRjNzdkZTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjAyODg3OWE1LTlhZTEtNWFkYi1hMzFjLTFiOTM4MjMzYzhiMDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"7a49df02c5fed5c3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"203\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MiZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0RvdWJsZUFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f071348f-6235-5610-917c-56b97ae6a47b\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmE4MjljNDNkLWQzZjgtNTdlOS1hMDBiLWE2MGJjYjJiZjU4MjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmYwNzEzNDhmLTYyMzUtNTYxMC05MTdjLTU2Yjk3YWU2YTQ3YjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"0395c4b293818d4c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1710\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"191add92-3a50-5f97-8a8b-bfa42283b1fe\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI3MTI0IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjcwNjkifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJhODI5YzQzZC1kM2Y4LTU3ZTktYTAwYi1hNjBiY2IyYmY1ODJcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCIyXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjcuMDQ4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJGU0R3L0xDekVsZ1N6NjI1OExNWjdBRTRlMXNGdVZGWURUTVFvSWlJK09UUWpidm1FNVRRVDdlSFdpNlNkSXNxblg4cjhRdHUxSk5samxraUJueXBnNW1ZSkovSFJodmVVaS9LYVUwKzNkMEkxYnVCand4T2gwYlF6b1lmV0tPdlNtbmp2Y0d3V0NQQUh0NnRWTTFsRUk2bUpwTTBhdFB1a2FQNFpHZ0RlcDBGQzE3SmJXVjdMeDNxYmUyNUM4dGtkZVdLNEl4SjRuVWh5eDd4MVhmb3hNNUY0L2s5MmZFY1JreWNDVktYRFRiVjllVGxQcHJuSHIzK0t5UWI4b2tyeVFmWXMyS2hqN0liWkpCNjY1MUw0VEFwVzhXVXFwa1lmOUhBT2FiY0JDK2xVQk1wcndKaU45VHVEQ1JkdHlKZy9lUUhDNjRhd3dsZVFjSWtUckZTdnc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0RvdWJsZUFjay10b3AtMTowMDJmOTZkZS0xODIxLTQ5ZjUtOTc1YS0xOTJiNjAzNjU5NTRcIlxufSIsIk1ENU9mQm9keSI6IjRlZTUwZTU1ZGM4NTA1MmExODZjMTJiY2UyZDM1Mjg1IiwiTWVzc2FnZUlkIjoiOGVmNTgzMDQtYWY2Yy00ZmVlLTk0MWItNmYzYTVjNmM2MDU5IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJpWWZYZjNKOHZOTWFuOWk1VTg4RWtqZXYvODh2UitzTEZaMlRJT3QxY3FGc0owY0JQMGJxZnA3S0lXM3FuOHVtSGU1a1lJSDlOaThONEhwbllTdXVJWFVVeWU0Y3JLSkpCUFdtbk5XVHVHcmEwdS9wNDIyRFhpY2xLZ2M4TlBWbUFSbjRoa01SU25uUjFKaDVHd05UZWlWZk5MRmZ1MjlsY0JlKzZyUUd3YzYrc1JjdSs3UllNWkNXcDZJNFcvZzI5RlF5Y3hma0xKdmNGZ3E3WS9BMWFNaUwxc3lYUHNvWmNKQXZFRUZJd21qejRneHhaYjZLOVRaWmNmbElpVU9GUWVUdUltOWN3b3MvNE5YNmYxRTZxVmZCbENLUy9EZWExUGl6blgxWUhwbVVvd0tBVGZYdUhmek5CcTgyanFCSEZGbTFkNTVVOFJJTlF5RUo3V3FaMldNekFGVVI5bUJtN3liQ3gzR3ViYmZ4YlNKSGhEY2NYNi9MbDRDaVd0UjZxLzlSQTVRZlZ1MkthQjVDeFNCUjhRPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"a7923f00260d1ebb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1710\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f12003e3-6f44-5579-94f3-61d577977b10\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI3MTk1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjcwMDgifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI4MzgwMDJiNi01ZTBlLTU1YjUtOWJhYy02MDgwNDZkYzc3ZGVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCIxXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjYuOTczWlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJHK2o5TGF0TDcyL0oxUUczL25uRnNmWHhmWjkzS2s5KzZUenpFNXVBY3lEbk52eStvM2dLZVJmNkh0bW84QlFnYit4aGRsQlZJUlFYbjRpSWZmemV4ZXc2VmdNZkhVVm5zV0JOZFZHMTUrMURBTjdYbldlcXdJRkxKZmh4RkYyQk1XblMrT21nZ1BYQW44TytQRzZ4dm1Tc0R4R0tPa2xEdVJOaXF4bDA4cmJld2Fya1YyWlRNQmp4YjhMTmxiMFNCbFpORWMvZmZJTzRIYU0wUjJhSTJiSU5SOU1UQ3JNQjllRUZ1b1ZTUVVBdEx6WXZlYno4Y1FPTkI1WjJ0SEZPbGpWM0FwZkRzaVhhdEpQWlBKelR0UnZweVFoS04xTWs0VVkyNFd2WUhCUi85MFpWWE1zL3JhSEd1TnJmRnJiYk5QMkJpWUltZzBzN1VXZDhkMTJNT0E9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0RvdWJsZUFjay10b3AtMTowMDJmOTZkZS0xODIxLTQ5ZjUtOTc1YS0xOTJiNjAzNjU5NTRcIlxufSIsIk1ENU9mQm9keSI6IjU1OGIwZDlhYjYzZTk3YzcyNDg4ZWFhZGQ0OGQ1NjE3IiwiTWVzc2FnZUlkIjoiNTIyZDlmOWEtOGM2Zi00MDhiLTllMGYtOWExNjhlODg3OTk4IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJJZ0ErTjVjSGtHTlVIR0x4SDNyd0FaYWxaWVNZbm9wQ2tmT2xzcEhVamluMlc2bFRvZUxUWm9IeENOVUN2Q1IvQWk4aXZwUXhkbGhCUjFaQnVHbEJhR0w5dFZBQTl4V3NGcVBBRWtBQ1NVMTJqdGxNellOTHVCTHhvY0N5RWVWQUViTHczbTZ5aDZkOERHRm5HbjIvM0dseThDRStNMnpoQzFKRWUyamJ6dDNjQlpnemxZSVZCSGYxVTR0cmFYUGZMVjdaNU5PaGppRUJUdHdUc1ZYL21JNklsTXkyTEZBbTQrNVhlbTYyN0lrMStqeERPVHNsNnBVclFJQkNmcm1tQjR3c2FmK3E2Wllxbmg1T28wVS91c0kzVWlOZ1JnUUhtL2g0QVVSTWdJRlZFQThxa1ZYbG5OeDRvZ2NTVUUvQXNQOGEvdll4d0J5RFVPUEZCWkgyY1Vua3hCRlplMFVYVnlHeWxOSXRVRHRheGNTUlVHS2VDOW13Z1FnL3ArbUVsZTkrNTBvcHdCUjNXYWRQQTZvMlVRPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"ae155f9a4f393c7f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1710\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"966bbc06-cf7e-5c9c-bff7-de30d7ad32f5\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI3MjYzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjY5MjkifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJjMDIyNTRiOC0yNzZjLTVmNGUtOWQwMy0zNjhlM2ZiZTVkMjVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCIwXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjYuODg4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJTUjdwZ0hoZWV2SkZVd1g0SjlYbWgyS0QrSk5LZ0lraDZJL0xkS0tySXVZR3pQdkdORlVtK0s4NzFveUw2djUvVzJGWlRkVm5nb1JIa0dhdUY4OS9WdkRBTDd4eWRyWlFhcVRRZnZnTmpkWm9rRk5wbWp6bGpub21MajZWcVV1N0ExNGRVUkoyQWRZbytWNUU0V0JQcnVCaFdoaDF2NTBiWHlZMkU5d2tRZkU5OVk2cFo3TW1HYS92YnlBZGRKd1VvN1RUa1JQb09SZS9waE01THZqSnFGTzFrbWNSR2d3c3NaNEh6Q1RPMWd3bS9CZllFYmk1U3pIc3NpOGxpNVozTGRSMGlPdW5PQjFjWEVpa3B5ZDh6V0JEYjRBU0FDTCtaSDd6S2QybHljenY5RWJhS2dkOE41di9aQ04xSzl2ZWhLd0M1N1hlUnI0VnVBSTlJalF0bmc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0RvdWJsZUFjay10b3AtMTowMDJmOTZkZS0xODIxLTQ5ZjUtOTc1YS0xOTJiNjAzNjU5NTRcIlxufSIsIk1ENU9mQm9keSI6ImQxM2QyOWE5MGQxNWFjY2RkYThkYTc3NGY1MTI1N2NjIiwiTWVzc2FnZUlkIjoiNDU2MDcwNjQtMTk1Zi00YWYwLWEyNDMtZWVkZGIzNWM1MmJkIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJQNE03ZSttZFRzYTZGOVVBMXA3MVJraWx5UUw5aGhvemdhMzVmdmtyNmNCek1sZGRhOVdxaGQ1Q2hVblFNeENNa3VhR3F1L3pRSGd1cGdjdUJET2FlMUdacG9oYWhkekdsc1hFRndFZTZRZzJHendGZjdWZHdhenE5MUttZXA2aGtTSitRTnp3dURKMSs2Q2l2eDI0aWdycktqOGtwaWZCV0s5cERYRCtsd2c3YkZIeFlSQ0tubFo1dmV3aGpPMi83VlRFVkdRbmR6UkRDN1JFYnRCdnlHQWY5ZWNJOENpSUtMSnZNczEwMWxlUndoWXd2b1NmRFI2KzVvcnBQQVhlQ2JHeHlkRHRVczZKeVBsN3VqQUcxaUlndCtxVDNSclRLSEtIeHZDVEIvcTQyYlByWGl1UnJGQ0UwcTYrSmhZQVFXRUZUemVobm5mQ2RTZ1UzREZQbWhkdUdydS9zOG1jRE03SGZqVXMyVXR2d2x3R1NBaUsybFJKWTUvM0gzSG9Cc00vSmd5aFZ2Mk1XSkFFTGJ4ZFl3PT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"b561e1b34300c6a6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"983\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmlZZlhmM0o4dk5NYW45aTVVODhFa2pldi84OHZSK3NMRloyVElPdDFjcUZzSjBjQlAwYnFmcDdLSVczcW44dW1IZTVrWUlIOU5pOE40SHBuWVN1dUlYVVV5ZTRjcktKSkJQV21uTldUdUdyYTB1L3A0MjJEWGljbEtnYzhOUFZtQVJuNGhrTVJTbm5SMUpoNUd3TlRlaVZmTkxGZnUyOWxjQmUrNnJRR3djNitzUmN1KzdSWU1aQ1dwNkk0Vy9nMjlGUXljeGZrTEp2Y0ZncTdZL0ExYU1pTDFzeVhQc29aY0pBdkVFRkl3bWp6NGd4eFpiNks5VFpaY2ZsSWlVT0ZRZVR1SW05Y3dvcy80Tlg2ZjFFNnFWZkJsQ0tTL0RlYTFQaXpuWDFZSHBtVW93S0FUZlh1SGZ6TkJxODJqcUJIRkZtMWQ1NVU4UklOUXlFSjdXcVoyV016QUZVUjltQm03eWJDeDNHdWJiZnhiU0pIaERjY1g2L0xsNENpV3RSNnEvOVJBNVFmVnUyS2FCNUN4U0JSOFE9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJJZ0ErTjVjSGtHTlVIR0x4SDNyd0FaYWxaWVNZbm9wQ2tmT2xzcEhVamluMlc2bFRvZUxUWm9IeENOVUN2Q1IvQWk4aXZwUXhkbGhCUjFaQnVHbEJhR0w5dFZBQTl4V3NGcVBBRWtBQ1NVMTJqdGxNellOTHVCTHhvY0N5RWVWQUViTHczbTZ5aDZkOERHRm5HbjIvM0dseThDRStNMnpoQzFKRWUyamJ6dDNjQlpnemxZSVZCSGYxVTR0cmFYUGZMVjdaNU5PaGppRUJUdHdUc1ZYL21JNklsTXkyTEZBbTQrNVhlbTYyN0lrMStqeERPVHNsNnBVclFJQkNmcm1tQjR3c2FmK3E2Wllxbmg1T28wVS91c0kzVWlOZ1JnUUhtL2g0QVVSTWdJRlZFQThxa1ZYbG5OeDRvZ2NTVUUvQXNQOGEvdll4d0J5RFVPUEZCWkgyY1Vua3hCRlplMFVYVnlHeWxOSXRVRHRheGNTUlVHS2VDOW13Z1FnL3ArbUVsZTkrNTBvcHdCUjNXYWRQQTZvMlVRPT0ifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljRG91YmxlQWNrLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"34dbc014-8458-5ef0-9b33-a2229c8b5099\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjEifSx7IklkIjoiMCJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"33e1f69a3152a477\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"983\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmlZZlhmM0o4dk5NYW45aTVVODhFa2pldi84OHZSK3NMRloyVElPdDFjcUZzSjBjQlAwYnFmcDdLSVczcW44dW1IZTVrWUlIOU5pOE40SHBuWVN1dUlYVVV5ZTRjcktKSkJQV21uTldUdUdyYTB1L3A0MjJEWGljbEtnYzhOUFZtQVJuNGhrTVJTbm5SMUpoNUd3TlRlaVZmTkxGZnUyOWxjQmUrNnJRR3djNitzUmN1KzdSWU1aQ1dwNkk0Vy9nMjlGUXljeGZrTEp2Y0ZncTdZL0ExYU1pTDFzeVhQc29aY0pBdkVFRkl3bWp6NGd4eFpiNks5VFpaY2ZsSWlVT0ZRZVR1SW05Y3dvcy80Tlg2ZjFFNnFWZkJsQ0tTL0RlYTFQaXpuWDFZSHBtVW93S0FUZlh1SGZ6TkJxODJqcUJIRkZtMWQ1NVU4UklOUXlFSjdXcVoyV016QUZVUjltQm03eWJDeDNHdWJiZnhiU0pIaERjY1g2L0xsNENpV3RSNnEvOVJBNVFmVnUyS2FCNUN4U0JSOFE9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJJZ0ErTjVjSGtHTlVIR0x4SDNyd0FaYWxaWVNZbm9wQ2tmT2xzcEhVamluMlc2bFRvZUxUWm9IeENOVUN2Q1IvQWk4aXZwUXhkbGhCUjFaQnVHbEJhR0w5dFZBQTl4V3NGcVBBRWtBQ1NVMTJqdGxNellOTHVCTHhvY0N5RWVWQUViTHczbTZ5aDZkOERHRm5HbjIvM0dseThDRStNMnpoQzFKRWUyamJ6dDNjQlpnemxZSVZCSGYxVTR0cmFYUGZMVjdaNU5PaGppRUJUdHdUc1ZYL21JNklsTXkyTEZBbTQrNVhlbTYyN0lrMStqeERPVHNsNnBVclFJQkNmcm1tQjR3c2FmK3E2Wllxbmg1T28wVS91c0kzVWlOZ1JnUUhtL2g0QVVSTWdJRlZFQThxa1ZYbG5OeDRvZ2NTVUUvQXNQOGEvdll4d0J5RFVPUEZCWkgyY1Vua3hCRlplMFVYVnlHeWxOSXRVRHRheGNTUlVHS2VDOW13Z1FnL3ArbUVsZTkrNTBvcHdCUjNXYWRQQTZvMlVRPT0ifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljRG91YmxlQWNrLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0ae53306-be7c-5c45-b576-5130a6aff22c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjEifSx7IklkIjoiMCJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"5c1cce841570d072\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1491\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmlZZlhmM0o4dk5NYW45aTVVODhFa2pldi84OHZSK3NMRloyVElPdDFjcUZzSjBjQlAwYnFmcDdLSVczcW44dW1IZTVrWUlIOU5pOE40SHBuWVN1dUlYVVV5ZTRjcktKSkJQV21uTldUdUdyYTB1L3A0MjJEWGljbEtnYzhOUFZtQVJuNGhrTVJTbm5SMUpoNUd3TlRlaVZmTkxGZnUyOWxjQmUrNnJRR3djNitzUmN1KzdSWU1aQ1dwNkk0Vy9nMjlGUXljeGZrTEp2Y0ZncTdZL0ExYU1pTDFzeVhQc29aY0pBdkVFRkl3bWp6NGd4eFpiNks5VFpaY2ZsSWlVT0ZRZVR1SW05Y3dvcy80Tlg2ZjFFNnFWZkJsQ0tTL0RlYTFQaXpuWDFZSHBtVW93S0FUZlh1SGZ6TkJxODJqcUJIRkZtMWQ1NVU4UklOUXlFSjdXcVoyV016QUZVUjltQm03eWJDeDNHdWJiZnhiU0pIaERjY1g2L0xsNENpV3RSNnEvOVJBNVFmVnUyS2FCNUN4U0JSOFE9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfSx7IklkIjoiMSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCSWdBK041Y0hrR05VSEdMeEgzcndBWmFsWllTWW5vcENrZk9sc3BIVWppbjJXNmxUb2VMVFpvSHhDTlVDdkNSL0FpOGl2cFF4ZGxoQlIxWkJ1R2xCYUdMOXRWQUE5eFdzRnFQQUVrQUNTVTEyanRsTXpZTkx1Qkx4b2NDeUVlVkFFYkx3M202eWg2ZDhER0ZuR24yLzNHbHk4Q0UrTTJ6aEMxSkVlMmpienQzY0JaZ3psWUlWQkhmMVU0dHJhWFBmTFY3WjVOT2hqaUVCVHR3VHNWWC9tSTZJbE15MkxGQW00KzVYZW02MjdJazEranhET1RzbDZwVXJRSUJDZnJtbUI0d3NhZitxNlpZcW5oNU9vMFUvdXNJM1VpTmdSZ1FIbS9oNEFVUk1nSUZWRUE4cWtWWGxuTng0b2djU1VFL0FzUDhhL3ZZeHdCeURVT1BGQlpIMmNVbmt4QkZaZTBVWFZ5R3lsTkl0VUR0YXhjU1JVR0tlQzltd2dRZy9wK21FbGU5KzUwb3B3QlIzV2FkUEE2bzJVUT09IiwiVmlzaWJpbGl0eVRpbWVvdXQiOjF9LHsiSWQiOiIyIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJQNE03ZSttZFRzYTZGOVVBMXA3MVJraWx5UUw5aGhvemdhMzVmdmtyNmNCek1sZGRhOVdxaGQ1Q2hVblFNeENNa3VhR3F1L3pRSGd1cGdjdUJET2FlMUdacG9oYWhkekdsc1hFRndFZTZRZzJHendGZjdWZHdhenE5MUttZXA2aGtTSitRTnp3dURKMSs2Q2l2eDI0aWdycktqOGtwaWZCV0s5cERYRCtsd2c3YkZIeFlSQ0tubFo1dmV3aGpPMi83VlRFVkdRbmR6UkRDN1JFYnRCdnlHQWY5ZWNJOENpSUtMSnZNczEwMWxlUndoWXd2b1NmRFI2KzVvcnBQQVhlQ2JHeHlkRHRVczZKeVBsN3VqQUcxaUlndCtxVDNSclRLSEtIeHZDVEIvcTQyYlByWGl1UnJGQ0UwcTYrSmhZQVFXRUZUemVobm5mQ2RTZ1UzREZQbWhkdUdydS9zOG1jRE03SGZqVXMyVXR2d2x3R1NBaUsybFJKWTUvM0gzSG9Cc00vSmd5aFZ2Mk1XSkFFTGJ4ZFl3PT0iLCJWaXNpYmlsaXR5VGltZW91dCI6MX1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8700eda6-7089-5d74-ab2e-8f90685aa31d\"\n          ]\n        },\n        \"Body\": \"eyJGYWlsZWQiOlt7IkNvZGUiOiJSZWNlaXB0SGFuZGxlSXNJbnZhbGlkIiwiSWQiOiIxIiwiTWVzc2FnZSI6Ik1lc3NhZ2UgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgdmlzaWJpbGl0eSB0aW1lb3V0IGNoYW5nZSIsIlNlbmRlckZhdWx0Ijp0cnVlfSx7IkNvZGUiOiJSZWNlaXB0SGFuZGxlSXNJbnZhbGlkIiwiSWQiOiIwIiwiTWVzc2FnZSI6Ik1lc3NhZ2UgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgdmlzaWJpbGl0eSB0aW1lb3V0IGNoYW5nZSIsIlNlbmRlckZhdWx0Ijp0cnVlfV0sIlN1Y2Nlc3NmdWwiOlt7IklkIjoiMiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"c81a7e3ae1ac127e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fca0c37c-ebfb-560a-9c98-a14af328d863\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d8796a6966bbfce5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7f0cf594-f376-5a0d-8b67-97a2eba5f464\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"dd6956508dba5caf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ef90ca83-3472-59b4-a454-a8b52ca637dd\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"07a94dc19f8d962f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1710\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"46febcec-361b-5d2e-a1a8-deda2ecf1347\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjI3MjYzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIyIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjY5MjkifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJjMDIyNTRiOC0yNzZjLTVmNGUtOWQwMy0zNjhlM2ZiZTVkMjVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRG91YmxlQWNrLXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCIwXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MjYuODg4WlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJTUjdwZ0hoZWV2SkZVd1g0SjlYbWgyS0QrSk5LZ0lraDZJL0xkS0tySXVZR3pQdkdORlVtK0s4NzFveUw2djUvVzJGWlRkVm5nb1JIa0dhdUY4OS9WdkRBTDd4eWRyWlFhcVRRZnZnTmpkWm9rRk5wbWp6bGpub21MajZWcVV1N0ExNGRVUkoyQWRZbytWNUU0V0JQcnVCaFdoaDF2NTBiWHlZMkU5d2tRZkU5OVk2cFo3TW1HYS92YnlBZGRKd1VvN1RUa1JQb09SZS9waE01THZqSnFGTzFrbWNSR2d3c3NaNEh6Q1RPMWd3bS9CZllFYmk1U3pIc3NpOGxpNVozTGRSMGlPdW5PQjFjWEVpa3B5ZDh6V0JEYjRBU0FDTCtaSDd6S2QybHljenY5RWJhS2dkOE41di9aQ04xSzl2ZWhLd0M1N1hlUnI0VnVBSTlJalF0bmc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0RvdWJsZUFjay10b3AtMTowMDJmOTZkZS0xODIxLTQ5ZjUtOTc1YS0xOTJiNjAzNjU5NTRcIlxufSIsIk1ENU9mQm9keSI6ImQxM2QyOWE5MGQxNWFjY2RkYThkYTc3NGY1MTI1N2NjIiwiTWVzc2FnZUlkIjoiNDU2MDcwNjQtMTk1Zi00YWYwLWEyNDMtZWVkZGIzNWM1MmJkIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJKVHdOdVlVdlZTd2xWZU41UVZ6K1ltaHgxS1JwcHBTVGNuMHJtRkhDeDBnY0NBanN5a0E3WUs2dEtac2pJd0ZtMnFhaStXWklFZXNvS2tSbngxYnp3RXltUXZzeWlodlpXYlZJQ0ZtU1dYSk9zb0dnNEljTGFwSmErYlE4a1JoeG9zbmtEbzA1WHVyL0FCay9JMWM1aGJaeTZQZzVwMDhMSlZEd2o1NWF3TFlTb2E5VkgxOEYrT283VTN1a0xaWkZmblFxQVFnN3Y5Z3dack9WVXZSRVE2cDVvQk9yRitWZTd6c3N5WkxIK3JZL29ZTURQWmpSOENtZDkvMXozU29lYlo1aWszV3lWaExxMVFKVUJFNWZxM0syVWQ1SmU4a0xtcjZYV05zL3F4KzQvZlJ0ejByYzBHMGhJWTFqWnZWVThLYmVBZFpJOWtUcU5oaWJtSEpyNGk2N1BvZkRhUzZyRkU2eG4vWlg3RGtPYlI4Y0VEbVdteXd4VlJaWlJxUzdwTzJudjU4enhaNE1qUlVBcC9Ta2hnPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"13f35d4e563ee232\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"161\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0RvdWJsZUFjay10b3AtMSUzQTAwMmY5NmRlLTE4MjEtNDlmNS05NzVhLTE5MmI2MDM2NTk1NCZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2f696ab0-c28f-511c-b1a3-0886da5b0377\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4yZjY5NmFiMC1jMjhmLTUxMWMtYjFhMy0wODg2ZGE1YjAzNzc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"384f60137b3a6331\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"369817af-e399-5d57-bb8b-7599fb4d333e\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9c9512a7a0b458f7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"115\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljRG91YmxlQWNrLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cd212763-9717-5767-ac37-45558fc3450c\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jZDIxMjc2My05NzE3LTU3NjctYWMzNy00NTU1OGZjMzQ1MGM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestErrorOnReceiveFromClosedSubscription.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2cCA1yGQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9705d681fd309a16\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"357\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8858cc18-cc2d-5f1e-97d3-ae2ed4f1f0b9\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD44ODU4Y2MxOC1jYzJkLTVmMWUtOTdkMy1hZTJlZDRmMWYwYjk8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"c5e8eec3daff7232\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"66\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7d3ce990-6bac-5b1d-a4d5-8ba6737053c8\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"fae7f3b072a8ac69\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"144\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"115\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3b182fe6-a851-5c2f-841f-4dd0b08d64fa\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"a4e223d663195428\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"514\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2a605884-e569-53ea-bee5-3ab2fdb56b3f\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0d6bdb00c395183a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"258\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"400\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"edccac5c-aaa2-586a-a59e-ce6ab27ff7cd\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xOmViZjY5NDAxLWFiZGQtNGEzNi1hMjE5LTNjZmIxNThlYTdkMTwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5lZGNjYWM1Yy1hYWEyLTU4NmEtYTU5ZS1jZTZhYjI3ZmY3Y2Q8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"f7a6de5c94c84850\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"188\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSUzQWViZjY5NDAxLWFiZGQtNGEzNi1hMjE5LTNjZmIxNThlYTdkMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7eab00fd-733e-5eb6-8310-62cb6be3f111\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD43ZWFiMDBmZC03MzNlLTVlYjYtODMxMC02MmNiNmJlM2YxMTE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"5231c2f4dfb7161e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"31e15182-b939-5e6a-b68f-33b4a1e4d6bf\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"32a6ea57ce31ad48\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"142\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljRXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"59ba6831-8624-541f-9088-0a079ef9abb8\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD41OWJhNjgzMS04NjI0LTU0MWYtOTA4OC0wYTA3OWVmOWFiYjg8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestErrorOnSendToClosedTopic.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2VA9S8oQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9c6c0baa020e2f9b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNFcnJvck9uU2VuZFRvQ2xvc2VkVG9waWMtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d86b9d8d-8274-50cb-ac6c-ffbb9aa15d66\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljRXJyb3JPblNlbmRUb0Nsb3NlZFRvcGljLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5kODZiOWQ4ZC04Mjc0LTUwY2ItYWM2Yy1mZmJiOWFhMTVkNjY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3b76ec15da4cbf81\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"130\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljRXJyb3JPblNlbmRUb0Nsb3NlZFRvcGljLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"50f98775-99de-5eb8-800c-e543810b3315\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD41MGY5ODc3NS05OWRlLTVlYjgtODAwYy1lNTQzODEwYjMzMTU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestMetadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2dJVGm0AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4fc76a4e42945540\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNNZXRhZGF0YS10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"329\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f8dcba84-f651-511e-8eb5-d8b2ee8ccf9e\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTWV0YWRhdGEtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmY4ZGNiYTg0LWY2NTEtNTExZS04ZWI1LWQ4YjJlZThjY2Y5ZTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"08b66cc5b9b27262\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b795fce1-122a-5f0c-b6b5-9ed70af4f51d\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"1e26b63e76e6e8cf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"116\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"71145bc7-290c-5aab-81f4-39f131d2a0ba\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"68fb70729fd598d1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"458\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTWV0YWRhdGEtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"74ac2684-7db6-5aed-8103-44b2656840fc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"85ca2993fe0042e2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"202\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY01ldGFkYXRhLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY01ldGFkYXRhLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"372\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a1571e25-f3c9-548a-8f8d-7c13eb174a0a\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTWV0YWRhdGEtdG9wLTE6YzlkMDUyZWUtOTQ5Zi00Yjk0LTg4ODQtMjQ5ZjlhNjc3NGI3PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmExNTcxZTI1LWYzYzktNTQ4YS04ZjhkLTdjMTNlYjE3NGEwYTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"2dd01c2d9312e6ea\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"3730\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjEuQ0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0286f128-04ea-519e-8473-931e1c347f1e\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjg4YTAzYzUwLTRjNzUtNTFjZC1iZjE1LTVlNjY1NGFiZGY0ZDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjAyODZmMTI4LTA0ZWEtNTE5ZS04NDczLTkzMWUxYzM0N2YxZTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3ab9d9b2dee403cb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"3283\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"40ac3fe8-6270-5085-b0a6-5dde7aae5a94\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjM4NzcwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzg3MTUifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI4OGEwM2M1MC00Yzc1LTUxY2QtYmYxNS01ZTY2NTRhYmRmNGRcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTWV0YWRhdGEtdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MzguNjgxWlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJCRnJwWlpYbVpCRjZ6cTJCYVQrdkcyalh6djYzU2lZMzNDNkRRQ0tjOGppeHVUVTZPbUJ4QUc0aWtWSkFZYmxFbjRTbGREWVphazJnSUFQWU1YaWNDM3kvc1pDTm15dGZJSWpWN1dXTGJZMEQ2REtRbHczOFFKZ216WlpFUWhobVIxV0dtd0c2ZGtUeStzRkUyZXNwelJjNmRVY2ZhUUNLWTJpTmdnKytFM3BpdUR5aW5vRGZ6WXFvNDlwK2I4WmNrWE13ZExmbSs3WitGQ1FIRmNDS2dGeDF5cXhMQ0owMk5OR3kvd0EyRzRjWk9jYWEzczl6SEh1OFFYMFdkYUJmci9FZXk4VEdOZElhTDY0TkY0dzVzcHdzN3BackRLQUNSL2hPQVQvYXJ4VFkwQ3UzWm96RjVscVdkanoxekJzclVpa1NvOXlDMlF3aEEvVkV6YkdOamc9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY01ldGFkYXRhLXRvcC0xOmM5ZDA1MmVlLTk0OWYtNGI5NC04ODg0LTI0OWY5YTY3NzRiN1wiLFxuICBcIk1lc3NhZ2VBdHRyaWJ1dGVzXCIgOiB7XG4gICAgXCJfXzB4MmVfX19fMHgyZV9fX18weDVjX19mb29fXzB4NWNfX19fMHg1Y19fYmFyX18weDVjX19fXzB4NWNfX19fMHg1Y19fYmF6XCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIuLiU1Q2ZvbyU1QyU1Q2JhciU1QyU1QyU1Q2JhelwifSxcbiAgICBcIl9fMHgxMF9fX18weDExX19fXzB4MTJfX19fMHgxM19fX18weDE0X19fXzB4MTVfX19fMHgxNl9fX18weDE3X19fXzB4MThfX19fMHgxOV9fX18weDFhX19fXzB4MWJfX19fMHgxY19fX18weDFkX19fXzB4MWVfX19fMHgxZl9fXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTclMTglMTklMUElMUIlMUMlMUQlMUUlMUZcIn0sXG4gICAgXCJfXzB4MmVfX19fMHgyZV9fX18weDVjX19mb29fXzB4NWNfXy5fXzB4MmVfX19fMHg1Y19fYmFyX18weDVjX18uX18weDJlX19fXzB4NWNfXy5fXzB4MmVfX19fMHg1Y19fYmF6Ll9fMHgyZV9fX18weDVjX19cIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIi4uJTVDZm9vJTVDLi4lNUNiYXIlNUMuLiU1Qy4uJTVDYmF6Li4lNUNcIn0sXG4gICAgXCJfXzB4M2FfX19fMHgzYl9fX18weDNjX19fXzB4M2RfX19fMHgzZV9fX18weDNmX19cIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjolM0IlM0M9JTNFJTNGXCJ9LFxuICAgIFwiX18weDBfX19fMHgxX19fXzB4Ml9fX18weDNfX19fMHg0X19fXzB4NV9fX18weDZfX19fMHg3X19fXzB4OF9fX18weDlfX19fMHhhX19fXzB4Yl9fX18weGNfX19fMHhkX19fXzB4ZV9fX18weGZfX1wiIDoge1wiVHlwZVwiOlwiU3RyaW5nXCIsXCJWYWx1ZVwiOlwiJTAwJTAxJTAyJTAzJTA0JTA1JTA2JTA3JTA4JTA5JTBBJTBCJTBDJTBEJTBFJTBGXCJ9LFxuICAgIFwiX18weDJlX19fXzB4MmVfX19fMHgyZl9fZm9vX18weDJmX18uX18weDJlX19fXzB4MmZfX2Jhcl9fMHgyZl9fLl9fMHgyZV9fX18weDJmX18uX18weDJlX19fXzB4MmZfX2Jhei5fXzB4MmVfX19fMHgyZl9fXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIuLiUyRmZvbyUyRi4uJTJGYmFyJTJGLi4lMkYuLiUyRmJhei4uJTJGXCJ9LFxuICAgIFwiX18weDIwX19fXzB4MjFfX19fMHgyMl9fX18weDIzX19fXzB4MjRfX19fMHgyNV9fX18weDI2X19fXzB4MjdfX19fMHgyOF9fX18weDI5X19fXzB4MmFfX19fMHgyYl9fX18weDJjX18tLl9fMHgyZl9fXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIlMjAlMjElMjIlMjMkJTI1JiUyNyUyOCUyOSUyQSslMkMtLiUyRlwifSxcbiAgICBcIjEyMzQ1XCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIxMjM0NVwifSxcbiAgICBcIl9fMHg0MF9fXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCJAXCJ9LFxuICAgIFwiX18weDViX19fXzB4NWNfX19fMHg1ZF9fX18weDVlX19fXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIlNUIlNUMlNUQlNUVfXCJ9XG4gIH1cbn0iLCJNRDVPZkJvZHkiOiIzNjVhZGY4ZWI4MWQ4Y2U3NTUzZjQzNDIwYjNlYjk2OSIsIk1lc3NhZ2VJZCI6ImNlYTQ1MWRjLTc1ODgtNDQ1My05ZjcwLWQ4NTJkYjk3OGRlMCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCQTlVNUxlQS83OUhvNXZIZ3hvaDdHaW11NE5YTm00MnRSdGdCT25VUEN3M1FQQm92cXlnYUl3aWYwcFN2Y2xjRSthVktYTzFLWWt0Nng4eTIzZ2UrZ0RxZFY5MkFqQVkwdzZURktZbGlXSnZuQzZVaFloQmRXSjNSR212NTVXVkhWVUE2Y1UvTlBRQ3BGbjFEelNkN0FVdzZUYWRodlBRUEp4UG5QSDJydlptc1Z1UE5iNlIwbUlNeDJoMklJczR2d0lMNlJKV0xGbHNpWTVDK3lhSjdZRnRPYTQxUDV1SlhwOFVRUEUxNUVTRjVqdFBiUFRsZ0p2bTRxYUlNeEwzOFBaalk4YUxkbWY4RlVrUThxdUZOUmxVajM3S0NmaEhjc2RMcm0yWDBuWGJnSksvY2xTWTJqaURSREQ5Y3doS0sxaHZGU1V6c1J5OWZnd2ZqZi9oRzRQbGdlU0lka1pUNFJvTzh2QklsVlhWQ0diQld3SUczam5xc2ZhU1k5bjJNYkQ1UnprcVp6ZGZOZG5HYnQ1d1VkQT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"40967c1e95fbfcc5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"540\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkE5VTVMZUEvNzlIbzV2SGd4b2g3R2ltdTROWE5tNDJ0UnRnQk9uVVBDdzNRUEJvdnF5Z2FJd2lmMHBTdmNsY0UrYVZLWE8xS1lrdDZ4OHkyM2dlK2dEcWRWOTJBakFZMHc2VEZLWWxpV0p2bkM2VWhZaEJkV0ozUkdtdjU1V1ZIVlVBNmNVL05QUUNwRm4xRHpTZDdBVXc2VGFkaHZQUVBKeFBuUEgycnZabXNWdVBOYjZSMG1JTXgyaDJJSXM0dndJTDZSSldMRmxzaVk1Qyt5YUo3WUZ0T2E0MVA1dUpYcDhVUVBFMTVFU0Y1anRQYlBUbGdKdm00cWFJTXhMMzhQWmpZOGFMZG1mOEZVa1E4cXVGTlJsVWozN0tDZmhIY3NkTHJtMlgwblhiZ0pLL2NsU1kyamlEUkREOWN3aEtLMWh2RlNVenNSeTlmZ3dmamYvaEc0UGxnZVNJZGtaVDRSb084dkJJbFZYVkNHYkJXd0lHM2pucXNmYVNZOW4yTWJENVJ6a3FaemRmTmRuR2J0NXdVZEE9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNNZXRhZGF0YS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ad058c8c-76d9-5df7-af81-eeba6e07e7e6\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"1e2c6e4689e63965\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2484\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjEuQ0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"96746cf5-cddc-5caa-9c03-0ec3d502422a\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmIyMzI1Y2Q4LWM3MjAtNWQ5Ni1iMTJkLTNlZWVkZmZlNDMxNjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjk2NzQ2Y2Y1LWNkZGMtNWNhYS05YzAzLTBlYzNkNTAyNDIyYTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"769ed6fcb7221f34\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2506\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"79f3d765-6e63-5666-8a3b-b55376bd1c77\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjM4OTE5IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzg4NzUifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJiMjMyNWNkOC1jNzIwLTVkOTYtYjEyZC0zZWVlZGZmZTQzMTZcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTWV0YWRhdGEtdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcImhlbGxvIHdvcmxkXCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MzguODQyWlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJhOE5JRkt5SWtrVEVnTE1ra3d4RExLQ3dXZGJIR3JlOUhSWTl1TXdRQkoyQzlyYlRCV1E0V2xnYzBvZmtFNml6UmF4cUUrZTBnam14TjFDM3gzRnNMUVY1aWpDYU5Cd2U4SUNwK3hUdTlZRUMxWFBHNUdDb3liSlpJS3FNRGo0bGZ5WnFvQzhKSy9oc1plaGYwV2p5b1lHR09IQnQxOWw2V0FZVmN3bE1TcXRJRjI3L29BekRiL3B4UDl6UU1taUlxWkM2VS92TnJUc2lwMXNQMjRiTklpNVBkTGZtZUFiSDZXMS9MNExZUWYyZXFvZ3JuOVNOUUtoeFdQL2Jncy9HVzZxVndCNC9mRklNZ2dlaThyamxLd3NaY3FheWhOL2V3SUtETXJKY25va3o4YjB2bVN5NFlZT0hRakZWZ1hRRk5WdW05NDRHWGg1VnJOQVhibTBYTlE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY01ldGFkYXRhLXRvcC0xOmM5ZDA1MmVlLTk0OWYtNGI5NC04ODg0LTI0OWY5YTY3NzRiN1wiLFxuICBcIk1lc3NhZ2VBdHRyaWJ1dGVzXCIgOiB7XG4gICAgXCJmb29fXzB4MjBfX2Jhcl9fMHgyMF9fYmF6XCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCJmb28lMjBiYXIlMjBiYXpcIn0sXG4gICAgXCJmb29fXzB4MjJfX2Jhcl9fMHgyMl9fYmF6XCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCJmb28lMjJiYXIlMjJiYXpcIn0sXG4gICAgXCJmb29fXzB4MmZfX2Jhcl9fMHgyZl9fYmF6XCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCJmb28lMkZiYXIlMkZiYXpcIn0sXG4gICAgXCJfXzB4N2JfX19fMHg3Y19fX18weDdkX19fXzB4N2VfX19fMHg3Zl9fXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIlN0IlN0MlN0R+JTdGXCJ9LFxuICAgIFwiZm9vX18weDVjX19iYXJfXzB4NWNfX2JhelwiIDoge1wiVHlwZVwiOlwiU3RyaW5nXCIsXCJWYWx1ZVwiOlwiZm9vJTVDYmFyJTVDYmF6XCJ9LFxuICAgIFwiX18weDYwX19cIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIiU2MFwifSxcbiAgICBcIl9fMHgyNjNhX19fXzB4MjYzYV9fX18weDI2M2FfX1wiIDoge1wiVHlwZVwiOlwiU3RyaW5nXCIsXCJWYWx1ZVwiOlwiJUUyJTk4JUJBJUUyJTk4JUJBJUUyJTk4JUJBXCJ9LFxuICAgIFwiZm9vX18weDJmX19fXzB4MmZfX2Jhcl9fMHgyZl9fX18weDJmX19fXzB4MmZfX2JhelwiIDoge1wiVHlwZVwiOlwiU3RyaW5nXCIsXCJWYWx1ZVwiOlwiZm9vJTJGJTJGYmFyJTJGJTJGJTJGYmF6XCJ9XG4gIH1cbn0iLCJNRDVPZkJvZHkiOiJjNGI0MTE5Y2E2MzE3OTJjZTNjMzJkZDAwNDdlOWY3NSIsIk1lc3NhZ2VJZCI6IjhhYzllYWZmLWRiNjctNGFhNi1iMWMxLTMxODRkNmVlMTM3MyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCV0l6V0NSYTNXVUxKT0tad2NZbUlHbmpjdDF3MG8vN2drSEkrZmZ2ZmRhekZiNUlPUm0vUzU0OVh1VE5WUnZEV2Nrbm9Qc0tia2U0ckVNOXU4dGxIbTVlV2l1c1FtZHVwckNianhIRklIbWtOMXdkY2w3d09UdVI5NlQwejg4Z003K1BCd2o5TEhRYUcwUTVVTTJaYVM1aFhkK2hqcVlxeWJGcFIyMG0xNGFTQkdqSWhJY05TSW8vZTRQYllTeEQ5WkZjZzBFT3ZZb1g2ckFnWngra2tXeE9LOXNKQnlOTk5tTmtrelUrdTFhV2cwb01GREdvMmNkc0lreWxmamRGOVVCUUttZHNMR3ltSGg5UWU1YithaGZQbTM5TWVOV2dzSnVGSHBTRWJKeDlXSllWN29EZVVORkUyZkZqajFUUDFkNE9GM0paQlhnak1JNGJkZjl5Y09GWk5LM2t3U1p3bEhNMlppME5MVUNIRVdKSjlHT1IxOFlDMlBtakQzMmd4NFFSTTIyODNSeU5jRnRoTWxsQm9VZz09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d38c740c9e3b2375\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"540\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQldJeldDUmEzV1VMSk9LWndjWW1JR25qY3QxdzBvLzdna0hJK2ZmdmZkYXpGYjVJT1JtL1M1NDlYdVROVlJ2RFdja25vUHNLYmtlNHJFTTl1OHRsSG01ZVdpdXNRbWR1cHJDYmp4SEZJSG1rTjF3ZGNsN3dPVHVSOTZUMHo4OGdNNytQQndqOUxIUWFHMFE1VU0yWmFTNWhYZCtoanFZcXliRnBSMjBtMTRhU0JHakloSWNOU0lvL2U0UGJZU3hEOVpGY2cwRU92WW9YNnJBZ1p4K2trV3hPSzlzSkJ5Tk5ObU5ra3pVK3UxYVdnMG9NRkRHbzJjZHNJa3lsZmpkRjlVQlFLbWRzTEd5bUhoOVFlNWIrYWhmUG0zOU1lTldnc0p1RkhwU0ViSng5V0pZVjdvRGVVTkZFMmZGamoxVFAxZDRPRjNKWkJYZ2pNSTRiZGY5eWNPRlpOSzNrd1Nad2xITTJaaTBOTFVDSEVXSko5R09SMThZQzJQbWpEMzJneDRRUk0yMjgzUnlOY0Z0aE1sbEJvVWc9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNNZXRhZGF0YS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:38 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4984d8c1-6e36-564d-ad40-baf776e89c5c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"b00d3e360590a5d6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"160\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY01ldGFkYXRhLXRvcC0xJTNBYzlkMDUyZWUtOTQ5Zi00Yjk0LTg4ODQtMjQ5ZjlhNjc3NGI3JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a5b6f428-7f22-5a3a-9b9a-961e67fd44ba\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5hNWI2ZjQyOC03ZjIyLTVhM2EtOWI5YS05NjFlNjdmZDQ0YmE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"b5e80ce6bf6e4dc0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b32227ef-3c9a-5b66-a611-45d92445ac8f\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"95e119e6cdbdd479\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljTWV0YWRhdGEtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c516baaa-4231-575b-b171-d89c5aee59db\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jNTE2YmFhYS00MjMxLTU3NWItYjE3MS1kODljNWFlZTU5ZGI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestNack.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2MCUZYngAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5fde0d86714993b2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNOYWNrLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"325\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e93785c2-c608-55db-9dcf-e7f4dec4c65e\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay10b3AtMTwvVG9waWNBcm4+CiAgPC9DcmVhdGVUb3BpY1Jlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+ZTkzNzg1YzItYzYwOC01NWRiLTlkY2YtZTdmNGRlYzRjNjVlPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L0NyZWF0ZVRvcGljUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"7002c9a82dbf0aea\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"34\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8b005967-e39f-5cfb-8104-3b51fb5365d3\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n      }\n    },\n    {\n      \"ID\": \"c8e997dacd52d89f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"112\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"83\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e9d4422d-9800-5050-81b5-201b80ccc978\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY05hY2stc3ViLTEifX0=\"\n      }\n    },\n    {\n      \"ID\": \"474ba6d79cd6ea8a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"450\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay1zdWItMVwiXG5cdFx0fVxuXHRcdF1cblx0XHR9In0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljTmFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"291dab45-8786-583b-a217-c9739f4a9113\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d8394c97ec39e1c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"194\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY05hY2stc3ViLTEmUHJvdG9jb2w9c3FzJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljTmFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"368\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a2d9b353-95e9-5eb6-b821-d1658d256d33\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay10b3AtMTphYzUxN2Q1Zi02ZmI2LTQ0NmEtODExMS03ZmQ4NmUzYjk0MGQ8L1N1YnNjcmlwdGlvbkFybj4KICA8L1N1YnNjcmliZVJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+YTJkOWIzNTMtOTVlOS01ZWI2LWI4MjEtZDE2NThkMjU2ZDMzPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1N1YnNjcmliZVJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"75efdb0e0e53b9c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"433\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a87c2b5d-dd89-5317-b276-496bc5449092\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjQyNjIxM2Y3LTcwYWEtNWRiZi1hMmU1LTcxYzE2ODY3OGUzYTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmE4N2MyYjVkLWRkODktNTMxNy1iMjc2LTQ5NmJjNTQ0OTA5MjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"0b97cac62e1bc411\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"433\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"16798922-2fac-53ad-a5c5-eb143761f028\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmNiYmEwM2M5LTQwN2MtNTI4NS05ZmM5LTYxZmY1OGIxODEwMDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjE2Nzk4OTIyLTJmYWMtNTNhZC1hNWM1LWViMTQzNzYxZjAyODwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"b7c1723c1a1203fd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1786\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"78400465-78f1-54d2-b834-6653603cedfa\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjIxMzUyIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjEyNDIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI0MjYyMTNmNy03MGFhLTVkYmYtYTJlNS03MWMxNjg2NzhlM2FcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay10b3AtMVwiLFxuICBcIk1lc3NhZ2VcIiA6IFwiMFwiLFxuICBcIlRpbWVzdGFtcFwiIDogXCIyMDI2LTAzLTE5VDE1OjMwOjIxLjIwN1pcIixcbiAgXCJTaWduYXR1cmVWZXJzaW9uXCIgOiBcIjFcIixcbiAgXCJTaWduYXR1cmVcIiA6IFwiRW5IUFpKaFBxKzBJWGNkQjZHMUpLd2dqUlRxYmd0M0xrcktSeFZZOWp6SlpUVjI0dFovREZTNVVrWEplQ0w1bkE4eFlBZS9xeG9YOVlYNndjTDFzUDU5aWh6MXBKMm0zRlRoeXU5WUpZZVNGZ2UyM3lHQ3B3RSsrRkQvTk56UHBRM1JzSldjcnFnYURSSEtHdUt2S0lYWm9CNFNmL0lRdnQvQ3hoL3hhZjFCeVFaeXBBU2gwVmV6REZtUEkyY1JreVVoeVpIV2o2a0FiYS9BVTRRTlZqYXExS3IyTzJ2MEJ5dHR5R25KUm5DN3NMczFTSXZpRzBVRjQ0Z0UycmVDdzEzZ2dIalhnaXV4Z0wvUmlsUGVBRHNDTnRoN3BnUVlPc0ZIS1hKZWlENW9ENkZtSEExWUhlakc2eFZXd1YvZTdhUCt4aGJFYUIyVmY5TEh0OVBnU2NRPT1cIixcbiAgXCJTaWduaW5nQ2VydFVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS9TaW1wbGVOb3RpZmljYXRpb25TZXJ2aWNlLTc1MDZhMWUzNWIzNmVmNWE0NDRkZDFhOGU3Y2MzZWQ4LnBlbVwiLFxuICBcIlVuc3Vic2NyaWJlVVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLz9BY3Rpb249VW5zdWJzY3JpYmUmU3Vic2NyaXB0aW9uQXJuPWFybjphd3M6c25zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6U05TVG9waWNOYWNrLXRvcC0xOmFjNTE3ZDVmLTZmYjYtNDQ2YS04MTExLTdmZDg2ZTNiOTQwZFwiLFxuICBcIk1lc3NhZ2VBdHRyaWJ1dGVzXCIgOiB7XG4gICAgXCJhXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIwXCJ9XG4gIH1cbn0iLCJNRDVPZkJvZHkiOiJjMmRlMmQwZTA0Y2M0MzM4YzYwNjAwYWRhOWIxM2VjZiIsIk1lc3NhZ2VJZCI6Ijg2Njc4ZDhkLTI2YTctNGM5MS04MWU4LWQ4OTRjYThjNDQ0MyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCa0dKaGM0RGpEZDliQzFhSjZlVVh3N2JwNzM2UHZJSS9yUXorMll0RHpvNUNVTjE0SHVQY2RSQ2pPcFVEL2ZHYml3eUFkWkdXeS9kd3RzNzUzOG9FaEJoeEJEamhSNkIvbU5kVFBVS2xNMEVmekJ5WHhCZkV5Z1VYYnlUNWRrSmxPMlpSWGJWTHdudE1aQ1RoL2RCOVczcHhhTFNaa3VsNEd6c1NlZXVwdWZpUnhzbkxhdGJOY1oyTVFsOXdkVU1nOWMvaUNYa2pTYU9aQk01WENtMUJ2UzBBWkhuRWp4SUkwd2FIVnZWZWZPdjh6Q2ZBZGVEUFN5bHlNQnRKcXVLbzlUOWFEZVRyTXV4cVhYbVV2WnFITlpTR2grQTNQdVkvd2VCWHpJQkh0UVNmSTQxTUNrV2Yzb1JxWjBxZG1OZi9ZR3MwTzN0cU16UWNRLzFNakxmQ1BFOEtWbFRYSnlnSitCNytEU2VNTHpMUWlNNHFlczdRWmtYeWVieUJsWlNrUkxmV3RpNlZLdHNWUW5LS1FxOUV2Zz09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d85241fa4e0c64ac\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1786\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5b6db47e-e519-58c2-ba93-d648fdd4d1ea\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjIxNDIwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjEzMDMifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJjYmJhMDNjOS00MDdjLTUyODUtOWZjOS02MWZmNThiMTgxMDBcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay10b3AtMVwiLFxuICBcIk1lc3NhZ2VcIiA6IFwiMVwiLFxuICBcIlRpbWVzdGFtcFwiIDogXCIyMDI2LTAzLTE5VDE1OjMwOjIxLjI4MFpcIixcbiAgXCJTaWduYXR1cmVWZXJzaW9uXCIgOiBcIjFcIixcbiAgXCJTaWduYXR1cmVcIiA6IFwiUVhiRnlld0pSMDVQSTM0NWg4V0xqYkoxR1gzSGZpWXdpZ3NjRUtBVGViUG5XejV6bXg5SEN3VHUwTEY5R1BTbmdqcm80VUFIcTRwYi84SzlJT2lmNUhvaG5DM0FERnJKdU94K2pSbEVKSFFaYjVZVWxQd1Z6bkxBd0tUVXNhTWVZdWRMdzh4UFFFVmYwNlBIU05wQ2FGVmFjSm9wWEJFUStFa1JaOENpZEdnS0dRWit1N2VEWWxHNkdFVHRVWWxqOFF1UWpKVTcvOHZJQWNVdmwzaEl2L2Q4Wk5sRFBvOHplVGJUV2wvdzhwQUtZK28wRC9wOEkyUHo1OUlWdndtQ0FMRzRyODJtcENTQ0FranQ1RlJMa2pnS25neSs5ak5qZGgvVHV1eFJiNUxrdXBqd3h5MHRoT01mWE95a3NpSytPRUE4aTRnQS92T241Nzl5RUNGOERRPT1cIixcbiAgXCJTaWduaW5nQ2VydFVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS9TaW1wbGVOb3RpZmljYXRpb25TZXJ2aWNlLTc1MDZhMWUzNWIzNmVmNWE0NDRkZDFhOGU3Y2MzZWQ4LnBlbVwiLFxuICBcIlVuc3Vic2NyaWJlVVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLz9BY3Rpb249VW5zdWJzY3JpYmUmU3Vic2NyaXB0aW9uQXJuPWFybjphd3M6c25zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6U05TVG9waWNOYWNrLXRvcC0xOmFjNTE3ZDVmLTZmYjYtNDQ2YS04MTExLTdmZDg2ZTNiOTQwZFwiLFxuICBcIk1lc3NhZ2VBdHRyaWJ1dGVzXCIgOiB7XG4gICAgXCJhXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIxXCJ9XG4gIH1cbn0iLCJNRDVPZkJvZHkiOiJjOTkwODM2OGFiOGU4ZTczZDRlYTM0NWNkOTllYzRlNiIsIk1lc3NhZ2VJZCI6IjFjY2MyZWE5LTU0MmEtNDMwMS1iYTZhLTk5OTI3MTIwMmNiMCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCUHJ3ODN5Nnc0Y2dLcXFCVG9DMUtHVGc4MzFTRlpyYWJnak5WRnJ1YnMwNURFTnlNR09GTlFtMzhvRFRZanRlRmRnZmpNZWYvajQwb2VDVDg4VENWWDJxa2kvcHJ0NDJja2p3WVZPd1piMjRDQS85SDRjcmNHMUdnd0ZuZlhNQzVId2ZHc05MRy95WFE2dklCeDZadjZiTHd2bEtya1BSLzVDZnNIbWpVU0R3NFNZM3N5Mys2ZWlxQWVGM3R3R013NzhTcWxsQXNIZ0JxMmZOL0pDYWdJMXpMQXZhdWZsQlBwYVJoSWREVTQrNXVYdFRBdTdLRkxPTXB3akI3dXlOZUNQNWNscDFtdmpua0hsd1Y1MmQwS1N5RTVLd0RZV1hKU2ozK2Q2MThlR21wVEkyVVhoak1jQTJVcGZKamNJMExuVitGWnA3dUxnUUFKTWFBZTBSL25UTFZwWDBNakE1L2s4ejhFN3RneWgzaHRuckl3V01nYmdhR3BFaTEyaUFxSC92QlEyQ0VZSEE2UVMwUURYdkNqQT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"c3dfb12d7cf80318\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b105a4df-2876-54fd-a1e3-c6e930bbfdd5\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ae4c03ec3c468db5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"558\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmtHSmhjNERqRGQ5YkMxYUo2ZVVYdzdicDczNlB2SUkvclF6KzJZdER6bzVDVU4xNEh1UGNkUkNqT3BVRC9mR2Jpd3lBZFpHV3kvZHd0czc1MzhvRWhCaHhCRGpoUjZCL21OZFRQVUtsTTBFZnpCeVh4QmZFeWdVWGJ5VDVka0psTzJaUlhiVkx3bnRNWkNUaC9kQjlXM3B4YUxTWmt1bDRHenNTZWV1cHVmaVJ4c25MYXRiTmNaMk1RbDl3ZFVNZzljL2lDWGtqU2FPWkJNNVhDbTFCdlMwQVpIbkVqeElJMHdhSFZ2VmVmT3Y4ekNmQWRlRFBTeWx5TUJ0SnF1S285VDlhRGVUck11eHFYWG1VdlpxSE5aU0doK0EzUHVZL3dlQlh6SUJIdFFTZkk0MU1Da1dmM29ScVowcWRtTmYvWUdzME8zdHFNelFjUS8xTWpMZkNQRThLVmxUWEp5Z0orQjcrRFNlTUx6TFFpTTRxZXM3UVprWHllYnlCbFpTa1JMZld0aTZWS3RzVlFuS0tRcTlFdmc9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljTmFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0a3d290e-f075-52d8-9b82-4b38e8b89bf0\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"08df83b96e2c3845\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"558\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlBydzgzeTZ3NGNnS3FxQlRvQzFLR1RnODMxU0ZacmFiZ2pOVkZydWJzMDVERU55TUdPRk5RbTM4b0RUWWp0ZUZkZ2ZqTWVmL2o0MG9lQ1Q4OFRDVlgycWtpL3BydDQyY2tqd1lWT3daYjI0Q0EvOUg0Y3JjRzFHZ3dGbmZYTUM1SHdmR3NOTEcveVhRNnZJQng2WnY2Ykx3dmxLcmtQUi81Q2ZzSG1qVVNEdzRTWTNzeTMrNmVpcUFlRjN0d0dNdzc4U3FsbEFzSGdCcTJmTi9KQ2FnSTF6TEF2YXVmbEJQcGFSaElkRFU0KzV1WHRUQXU3S0ZMT01wd2pCN3V5TmVDUDVjbHAxbXZqbmtIbHdWNTJkMEtTeUU1S3dEWVdYSlNqMytkNjE4ZUdtcFRJMlVYaGpNY0EyVXBmSmpjSTBMblYrRlpwN3VMZ1FBSk1hQWUwUi9uVExWcFgwTWpBNS9rOHo4RTd0Z3loM2h0bnJJd1dNZ2JnYUdwRWkxMmlBcUgvdkJRMkNFWUhBNlFTMFFEWHZDakE9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljTmFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1b8d4fbf-a03f-51b6-9aca-2d89b8f2689e\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"1546a538f080aedc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"828da438-bc47-5719-968f-c60ea48a03a8\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"adf3880d561c3355\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"977d4de0-52ad-58f5-8e09-2fd64a631c44\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6b0535824a68eb0f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1786\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8fa50613-fbfe-51ac-ba99-6425e330151d\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjIxMzUyIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIyIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjEyNDIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI0MjYyMTNmNy03MGFhLTVkYmYtYTJlNS03MWMxNjg2NzhlM2FcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay10b3AtMVwiLFxuICBcIk1lc3NhZ2VcIiA6IFwiMFwiLFxuICBcIlRpbWVzdGFtcFwiIDogXCIyMDI2LTAzLTE5VDE1OjMwOjIxLjIwN1pcIixcbiAgXCJTaWduYXR1cmVWZXJzaW9uXCIgOiBcIjFcIixcbiAgXCJTaWduYXR1cmVcIiA6IFwiRW5IUFpKaFBxKzBJWGNkQjZHMUpLd2dqUlRxYmd0M0xrcktSeFZZOWp6SlpUVjI0dFovREZTNVVrWEplQ0w1bkE4eFlBZS9xeG9YOVlYNndjTDFzUDU5aWh6MXBKMm0zRlRoeXU5WUpZZVNGZ2UyM3lHQ3B3RSsrRkQvTk56UHBRM1JzSldjcnFnYURSSEtHdUt2S0lYWm9CNFNmL0lRdnQvQ3hoL3hhZjFCeVFaeXBBU2gwVmV6REZtUEkyY1JreVVoeVpIV2o2a0FiYS9BVTRRTlZqYXExS3IyTzJ2MEJ5dHR5R25KUm5DN3NMczFTSXZpRzBVRjQ0Z0UycmVDdzEzZ2dIalhnaXV4Z0wvUmlsUGVBRHNDTnRoN3BnUVlPc0ZIS1hKZWlENW9ENkZtSEExWUhlakc2eFZXd1YvZTdhUCt4aGJFYUIyVmY5TEh0OVBnU2NRPT1cIixcbiAgXCJTaWduaW5nQ2VydFVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS9TaW1wbGVOb3RpZmljYXRpb25TZXJ2aWNlLTc1MDZhMWUzNWIzNmVmNWE0NDRkZDFhOGU3Y2MzZWQ4LnBlbVwiLFxuICBcIlVuc3Vic2NyaWJlVVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLz9BY3Rpb249VW5zdWJzY3JpYmUmU3Vic2NyaXB0aW9uQXJuPWFybjphd3M6c25zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6U05TVG9waWNOYWNrLXRvcC0xOmFjNTE3ZDVmLTZmYjYtNDQ2YS04MTExLTdmZDg2ZTNiOTQwZFwiLFxuICBcIk1lc3NhZ2VBdHRyaWJ1dGVzXCIgOiB7XG4gICAgXCJhXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIwXCJ9XG4gIH1cbn0iLCJNRDVPZkJvZHkiOiJjMmRlMmQwZTA0Y2M0MzM4YzYwNjAwYWRhOWIxM2VjZiIsIk1lc3NhZ2VJZCI6Ijg2Njc4ZDhkLTI2YTctNGM5MS04MWU4LWQ4OTRjYThjNDQ0MyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCRWNqeitMdEY3KzVBRHNUMUFvdjFuWThCUHNEbEI0OXJDT3hsSTRKQnFWVytRQk9SS0JMcjM1ajNDT3lYM3IzUUFQc3lIaFVmaE0zelhINHNNelpYeFdrdGN1aTd1ZHZaTzVndnhUdStSdnZ1RVdkRmVKZmllSW90bHZxdGIvNnJtaE04dFhKb1orQWJWU1pTcE5ISHgzQkVqSXNvb1FvSjVMRlFUdTJ1NFlrbVZEVTZncmVDTzd1T05FNzNReHBrOSszd1lENXorL21LK1pucG43ZWlwdjMyYldaTWU5dmV5S0ppM01UM2VERkt2Vk1scjBMdURsaDlhM1FqRXNKMXFLODlUeVRDM0hZMytFSGZDRlBRa1JtcFZhVGxZdjZ2UFp3a0tvbFA2R3hobjhiL3RMU1ZhemV0ckxyc1lFTkdWWjZBUndHbkNuMnBMUmQ1VWsrNUozczBadkFueitjcHljb0RQenI0eWRsWWkvamlEdDhvaEZURWFWT3Q4blMycEtQZnlFbGZHSGRTL0VCS09YdGI0QT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4ab17d95f006ec6d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1786\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c169e034-66b7-5754-8fe7-82027e79e3e5\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjIxNDIwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIyIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMjEzMDMifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJjYmJhMDNjOS00MDdjLTUyODUtOWZjOS02MWZmNThiMTgxMDBcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTmFjay10b3AtMVwiLFxuICBcIk1lc3NhZ2VcIiA6IFwiMVwiLFxuICBcIlRpbWVzdGFtcFwiIDogXCIyMDI2LTAzLTE5VDE1OjMwOjIxLjI4MFpcIixcbiAgXCJTaWduYXR1cmVWZXJzaW9uXCIgOiBcIjFcIixcbiAgXCJTaWduYXR1cmVcIiA6IFwiUVhiRnlld0pSMDVQSTM0NWg4V0xqYkoxR1gzSGZpWXdpZ3NjRUtBVGViUG5XejV6bXg5SEN3VHUwTEY5R1BTbmdqcm80VUFIcTRwYi84SzlJT2lmNUhvaG5DM0FERnJKdU94K2pSbEVKSFFaYjVZVWxQd1Z6bkxBd0tUVXNhTWVZdWRMdzh4UFFFVmYwNlBIU05wQ2FGVmFjSm9wWEJFUStFa1JaOENpZEdnS0dRWit1N2VEWWxHNkdFVHRVWWxqOFF1UWpKVTcvOHZJQWNVdmwzaEl2L2Q4Wk5sRFBvOHplVGJUV2wvdzhwQUtZK28wRC9wOEkyUHo1OUlWdndtQ0FMRzRyODJtcENTQ0FranQ1RlJMa2pnS25neSs5ak5qZGgvVHV1eFJiNUxrdXBqd3h5MHRoT01mWE95a3NpSytPRUE4aTRnQS92T241Nzl5RUNGOERRPT1cIixcbiAgXCJTaWduaW5nQ2VydFVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS9TaW1wbGVOb3RpZmljYXRpb25TZXJ2aWNlLTc1MDZhMWUzNWIzNmVmNWE0NDRkZDFhOGU3Y2MzZWQ4LnBlbVwiLFxuICBcIlVuc3Vic2NyaWJlVVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLz9BY3Rpb249VW5zdWJzY3JpYmUmU3Vic2NyaXB0aW9uQXJuPWFybjphd3M6c25zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6U05TVG9waWNOYWNrLXRvcC0xOmFjNTE3ZDVmLTZmYjYtNDQ2YS04MTExLTdmZDg2ZTNiOTQwZFwiLFxuICBcIk1lc3NhZ2VBdHRyaWJ1dGVzXCIgOiB7XG4gICAgXCJhXCIgOiB7XCJUeXBlXCI6XCJTdHJpbmdcIixcIlZhbHVlXCI6XCIxXCJ9XG4gIH1cbn0iLCJNRDVPZkJvZHkiOiJjOTkwODM2OGFiOGU4ZTczZDRlYTM0NWNkOTllYzRlNiIsIk1lc3NhZ2VJZCI6IjFjY2MyZWE5LTU0MmEtNDMwMS1iYTZhLTk5OTI3MTIwMmNiMCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCZnkwY3hrM0laVnZTSHQvOXN5MkpNODMycDhMWjZJZDArNlNFb0V3UUpLYkhDS250YlRSRTBiRGpwbWNud2JTZjM3bTJVSDYyNEhsSnAvU3hLMHFCSFBqMVFkejRZbFNOUkdRekp1Q0V5SDNJdS9xNWVvcDdjMjQrRjlienVCSXJ6NGFqSnNVVmhXYXBEalBqRDJFNWJqSSt2T1I2TEY1aExoYzBHeXQ1Uis0bStFbENHa2R4QmxJdkVVVnlQdmdkK0dxTmxDYlkxY05BeENrY1M5SmVjdkJIby9aUXV2UlQvSzdGdFdOY0ZYZEk4RS9SQlVNS2tiZDJoVzRGZGllMlFYeFFnR29YeVZtcGJJbjVySjhLd29sMzJkU1JXelRTNWlUTnM1eUZpM29HcjV5UFpIVy9USi8wb3ZFT2tPZElhbHk4MzluWVI0NmMvbW95ZG1qb3lrNU9RQWFEQ08vYXhKNDJXdENyZGtGNTV2eUs5aFo3MU1TQWUzbWlGbEQxRDdvYklaeE9ORWdoejNScWZTNnZnUT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"fb00b86bf3985343\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"536\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkVjanorTHRGNys1QURzVDFBb3Yxblk4QlBzRGxCNDlyQ094bEk0SkJxVlcrUUJPUktCTHIzNWozQ095WDNyM1FBUHN5SGhVZmhNM3pYSDRzTXpaWHhXa3RjdWk3dWR2Wk81Z3Z4VHUrUnZ2dUVXZEZlSmZpZUlvdGx2cXRiLzZybWhNOHRYSm9aK0FiVlNaU3BOSEh4M0JFaklzb29Rb0o1TEZRVHUydTRZa21WRFU2Z3JlQ083dU9ORTczUXhwazkrM3dZRDV6Ky9tSytabnBuN2VpcHYzMmJXWk1lOXZleUtKaTNNVDNlREZLdlZNbHIwTHVEbGg5YTNRakVzSjFxSzg5VHlUQzNIWTMrRUhmQ0ZQUWtSbXBWYVRsWXY2dlBad2tLb2xQNkd4aG44Yi90TFNWYXpldHJMcnNZRU5HVlo2QVJ3R25DbjJwTFJkNVVrKzVKM3MwWnZBbnorY3B5Y29EUHpyNHlkbFlpL2ppRHQ4b2hGVEVhVk90OG5TMnBLUGZ5RWxmR0hkUy9FQktPWHRiNEE9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNOYWNrLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4ae6c7b1-2ef4-5114-83a1-a587363ab83c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"b3028de0e5e1c44a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"536\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmZ5MGN4azNJWlZ2U0h0LzlzeTJKTTgzMnA4TFo2SWQwKzZTRW9Fd1FKS2JIQ0tudGJUUkUwYkRqcG1jbndiU2YzN20yVUg2MjRIbEpwL1N4SzBxQkhQajFRZHo0WWxTTlJHUXpKdUNFeUgzSXUvcTVlb3A3YzI0K0Y5Ynp1QklyejRhakpzVVZoV2FwRGpQakQyRTViakkrdk9SNkxGNWhMaGMwR3l0NVIrNG0rRWxDR2tkeEJsSXZFVVZ5UHZnZCtHcU5sQ2JZMWNOQXhDa2NTOUplY3ZCSG8vWlF1dlJUL0s3RnRXTmNGWGRJOEUvUkJVTUtrYmQyaFc0RmRpZTJRWHhRZ0dvWHlWbXBiSW41cko4S3dvbDMyZFNSV3pUUzVpVE5zNXlGaTNvR3I1eVBaSFcvVEovMG92RU9rT2RJYWx5ODM5bllSNDZjL21veWRtam95azVPUUFhRENPL2F4SjQyV3RDcmRrRjU1dnlLOWhaNzFNU0FlM21pRmxEMUQ3b2JJWnhPTkVnaHozUnFmUzZ2Z1E9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNOYWNrLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4bd14180-3c84-5e65-8788-23b6244a4ad4\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"e01f7da408595173\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"156\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY05hY2stdG9wLTElM0FhYzUxN2Q1Zi02ZmI2LTQ0NmEtODExMS03ZmQ4NmUzYjk0MGQmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"23270ffe-ac76-5d50-83fe-6dc8b4b8ded5\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4yMzI3MGZmZS1hYzc2LTVkNTAtODNmZS02ZGM4YjRiOGRlZDU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"c0d9f6c7f7bd3d74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e241f169-fb55-58ca-b354-935fe39bec7b\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"c3d53aeedf1f6b05\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"110\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljTmFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4c9132ad-e6a1-5082-960e-509bfe6eb307\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD40YzkxMzJhZC1lNmExLTUwODItOTYwZS01MDliZmU2ZWIzMDc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestNonExistentSubscriptionSucceedsOnOpenButFailsOnReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2XDWg59wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"77b8479a3062b5e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:31 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ea15933b-fedc-5c35-b802-f10de60b6745\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestNonExistentTopicSucceedsOnOpenButFailsOnSend.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2WODQnpAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b7218e4ac58d12a7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQW5vbmV4aXN0ZW50dG9waWMmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:31 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0d44054a-11cf-5e49-9d46-677c091883e2\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPk5vdEZvdW5kPC9Db2RlPgogICAgPE1lc3NhZ2U+VG9waWMgZG9lcyBub3QgZXhpc3Q8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPjBkNDQwNTRhLTExY2YtNWU0OS05ZDQ2LTY3N2MwOTE4ODNlMjwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestNonUTF8MessageBody.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2IBmOzGgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"542ac56408e73b92\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"75\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNOb25VVEY4TWVzc2FnZUJvZHktdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"339\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"856ed4dd-7c61-534a-b75e-b6eb64a9aba2\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD44NTZlZDRkZC03YzYxLTUzNGEtYjc1ZS1iNmViNjRhOWFiYTI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"b7c41345da52887c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6da09e16-5d2d-59f3-b203-fc2045e4747c\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"75960f0509298409\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"889416dd-dd02-58dd-b6dc-74ebc5cbe552\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"7d946ff1f8ec0036\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"478\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTm9uVVRGOE1lc3NhZ2VCb2R5LXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNOb25VVEY4TWVzc2FnZUJvZHktc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d78855b9-7628-5021-8771-378f6ee1ddae\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"17a8e4cd04d75264\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"222\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNOb25VVEY4TWVzc2FnZUJvZHktdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"382\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bf0d45e3-5a47-5952-af0b-27d5428e71ba\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xOjMzY2FiN2Q3LTQwYTEtNGE5OC1hOTU5LTM2OTQwOWZiZjdiMTwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5iZjBkNDVlMy01YTQ3LTU5NTItYWYwYi0yN2Q1NDI4ZTcxYmE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"03914a06cdcb9453\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"747\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9QUFFQ0F3UUZCZ2NJQ1FvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZEhoOGdJU0lqSkNVbUp5Z3BLaXNzTFM0dk9qczhQVDQlMkZRRnRjWFY1ZllIdDhmWDUlMkZabTl2WEdKaGNseGlZWG91TGx4bWIyOWNMaTVjWW1GeVhDNHVYQzR1WEdKaGVpNHVYQzR1TDJadmJ5OHVMaTlpWVhJdkxpNHZMaTR2WW1GNkxpNHZabTl2TDJKaGNpOWlZWHBtYjI4aVltRnlJbUpoZWk0dVhHWnZiMXhjWW1GeVhGeGNZbUY2Wm05dkx5OWlZWEl2THk5aVlYcG1iMjhnWW1GeUlHSmhlakV5TXpRMTRwaTY0cGk2NHBpNnZiSSUzRCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c98cf159-3251-55e7-9815-936f2a98cd0f\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmIxNWRlMjM3LTUxYWEtNTI0Yi05ZjVjLTgwMDE0OTYzYmFhMzwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmM5OGNmMTU5LTMyNTEtNTVlNy05ODE1LTkzNmYyYTk4Y2QwZjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"44e31cbbd43b0ce4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"177\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2128\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a7c76d48-205f-5c53-82af-0f7e3896b1dc\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjE3NjQwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMTc1OTIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJiMTVkZTIzNy01MWFhLTUyNGItOWY1Yy04MDAxNDk2M2JhYTNcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljTm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCJBQUVDQXdRRkJnY0lDUW9MREEwT0R4QVJFaE1VRlJZWEdCa2FHeHdkSGg4Z0lTSWpKQ1VtSnlncEtpc3NMUzR2T2pzOFBUNC9RRnRjWFY1ZllIdDhmWDUvWm05dlhHSmhjbHhpWVhvdUxseG1iMjljTGk1Y1ltRnlYQzR1WEM0dVhHSmhlaTR1WEM0dUwyWnZieTh1TGk5aVlYSXZMaTR2TGk0dlltRjZMaTR2Wm05dkwySmhjaTlpWVhwbWIyOGlZbUZ5SW1KaGVpNHVYR1p2YjF4Y1ltRnlYRnhjWW1GNlptOXZMeTlpWVhJdkx5OWlZWHBtYjI4Z1ltRnlJR0poZWpFeU16UTE0cGk2NHBpNjRwaTZ2Ykk9XCIsXG4gIFwiVGltZXN0YW1wXCIgOiBcIjIwMjYtMDMtMTlUMTU6MzA6MTcuNTYyWlwiLFxuICBcIlNpZ25hdHVyZVZlcnNpb25cIiA6IFwiMVwiLFxuICBcIlNpZ25hdHVyZVwiIDogXCJvRTVQRHNsYmFnZUozakRINmE4MjB3T2p5bGNZdzlndXFENkdDSHhsSHNCa09LK0t5U0xDVzBiQ2hWVVJnSEs4Mm0zanlRK1Bzd0QzQXhtZ09KNmkvL29wK0JLSzdxcGl0M1h3SlBONnltMWVqeGpBc0RjUldXUjJvTHJOWm9qSHJHMWRtdytZNXBveVBTaEVHdXNVWGRrZ09Ha2hhaVZMY0tINlRDWUg2b3plOG1qMTlWaGJUZEg4RGlRaUVjWW1lamF6UHRvU05hcW5GT2RLaTE0N3B1RzlwTjdpVUFEbEJXZWFxSHUzTVFkR1lYM1ZILzJtUWxTcjZZK0VGbGh3S1lKdXhOU1FLNEVkdnptMWtKTmZheEtXNW9FQ2JKaWc5WDFSNWN4eFZheDJCcjBZMUtZSmpGTm5UV0JpWXdYam56eE5ZWWdjVWI2c2NHSGp6UTAzVEE9PVwiLFxuICBcIlNpZ25pbmdDZXJ0VVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tL1NpbXBsZU5vdGlmaWNhdGlvblNlcnZpY2UtNzUwNmExZTM1YjM2ZWY1YTQ0NGRkMWE4ZTdjYzNlZDgucGVtXCIsXG4gIFwiVW5zdWJzY3JpYmVVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vP0FjdGlvbj1VbnN1YnNjcmliZSZTdWJzY3JpcHRpb25Bcm49YXJuOmF3czpzbnM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMTozM2NhYjdkNy00MGExLTRhOTgtYTk1OS0zNjk0MDlmYmY3YjFcIixcbiAgXCJNZXNzYWdlQXR0cmlidXRlc1wiIDoge1xuICAgIFwiYmFzZTY0ZW5jb2RlZFwiIDoge1wiVHlwZVwiOlwiU3RyaW5nXCIsXCJWYWx1ZVwiOlwidHJ1ZVwifVxuICB9XG59IiwiTUQ1T2ZCb2R5IjoiODU3Y2Q2YzA0MzgxOWUxNDdlMzg1NDRhMzRiZWFlZjMiLCJNZXNzYWdlSWQiOiJiYzYxM2U3MC1iYzhjLTQ2MjgtODFjOS0wYjY5NTU3ODA0YTUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQldGaFNYTFg4M2ZxVkhwbG83Y1pjZldVbVJHeWVMdWx6Y0xLbm9SZFgweTcxSEYwMXUxZ09yaVZiTjJSUmRlcTBleWR1aVlWTnhKRlI3SFZnUUtqMS94V3QxYnk1bEdVazZCaFoyTkFLb1hmTGlSUm9MTHFRM01WWjE2UzMvdDJQd2tKR29oWHVDVWloU3JINkdVL0JUVUNMU3g5dlV3aFRqLzVBM2h6bWQ1cVBySVd0RlNqZ1h4REJQdzNHY29udHBVQ1FZc1lPZlZlSWZEWENJMDdyRW9qNDBEQWhhY3VRQmNucExxazhnUEl2R1ptSHdhMVlSQWxwalUwNnEyb0I2SlhKL0RuTmo1ckRRVkh4V1FEYVF2dVJ5N2tRVWpmZlo5dW1zWVI1N2ZLRmt0UzZVSEYzVWdTU1A3OUQwMUVTRkRQU0JLZFNEYlc0UlVnM3p6TFpsT1lvZHRMOVBreitsR3FDRFpET2c5V0d6MjJ3cWFPS2RLbTlpeXdoQTdZajRRSndqV0RFTm51Wkp3UUVHVnBRVDM1bEVIREhjVlQ2OExQZVRScXArckU9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7333e340fce595dd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"570\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQldGaFNYTFg4M2ZxVkhwbG83Y1pjZldVbVJHeWVMdWx6Y0xLbm9SZFgweTcxSEYwMXUxZ09yaVZiTjJSUmRlcTBleWR1aVlWTnhKRlI3SFZnUUtqMS94V3QxYnk1bEdVazZCaFoyTkFLb1hmTGlSUm9MTHFRM01WWjE2UzMvdDJQd2tKR29oWHVDVWloU3JINkdVL0JUVUNMU3g5dlV3aFRqLzVBM2h6bWQ1cVBySVd0RlNqZ1h4REJQdzNHY29udHBVQ1FZc1lPZlZlSWZEWENJMDdyRW9qNDBEQWhhY3VRQmNucExxazhnUEl2R1ptSHdhMVlSQWxwalUwNnEyb0I2SlhKL0RuTmo1ckRRVkh4V1FEYVF2dVJ5N2tRVWpmZlo5dW1zWVI1N2ZLRmt0UzZVSEYzVWdTU1A3OUQwMUVTRkRQU0JLZFNEYlc0UlVnM3p6TFpsT1lvZHRMOVBreitsR3FDRFpET2c5V0d6MjJ3cWFPS2RLbTlpeXdoQTdZajRRSndqV0RFTm51Wkp3UUVHVnBRVDM1bEVIREhjVlQ2OExQZVRScXArckU9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7b95edcc-23dd-5dc3-9b91-8ffa3b14204c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"fdb55c81fb179496\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSUzQTMzY2FiN2Q3LTQwYTEtNGE5OC1hOTU5LTM2OTQwOWZiZjdiMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"304b8f1c-1157-5610-8c95-ed2a099e9ef8\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4zMDRiOGYxYy0xMTU3LTU2MTAtOGM5NS1lZDJhMDk5ZTllZjg8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"bd5d211b8bcc1ded\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1d1012b3-cf1b-5820-b46f-7085d7d295af\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a120b643f01ba941\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"124\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljTm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b283afb3-de61-5761-9efc-cd85c6ab8f89\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5iMjgzYWZiMy1kZTYxLTU3NjEtOWVmYy1jZDg1YzZhYjhmODk8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestSendReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2KCLMU6gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ba0dcf67a85355f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNTZW5kUmVjZWl2ZS10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"62bff471-9268-5a71-a7ff-96478aa2e1d2\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjYyYmZmNDcxLTkyNjgtNWE3MS1hN2ZmLTk2NDc4YWEyZTFkMjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"5b36751ac4517970\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"41\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e4f9b3f9-efee-568b-8576-d1cff724f1c2\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"6d849e9c5941419a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f1789df3-810d-5939-8a73-ffc599c71e70\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"f424b153e43105f5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"464\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fc64a2ce-b199-5e7f-80f0-c0f8a9532936\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"de255d15366d5fb3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"208\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"242a8587-9029-566e-a451-e7b188e38dcd\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTE6NWVkM2QwZTYtNTY4ZS00ODAzLTllMGUtNjE5M2Q4YmE1ODY3PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjI0MmE4NTg3LTkwMjktNTY2ZS1hNDUxLWU3YjE4OGUzOGRjZDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"efc3c6a7982ce832\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"440\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a037e80c-5a60-5f81-832e-8a3a42aba422\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmMyZDUzZmQ4LTg2YWYtNTdmZi1hYWUyLTVkZWU5ZTY0OGM1YzwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmEwMzdlODBjLTVhNjAtNWY4MS04MzJlLThhM2E0MmFiYTQyMjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"59953c7ce935d785\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"440\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fddbf8ea-67af-5e66-bd2c-9adc7f6415c5\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmI2ZmUyN2EyLTJlMDgtNTcxZi04YmZiLTQ1OTQzNmMzY2NiYzwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmZkZGJmOGVhLTY3YWYtNWU2Ni1iZDJjLTlhZGM3ZjY0MTVjNTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"7d8f0863bb301378\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"440\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MiZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5c8d4d5d-8d75-5f98-8eaa-2f6b95be043b\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjZlMzgwM2FmLWUxZWItNWY5MC1iZDE1LTYxOTlmOTIwMTQzMzwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjVjOGQ0ZDVkLThkNzUtNWY5OC04ZWFhLTJmNmI5NWJlMDQzYjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"df34ba90d28afc5e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1820\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7a1f09a4-caa0-5144-a1e8-6b92d26b360d\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjE5MzkzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMTkzNDcifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCI2ZTM4MDNhZi1lMWViLTVmOTAtYmQxNS02MTk5ZjkyMDE0MzNcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjJcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDoxOS4zMjFaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIklCWndIRlpsQXNpdW9EUDREMjM0UXBJUG9KckdUdDh4ZGhLT0lCaW52cVptNWNwOC9HaUlDMHdIUmJDYStodjhxWktkU0ZVbm1SZlhIR1lSL0FPcW9DNVpZMHJXd0VUK2RqRkFpNzk4OE81aG56cmFnTGJkSVUyaStwNE0xM1hSS0hKcmMxV1BMbmxNWmYzMmI5WlV4MFV4NkdET0ZWNkZqb1YzMjlheW1VZUZsMmFCMDAxNVJ6SzZIMlVrekFtdC9lUWtiVjNGa2pqRHFwQWErY1pTcmVHcVlRaXpXNXlmdTNNMFlHNnlTRjQvRGdPdCtLZWk0Wncrc0o1ZGxmWVAxQzlSSUsrS2FHRDcxdzYrUWFhdzBNYll0OWJBMEk5Y1B2TGwzUmdsVFBvNUMvQlZVQUJpTDlseXZzZ3J0ZjBwZHFONHkxY2ZJTm1waUdSR0RkQjd3Zz09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTE6NWVkM2QwZTYtNTY4ZS00ODAzLTllMGUtNjE5M2Q4YmE1ODY3XCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjJcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6IjlhNWRjNDcwZWY5MTI2NjZiZDY3Zjg1MmU5NWIxMjljIiwiTWVzc2FnZUlkIjoiODcyNTMxMDItYmI0My00YmIyLWIxMDctZTc2NTI0MDlkOGU1IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJLMXZiMGhaNkdMeEx3dXQyR3ZtSStWcnBCaGJDWFQ2ZWw3Q05XT28wSGlPdGxxY2pqa0JjQkdXVEhLNHZjL0M1NmxzZEtqOVd3anU2ckk2eHpydGU4UlRDcHo0UDZic1c0blFlNGVrK3BXYWU2akpsMTIwZU9tTFlnK3dyb1Y0T0dwMzM5QURobzNYVk16MEVhOGhxMXVwRHJLVmI1NklJOVVURTBMNFVZOStHMW9vUmRNdmR1cmFxYXFFSzZqWWZyN1JDdEh5eXN2SFJGSVhmSlEyZnZVSUdUSEk0WjZDdGJBdGhhL0FrZDlCL1JudnF4VHJwb3ZKMlMzTlZ5Nkp0SjYyTDZUbmxCb0JKcUtNdDZhczNrWGVkWHAxRzFKYk15YTZJTWFkK1JPeVpDUHBsNGRldVFGVWtwQ1FGU0pMSnpKMWZqOS9tV3lzVzdKNzNkSGxyUWlFMm1yeVBGQVRHS3h1VVZOZ1NST3ZuVm5uYlB0VlJ4eXhiWE5QdEtlK3Nsam9ObkdpZFVRSXlKTVhQcXVFMXlEYXM0VUVLZHJQV3NpTktTMk5ha3BFPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"46213374434da905\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1820\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5fe0d6c5-561b-56e8-8e2b-b4f34ed0f1a1\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjE5NDY2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMTkyNzgifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJiNmZlMjdhMi0yZTA4LTU3MWYtOGJmYi00NTk0MzZjM2NjYmNcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjFcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDoxOS4yNDlaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIk9TN0R1eFBFdDl4aUY0bE8wbStUWDRqNmRjRnZzWFpmUXBWRndqNkxLMTYxMnhycU94SnlyczUrc2lHZWtoWWtsTnowNDJpQVJGK3RiSmtDbmErak16MmRFTXZHb2JIS1J1QmgrYnZIbXR4Q05pWWZ2Rm5BNU5GWUtlUGN5SVZkTG4wMmhuZ3pqR09UN21MZmFKanZrc2o4SHpibWVyWS9XalR3Q05MSWJJNHhXN0xmK1prT3RLSGd5LzAwbU95MHY1SDFsWmd1dU5manRtN3MxQWtBenhCWlU5VGhRT1Q4c1RLa2FWdE1nOWpoTGlNRXA3bHNKa1dDMjZYcCs1MXljNUlndUYxckNabDRDMmkwOVEvYWRsZzJkZnJLWDJtc3pSaEhLeisrbE9Sc3NRdEZZamREVzN2R0xjKzM0V2J1M2JZM1B1aGNUNGczckpQaUx4N1paQT09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTE6NWVkM2QwZTYtNTY4ZS00ODAzLTllMGUtNjE5M2Q4YmE1ODY3XCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjFcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6IjI2ZDQyMjNlZGNjMDM1YTNjYzdhZTg0Yzg3MDk3NmQ3IiwiTWVzc2FnZUlkIjoiYTFlMjMyZTAtNTg1ZC00NjgwLWEyMDEtNDBkMTBmYmJkMGFhIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJFb1FQaFBTZ0lXa2N0UmJOZ2w3ZWU4WGphTWJGdXVSNmFYWlpEb0ticGxJa1B1dWYxM0IwdGIwT1hqT3JNcFhzQzAxWW9jRi9aVWpmZXVUblFhL2YyNHd1M0FZbXRYWXJuM044UU8zcnk5djVnQmF5WDduRi9mVjNBUDF6aWpwdUZOOEY4cGFTMlo4d2lPMi9HbGdqVXdOMVJiY0k4MWhYYzNiVWVxQUVoRytBczBmN1prRWxjUFVwU0FaaUJ1eitheVR1eFpuZGdrZmd1UGpqNGl4SVIyZGp4TDhyT3VWQVJ1aHNKM0ZQQVhORG1xcE9hNTVBYnRSUlUxOG5hTU9hS3Y2NmQ5MXpvOWJEUEV1UThpbWNPY2lSUHJNbXc5emJPajZXaloxejhIS2NVZk1mRXhTdnpXNVVHR0FzSVRMcFFQQ2VsZE11YW96STRHTHdRbVYxWGlrSENuNG56NnFVV3RZblRCRlp0a2UyeE9SVmpFcUZKZEI0ZDYyWUQxWFBneHJzL3FFa0h4RXdxY0wzMlE1WmNRNnlPQVN4b0dLS0dVMytuanFvUkdJPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"da58e9655a707da9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQksxdmIwaFo2R0x4THd1dDJHdm1JK1ZycEJoYkNYVDZlbDdDTldPbzBIaU90bHFjamprQmNCR1dUSEs0dmMvQzU2bHNkS2o5V3dqdTZySTZ4enJ0ZThSVENwejRQNmJzVzRuUWU0ZWsrcFdhZTZqSmwxMjBlT21MWWcrd3JvVjRPR3AzMzlBRGhvM1hWTXowRWE4aHExdXBEcktWYjU2SUk5VVRFMEw0VVk5K0cxb29SZE12ZHVyYXFhcUVLNmpZZnI3UkN0SHl5c3ZIUkZJWGZKUTJmdlVJR1RISTRaNkN0YkF0aGEvQWtkOUIvUm52cXhUcnBvdkoyUzNOVnk2SnRKNjJMNlRubEJvQkpxS010NmFzM2tYZWRYcDFHMUpiTXlhNklNYWQrUk95WkNQcGw0ZGV1UUZVa3BDUUZTSkxKekoxZmo5L21XeXNXN0o3M2RIbHJRaUUybXJ5UEZBVEdLeHVVVk5nU1JPdm5Wbm5iUHRWUnh5eGJYTlB0S2Urc2xqb05uR2lkVVFJeUpNWFBxdUUxeURhczRVRUtkclBXc2lOS1MyTmFrcEU9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"501cb789-63ee-593f-9dc1-d5bf7b250e76\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"7249b9bf27b20f31\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1820\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ce102289-d755-5b58-b6b7-40bfcf9e0c11\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjE5NjAxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMTkyMTAifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCJjMmQ1M2ZkOC04NmFmLTU3ZmYtYWFlMi01ZGVlOWU2NDhjNWNcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjBcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDoxOS4xNzZaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcImc4ZWxKM2RTdldTMzkvTnRZR2UxTStKUGJHVzJVcWMvSnBka3pCRGp5bWp3Z2VYUVZ4Rk83L2lMa0RwamNvaDRYZlQrRnZobGt2ZHh0T29BelM4ZVpuRFRrZHI5MTBkOUVhSkVHUklCTlNOVWU2ZWlQRUg4dDNvQ0VEZHJ6RjVGYzBTa1psUlBrZnQ5WWZDeWFYR2ZTbmE2VC95YkluemxVSGFJbElHNGJPOGtlWnVla3EvTnFQUlBvRWdNcVQzUW9JNHcxSHRGYmRHMFoyMzMwZ1pLSWh1ektHOVhWZFRlMVphR3VzdmNldGcxaDBNVHZnMTBxRnE4YW9TMFZJRWJsZnFDNnBacVdMcTJhSUJEckMrdDI3SStDZE42dWYySEhNZUVyOHRFZTRHOG5HckR3ZGJlaXhhODlUM2FvS1BKYTVPcTlEcTJObUhYNjlENk5hdGpKdz09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTE6NWVkM2QwZTYtNTY4ZS00ODAzLTllMGUtNjE5M2Q4YmE1ODY3XCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjBcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6ImI5MjJlMjEyOTE5ZTE4NzE3OWY4ZGU0YTJmMjNjZDdhIiwiTWVzc2FnZUlkIjoiYzRmMWI4ODUtZDBmMC00YzI3LWEyMTUtMmIzNzE3ZjA3MjM1IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJaQWNZN2ZmK2tUYzc2QVFPS2lHRnU2dEFYZ1JnVENBWFFlR3IwQWgzeFhrZHVFeHl3NEQ5a1ZIYmNSQitYd25ITXg2M0RrYVdEcXBBTktnTlpSZUY5S0ZUM3BHVzJSOW9GN2NQNmNzQ2FYdEZieGdMUGJObjhwekdQZUZYaXJXdUw4Sm12OWFlcUhsS1NyOGhuRGtoa0QwL0E4cFUzNUh1aEhXSnFvdGova01nOU9rMWtYSm5oZmlLL3NOY1g3cjU5VzVLb0E5UTN5c3JmcEsvQzhucXBzeEVWQjFicktXQzVmR0R5c2QrbkhVcENOSG0zN29DTFNPc0ZGVGUxVVBZdlpGZHB0a043R1A1b3dwYStnaSsyRHYzeGtrSWo0RjMyZE9kZ3N1SkFiVldjYUxCVm4wRk5Xck43Uk1tdmRPbHZYQ21KV1VGdW1aT0NkR2t6cnZ4cUNyVnRaNzBYT2NHaVhlZkRzNEJxcGNSVDZnQlRwWlluMnMvQTBYYktIam5MdTUvVU1LTStxWmwvUmhNblJNcU9XcG9lN2krakJXQWlBaGhMMXFBRXU0PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"8afe6b28dc0afc4f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkVvUVBoUFNnSVdrY3RSYk5nbDdlZThYamFNYkZ1dVI2YVhaWkRvS2JwbElrUHV1ZjEzQjB0YjBPWGpPck1wWHNDMDFZb2NGL1pVamZldVRuUWEvZjI0d3UzQVltdFhZcm4zTjhRTzNyeTl2NWdCYXlYN25GL2ZWM0FQMXppanB1Rk44RjhwYVMyWjh3aU8yL0dsZ2pVd04xUmJjSTgxaFhjM2JVZXFBRWhHK0FzMGY3WmtFbGNQVXBTQVppQnV6K2F5VHV4Wm5kZ2tmZ3VQamo0aXhJUjJkanhMOHJPdVZBUnVoc0ozRlBBWE5EbXFwT2E1NUFidFJSVTE4bmFNT2FLdjY2ZDkxem85YkRQRXVROGltY09jaVJQck1tdzl6Yk9qNldqWjF6OEhLY1VmTWZFeFN2elc1VUdHQXNJVExwUVBDZWxkTXVhb3pJNEdMd1FtVjFYaWtIQ240bno2cVVXdFluVEJGWnRrZTJ4T1JWakVxRkpkQjRkNjJZRDFYUGd4cnMvcUVrSHhFd3FjTDMyUTVaY1E2eU9BU3hvR0tLR1UzK25qcW9SR0k9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d43cb79e-f3f0-503b-9a75-d5a8eb3bad8a\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"c2040a259cb5e03a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlpBY1k3ZmYra1RjNzZBUU9LaUdGdTZ0QVhnUmdUQ0FYUWVHcjBBaDN4WGtkdUV4eXc0RDlrVkhiY1JCK1h3bkhNeDYzRGthV0RxcEFOS2dOWlJlRjlLRlQzcEdXMlI5b0Y3Y1A2Y3NDYVh0RmJ4Z0xQYk5uOHB6R1BlRlhpcld1TDhKbXY5YWVxSGxLU3I4aG5Ea2hrRDAvQThwVTM1SHVoSFdKcW90ai9rTWc5T2sxa1hKbmhmaUsvc05jWDdyNTlXNUtvQTlRM3lzcmZwSy9DOG5xcHN4RVZCMWJyS1dDNWZHRHlzZCtuSFVwQ05IbTM3b0NMU09zRkZUZTFVUFl2WkZkcHRrTjdHUDVvd3BhK2dpKzJEdjN4a2tJajRGMzJkT2Rnc3VKQWJWV2NhTEJWbjBGTldyTjdSTW12ZE9sdlhDbUpXVUZ1bVpPQ2RHa3pydnhxQ3JWdFo3MFhPY0dpWGVmRHM0QnFwY1JUNmdCVHBaWW4ycy9BMFhiS0hqbkx1NS9VTUtNK3FabC9SaE1uUk1xT1dwb2U3aStqQldBaUFoaEwxcUFFdTQ9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8dea3615-e3e3-5ea7-a446-5423fb283f94\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"7f1cc71dd88284cf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xJTNBNWVkM2QwZTYtNTY4ZS00ODAzLTllMGUtNjE5M2Q4YmE1ODY3JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0b47f7ba-c548-5585-918e-958cdd837e26\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wYjQ3ZjdiYS1jNTQ4LTU1ODUtOTE4ZS05NThjZGQ4MzdlMjY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"ccb91fb7c4aeec81\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fea6f454-dc05-5fe5-9023-9662c4ce490e\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"1399e4cf3bc56bf7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljU2VuZFJlY2VpdmUtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0e1e5b12-2a7f-5124-8222-392432b3da87\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wZTFlNWIxMi0yYTdmLTUxMjQtODIyMi0zOTI0MzJiM2RhODc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestSendReceiveJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2aH0+M1AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f9016d6670879b9e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNTZW5kUmVjZWl2ZUpTT04tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"336\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:34 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"79e7f919-9f50-5018-afe7-9b2f878a1814\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVKU09OLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD43OWU3ZjkxOS05ZjUwLTUwMTgtYWZlNy05YjJmODc4YTE4MTQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"70d2f7ceaa21bee9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"45\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"387750d6-d2b7-52d0-8029-32e0ca6cff5f\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"c96fa533138e7a5b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"94\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"da752c4b-9d25-58bb-acef-4e7d85fef534\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"5c676600227cbef9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"472\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVKU09OLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNTZW5kUmVjZWl2ZUpTT04tc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d3fc46a7-3064-5618-8305-249128bf1b97\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"991c0e90f192aa7f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"216\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNTZW5kUmVjZWl2ZUpTT04tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"379\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"841eed9d-06e6-53e9-9b0c-8fab1e3dabe5\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVKU09OLXRvcC0xOjhhZjAzZjkwLWZjM2UtNDc3MC1hODQzLWZjOWIxYjJlNjM5MjwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD44NDFlZWQ5ZC0wNmU2LTUzZTktOWIwYy04ZmFiMWUzZGFiZTU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"994393780ab90b6f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"236\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JTdCJTIyRm9vJTIyJTNBKyUyMkJhciUyMiU3RCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"608b4d71-3ba3-5d60-8a02-2f472378056c\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjE2NzI0ZjAwLTcxM2UtNWI0ZC1hMzBjLTJkMzY2OWU1MDM0MTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjYwOGI0ZDcxLTNiYTMtNWQ2MC04YTAyLTJmNDcyMzc4MDU2YzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"2674eee2075a4e8d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1767\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1465dfee-06ed-5614-ab4a-bdd81e36ab9b\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjM1NjYxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzU2MTkifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIxNjcyNGYwMC03MTNlLTViNGQtYTMwYy0yZDM2NjllNTAzNDFcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVKU09OLXRvcC0xXCIsXG4gIFwiTWVzc2FnZVwiIDogXCJ7XFxcIkZvb1xcXCI6IFxcXCJCYXJcXFwifVwiLFxuICBcIlRpbWVzdGFtcFwiIDogXCIyMDI2LTAzLTE5VDE1OjMwOjM1LjU4MVpcIixcbiAgXCJTaWduYXR1cmVWZXJzaW9uXCIgOiBcIjFcIixcbiAgXCJTaWduYXR1cmVcIiA6IFwiY0JFMTZpbCtOSnNlVUFLbzVhKzVvYjBxcHN2YjRic2NOWTFsS3grb3dhWjlUc1BwVkhmVGx0aXRBYStwSTI2b2MrR1dGUnFzU3BkT0VmdjVrTktvY3R0S05sbFFFRm1JbEFsK3dPS0M5NEJxT0oySDBCYnppNGdjZ3ZjUmQ5MmE5c0oxcmZvV0l5eTZTRjBYc3h2SnViaW1XL3pNRFNTeVVaQktYdXUwSDFTTVlXUVhXU2xtOVdSZlcwbGxYMkJzTkFlNjM5MVFBYjczeVZMYzB4eCtRVUk4TExIeW15TXhRUHlJMllMRTdsbjhRNnZHMG5iL1MwYjJPZm1PNUlpVzFRa29pSVE1c2FLN1dYWlcyUVJFS01jSCt4a0w3T1hTV3B3ZkwxdW9xUUc3K05hb1VjL0RjVURqWVFoSFRDTFErUWwyRXY0TjlCdmVNcU5EQkFvT1N3PT1cIixcbiAgXCJTaWduaW5nQ2VydFVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS9TaW1wbGVOb3RpZmljYXRpb25TZXJ2aWNlLTc1MDZhMWUzNWIzNmVmNWE0NDRkZDFhOGU3Y2MzZWQ4LnBlbVwiLFxuICBcIlVuc3Vic2NyaWJlVVJMXCIgOiBcImh0dHBzOi8vc25zLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLz9BY3Rpb249VW5zdWJzY3JpYmUmU3Vic2NyaXB0aW9uQXJuPWFybjphd3M6c25zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6U05TVG9waWNTZW5kUmVjZWl2ZUpTT04tdG9wLTE6OGFmMDNmOTAtZmMzZS00NzcwLWE4NDMtZmM5YjFiMmU2MzkyXCJcbn0iLCJNRDVPZkJvZHkiOiI4ZTcwMzQ3YzNjYjRkYWVkODI3ZjI1ODg5NDY2MjFkZCIsIk1lc3NhZ2VJZCI6IjY4MTEwODQwLTBhMWYtNDljYi1hZmM3LThkMzM3ZjQxNThlNyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCR0RmMlZpTGg2eXllakRHWHRnbzJDSWpDZjNLKy9RY0I0WmszdFV2Q01uVHFGY2hXYTByc2F0MWVyNkRITnFkYUdtVmJ5V1dvRS9jN1R5T2toTGVYTkIzanJJOE5QU3paL3dhdFNHSDk3OEsxOWxDSW02bk5nbVF4YjByZWYzNGh5aEZDRmNWMmYzakdTK2lSdmpzMG5ra0dUQWxnWWZGS2MzTmU4Y2RndFhzWjJORzdrT2ZoWGhYVGdyeHdxc2t0ZEszSzd4VnBCOUtYK3NKb1JKajNENjA1YVhDR3ViSWJ3RENNclJTbndRK0RvTTU0eHl0cFN2QWhmUXQ5V25ncVZrb1llNVhCR3I3cTdWWWk1VGE5VlpHVUJ6NjlwU0RSeUxIWWFXTGVJNFFSYnB4SElVYVBrOEF5ekdVK1hzMy9BRkFLam9PZmZ1anBiOGg2UVFsNDNMM1RESCtuSHlXZm96dHlraW8za3Y4ZHI4TXpnL1orc21GS3ZnbVkxOW8vRW5XSjJ1NjNhSXJZL2N0UFN1OS9GL2xiT25vV2NqT0ZRYk1zU1E2QUhmQT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"edfd66069f78c50e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"567\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkdEZjJWaUxoNnl5ZWpER1h0Z28yQ0lqQ2YzSysvUWNCNFprM3RVdkNNblRxRmNoV2EwcnNhdDFlcjZESE5xZGFHbVZieVdXb0UvYzdUeU9raExlWE5CM2pySThOUFN6Wi93YXRTR0g5NzhLMTlsQ0ltNm5OZ21ReGIwcmVmMzRoeWhGQ0ZjVjJmM2pHUytpUnZqczBua2tHVEFsZ1lmRktjM05lOGNkZ3RYc1oyTkc3a09maFhoWFRncnh3cXNrdGRLM0s3eFZwQjlLWCtzSm9SSmozRDYwNWFYQ0d1Yklid0RDTXJSU253UStEb001NHh5dHBTdkFoZlF0OVduZ3FWa29ZZTVYQkdyN3E3VllpNVRhOVZaR1VCejY5cFNEUnlMSFlhV0xlSTRRUmJweEhJVWFQazhBeXpHVStYczMvQUZBS2pvT2ZmdWpwYjhoNlFRbDQzTDNUREgrbkh5V2ZvenR5a2lvM2t2OGRyOE16Zy9aK3NtRkt2Z21ZMTlvL0VuV0oydTYzYUlyWS9jdFBTdTkvRi9sYk9ub1djak9GUWJNc1NRNkFIZkE9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9b8fca3d-c179-5410-ae9d-a80bd9a2999f\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"1368106a1023c827\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSUzQThhZjAzZjkwLWZjM2UtNDc3MC1hODQzLWZjOWIxYjJlNjM5MiZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b518754d-b3cf-596a-a357-177bab144166\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5iNTE4NzU0ZC1iM2NmLTU5NmEtYTM1Ny0xNzdiYWIxNDQxNjY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"c70df52ba539f77f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3f4bab05-f5cd-5a67-8800-c933ed1607e8\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"39924012d4ba80c3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"121\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljU2VuZFJlY2VpdmVKU09OLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"754ed04c-3931-54ff-b79f-b27a21ed3cf3\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD43NTRlZDA0Yy0zOTMxLTU0ZmYtYjc5Zi1iMjdhMjFlZDNjZjM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopic/TestSendReceiveTwo.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2XJNCNhAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bc3758bbd805df8d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNTZW5kUmVjZWl2ZVR3by10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:31 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"12dbff4a-a58f-5ac5-aa43-9d7cbd58008e\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjEyZGJmZjRhLWE1OGYtNWFjNS1hYTQzLTlkN2NiZDU4MDA4ZTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"e274d2e5ff36e5d5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"44\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"757ce817-68e1-5ec9-9e6c-8a21703987e5\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"876855229c9c56aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"122\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"92dbad5f-02e9-59a2-8775-cf691a31d08e\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"1e488f066af4469f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"470\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"66c64f90-5c88-5835-83bd-2da64450d119\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f3022cbafeaabdee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"214\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"378\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"59116369-09cb-5b2f-acdc-015f11134164\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6NTNhOTRmZTItNmFjYS00ZjgzLThiZmEtMDEyMjhlMDZjMWI5PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjU5MTE2MzY5LTA5Y2ItNWIyZi1hY2RjLTAxNWYxMTEzNDE2NDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3e67d9915bd3ea02\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"44\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"24e5585f-07c1-5c30-9ef3-3a691f19b51c\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n      }\n    },\n    {\n      \"ID\": \"028071504f8d6bb7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"122\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e844a506-4d29-5ba8-880e-c73055f10284\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn19\"\n      }\n    },\n    {\n      \"ID\": \"3b5b975ad8d98db8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"470\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tc3ViLTJcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0b0f08ab-d06f-5f66-b091-6a9dc8b7964a\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d2d0196496d3e493\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"214\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"378\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"08cfc55b-4c0f-5144-8562-a76d54d78b0f\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6MjEwNWM0NWYtMzFhMC00Y2Q2LWI1YzEtYjY0MmU0ZDdhODllPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjA4Y2ZjNTViLTRjMGYtNTE0NC04NTYyLWE3NmQ1NGQ3OGIwZjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"32f98114386c38af\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"443\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"29bf97bd-39c5-5025-ab21-f58b211c4a6e\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjE4MjM5ODZiLWZhN2QtNTEzZS04YzZkLWZhNWRlMmE0ZmI3NTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjI5YmY5N2JkLTM5YzUtNTAyNS1hYjIxLWY1OGIyMTFjNGE2ZTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"de4af3102d424f8f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"443\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"dd61fcc4-c103-57c1-80bc-9ef2d9da0d8a\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjI5NWEwZjVhLWI2MTEtNWYyYy1iMDA1LTZkNmNhZWM4ZjU2NzwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmRkNjFmY2M0LWMxMDMtNTdjMS04MGJjLTllZjJkOWRhMGQ4YTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"1a7cd3b913276fe8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"443\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MiZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ce453e1c-579e-598b-bc5b-5c2a4f47c3c0\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjM1MzRhNjNmLTJmMWUtNWZjOC04NmQwLWM0MDkzN2M3ODU4MzwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmNlNDUzZTFjLTU3OWUtNTk4Yi1iYzViLTVjMmE0ZjQ3YzNjMDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"6c12a99d5084fbd7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1826\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"53ab705c-d167-55f1-9790-126ac9be4cdd\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjMzMzU3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzMxMTkifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIxODIzOTg2Yi1mYTdkLTUxM2UtOGM2ZC1mYTVkZTJhNGZiNzVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjBcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDozMy4wODJaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIkRTOEsweXBnL29pTlY3OU91U0pDZzVUdUd4S1pmdTdHQjd3djdidGVjbEdlOTJVcGpaQ0ZYRUd6bWNaamY4R1JLY0dFUkZIRzVncE1pQ1BwSm4xbnljQTR0NkloeUhhdEZqQ0crT3VSS0pQL2hqNS8ydTgwQk9ZMHMxUnZBS3BRT2c2LzI1MzE3MFFiRkx0TU55UmgwdkY5K3ZRNVVPd0svTlp3Rk5hdk5hRmpKdlJGWnFrQ2pHbWFVVXhXQXVZSVBkMXU0VEFmbEZqWXVQUXFINHBuUmdmbnFyKzRHSFJaQ1gwamdXaysrZXhRRGxSNVNJczBXM29zZjlLSzIrMlM5SVRoSlFVSnRZeW1Kd3lyd0pIdkpsckl6QURxT3pSUm1tUmtBa3hQTERQNlNLNjFmbGhiUnpIdG1Cdk5kTVg2ckFPckNtWi9UeW1XWDFUamZjU21zdz09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6NTNhOTRmZTItNmFjYS00ZjgzLThiZmEtMDEyMjhlMDZjMWI5XCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjBcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6IjZhMWRhZjUwY2IyYjg0YzQzNjE1MDNjNWFkY2YzYjg0IiwiTWVzc2FnZUlkIjoiYThkZTg1NWYtYTgzMS00YjBkLWI5YzktNTZlZjczMTY1MjQ3IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJqZURMcTViQU5QSmZNTVk3ZlE0cm4vN1JyRklQb0s4U1FQdW1XN3lYTVhZQm5PQ2lvQWVuMlpVMlEyNXIyZGREaElTcUtuZHhjdWZXOGlIYzE4Nkw5Tm0weUdDdEpDSlV6TnpodlNCVGJrWUNVVDdIZGhOMmFJMnpPQXkycXBJb3MybnZ6SFBNcmRrUlJkcFgwcHcvdXo2R1MzbDhtOWpQMGV1SFBVSUxWVnhrTmljTWVnVk1aK3M2U1F2NmRsaDJxZkZjeXZzUDMwVTh2aThMNGdaVllGRnV0b2ZRdzBJN0trVFhLV252MEJzRGdoOUdmV0xMUE9wMXZnWUR3YzhlN2ZkNE13b0pJQWNCcncvREhxQ2VhalZ4ZFpLSWgxaHdZVTk5VXZkdWg4dkt2Y3JENmZtUi9NcjZPVjFTbWEvOHZLVmNnN1AybDJTSmxUWGJjNW1SeFdoeHBUQ3dzQmtzeFhjRHord0phWGJSQWtZUzYvOHRIOXoyYjVJOHBkaWVkdDI3cVR1S2R3ZmpkRzA4NUV4eS9GeUUvci9EdE1WczBPSTVCUTJJeHdrPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"206bcd7e6e47377d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1826\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a8184be3-8b6a-547b-abfd-29d593b32d57\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjMzNDI0IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzMxOTIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIyOTVhMGY1YS1iNjExLTVmMmMtYjAwNS02ZDZjYWVjOGY1NjdcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjFcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDozMy4xNTZaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIk5ZRHoyaFd4WmtxUWJFS3AwbW5wQ3MzRU1ZaTNUd2JDMTFjYnk5MmRKOTNjTkJYNGNoWEYrV1JJWjJqNGlNT0F0d3lGVk41SHN2bExRR3Q1QjZnN0VFcWxpbEZlSDM1b0ZJQjZlQjBXbVVPL0NNSGNkR0NKcGFhNGc2ZlQ4cGdpaWhlSTNkaUtyR01WQnVUOFBNcFFIVEJ1cGdYT2pMQ25uNXB1VnBJTWt0TXlaYWhvOTlxZ1BxZFFkS050Q1pheHlXcWJucUUzeENvVHd6WTBYdkRJTmVpL1k4MnJ1VS9PeHBiNkRzbEd5bDU3TG5RM1VZWCtLdTlxcDE4YWtoeTFsZm1uUkJvc0FpTHpiREV6aVJ5MlozQUlxSFVVNi9tUUl2S1RXeUs4Yk4vaEYzeVBoODJwL1RFUTBWNmhjY3ZOUXhWZllPRXM3ZDl3MnlLQW1nS09WUT09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6NTNhOTRmZTItNmFjYS00ZjgzLThiZmEtMDEyMjhlMDZjMWI5XCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjFcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6IjMzNTJmYzVkNTU2ZjUxMWNlN2Q4YzYyYTJmMTkxZmFkIiwiTWVzc2FnZUlkIjoiNzYyYmYyMmYtZThlNy00ZjlkLTljZDYtNjM2OTlkYWJmNTU5IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJWQmc4akdKVUZ3SHppazNQVmI0S21xNHB6OUxCT1dSZEpUNEJuTlpLUzdjdkVZSWI0Y2FPMFpaQUF4RW52enF5dXVPS1VuazlnQlZZZU1HYXZqci9iTndnWmFualNvZEh6Mk1zMHZZZVU5VlZLVHoxZW5YUWZlWVRGdnlxejN5Ly9QZ1FzMm5qLzBTSGdtajNOZXhZSUhWSlkyL0IzTGx5Sk01NUdWeUJRZkZ2UnV2QmZxZkVqTFBLczhSVVZOREwzTDNKSjMyYXR1TXhReitmOGIwZi83MW84RTVxTGs4UGRHNjF1V3lVWEluL1dPM2RLZG5ta0phQnloUUZIRjBtMnJMenpDNW9tOHlhK0NieU8zWi9jWjcwT0lIZjQ1alVBUFJ6VXV4YUFHa3ZEakpsVm9ibFB1OEROK0JhQjQyYmVpOW5tZStnbzQ0MzBDaXI2MXBFUFZ3MWowM2w2QW5ka2dCRzdIa0F2cWEvV1NFQnZMSFNQM3VIZWdmVmNMR3RaOVpmTmxpRWhmUXNXZEJzd084ek0vNFlJQzRxY2p0eXJ6aGZ5L1pzaW5ZPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"af0c08a01e10f0d9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmplRExxNWJBTlBKZk1NWTdmUTRybi83UnJGSVBvSzhTUVB1bVc3eVhNWFlCbk9DaW9BZW4yWlUyUTI1cjJkZERoSVNxS25keGN1Zlc4aUhjMTg2TDlObTB5R0N0SkNKVXpOemh2U0JUYmtZQ1VUN0hkaE4yYUkyek9BeTJxcElvczJudnpIUE1yZGtSUmRwWDBwdy91ejZHUzNsOG05alAwZXVIUFVJTFZWeGtOaWNNZWdWTVorczZTUXY2ZGxoMnFmRmN5dnNQMzBVOHZpOEw0Z1pWWUZGdXRvZlF3MEk3S2tUWEtXbnYwQnNEZ2g5R2ZXTExQT3AxdmdZRHdjOGU3ZmQ0TXdvSklBY0Jydy9ESHFDZWFqVnhkWktJaDFod1lVOTlVdmR1aDh2S3ZjckQ2Zm1SL01yNk9WMVNtYS84dktWY2c3UDJsMlNKbFRYYmM1bVJ4V2h4cFRDd3NCa3N4WGNEeit3SmFYYlJBa1lTNi84dEg5ejJiNUk4cGRpZWR0MjdxVHVLZHdmamRHMDg1RXh5L0Z5RS9yL0R0TVZzME9JNUJRMkl4d2s9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e7a69490-173b-5f36-84b5-f6a60fe2661a\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"3cd99b9938a0599d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1826\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"94ee3c83-302d-57c8-b7bb-5eb528f4fee4\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjMzNTYxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzMzMjIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIzNTM0YTYzZi0yZjFlLTVmYzgtODZkMC1jNDA5MzdjNzg1ODNcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjJcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDozMy4yMzFaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcImFRd0paWFJUZEJ2Y3lOb1lHZFlCNWljaTFDT0JhSm1VNW4vUkJiRVg1WllERG9lbzY0UEdYUU9IdGg2ODJYWmlneVRFa2JKQ0RzNnpVNVFKRGpIZ2lCcnBqb1daYTB4WllhUEE2eHBJM0JsejVvVitlZjNuMUlPZ0VlZFBQYUFVOCt1WmkySnRUYzN2QlpIQmMrYi9tOW85R3l4a3V0ZWFSK0hwSTF5dEU3Undxb081ZXFtNElLNVBxSmhuSDZFWUh4NnM2V3RqYW1PRjZZNVE2LzlLQklGMVRGaWNadmduemUxQ2RtbnhSdzFaZUN6Tms3eWJCTkpld0dvOVhNdzdjRUU1dmVYSFp5R1VtZTFyWVJmdXJnYXBKNVpEZnVZVDRyWXkvV3FnVDFiSFhCa05CaWJzUmpmY1VsWHNNZDlxaVBwdWNOYUNia2RxU3NPK2RkN29WQT09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6NTNhOTRmZTItNmFjYS00ZjgzLThiZmEtMDEyMjhlMDZjMWI5XCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjJcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6ImI2NTA1Yjg2ZWI2ZmU3N2IwMzAwNDVjNjdhZTczNmIzIiwiTWVzc2FnZUlkIjoiNThhMjdlNWItZWU2ZS00YjVkLThjN2QtNDY5MjQzZWMwNzhhIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJCM2REb2srTzVrWk4zQ3Jqc2M5RVZ5ZHN3Y0pRM2d2TnQybitrMnlzS1ZPelQvMHBNTlpma1YwNStuV2Q5V1ZOU0pRdFNKSWtjcEcwR0U3WXB4R3NmbEswbjB0aDRnMzBWemQ0WWp4SDF3RWNUdzM3UnR0Z1F0eWJqaHlFS3lvQ1YvdDEzR2VzT1VORkw3Rk5HTDhudk5QM2JJNnJRQit4YVcxbmFQQ3JWRzlyRk5idnB0eGw1TmdZbmFDR0pPMlExZURvaUpHUlZqMHVXNFJHZEtCamxRd2h3WWw0U0swWGNWUHhpcDBrek9kNERFS1pTbnROUnBRRVBGbXRKZlg0L0l1cDI3ekl0MHl2QngxMWdlRXIzQkFpeXpNSjhUbEFaU2RqUEU5ZU9kaUJmb1A1MC9HUEtiQ01yQURNaVUyRUxkTXVsSEcyQytFV1dLV1VNaUluSTdxRW5rTVpqUU1CWDVIYkF1UnJQWFJGazMwNjA2TzUzYlkyYythOVl5WHhweS82bzFQeXluWVBiQ0p4eEh3eEUyc1FvNksyMVlCU3dUU21xRmNoTEJJPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d63bf52a0ec81f75\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlZCZzhqR0pVRndIemlrM1BWYjRLbXE0cHo5TEJPV1JkSlQ0Qm5OWktTN2N2RVlJYjRjYU8wWlpBQXhFbnZ6cXl1dU9LVW5rOWdCVlllTUdhdmpyL2JOd2daYW5qU29kSHoyTXMwdlllVTlWVktUejFlblhRZmVZVEZ2eXF6M3kvL1BnUXMybmovMFNIZ21qM05leFlJSFZKWTIvQjNMbHlKTTU1R1Z5QlFmRnZSdXZCZnFmRWpMUEtzOFJVVk5ETDNMM0pKMzJhdHVNeFF6K2Y4YjBmLzcxbzhFNXFMazhQZEc2MXVXeVVYSW4vV08zZEtkbm1rSmFCeWhRRkhGMG0yckx6ekM1b204eWErQ2J5TzNaL2NaNzBPSUhmNDVqVUFQUnpVdXhhQUdrdkRqSmxWb2JsUHU4RE4rQmFCNDJiZWk5bm1lK2dvNDQzMENpcjYxcEVQVncxajAzbDZBbmRrZ0JHN0hrQXZxYS9XU0VCdkxIU1AzdUhlZ2ZWY0xHdFo5WmZObGlFaGZRc1dkQnN3Tzh6TS80WUlDNHFjanR5cnpoZnkvWnNpblk9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"73dd394f-2f7d-535c-8a99-5b7937a4f5b5\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"23d3d71a18bec1a4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1826\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"567a6596-ee1f-5018-9879-07a0f6c68934\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjMzNjMxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzMxMTYifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIxODIzOTg2Yi1mYTdkLTUxM2UtOGM2ZC1mYTVkZTJhNGZiNzVcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjBcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDozMy4wODJaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIkRTOEsweXBnL29pTlY3OU91U0pDZzVUdUd4S1pmdTdHQjd3djdidGVjbEdlOTJVcGpaQ0ZYRUd6bWNaamY4R1JLY0dFUkZIRzVncE1pQ1BwSm4xbnljQTR0NkloeUhhdEZqQ0crT3VSS0pQL2hqNS8ydTgwQk9ZMHMxUnZBS3BRT2c2LzI1MzE3MFFiRkx0TU55UmgwdkY5K3ZRNVVPd0svTlp3Rk5hdk5hRmpKdlJGWnFrQ2pHbWFVVXhXQXVZSVBkMXU0VEFmbEZqWXVQUXFINHBuUmdmbnFyKzRHSFJaQ1gwamdXaysrZXhRRGxSNVNJczBXM29zZjlLSzIrMlM5SVRoSlFVSnRZeW1Kd3lyd0pIdkpsckl6QURxT3pSUm1tUmtBa3hQTERQNlNLNjFmbGhiUnpIdG1Cdk5kTVg2ckFPckNtWi9UeW1XWDFUamZjU21zdz09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6MjEwNWM0NWYtMzFhMC00Y2Q2LWI1YzEtYjY0MmU0ZDdhODllXCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjBcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6ImVhZjE0ZDJlOWQxZWNlMzZjYWUyOWQ4YmJlYzFmNDM1IiwiTWVzc2FnZUlkIjoiOTQ3MDQ2MzMtNmVkZC00ZTFjLTlmNTktYTA3ZDJkMmJjNmUzIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJYT3JmUGhHdk13MnovcDRLcjdXajNzUnVQOGdTaXl6Nnk3ZkVQNTA3V2QveTNrSWZ3Y09Zdm1jNGNvTFF3WHRiWVRwRWt4WkozY2RjZVV3L3YrRkRLOFVJakh1VHJhdXE2d2l1d2diOWhLTU54bUVEY0lzREFwN1pmL1M4WFFGakVIN3VFdHZWc2lVNjJNK2JZRTVxdk5nRU5sRUZGUEx0VjYxOGVnaFhaSWFmc0tUSHMwelRpS0NRZlRPMVhiSkEyOW9odG0wQmhXQkZZZlFYSWVpbUZNU2ZVV0JkME5IWXNUMGYvcDhjeWFacWN3ODZDY0RvZlRhQ2wrYjFNMHVnZjJtQXZJQThwK1pBY25SWitMT3NIRGczVnFZN050QW5SU01EZ0haZzhvOE5jK3pHVFJNT1pRQjA0NkxuQ0hPVmdSR0x1RzFnMFNqVjZPSUFYc3BmQlJiRHJ6MkdudjU5N1k5MG0vK3lYSmRtU2RCeTdqaWxSYWJCeDdLb3d1cFcrUVFOMTJ3OUxHYUIreGRpSmZqc3Y2SmU2UktmY2pkZGZydE0zNUU1TndjPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d12b647466e7e188\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlhPcmZQaEd2TXcyei9wNEtyN1dqM3NSdVA4Z1NpeXo2eTdmRVA1MDdXZC95M2tJZndjT1l2bWM0Y29MUXdYdGJZVHBFa3haSjNjZGNlVXcvditGREs4VUlqSHVUcmF1cTZ3aXV3Z2I5aEtNTnhtRURjSXNEQXA3WmYvUzhYUUZqRUg3dUV0dlZzaVU2Mk0rYllFNXF2TmdFTmxFRkZQTHRWNjE4ZWdoWFpJYWZzS1RIczB6VGlLQ1FmVE8xWGJKQTI5b2h0bTBCaFdCRllmUVhJZWltRk1TZlVXQmQwTkhZc1QwZi9wOGN5YVpxY3c4NkNjRG9mVGFDbCtiMU0wdWdmMm1BdklBOHArWkFjblJaK0xPc0hEZzNWcVk3TnRBblJTTURnSFpnOG84TmMrekdUUk1PWlFCMDQ2TG5DSE9WZ1JHTHVHMWcwU2pWNk9JQVhzcGZCUmJEcnoyR252NTk3WTkwbS8reVhKZG1TZEJ5N2ppbFJhYkJ4N0tvd3VwVytRUU4xMnc5TEdhQit4ZGlKZmpzdjZKZTZSS2ZjamRkZnJ0TTM1RTVOd2M9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4090a27f-d14f-51e7-995d-c049c99618cb\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"d3757d22bfd6513d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1826\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"34504d70-acfb-53ba-b1a0-2f46b4225b76\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjMzNzIwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzMzMTIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIzNTM0YTYzZi0yZjFlLTVmYzgtODZkMC1jNDA5MzdjNzg1ODNcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjJcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDozMy4yMzFaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcImFRd0paWFJUZEJ2Y3lOb1lHZFlCNWljaTFDT0JhSm1VNW4vUkJiRVg1WllERG9lbzY0UEdYUU9IdGg2ODJYWmlneVRFa2JKQ0RzNnpVNVFKRGpIZ2lCcnBqb1daYTB4WllhUEE2eHBJM0JsejVvVitlZjNuMUlPZ0VlZFBQYUFVOCt1WmkySnRUYzN2QlpIQmMrYi9tOW85R3l4a3V0ZWFSK0hwSTF5dEU3Undxb081ZXFtNElLNVBxSmhuSDZFWUh4NnM2V3RqYW1PRjZZNVE2LzlLQklGMVRGaWNadmduemUxQ2RtbnhSdzFaZUN6Tms3eWJCTkpld0dvOVhNdzdjRUU1dmVYSFp5R1VtZTFyWVJmdXJnYXBKNVpEZnVZVDRyWXkvV3FnVDFiSFhCa05CaWJzUmpmY1VsWHNNZDlxaVBwdWNOYUNia2RxU3NPK2RkN29WQT09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6MjEwNWM0NWYtMzFhMC00Y2Q2LWI1YzEtYjY0MmU0ZDdhODllXCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjJcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6Ijk2M2RjYjI3ZDQzMDhkZTRlNzMxNDAwNjVjYjkwNDgyIiwiTWVzc2FnZUlkIjoiOTVhNWYxOTItZGIyNy00YzRlLTg5NDItMGQxNDExMTk3OGZhIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJ6ZG9BSVdLSWp1RzFua3BrbWRaRW5oNkYxSEpmaTlGT2ZYMVNobzFLY0x1TUpGeWE4R1p5cDVSK2RXc1ViOWJFR0dvNll3bEh6L2xGYXR6OElxY0FOcSt3cU9JS2tldnk1eldzUGtXNWxXcEk5WTRoWkxmWU4xSFczempMMXViL3RidFJRcnF6MG5qMXdSS1VmT3FJbnJQbFZmY1JWM2M3TGtUbFloUGF3OWRSOWJneFZDQ05OR0d4YWs1Nmh2dXpRZG12bmdPMDU2ajlWaTd5WGFvc2R5QTlaNW9tSjgyOW1xV0JJL0R2ZVBKVHU3MXJRTzgvKzVOdU1ZdHVCNTB6Yzhhck9oVnBmb1kwQ1kyZEs2cTgxRS93aVVRZmFuYkJFQitkZHBQNlNrMU9JZ2dOdFp6VUp0OWlKSXcxdjFzSGxORXRYRUc5WUMzR21WN0N2ZDN5dzBaSUFlZ0UySmd4Tm1PRUFHVVRqc1JMVGcyRzZjekIvNUJURzJhTUlERkkyVGdsRUtoYUNLTXc4TFhJcWZ5allvbUxoSGtxT21JVHdzaC9uT0l0NzlFPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"2f6a9d4b429e1519\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkIzZERvaytPNWtaTjNDcmpzYzlFVnlkc3djSlEzZ3ZOdDJuK2syeXNLVk96VC8wcE1OWmZrVjA1K25XZDlXVk5TSlF0U0pJa2NwRzBHRTdZcHhHc2ZsSzBuMHRoNGczMFZ6ZDRZanhIMXdFY1R3MzdSdHRnUXR5YmpoeUVLeW9DVi90MTNHZXNPVU5GTDdGTkdMOG52TlAzYkk2clFCK3hhVzFuYVBDclZHOXJGTmJ2cHR4bDVOZ1luYUNHSk8yUTFlRG9pSkdSVmowdVc0UkdkS0JqbFF3aHdZbDRTSzBYY1ZQeGlwMGt6T2Q0REVLWlNudE5ScFFFUEZtdEpmWDQvSXVwMjd6SXQweXZCeDExZ2VFcjNCQWl5ek1KOFRsQVpTZGpQRTllT2RpQmZvUDUwL0dQS2JDTXJBRE1pVTJFTGRNdWxIRzJDK0VXV0tXVU1pSW5JN3FFbmtNWmpRTUJYNUhiQXVSclBYUkZrMzA2MDZPNTNiWTJjK2E5WXlYeHB5LzZvMVB5eW5ZUGJDSnh4SHd4RTJzUW82SzIxWUJTd1RTbXFGY2hMQkk9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ff15d722-615d-5ae6-99f3-b51479847c0f\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"02e479e5c799c2a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1826\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a0e017a1-ab70-5bf3-86d2-7597b3a962df\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjMzNzkwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyMzMxODYifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIyOTVhMGY1YS1iNjExLTVmMmMtYjAwNS02ZDZjYWVjOGY1NjdcIixcbiAgXCJUb3BpY0FyblwiIDogXCJhcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTFcIixcbiAgXCJNZXNzYWdlXCIgOiBcIjFcIixcbiAgXCJUaW1lc3RhbXBcIiA6IFwiMjAyNi0wMy0xOVQxNTozMDozMy4xNTZaXCIsXG4gIFwiU2lnbmF0dXJlVmVyc2lvblwiIDogXCIxXCIsXG4gIFwiU2lnbmF0dXJlXCIgOiBcIk5ZRHoyaFd4WmtxUWJFS3AwbW5wQ3MzRU1ZaTNUd2JDMTFjYnk5MmRKOTNjTkJYNGNoWEYrV1JJWjJqNGlNT0F0d3lGVk41SHN2bExRR3Q1QjZnN0VFcWxpbEZlSDM1b0ZJQjZlQjBXbVVPL0NNSGNkR0NKcGFhNGc2ZlQ4cGdpaWhlSTNkaUtyR01WQnVUOFBNcFFIVEJ1cGdYT2pMQ25uNXB1VnBJTWt0TXlaYWhvOTlxZ1BxZFFkS050Q1pheHlXcWJucUUzeENvVHd6WTBYdkRJTmVpL1k4MnJ1VS9PeHBiNkRzbEd5bDU3TG5RM1VZWCtLdTlxcDE4YWtoeTFsZm1uUkJvc0FpTHpiREV6aVJ5MlozQUlxSFVVNi9tUUl2S1RXeUs4Yk4vaEYzeVBoODJwL1RFUTBWNmhjY3ZOUXhWZllPRXM3ZDl3MnlLQW1nS09WUT09XCIsXG4gIFwiU2lnbmluZ0NlcnRVUkxcIiA6IFwiaHR0cHM6Ly9zbnMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vU2ltcGxlTm90aWZpY2F0aW9uU2VydmljZS03NTA2YTFlMzViMzZlZjVhNDQ0ZGQxYThlN2NjM2VkOC5wZW1cIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTE6MjEwNWM0NWYtMzFhMC00Y2Q2LWI1YzEtYjY0MmU0ZDdhODllXCIsXG4gIFwiTWVzc2FnZUF0dHJpYnV0ZXNcIiA6IHtcbiAgICBcImFcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjFcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6ImYxMDY1ZGRhYmJkZTU4ZmE3OGViZTZjNzAwODkxNjIyIiwiTWVzc2FnZUlkIjoiNTM4NjViNjgtYTMzOC00OWRjLTlhMmYtNTJiZjE5MDcxMDk5IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJEOHZjYTdZVVhBS2lyeEd4Z1NHNjRzK1Q0VDUrZ1lsMlhTbkZBRFJySHVyZUJWdU0zKzYrWmJwNWprQUZrNTRNTFo0NElhNGxVVDQ1dm8vTWhGSjV5ZXRkZ240blJmTUJ0K091dHFrWFEyMFZoNS9FOTV5cWZlMXBlYWFaTDZmUFNSVlBRRk0yQ0Ria3Rmb04zZ0p0czREZkVxTENjNmlYT1lRd1pyNnExR1lIRjkxcTdpUXNFR3JaelZKanNPUEVKUmN5NEQvOXRqZk5vanV4dnpIUW5qOGM4cFlEWk96WHFkejRqR1N5TUJMSFJjYUxPKyt0VDZacjEvQ0J1UU1IbFpIQk1kL0JjTlpXVjc2WFBXanc5VFlZcjZOaUk5cDNDTklaY1lJMDFqTGpNZkkybzNTUDQ0SGJ0S1czYmZEb0tES25sMUZuRXBQM1lKWkgya2xsMGhQSjhKTE43ZlI3Y3czL0wwTnJzcko4QUVSYjBIYUlocUoxa0VTTmNCTHlGYlh6N0lFZDd4TmtXSDlySm50NmluUVZjZXlINm9kRlJPTHp6SzR5NVBnPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"779b048fd0a844c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnpkb0FJV0tJanVHMW5rcGttZFpFbmg2RjFISmZpOUZPZlgxU2hvMUtjTHVNSkZ5YThHWnlwNVIrZFdzVWI5YkVHR282WXdsSHovbEZhdHo4SXFjQU5xK3dxT0lLa2V2eTV6V3NQa1c1bFdwSTlZNGhaTGZZTjFIVzN6akwxdWIvdGJ0UlFycXowbmoxd1JLVWZPcUluclBsVmZjUlYzYzdMa1RsWWhQYXc5ZFI5Ymd4VkNDTk5HR3hhazU2aHZ1elFkbXZuZ08wNTZqOVZpN3lYYW9zZHlBOVo1b21KODI5bXFXQkkvRHZlUEpUdTcxclFPOC8rNU51TVl0dUI1MHpjOGFyT2hWcGZvWTBDWTJkSzZxODFFL3dpVVFmYW5iQkVCK2RkcFA2U2sxT0lnZ050WnpVSnQ5aUpJdzF2MXNIbE5FdFhFRzlZQzNHbVY3Q3ZkM3l3MFpJQWVnRTJKZ3hObU9FQUdVVGpzUkxUZzJHNmN6Qi81QlRHMmFNSURGSTJUZ2xFS2hhQ0tNdzhMWElxZnlqWW9tTGhIa3FPbUlUd3NoL25PSXQ3OUU9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fe69ae35-bfd1-58f7-b060-cc03a708c558\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"93eac516378ad146\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkQ4dmNhN1lVWEFLaXJ4R3hnU0c2NHMrVDRUNStnWWwyWFNuRkFEUnJIdXJlQlZ1TTMrNitaYnA1amtBRms1NE1MWjQ0SWE0bFVUNDV2by9NaEZKNXlldGRnbjRuUmZNQnQrT3V0cWtYUTIwVmg1L0U5NXlxZmUxcGVhYVpMNmZQU1JWUFFGTTJDRGJrdGZvTjNnSnRzNERmRXFMQ2M2aVhPWVF3WnI2cTFHWUhGOTFxN2lRc0VHclp6Vkpqc09QRUpSY3k0RC85dGpmTm9qdXh2ekhRbmo4YzhwWURaT3pYcWR6NGpHU3lNQkxIUmNhTE8rK3RUNlpyMS9DQnVRTUhsWkhCTWQvQmNOWldWNzZYUFdqdzlUWVlyNk5pSTlwM0NOSVpjWUkwMWpMak1mSTJvM1NQNDRIYnRLVzNiZkRvS0RLbmwxRm5FcFAzWUpaSDJrbGwwaFBKOEpMTjdmUjdjdzMvTDBOcnNySjhBRVJiMEhhSWhxSjFrRVNOY0JMeUZiWHo3SUVkN3hOa1dIOXJKbnQ2aW5RVmNleUg2b2RGUk9MenpLNHk1UGc9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"17c6cc73-4634-5c87-96b1-ae455eeda128\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"a2650142786ebd5d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXRvcC0xJTNBMjEwNWM0NWYtMzFhMC00Y2Q2LWI1YzEtYjY0MmU0ZDdhODllJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:34 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fe6386f9-2c2f-5aeb-b51b-e4cf34f600a0\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5mZTYzODZmOS0yYzJmLTVhZWItYjUxYi1lNGNmMzRmNjAwYTA8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"03991f573091fa38\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:34 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bdc012dc-9c9a-5639-89ee-70ea84401b96\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"14ae9d18ece7507f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXRvcC0xJTNBNTNhOTRmZTItNmFjYS00ZjgzLThiZmEtMDEyMjhlMDZjMWI5JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:34 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"63db955b-d114-5cf0-a7f6-f76dc9ceb6bb\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD42M2RiOTU1Yi1kMTE0LTVjZjAtYTdmNi1mNzZkYzljZWI2YmI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3cc82e3dfa371c3f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:34 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e48a99e4-a3bd-50e1-906b-fbd2bb677d4e\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"179d3323fe66afac\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljU2VuZFJlY2VpdmVUd28tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:34 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"03bb2e42-bacf-52c4-b435-4c74a215a88f\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wM2JiMmU0Mi1iYWNmLTUyYzQtYjQzNS00Yzc0YTIxNWE4OGY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestAs/aws_test.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg26G3FSRgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"25ee6afb5ae6874c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdBc19hd3NfdGVzdC10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:06 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"446a6c8a-034f-52d8-818f-0ebc1bb56493\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QXNfYXdzX3Rlc3QtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjQ0NmE2YzhhLTAzNGYtNTJkOC04MThmLTBlYmMxYmI1NjQ5MzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"216e4e329e7559b9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"44\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"aad48159-fc9d-54a4-adc2-e36fe4668f51\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"a468ae90d1add578\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"122\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4b8c2575-8ef0-5dbb-8416-4743960bc64e\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"a8bdca13fef6a678\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"470\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QXNfYXdzX3Rlc3Qtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9229a865-e435-5969-8ae1-ca53fccef29c\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"8db15e6b15576155\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"286\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"378\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e46a1e4e-6eba-5772-a140-7c7876415139\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QXNfYXdzX3Rlc3QtdG9wLTE6YTczZDc4NDktY2E3Ny00NmVlLTkyYjUtNjQ5NzVjNWUyMDA2PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmU0NmExZTRlLTZlYmEtNTc3Mi1hMTQwLTdjNzg3NjQxNTEzOTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"b1c6bec528a33ec8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"208\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9eCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a348b10f-9d27-5f3e-b64b-d33985dc3975\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjA3NWM5Y2I4LTBlNWItNTE3MC04NjJmLWZlOGUxNmEwOTczYjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmEzNDhiMTBmLTlkMjctNWYzZS1iNjRiLWQzMzk4NWRjMzk3NTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"fad17a67b432be8f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"753\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7ed6fae8-5948-5775-81cc-98de41b33c80\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjY3NzA3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjc2NjgifSwiQm9keSI6IngiLCJNRDVPZkJvZHkiOiI5ZGQ0ZTQ2MTI2OGM4MDM0ZjVjODU2NGUxNTVjNjdhNiIsIk1lc3NhZ2VJZCI6IjI1YWZiMGI4LTRkYzctNGJhYy1hZWRiLTk1MDQwMzE5MDEzNSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNksxbUdWNzUvaWtxd2picFNIWUFnVGtnY05ZaHVqN0JDL3kxUlc4V0NkRkZYcU9GN2lZUE5abFVBNnp6aklWM2s1RlFzM051RkZSVW03cVZJLytwQklKWGIvN2dvU3VsOWlZZERlYlN1bjBZQ3oveklsNTVpN0FESkIzcy80Tk9ySDIydFNnNklHVHFMa29oT3dYais2N2U1ZFcyZWFWaElWdWRCaFhrcGlTdVJWTEhFR1VPeU9xM1BVaVBHbURLYnNoUDJkRU1qWERUcXB2bFNFWTJQMjNpZ3dldWo1Wk0ybVh0V2x5RW8xOEpXT2FaZGQ2bEtGbi9xYUt4aEpZd2REeEg4TkVQcTQvekZuTHdSVjZ4eGZCaWw1aGR5YXZhd0dOM0hDTWV1SjNTRjJ4YzhCNjdoNU5TTkQ1MlcvNmpNVmo3WkpTOEtCcWRpak1ySjMzUlpoVzZ6THhVUW8wWENNNDNnU0xOOUtHOEE3bDBpZENOV2tra21YdWdLTFF4RnBvWjAzeUZYQVZ2ZWdSNmFLMmhSSFV4S3llTXlVYjEydW9sTTB0YzlNbz0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"88c492c3090a5d47\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjZLMW1HVjc1L2lrcXdqYnBTSFlBZ1RrZ2NOWWh1ajdCQy95MVJXOFdDZEZGWHFPRjdpWVBOWmxVQTZ6empJVjNrNUZRczNOdUZGUlVtN3FWSS8rcEJJSlhiLzdnb1N1bDlpWWREZWJTdW4wWUN6L3pJbDU1aTdBREpCM3MvNE5PckgyMnRTZzZJR1RxTGtvaE93WGorNjdlNWRXMmVhVmhJVnVkQmhYa3BpU3VSVkxIRUdVT3lPcTNQVWlQR21ES2JzaFAyZEVNalhEVHFwdmxTRVkyUDIzaWd3ZXVqNVpNMm1YdFdseUVvMThKV09hWmRkNmxLRm4vcWFLeGhKWXdkRHhIOE5FUHE0L3pGbkx3UlY2eHhmQmlsNWhkeWF2YXdHTjNIQ01ldUozU0YyeGM4QjY3aDVOU05ENTJXLzZqTVZqN1pKUzhLQnFkaWpNckozM1JaaFc2ekx4VVFvMFhDTTQzZ1NMTjlLRzhBN2wwaWRDTldra2ttWHVnS0xReEZwb1owM3lGWEFWdmVnUjZhSzJoUkhVeEt5ZU15VWIxMnVvbE0wdGM5TW89In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"405490e0-cae3-53f9-8845-f2d6d218680c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"1026a8179391de20\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQW5vbmV4aXN0ZW50dG9waWMmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0ca59de3-89ae-5883-89d4-ffd59155bec8\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPk5vdEZvdW5kPC9Db2RlPgogICAgPE1lc3NhZ2U+VG9waWMgZG9lcyBub3QgZXhpc3Q8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPjBjYTU5ZGUzLTg5YWUtNTg4My04OWQ0LWZmZDU5MTU1YmVjODwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"9d2eead93b78d17c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"305cd798-7479-58bc-a5b0-b5ae6c825349\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"a55866dfda9e0f44\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXRvcC0xJTNBYTczZDc4NDktY2E3Ny00NmVlLTkyYjUtNjQ5NzVjNWUyMDA2JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6556f658-26fc-5df5-899a-946e3e072bbe\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD42NTU2ZjY1OC0yNmZjLTVkZjUtODk5YS05NDZlM2UwNzJiYmU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"8c3c460c65c6b80f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX2F3c190ZXN0LXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a93f6295-4eb4-51b4-b6b0-00a356487a41\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"b5f570113dcd44f9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3QXNfYXdzX3Rlc3QtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0a1f7591-6fed-5b66-925e-17a777110d2d\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wYTFmNzU5MS02ZmVkLTViNjYtOTI1ZS0xN2E3NzcxMTBkMmQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg28D8BHdgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6913021f3c35094a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"366\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cc237bb5-e8b7-52cd-b030-1983f04be362\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jYzIzN2JiNS1lOGI3LTUyY2QtYjAzMC0xOTgzZjA0YmUzNjI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"0b89daa0e2d5d333\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"75\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"55fdf54e-f377-5e2f-a7d6-9778eb8b7780\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"9132c1d5df4773bb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"153\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"124\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a8017608-fca8-51ef-b0ef-143ee454a840\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"1aabe7c7c81a6cf9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"532\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1032fc5d-ae9f-5de9-9944-9e6bb6621446\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ab2dd224ff907940\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"348\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNSYXdBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"409\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0ef285d3-11a5-5d6a-bad1-e7e509584cc5\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xOjI5M2E3ZTI3LWE3ODItNDZiMS1iYjJlLTQ1NThlNzM3YTJkYTwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wZWYyODVkMy0xMWE1LTVkNmEtYmFkMS1lN2U1MDk1ODRjYzU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"9a32cd0c374f9f4f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"239\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9eCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b2ba7b79-e4cc-58fe-ba8c-194ffc318951\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmFhZjAyOGZjLTA3ODItNWRkMi05NDViLTRhY2ExZjdmNmM3ZDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmIyYmE3Yjc5LWU0Y2MtNThmZS1iYThjLTE5NGZmYzMxODk1MTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"ca4c6d1501448a6a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"797\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"44db08bf-5fdc-5e51-a2d2-6a894721f7fe\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjY5NDU0IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjk0MTQifSwiQm9keSI6IngiLCJNRDVPZkJvZHkiOiI5ZGQ0ZTQ2MTI2OGM4MDM0ZjVjODU2NGUxNTVjNjdhNiIsIk1lc3NhZ2VJZCI6ImVjNGJmZWRjLWI0YTktNDJlNi1hYzliLThhZmNjNzNiNmIyZCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNGgwMjVBWUh1a0dqbURtYlpsVFpvaTdsZllvSnhRQ2xsQnV2a3hKUmRrNklsb2d5NEtYVzhRNXM4MlF3ZGtXQjBXMmVQd3ZGVGNuQkNGMzBDc2c5dFR6eG1BdCtEWGxkd1dvMmtNck51Q0Y2c0Z6TzZ6THFzSXhGRWhYamU2R2x5a0NOUk5HRGtGRWpTcnFXcHNzcE9NcnRMd0RQKzFncXdlVzJCR1U3M3hwQzhMT05JTi9zcTRiU1VxOS96QjQ5VXorTmVSTkFnMTJrdjBpMlNHWTFoTDFhSVhPUTFDaEY3VHpIQVBUcldBc3hvNU9rcUFrdnlrMW8rS0ZzTEpJOXVESHl5ZThWZXU4d3RFL2lVL0NWQzFONWpYdUtib3EzZHZ3ZWdtZitDVS9SQzlIU2F1UWZoUDY0RGJaalB0bjhyeG52UEtMQ052TGxkcWRlRU5UQnBaRTR3OWVNTUZzR2h6V3BXRE00OXlzYWlJY3paVk51VytFMDVwT2R6UUkrVkh5bndtWUNpTnMrM0FqcGd0ZjZnUXJTRjBTaDBEcjh6OWdBZU1TaEtzMGcxK2F5YVhOblUwWDdtMXpZNkZFaEpOUldHRld0UEtBOURLRW50UzFyMmc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"a06d362b35214444\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQW5vbmV4aXN0ZW50dG9waWMmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8ca3212a-4c1c-5d4e-95ef-431c54e16ce1\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPk5vdEZvdW5kPC9Db2RlPgogICAgPE1lc3NhZ2U+VG9waWMgZG9lcyBub3QgZXhpc3Q8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPjhjYTMyMTJhLTRjMWMtNWQ0ZS05NWVmLTQzMWM1NGUxNmNlMTwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"43c97a79b73c5091\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"641\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjRoMDI1QVlIdWtHam1EbWJabFRab2k3bGZZb0p4UUNsbEJ1dmt4SlJkazZJbG9neTRLWFc4UTVzODJRd2RrV0IwVzJlUHd2RlRjbkJDRjMwQ3NnOXRUenhtQXQrRFhsZHdXbzJrTXJOdUNGNnNGek82ekxxc0l4RkVoWGplNkdseWtDTlJOR0RrRkVqU3JxV3Bzc3BPTXJ0THdEUCsxZ3F3ZVcyQkdVNzN4cEM4TE9OSU4vc3E0YlNVcTkvekI0OVV6K05lUk5BZzEya3YwaTJTR1kxaEwxYUlYT1ExQ2hGN1R6SEFQVHJXQXN4bzVPa3FBa3Z5azFvK0tGc0xKSTl1REh5eWU4VmV1OHd0RS9pVS9DVkMxTjVqWHVLYm9xM2R2d2VnbWYrQ1UvUkM5SFNhdVFmaFA2NERiWmpQdG44cnhudlBLTENOdkxsZHFkZUVOVEJwWkU0dzllTU1Gc0doeldwV0RNNDl5c2FpSWN6WlZOdVcrRTA1cE9kelFJK1ZIeW53bVlDaU5zKzNBanBndGY2Z1FyU0YwU2gwRHI4ejlnQWVNU2hLczBnMStheWFYTm5VMFg3bTF6WTZGRWhKTlJXR0ZXdFBLQTlES0VudFMxcjJnPT0ifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljUmF3QXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e930401b-9e51-59de-b360-222d86ac2071\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"dcd803644c472738\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"09142bc7-9110-5f4d-be67-49f189ed36e2\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"5332c5bca68160a0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"197\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSUzQTI5M2E3ZTI3LWE3ODItNDZiMS1iYjJlLTQ1NThlNzM3YTJkYSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c127deb9-4f27-5524-a379-bc8f57da148b\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jMTI3ZGViOS00ZjI3LTU1MjQtYTM3OS1iYzhmNTdkYTE0OGI8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"a1d3e51f8cc44bc9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"dcdfedb5-51a8-5b33-bb5d-8f834955f29c\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"69200afb743e7faf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"151\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3QXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:09 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b7c8a487-4b5a-5e4e-941e-c6b153a70fe1\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5iN2M4YTQ4Ny00YjVhLTVlNGUtOTQxZS1jNmIxNTNhNzBmZTE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestBatching.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2tLtjMKwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"617b1da1700e72dd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdCYXRjaGluZy10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5d991f84-7021-55fd-873e-7db268cfee73\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QmF0Y2hpbmctdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjVkOTkxZjg0LTcwMjEtNTVmZC04NzNlLTdkYjI2OGNmZWU3MzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"07c5957b5f3576f4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"41\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8cef8a00-1fac-51bf-aa84-e8360742804d\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"c1f57f888604809e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a0214fdf-4836-55a3-9e34-2de950d8b451\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"1b24af2ba4046acd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"464\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QmF0Y2hpbmctc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a9fef604-cb9a-5be3-a441-9432d3747a11\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ecb84fba42fd0599\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"280\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0JhdGNoaW5nLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"209df884-30a5-53f2-b857-9ab2284bb87c\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3QmF0Y2hpbmctdG9wLTE6NzE5N2QxNTYtMmQ1MC00YmExLWE3NjYtNzEwOTBlZDRhYzg5PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjIwOWRmODg0LTMwYTUtNTNmMi1iODU3LTlhYjIyODRiYjg3YzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"ca661149bc8ca948\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"700\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjIuSWQ9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMi5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4zLklkPTImUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjMuTWVzc2FnZT1oZWxsbyt3b3JsZCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNC5JZD0zJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci40Lk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjUuSWQ9NCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNS5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci42LklkPTUmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjYuTWVzc2FnZT1oZWxsbyt3b3JsZCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0JhdGNoaW5nLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1007\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"92348ec7-ff5b-57b0-85aa-ecf1e7b5cc3e\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjM2NTIxODExLThmNDQtNTg0Ny1hYjhhLTdhMjc5N2FhNTNjOTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD45NWZmMWJjMy1lZDk2LTVkZTktYjI1OS03OWY1ZjU3ODE2Njc8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+MTwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+OWU0ZGEwYzYtOTdjNS01Yzg5LWJmODEtYzJmMDhmMmIzNzA3PC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjI8L0lkPgogICAgICA8L21lbWJlcj4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjM3ZTUwZTYyLThmZTQtNTkwMy1iNDk3LTZjNTQ5NzBhOTI4ZDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4zPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD40ZTFiZjZmOC1hYmE1LTViM2ItOTYzMi05NGNlYjM0YjcwYjU8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+NDwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+ZGFkN2Q5OWQtYzg1Yi01YmU2LWJiMDctYmJhYmQwYjVkMDY4PC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjU8L0lkPgogICAgICA8L21lbWJlcj4KICAgIDwvU3VjY2Vzc2Z1bD4KICA8L1B1Ymxpc2hCYXRjaFJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+OTIzNDhlYzctZmY1Yi01N2IwLTg1YWEtZWNmMWU3YjVjYzNlPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1B1Ymxpc2hCYXRjaFJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"6904627ed7f9a753\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"700\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjIuSWQ9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMi5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4zLklkPTImUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjMuTWVzc2FnZT1oZWxsbyt3b3JsZCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNC5JZD0zJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci40Lk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjUuSWQ9NCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuNS5NZXNzYWdlPWhlbGxvK3dvcmxkJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci42LklkPTUmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjYuTWVzc2FnZT1oZWxsbyt3b3JsZCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0JhdGNoaW5nLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1007\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a6cac920-c0f7-587f-b68a-ab16d81873f1\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjA1MGFjOWYxLTE3MDItNTAzMS1iYTE3LWFiYzcwZmVkNmJiZjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD42YjVhYTBiZi1iNTNiLTViMTYtODYwYi1jMjg5YWRkNDgwOTg8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+MTwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+OTBlYmQyZTItZDdkZi01M2ZkLWIxNjMtYjBkNGNmMzA5ODczPC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjI8L0lkPgogICAgICA8L21lbWJlcj4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjg0YzkyYzI3LTA4N2MtNTcyNi04NDA0LTRlMTExMDkzOWNhODwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4zPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICAgIDxtZW1iZXI+CiAgICAgICAgPE1lc3NhZ2VJZD4yZDQyODcwOS0zZDgxLTVmMTMtOWQyZC1lNTNmMjU2ZWM0OWQ8L01lc3NhZ2VJZD4KICAgICAgICA8SWQ+NDwvSWQ+CiAgICAgIDwvbWVtYmVyPgogICAgICA8bWVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+MTJjN2IzMzAtZTczNi01OWM5LTk3N2UtZDEwNmZmZDkwMjQ3PC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjU8L0lkPgogICAgICA8L21lbWJlcj4KICAgIDwvU3VjY2Vzc2Z1bD4KICA8L1B1Ymxpc2hCYXRjaFJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+YTZjYWM5MjAtYzBmNy01ODdmLWI2OGEtYWIxNmQ4MTg3M2YxPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1B1Ymxpc2hCYXRjaFJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"4cf4ab6f59ebebd3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"14332cf4-d272-5f22-930e-4ec2ca9d4ed0\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1MTU1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUxMDMifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI3MjU1NmJmOS04YzA2LTQxNDYtOWQwOS05NjlmNDc0OGU5NmYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlZnNTI0R0tsdyt5UTlyRWk5WjRqdUZHbkRtV25pMEdsWnA4VzdySXBUVWZsaU1HSXZKdU9SaDIzQlYyT0VJRGN2QzF5encwcjZUbFY5SmtXVEJxcTh3bU9VRWYzL1RXWUpqRWt1TnU0OWN3YXJTNzZpUkRJaE5iY2RJTGZHaDN0cUpOZVcyZVoyOUhHamtzNW55eXJuM2N1ZW9jOUxRcnZzcHFaSUpWdWR4eWoydTB1bzgxZEtQT2JNanpJWE1jTXdVWFdSZnhvM0FyRk9yajltRmQyR29NckhzMytxMitvVytGQnRnSHlueEJBTUtQN2RpcGU5UkFnRGpHRUIvczdsYWdiSngzcFNSa1VjL25FOE9SeXFZREE2UjJJNGZ2VEJRR2dOS1o0TVo3SmZ1YWdaQWZMMjNLTXJhc01JT3NBditNN2IwQlNjY1BFRjNCL2RBN0FQdW5ubmxYMGhEWDcxUUExTjFZVCtvVC8zc0lxcXlOdktrQ2FrVVdsUS9VTGVBR2FnajJOblpzaFJST2dwZVRCUlFxdjNVUzdqREFRRmM2bFBrYXVndkk9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4b0de20d073ff3e7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6a1a328a-c665-54b4-abd8-50bcde8ab546\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1MjIzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUwMzAifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiIyMGQyYmUxYS1hZmQ3LTQ2ODYtODlkOC02ZDgwNzhlZDVjMTgiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnVkd3o4TVhqQ3NpeEwvVkRZVFJLS0lpMmRkSmluMi96WHRISUtxSDdoeEl3NUU4WVp5WTlocU9yT0dLa2ZDSDBBV1BqNFUyNCtDUjcySDNXaW9DSXNtOW1wOUtScDhyZHNSTUF5M0o5bTFqbWJzNzJOWFFrMGp5MldBR2FId3VlUnZmYWpINTMxNm1JVUN1QUlBbDBPWVNSUkVKdldBWU5LVlp1Wk53QU1zT3NPSG9taXA2RWFxR2ZjNW15U3hFRmlhSEROdDZBOXB6ZVp5U2FpZzIrZnljUE9Sek1PU0g2SnFOMmNPaUFSRkhqeGNKYWpGc29ITWM4VVo4eWRwTTczTFgvME54elVPWG1tT3hzMWI0RForTG9BSExWWjFBamRPaXd0T1RDMkxsbWgzNGxzandUa1M1ZlVtVkNGWW5LV0hDV3VzTWQ5bWpoYjFmemhUYXExRWdHMGV0cnptRURwdEZ2dFRuQmlGMmlUOGJpNWhabm96eTJ2YS96cks5UW96WFBhZVVwTlhpQ2NQY3hMOU5DaHlucWlJQmdKRjkxTmZZcms2L2M3THc9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"5d1fc061f827959e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a6359456-d587-58e9-b98b-f660cd68391b\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1MjkxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUwMzUifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJmZGRmNTUyNC0wNjUyLTRhY2YtYTBlMS0xZDBlZGFkNmU5MGUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnBTVDZEZjBKeXVuK0VvMnFKMzllUmVZMmVBWGd6WHRzS2lTSEN0QlYwaDJiUUE1VmFVanFnUWUvUUtEaXp5VkFSWjNqTmRqd1I4aDRidHlDeTR2Z0xhdUdYcXhKWlFpKzVtNm5zUzJENVlBYU9pVHBvMHRkS3pIdnMwWDNTZHdNMlV6RnQrV1FGY1lHWG52NnY1RHQzSkhjMjkvVWpTTkY3bEtUTVYwK0Fxb1dadE03RFZNcDE5MEx6ak8vakhhWmIwR0NWVzUvQWtzN0swc3BYYnIzNDdnRkZWNFgvMGtNRjFkdmYwVlliODEyS1lVcDZSSGh6R3QzWkVHZWFwQmdaZ1FLcGdFN3gwWEw2SjNWUUErQ1ZWL0ZEUkZYVlRqaDZ2RXhaT3FUZ21xa08ybHBmWktOREl1ZTNLeEpXY3pJRkdVbzQrV2h4UndrNlkyRGpGblVtRjJXRmhKTXVyaG5GS0FPTU9LUGVKc3JDaFoyRXhDc2NVczNKT2V0SEp1MU85SzBKdVUvM3BlR2tRNFhVU3VLK0lWQW4yQkJZV0FEcEkvdUpjclYrb1U9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"fda81aaabdc06906\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6edd8045-fc54-5429-a151-e273e4bb05db\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1MzU4IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUwMzAifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJjNWM2ZjYzOC02NTM2LTQ1YjQtOWQ5NC05NTY5OThmYTdkMjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnJrY0pqTnMyUEZpeTB1b09UdkNFMHY4OXNzRnhNWmZEVkxmR0RyVUg5d290ZnE5bGVXR2wrR01leXdRRGZLL3lKbHJKd0gzK2ZmeUxLdlhwWS9jd09sbGwwR2MrYVFnYnNtTVRrS1N2NFFJRFgySlRQc3RHZXEvRnBzSGZmSURsc3dKc2RXSzdtTFphaHZ2UkVSc1hMSU5Eem12dDlWeEZLSjhFeU9GdjZkZnp2V20zWFhuQVdBM2FKdEZQZkJoVS9UYng2WkpRRUx6VG40MlhpeDVFbUl6Sm51MHhmV2RFMm5nenJCd0I0b0s4b2dJd21lZUhWRkthWUlZSno4b0lvZWpEV3JZZGxKZWpBY1dFWkZnbjJYREVSRklaRTc4UE5sN3JnbTVTT1FWSlpMRlBhSnIrdFAvOVNQR1dnVEs1R1dLZVRrODQ2NUs2TEQvSTQ4cC9zL29LQ1Flajl2MUJjb0lTbXoveTZQSHI3VUZiVkZYcHpTWVJST0Z2cGw3T1N6b3JPRmNBS1BrSUZkQU5GNE1tdW56dDRPUC9EbFMrdnhtL0NzNFZHanc9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"31dd12590a3b363e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0061f1e2-9186-54a6-85a7-93d48969c554\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1NDI1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUxMDQifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJhNWE5MDUwZi1iZWMzLTQ0OTYtOTFkZC0wMGM4NWVjMDRiYjgiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkZXRWVhTnF6dndTbElJcVV3TkYrT25XbVdTYW5WTURtd0hmM290c3RqUms0RG02SDRZcmw1VElTbXlxQkRSejAwOUloVGNLQ3dtTmZNTGQ5MmRvTzMwOFNDR2NjQVFvNllxdnpVNisyeHRweXN1UlpadFRyUGZBN0xrU3Qyb1o2TUdPaVlqbldaY2Z5VW5ENUw1dmE1RytINTd5eHFOcnV4ZDRPek1JcVNJREI1bTVwc1d6bUQySTNHZ0YwMU82QnFoVjlPWXFtWUFNcThIclAySGszaE9NNS9aTzlmbWRQVUNrSlg3bFNjN1hNcGFkQ2lJRnhSSk5URjFOTkhQTDVNWmsvRW54T0hVUWxTTnFTWWhCdjVIZWZZZ1VsREVlY1dRN1RWV05LSXlvQmc3M0FjQnA2a2o1bGNNVnIwRVZoTmtZMlViSkJHajkwcy9oWERwWXpQUnZPMzNCRnN4ajRKUjR5QmVJQlk3NlJ4WndoWHR0UnVZdENSM2FZejRzckFRTmZOV2tQcTdGNzArMmd0RVBTL0Y4SkZETml3V3Vrdkt3eU5FNWxFSXM9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0fb49c1924c46035\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fdcc2857-c7ad-5209-8c81-4a61df42d3fb\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1NDkyIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUwMzMifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI4YWQxNGQ0YS1mNGVkLTRmMDAtYTIyMS1lNmVmZTRjYzM4ZTAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmo4NlFuTi9DVUpnVys4b0lQb09CcndXci9SbUxBVG5ya0hidWU1RE1YL2MzU3FOK1JrZ0VrZXlvWXJCU1ZaeU00Um5RVS8zSXJvd3JCRjBZNjZoK241K0lPenFPY0pkV294amoveE03YkdVK0V4djhINDZwTUhSeUxHTS9ZYVlJcDBoN08rZUt2dUFFTzVKSEh4L3lJZVpkVlVNNU5valJVdHBBOFRiaTY0KzVTYjZPTy9oaU5uSjYwRm0wK2gzL1hYS2JmVWVXSFZyQm5VZUtMak5WUUhXYXJTZ2lzaXloQXVlbllSZlh3MFYzV1dzR2o0WGM1TFpEQ3hwODNXRUJ4ODl5LytNZXdqQkZEbklaYWRzNmF5bmw1a0s2ZHlaSmIxenM3N3NzRERqOW5VMEhxcFpFVzJMK0I5U2haeWRPUWZ5bW1wSkVzdUMweXBabHowNzFDMGFFelV3eG1ISnZybndzKzdqTG5oWGtkZTBDdUsyd3FOZXo0M2xtL0l0U3dtMHlma0J0OW1oYXd5K05aTVVyMTRITDZScGp2NTNLWnozZTVReml0ZVk9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"b8a0c10d5f9620e6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d1c0523e-e112-556c-a9ea-3008f9fd349e\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1NTYwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUxMTMifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI3OWU2YzVkYi03OTczLTQ0OGItYjg0MS1mYzU2ZDcxY2IxZTIiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmZoa29iaWpYLzJQQnNMRFpoWmsySXB3Zmk5SHNUNFFySU90aHBRN29yYkVpTmZQS0pnNTFGNkFEMEhZQVhIVkcyYTRMSG5YZUgzWFIvcEtVajhnallzOFEvZFovazNkV3R3amRJcjNoKytzcmh3U0NMbEo1cUUxajhXd1BVRXN6OXh6MkNMenhpOUVZTHNzVFUwT1ZjNWNPWHFqcWhGR1VEcjFxa1hqQjI0b3ZMaFF2OGxldlk0ZmFNZ2NmNGRMc2dnWTg4YWcwRmJqQzZiTTR0Y0haUkgvamxiZGMxQy85NzVXdm9SMGZ2SDhKUW5EQ3YyemlIZEJHT3M5azhub1ZuUWl2Q3pPUDlzWU5PK1NSaitNOE5iRmcvZVJtditqblNNQ1NiOWszeE0vUFNJeWVGOHlEb0RUanBINDB4SExnVTFISytEZ2twc3BIZGF0MEd1OWpwZWR1KzVCbkFldUU0Z2l6QU9iSFlxdUJsR3FhTVdLSDZ1ek5kK1IzMHJ1N3FQMG5xSWV5YnlPcTVNWmx4Y0U5ZnNqOW4rdUhJVVp6T2RtNjB1QmxSVXc9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"f6c574c5ced8ea3e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2873\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlZnNTI0R0tsdyt5UTlyRWk5WjRqdUZHbkRtV25pMEdsWnA4VzdySXBUVWZsaU1HSXZKdU9SaDIzQlYyT0VJRGN2QzF5encwcjZUbFY5SmtXVEJxcTh3bU9VRWYzL1RXWUpqRWt1TnU0OWN3YXJTNzZpUkRJaE5iY2RJTGZHaDN0cUpOZVcyZVoyOUhHamtzNW55eXJuM2N1ZW9jOUxRcnZzcHFaSUpWdWR4eWoydTB1bzgxZEtQT2JNanpJWE1jTXdVWFdSZnhvM0FyRk9yajltRmQyR29NckhzMytxMitvVytGQnRnSHlueEJBTUtQN2RpcGU5UkFnRGpHRUIvczdsYWdiSngzcFNSa1VjL25FOE9SeXFZREE2UjJJNGZ2VEJRR2dOS1o0TVo3SmZ1YWdaQWZMMjNLTXJhc01JT3NBditNN2IwQlNjY1BFRjNCL2RBN0FQdW5ubmxYMGhEWDcxUUExTjFZVCtvVC8zc0lxcXlOdktrQ2FrVVdsUS9VTGVBR2FnajJOblpzaFJST2dwZVRCUlFxdjNVUzdqREFRRmM2bFBrYXVndkk9In0seyJJZCI6IjEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnVkd3o4TVhqQ3NpeEwvVkRZVFJLS0lpMmRkSmluMi96WHRISUtxSDdoeEl3NUU4WVp5WTlocU9yT0dLa2ZDSDBBV1BqNFUyNCtDUjcySDNXaW9DSXNtOW1wOUtScDhyZHNSTUF5M0o5bTFqbWJzNzJOWFFrMGp5MldBR2FId3VlUnZmYWpINTMxNm1JVUN1QUlBbDBPWVNSUkVKdldBWU5LVlp1Wk53QU1zT3NPSG9taXA2RWFxR2ZjNW15U3hFRmlhSEROdDZBOXB6ZVp5U2FpZzIrZnljUE9Sek1PU0g2SnFOMmNPaUFSRkhqeGNKYWpGc29ITWM4VVo4eWRwTTczTFgvME54elVPWG1tT3hzMWI0RForTG9BSExWWjFBamRPaXd0T1RDMkxsbWgzNGxzandUa1M1ZlVtVkNGWW5LV0hDV3VzTWQ5bWpoYjFmemhUYXExRWdHMGV0cnptRURwdEZ2dFRuQmlGMmlUOGJpNWhabm96eTJ2YS96cks5UW96WFBhZVVwTlhpQ2NQY3hMOU5DaHlucWlJQmdKRjkxTmZZcms2L2M3THc9In0seyJJZCI6IjIiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnBTVDZEZjBKeXVuK0VvMnFKMzllUmVZMmVBWGd6WHRzS2lTSEN0QlYwaDJiUUE1VmFVanFnUWUvUUtEaXp5VkFSWjNqTmRqd1I4aDRidHlDeTR2Z0xhdUdYcXhKWlFpKzVtNm5zUzJENVlBYU9pVHBvMHRkS3pIdnMwWDNTZHdNMlV6RnQrV1FGY1lHWG52NnY1RHQzSkhjMjkvVWpTTkY3bEtUTVYwK0Fxb1dadE03RFZNcDE5MEx6ak8vakhhWmIwR0NWVzUvQWtzN0swc3BYYnIzNDdnRkZWNFgvMGtNRjFkdmYwVlliODEyS1lVcDZSSGh6R3QzWkVHZWFwQmdaZ1FLcGdFN3gwWEw2SjNWUUErQ1ZWL0ZEUkZYVlRqaDZ2RXhaT3FUZ21xa08ybHBmWktOREl1ZTNLeEpXY3pJRkdVbzQrV2h4UndrNlkyRGpGblVtRjJXRmhKTXVyaG5GS0FPTU9LUGVKc3JDaFoyRXhDc2NVczNKT2V0SEp1MU85SzBKdVUvM3BlR2tRNFhVU3VLK0lWQW4yQkJZV0FEcEkvdUpjclYrb1U9In0seyJJZCI6IjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnJrY0pqTnMyUEZpeTB1b09UdkNFMHY4OXNzRnhNWmZEVkxmR0RyVUg5d290ZnE5bGVXR2wrR01leXdRRGZLL3lKbHJKd0gzK2ZmeUxLdlhwWS9jd09sbGwwR2MrYVFnYnNtTVRrS1N2NFFJRFgySlRQc3RHZXEvRnBzSGZmSURsc3dKc2RXSzdtTFphaHZ2UkVSc1hMSU5Eem12dDlWeEZLSjhFeU9GdjZkZnp2V20zWFhuQVdBM2FKdEZQZkJoVS9UYng2WkpRRUx6VG40MlhpeDVFbUl6Sm51MHhmV2RFMm5nenJCd0I0b0s4b2dJd21lZUhWRkthWUlZSno4b0lvZWpEV3JZZGxKZWpBY1dFWkZnbjJYREVSRklaRTc4UE5sN3JnbTVTT1FWSlpMRlBhSnIrdFAvOVNQR1dnVEs1R1dLZVRrODQ2NUs2TEQvSTQ4cC9zL29LQ1Flajl2MUJjb0lTbXoveTZQSHI3VUZiVkZYcHpTWVJST0Z2cGw3T1N6b3JPRmNBS1BrSUZkQU5GNE1tdW56dDRPUC9EbFMrdnhtL0NzNFZHanc9In0seyJJZCI6IjQiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkZXRWVhTnF6dndTbElJcVV3TkYrT25XbVdTYW5WTURtd0hmM290c3RqUms0RG02SDRZcmw1VElTbXlxQkRSejAwOUloVGNLQ3dtTmZNTGQ5MmRvTzMwOFNDR2NjQVFvNllxdnpVNisyeHRweXN1UlpadFRyUGZBN0xrU3Qyb1o2TUdPaVlqbldaY2Z5VW5ENUw1dmE1RytINTd5eHFOcnV4ZDRPek1JcVNJREI1bTVwc1d6bUQySTNHZ0YwMU82QnFoVjlPWXFtWUFNcThIclAySGszaE9NNS9aTzlmbWRQVUNrSlg3bFNjN1hNcGFkQ2lJRnhSSk5URjFOTkhQTDVNWmsvRW54T0hVUWxTTnFTWWhCdjVIZWZZZ1VsREVlY1dRN1RWV05LSXlvQmc3M0FjQnA2a2o1bGNNVnIwRVZoTmtZMlViSkJHajkwcy9oWERwWXpQUnZPMzNCRnN4ajRKUjR5QmVJQlk3NlJ4WndoWHR0UnVZdENSM2FZejRzckFRTmZOV2tQcTdGNzArMmd0RVBTL0Y4SkZETml3V3Vrdkt3eU5FNWxFSXM9In0seyJJZCI6IjUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmo4NlFuTi9DVUpnVys4b0lQb09CcndXci9SbUxBVG5ya0hidWU1RE1YL2MzU3FOK1JrZ0VrZXlvWXJCU1ZaeU00Um5RVS8zSXJvd3JCRjBZNjZoK241K0lPenFPY0pkV294amoveE03YkdVK0V4djhINDZwTUhSeUxHTS9ZYVlJcDBoN08rZUt2dUFFTzVKSEh4L3lJZVpkVlVNNU5valJVdHBBOFRiaTY0KzVTYjZPTy9oaU5uSjYwRm0wK2gzL1hYS2JmVWVXSFZyQm5VZUtMak5WUUhXYXJTZ2lzaXloQXVlbllSZlh3MFYzV1dzR2o0WGM1TFpEQ3hwODNXRUJ4ODl5LytNZXdqQkZEbklaYWRzNmF5bmw1a0s2ZHlaSmIxenM3N3NzRERqOW5VMEhxcFpFVzJMK0I5U2haeWRPUWZ5bW1wSkVzdUMweXBabHowNzFDMGFFelV3eG1ISnZybndzKzdqTG5oWGtkZTBDdUsyd3FOZXo0M2xtL0l0U3dtMHlma0J0OW1oYXd5K05aTVVyMTRITDZScGp2NTNLWnozZTVReml0ZVk9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"caad7384-785f-52bb-89b7-11b260b04349\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjIifSx7IklkIjoiMCJ9LHsiSWQiOiI1In0seyJJZCI6IjEifSx7IklkIjoiMyJ9LHsiSWQiOiI0In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"87e1526a3c52636c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"307c5815-7166-56f8-905e-3a236989b70a\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1Njk0IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUxMDcifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI5ZmM1ZjJjZC1mOTJlLTRlNjEtOTA4Yi1jOGY0MmY4MWYzZWEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmYvdUQ3c3Z6V3FWNkYvWmsvWnV3aVZhdFRVZFRnalNjZTlBVVVnMERjbUhyMUZkUkVXdWp5RGkyNU5rRnNSV01MeEZMNnl5VUdGd0xqZHBUNUtvdUxjbVV3MjVyK1NXYXdGYXNud01PVGRqVi9paWZoakdlR2ppVmM1d1E3WkVjWVYxR3ljZm1vclUvS2IrTjFhSlRVM2R0WW5RNXVtK1RRenRTa0JjSS9mY0I3elltaDJ2TnBha3BOZ2c2WEtDcXd5K21jYkhtMTFNTFNpME5XNENvSTM4UnRiQ1hIczR5bjcvYVFwU0k4bmlGZHArT1ZxVnNmUmpxYTZFMTE1aWRPT3lMLzRtcWxoL015dDZXczhqamNjWnZmd25lMlp0WUdpenIvMy9TN1JCV1Q2blNuNHBnaWtTNmVaWlBhZGs0TU9xOCt5UHZ1dFdzL2x0eTlYc3lXZGo2azdEcHFLYVpWR21iU2hIVnd2UFRRci9wak5XSVR1V0JGb0NSK0RYRkRNVDIwbld1UHJDaUV5M0Q1dzh2Njd2b2ovVTF4N2NQcWVqQ2pRYk12Zms9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7dbf1d3fb931bc9a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6141664a-4ca2-58f6-9717-047c544d8904\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1NzYxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUwMzIifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI2ZmEzZWMzYi05OTZkLTQ2Y2YtYTI2Yy03YWEwNTYxNmUzMGEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjNZV2VFRFU1UnB2YTM1bklsSlNnNTRxTFY4NkVDcmpzNTBJeitZa0c1WEJ0WWo0YmEwcU1IUlBLNFU5dGVBdmtONk94RUNKcDNwWER5MTUvM3l0eVRaT0lzWGs3NW1VWE9pOTZaYmx3SU1HUHpJeGEyYkNzSmdVWmNmcXQvaXR5dFhyTlhvdEZuazZHNkVIdndVMmg5RGZBK1NzZDlLZVZDZzM4eHNKaWhOQit1QkI3VnlzSG5Wa2ZlbkRzY3hlNWpvZ3kreDNmLy8yTnZ2enRVQktpdTd6OGoyYWhqZlpBNnBQd0NBY3NrNVZOQVoybWh5ZmlMeVkzUFJ0WFQxT3hadnd0cWc2VHptMkhJdGk2bFRYT3JIVXF2T3V4SVZJMUowR0xXdVFHbThWMnlIMTc3Ym1xa3AyVzlZdjZ1MjJzRE55bG5sdGhSUjFNZmFrTHg3OXh6d091ZloyMDBFaUZQbzYvVi9kYzNEUjJtR21zTkZ5TThkL0lSRldBZUxocUtzcXJWQzloTUlpbS9aVW5YcHRlbWVqRkxNbGFjbktnSWZvR0tybWNGeTA9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7768ce6282248f30\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"35e32569-5dbd-5e7c-9c6c-475f455214f7\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1ODQ3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUxMDYifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJlZTNjYTZhMS0yOGM5LTQ4OWYtYmEwNS1iMjM1M2VmZjE1NjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmJFUGFIdUVFNXg2ZDFWekhqb3k3T0FiRXhWWUlseWVWcjhta1NQWTRsZTJnRHVjbzBXck9nRFZHcjZpaGdlRVlkTklDajJwRStvWTNjMTZvaEt0SGw5cUptbUQ3UnM1dGJxa3NibUJ4UFZ1cWhxaFE1azM0WEYwTy9mQTFZWHdYckgrOU9UYmI2U0RoU2oyaGRuTFV5eDB5K3NrcmtUM1hmSEsxOWhnWGFtR0pjSjZUL3p0dWY2V2VKWjRuSGg2WmNZQTNPMkRkT1BnRUlkdlNSRFEzbDlUQXFwTVIrV3NKMnJkN1FVdjR0V0J3dlhwM0RMbzkvclZDS0U0bDVHL1d1MVZxckdhS1BnNndQb3RHb2I3QWpWK1U0SGJMaHZNZXpiSk1pY0Yvb3JiTjlTSmJKWDdXVzRTSndELzdtRlBtbHBiZkROYTdWZE8zeEdEOXc5WVpWMGN4aU8vNjdZR1hKMGd0bzVDWmJsSDRmK3hTNmJ4QWlhcjh4d1NwOWJsaU43NTc2R2pROVdWZllhYlRpQ2JNUHphN3ZLWlhBZDhoN1NsMnl2SXJoNGM9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"050a4918ecc085ca\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b7d56890-4b40-58d8-be3d-0aa653afa253\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1OTIwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUwMzMifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJlZjRjOTNhOC1iNmNlLTQ0MDItOGI3YS0yNzRjMTQyZGQ5NGEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlJoelBoUkJKZ0JZYXZHaTlwMzg2NmFQUmFrbEQ5YTBSeHpDNllEU2FMTEpjendtSmhOTzZQbUdVQjNqNng0Y1NXanRobUY5VUlXRnJpZXd0QzBLaGdkajJyVnNSMVc0S25INFk0eElxUkRhUkUva05SbUVNNjFKUnh5QWVIdEdwWVdmKzRJU0dQZExpYkhITDBqaFJ2eU52eXhheVFLczFWdzg2bjFMR3JWY0FTWWljR2dTZ05VUHFsbE5qbkovR2FIc2ZnL2hkcG1ycklMVnppRE5WNUVDTTVQVzdZQ2ZCM0krdWQxeXJSNG5TWklDWERsOFAzUmp2UlNHaDFyVHhySEk2dGRabFNlaUN6V2gxajhaeE1Na3pBbDVFWWJmR2xzTGJqNUIzaUs3cGhGL3BGa0tsbVdLMjBPZmtKRkJTbi8vOUl1anpSek5nSzF1UjRIQ3Y3RnA5OHVXVVM2UmUxcjRpVFh4VjluOTZCeWx3cUNjSGJ6a21jYmVFNC96RjdJaGtjMGR2QURrd25OS3JDeHRtbjdoazBLVSthSnRuVzExQUZIK2NEbEk9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"16ea7ede52459d1f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"763\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8095a827-936a-5b26-816b-ca118b8521ad\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU1OTkxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTUxMTMifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI2ZTY3ODIwOS0wODI0LTRmZGQtYTFkMC1mMzgwOGEwMzBmMGUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQk5SRkhLcFAzL3gvdkE0QTYyWlNSL2VLc0dGN2dsNWpkVEFOWDd0bWNBNWw2NDNMRU5objVNR0JJenBOZ2lSRUJjb3AyNnZQOEtMMXVJT0pYUHgyR2luKytpYkxGZ2J4T0d1eUVPcDhRRzlaVlBsMWZFMmM3U29YZE0wM1h0SUFxdlhCbThtQXlJRE9CZEttbWlzY0xKS3ptUElackxuK3hkV0JYNWg5bXp5TEtkT1BGOStwWVBJVHdGS3Eva2tDWGRjd2ZiL3ZGcWZUclJwV3FFeTl0MGxFUkUzYStOQ0lPZzlxbzE0YWdGOHpFWStsVDRDWHY2Y2dQYVBqOVFNZkJlMVFKYVdHc2JBd0kyVWlqcXlieTlFTVcrVXpDemJqTWh0Tzh4VHBUT2hvYitOZ3pkN1RsQVJtRmREWVlKQkNWT0NiMENBaVNienRnZVRhbGdGaGxuM1ZJVlBtWHZHREUvMTNwZjZ5THNjNHQ0S01WbjBnMUVCb2Y3Z0tVbnkwWmtVb0Z6RlQrY080Q2hHUDVkdnlSaXpncnk5SlpXUzhqeVh0eWpnWTF3Vzg9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4492fd572b49ad5d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2873\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmZoa29iaWpYLzJQQnNMRFpoWmsySXB3Zmk5SHNUNFFySU90aHBRN29yYkVpTmZQS0pnNTFGNkFEMEhZQVhIVkcyYTRMSG5YZUgzWFIvcEtVajhnallzOFEvZFovazNkV3R3amRJcjNoKytzcmh3U0NMbEo1cUUxajhXd1BVRXN6OXh6MkNMenhpOUVZTHNzVFUwT1ZjNWNPWHFqcWhGR1VEcjFxa1hqQjI0b3ZMaFF2OGxldlk0ZmFNZ2NmNGRMc2dnWTg4YWcwRmJqQzZiTTR0Y0haUkgvamxiZGMxQy85NzVXdm9SMGZ2SDhKUW5EQ3YyemlIZEJHT3M5azhub1ZuUWl2Q3pPUDlzWU5PK1NSaitNOE5iRmcvZVJtditqblNNQ1NiOWszeE0vUFNJeWVGOHlEb0RUanBINDB4SExnVTFISytEZ2twc3BIZGF0MEd1OWpwZWR1KzVCbkFldUU0Z2l6QU9iSFlxdUJsR3FhTVdLSDZ1ek5kK1IzMHJ1N3FQMG5xSWV5YnlPcTVNWmx4Y0U5ZnNqOW4rdUhJVVp6T2RtNjB1QmxSVXc9In0seyJJZCI6IjEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmYvdUQ3c3Z6V3FWNkYvWmsvWnV3aVZhdFRVZFRnalNjZTlBVVVnMERjbUhyMUZkUkVXdWp5RGkyNU5rRnNSV01MeEZMNnl5VUdGd0xqZHBUNUtvdUxjbVV3MjVyK1NXYXdGYXNud01PVGRqVi9paWZoakdlR2ppVmM1d1E3WkVjWVYxR3ljZm1vclUvS2IrTjFhSlRVM2R0WW5RNXVtK1RRenRTa0JjSS9mY0I3elltaDJ2TnBha3BOZ2c2WEtDcXd5K21jYkhtMTFNTFNpME5XNENvSTM4UnRiQ1hIczR5bjcvYVFwU0k4bmlGZHArT1ZxVnNmUmpxYTZFMTE1aWRPT3lMLzRtcWxoL015dDZXczhqamNjWnZmd25lMlp0WUdpenIvMy9TN1JCV1Q2blNuNHBnaWtTNmVaWlBhZGs0TU9xOCt5UHZ1dFdzL2x0eTlYc3lXZGo2azdEcHFLYVpWR21iU2hIVnd2UFRRci9wak5XSVR1V0JGb0NSK0RYRkRNVDIwbld1UHJDaUV5M0Q1dzh2Njd2b2ovVTF4N2NQcWVqQ2pRYk12Zms9In0seyJJZCI6IjIiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjNZV2VFRFU1UnB2YTM1bklsSlNnNTRxTFY4NkVDcmpzNTBJeitZa0c1WEJ0WWo0YmEwcU1IUlBLNFU5dGVBdmtONk94RUNKcDNwWER5MTUvM3l0eVRaT0lzWGs3NW1VWE9pOTZaYmx3SU1HUHpJeGEyYkNzSmdVWmNmcXQvaXR5dFhyTlhvdEZuazZHNkVIdndVMmg5RGZBK1NzZDlLZVZDZzM4eHNKaWhOQit1QkI3VnlzSG5Wa2ZlbkRzY3hlNWpvZ3kreDNmLy8yTnZ2enRVQktpdTd6OGoyYWhqZlpBNnBQd0NBY3NrNVZOQVoybWh5ZmlMeVkzUFJ0WFQxT3hadnd0cWc2VHptMkhJdGk2bFRYT3JIVXF2T3V4SVZJMUowR0xXdVFHbThWMnlIMTc3Ym1xa3AyVzlZdjZ1MjJzRE55bG5sdGhSUjFNZmFrTHg3OXh6d091ZloyMDBFaUZQbzYvVi9kYzNEUjJtR21zTkZ5TThkL0lSRldBZUxocUtzcXJWQzloTUlpbS9aVW5YcHRlbWVqRkxNbGFjbktnSWZvR0tybWNGeTA9In0seyJJZCI6IjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmJFUGFIdUVFNXg2ZDFWekhqb3k3T0FiRXhWWUlseWVWcjhta1NQWTRsZTJnRHVjbzBXck9nRFZHcjZpaGdlRVlkTklDajJwRStvWTNjMTZvaEt0SGw5cUptbUQ3UnM1dGJxa3NibUJ4UFZ1cWhxaFE1azM0WEYwTy9mQTFZWHdYckgrOU9UYmI2U0RoU2oyaGRuTFV5eDB5K3NrcmtUM1hmSEsxOWhnWGFtR0pjSjZUL3p0dWY2V2VKWjRuSGg2WmNZQTNPMkRkT1BnRUlkdlNSRFEzbDlUQXFwTVIrV3NKMnJkN1FVdjR0V0J3dlhwM0RMbzkvclZDS0U0bDVHL1d1MVZxckdhS1BnNndQb3RHb2I3QWpWK1U0SGJMaHZNZXpiSk1pY0Yvb3JiTjlTSmJKWDdXVzRTSndELzdtRlBtbHBiZkROYTdWZE8zeEdEOXc5WVpWMGN4aU8vNjdZR1hKMGd0bzVDWmJsSDRmK3hTNmJ4QWlhcjh4d1NwOWJsaU43NTc2R2pROVdWZllhYlRpQ2JNUHphN3ZLWlhBZDhoN1NsMnl2SXJoNGM9In0seyJJZCI6IjQiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlJoelBoUkJKZ0JZYXZHaTlwMzg2NmFQUmFrbEQ5YTBSeHpDNllEU2FMTEpjendtSmhOTzZQbUdVQjNqNng0Y1NXanRobUY5VUlXRnJpZXd0QzBLaGdkajJyVnNSMVc0S25INFk0eElxUkRhUkUva05SbUVNNjFKUnh5QWVIdEdwWVdmKzRJU0dQZExpYkhITDBqaFJ2eU52eXhheVFLczFWdzg2bjFMR3JWY0FTWWljR2dTZ05VUHFsbE5qbkovR2FIc2ZnL2hkcG1ycklMVnppRE5WNUVDTTVQVzdZQ2ZCM0krdWQxeXJSNG5TWklDWERsOFAzUmp2UlNHaDFyVHhySEk2dGRabFNlaUN6V2gxajhaeE1Na3pBbDVFWWJmR2xzTGJqNUIzaUs3cGhGL3BGa0tsbVdLMjBPZmtKRkJTbi8vOUl1anpSek5nSzF1UjRIQ3Y3RnA5OHVXVVM2UmUxcjRpVFh4VjluOTZCeWx3cUNjSGJ6a21jYmVFNC96RjdJaGtjMGR2QURrd25OS3JDeHRtbjdoazBLVSthSnRuVzExQUZIK2NEbEk9In0seyJJZCI6IjUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQk5SRkhLcFAzL3gvdkE0QTYyWlNSL2VLc0dGN2dsNWpkVEFOWDd0bWNBNWw2NDNMRU5objVNR0JJenBOZ2lSRUJjb3AyNnZQOEtMMXVJT0pYUHgyR2luKytpYkxGZ2J4T0d1eUVPcDhRRzlaVlBsMWZFMmM3U29YZE0wM1h0SUFxdlhCbThtQXlJRE9CZEttbWlzY0xKS3ptUElackxuK3hkV0JYNWg5bXp5TEtkT1BGOStwWVBJVHdGS3Eva2tDWGRjd2ZiL3ZGcWZUclJwV3FFeTl0MGxFUkUzYStOQ0lPZzlxbzE0YWdGOHpFWStsVDRDWHY2Y2dQYVBqOVFNZkJlMVFKYVdHc2JBd0kyVWlqcXlieTlFTVcrVXpDemJqTWh0Tzh4VHBUT2hvYitOZ3pkN1RsQVJtRmREWVlKQkNWT0NiMENBaVNienRnZVRhbGdGaGxuM1ZJVlBtWHZHREUvMTNwZjZ5THNjNHQ0S01WbjBnMUVCb2Y3Z0tVbnkwWmtVb0Z6RlQrY080Q2hHUDVkdnlSaXpncnk5SlpXUzhqeVh0eWpnWTF3Vzg9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"820706fb-5e04-56ec-89a8-64cd46f41c67\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjIifSx7IklkIjoiNCJ9LHsiSWQiOiI1In0seyJJZCI6IjAifSx7IklkIjoiMSJ9LHsiSWQiOiIzIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"c4143f1170c30a16\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0JhdGNoaW5nLXRvcC0xJTNBNzE5N2QxNTYtMmQ1MC00YmExLWE3NjYtNzEwOTBlZDRhYzg5JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c5f17f62-ca1c-5d03-87e1-1d54d2ec368d\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jNWYxN2Y2Mi1jYTFjLTVkMDMtODdlMS0xZDU0ZDJlYzM2OGQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"9348eb275f18941b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0JhdGNoaW5nLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"64b9f316-37bd-56b6-8596-91202f4dfc3d\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"87d4ac28668626e0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3QmF0Y2hpbmctdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ebc59c1a-0a2a-57b1-af45-fe2c12da0c3f\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5lYmM1OWMxYS0wYTJhLTU3YjEtYWY0NS1mZTJjMTJkYTBjM2Y8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestCancelSendReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2oBzhUkAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c2e83b7337bf8a86\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdDYW5jZWxTZW5kUmVjZWl2ZS10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"341\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"98e054eb-e9b3-57e9-be39-36ddf15b4900\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3Q2FuY2VsU2VuZFJlY2VpdmUtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjk4ZTA1NGViLWU5YjMtNTdlOS1iZTM5LTM2ZGRmMTViNDkwMDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"11e71530123ab5c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"50\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"98\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"31f8b90b-d35e-5832-96ee-db3dcbb64c06\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"100ea789a8a3653f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"128\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5ae5e7d5-6892-5b15-97f8-85e3707a9f21\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"26f998b08b9178dd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"482\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3Q2FuY2VsU2VuZFJlY2VpdmUtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"dfeeb8de-a736-555e-b8b6-dae8bfde516a\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"f97d60922b73ed6c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"298\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"384\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a7969a04-26d0-5070-a65e-f8323e39ae99\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3Q2FuY2VsU2VuZFJlY2VpdmUtdG9wLTE6ODkwN2YwNDgtZGY0Zi00NjczLWFlZGItZmExNTcyYzhmNWFjPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmE3OTY5YTA0LTI2ZDAtNTA3MC1hNjVlLWY4MzIzZTM5YWU5OTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"df21110af2b0bee9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"172\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xJTNBODkwN2YwNDgtZGY0Zi00NjczLWFlZGItZmExNTcyYzhmNWFjJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f2e5d111-c55e-58f9-bf8b-b327ddb75610\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5mMmU1ZDExMS1jNTVlLTU4ZjktYmY4Yi1iMzI3ZGRiNzU2MTA8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"87e26d7718b964cd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"98\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0NhbmNlbFNlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"330bb533-3d80-5a88-848a-d7052569eebc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"22a36c6e5c29ac96\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3Q2FuY2VsU2VuZFJlY2VpdmUtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0683f4d4-5f5a-5fdd-8c35-96e247b3e134\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wNjgzZjRkNC01ZjVhLTVmZGQtOGMzNS05NmUyNDdiM2UxMzQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestDoubleAck.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2iOUkiVAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f5729c2cb116ece6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdEb3VibGVBY2stdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"333\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:43 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8bc56f2b-c300-5b01-9a5d-0d1ddbe3146d\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RG91YmxlQWNrLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD44YmM1NmYyYi1jMzAwLTViMDEtOWE1ZC0wZDFkZGJlMzE0NmQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"41f1d5db8439ae1e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"42\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:43 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8da384ee-256a-52c4-a0e6-e6d83d89db3c\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"e943263d33d07592\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"91\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:43 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"eced53b7-4469-5298-96d7-31815c8a4b60\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"1ae92f2c56396ae0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"466\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RG91YmxlQWNrLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdEb3VibGVBY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:43 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f6f9bde1-7250-5633-8433-dfd76ab36fcb\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"eb1cad7847e50c28\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"282\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNSYXdEb3VibGVBY2stdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"376\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:43 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d59f15d9-b90a-53f2-9abc-77efa1e9bc9e\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RG91YmxlQWNrLXRvcC0xOjRkYTc4NGVlLTU2NmMtNDE1ZC1iMmU5LWIzNGQyNDdmYmI1ZTwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5kNTlmMTVkOS1iOTBhLTUzZjItOWFiYy03N2VmYTFlOWJjOWU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"9556aa3f10edb812\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0RvdWJsZUFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"991693fe-80c8-551b-aa70-f1c8982caa77\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmQ4YTc5MDA0LTFjZGEtNThmNS1hYmRlLWYyMzIwNDNlOTc5OTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjk5MTY5M2ZlLTgwYzgtNTUxYi1hYTcwLWYxYzg5ODJjYWE3NzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"17e948c0f1df9776\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0RvdWJsZUFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6643724d-5fc7-5157-8c83-107b4723ee3b\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjk3MGQzMzA0LWY5ZjItNWFiNy1hMDk5LTUxMzJlMTE2MDVkYjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjY2NDM3MjRkLTVmYzctNTE1Ny04YzgzLTEwN2I0NzIzZWUzYjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"35508df3310db5ec\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"206\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MiZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0RvdWJsZUFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"daa2deb6-eef0-5193-b6b1-bc80f6144eff\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmMxNjM4NjMyLTM0YjktNWEzMy1hNTVjLWU0MDQyYzVkNDU1ZjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmRhYTJkZWI2LWVlZjAtNTE5My1iNmIxLWJjODBmNjE0NGVmZjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"7b0b092ab37d147f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1492\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b31bbd26-f66e-5304-9dcb-df10ee8aeafc\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjQ0MjMxIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNDQxMTMifSwiQm9keSI6IjEiLCJNRDVPZkJvZHkiOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsIk1lc3NhZ2VJZCI6IjIxMWQwZDM3LTNlZWUtNDYwMC1hYjMxLWU4MzFlMWM0YzVlNyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCUE1JRnNTUEY4bkIwYVhXMmM1L0NiZGxMaE1seXZBNUI4cnVPazRVeVNsS3ovNjVzK2tabDRNZmNUSmZxekRxMDcybWRKTFFjTXpjRXJpTklScGJmWkVWelR4cWhzMFZqVEt3ODE1VVcyRnU1d0t2TXJhNnRrelFNN3VtQU5zOXFSRlUzeURLeVk1Vmk3QWlRL29WdWlRbkY5SEorenVUbVpLSnNzeXowZEd2WnNCMVlnOCtRZFUzV2U2SUVBaUlWcnpEd1VhVjZLemZrV3NFak9Zc00wanR3TU5mZytsM1kyR2pZRVJ4MTBSVmhUMXNIdGJ6ajRySndSQzF4NTZpRDNiZjRpSGtVQm9FaytoV21rb09sdTcxS01xZHRzWkVDdEdYSUdoOHR3NVZEM0J2cFVROUxzMHdDdUFhcDlrOVUxd1FUMjBweUw0NklMbUhyT1VINDZyYW0wSG5zeVRaeU83Z1ZKWTVqR0dZYjBnOWxueXZEeENFUDBsajNXdDArRDJSa2g3T1pmRHBOKzk4SVVJRUNyZUJ6dkVmcTRvNjA0cVl1RzFVVlRnVT0ifSx7IkF0dHJpYnV0ZXMiOnsiU2VuZGVySWQiOiJBUk9BM1RZTU8zQkdESEpGQkhUNzU6QVdTLUNMT1VEQ0FTVCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI0NDIzMSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjQ0MTg3In0sIkJvZHkiOiIyIiwiTUQ1T2ZCb2R5IjoiYzgxZTcyOGQ5ZDRjMmY2MzZmMDY3Zjg5Y2MxNDg2MmMiLCJNZXNzYWdlSWQiOiIyYmU2YmU0Zi1mNzIyLTQ3NDUtYjEwNS1iNGZlZThlNmVhMzEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQktYWHlFUVJnWER0NDhvV2Y2Q0ZZa1lpOGgwcDlQRmoxY2FtM0hvR2RZaGJ6VjBrSGtXMUFnUVR2cWd0NVVRaFY2NWt0NmFzOHN1bzdkNCtzcUhVVXZBdUVKR2tDdklzWlB0L2Z0SWtDVktQeG5uemhKM3J6ZkdOOC9Ncm5IQ21aRXBUaVRYTFpvd21CMnpqeWdEZW1zL05qcjE1aFViZGowZHNRVm9KTmZOR1l1WElJMzF1U2tzMFFKM3llL0NQdXMxWUd3LzBkOWRHSmwreVRkMkV1aFRYT0hjanlJYmk5aStVcUF2TEFFREo4S3NpVFFDTjBYUTFNcUlGV0M0U2U3aWlMb0FmSXNGUmVCYmRHZU5ocTNyUGd1OGcxcm1UN3RZYjk4YzlhTzk2dGp6R2NsckJIQ2g2RUxUMVVtWFllNEltTW1tQlg4VjA3bUM5Q3FiN1lCd1ZKSFE4NXd4TVYzMHRUQ3V6OU5nemZnck1UOXRVNS8yWTdOVTNtL2llMG56TEVUdDFObkc4aEhnRG1RcVExNWU2dndCREhVNllFUFVXM0dxSHkrS289In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"16a8eb3347597f64\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"753\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a8fc571b-83af-593e-bdfd-352d9b4b10c6\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjQ0MzM2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNDQwNDIifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1lc3NhZ2VJZCI6ImI0MTM3ZTk1LTJhMGUtNDllMy1hMzc0LTI1MDVlYTE4MTIwYyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNWh5YURqR1BJTTR0WlRYVy9CWi8xdWRRTEt2M3NwME9kNHZ1ZjA4MHE0bE1IcFZFUU9uclRFTlFvUVpSTzFTbks0MTZVMmVkb0RpK3VzRDdkNk1hNUF0NHBNWXJlTVdKTEN5dXhGWjNCdEV0SVZhRHdKUktvU0ErSUV1R2ExdGZGT1Jwb1ZnSklhY0hZUTdSd3RoTndJUmZZSHE1Z2FzY25Eaml4cmlKYnlKMHVpb2xXb0NNUjl1SnZLUFZ3c3RsK0ZzTlFzNjBFaURTVkFnRG05alZ0YXRrN2YxR3ZDeDNwSkFjY3ZVYzRSQU45bWRQZ3dqcWlWQisxa0RMbnNBR1p0RXNNWU55Q1Rad0tLUmlwekwxL2oyQVB3Yy9ScWJPTEZpVUZrZ0VaZ2IwSVEwMWJvaXhyQ3JXOW9QdHRKSmpWRDJzNHZIcEMvZ0VCMjd6UGNFbFFnRnRXRWlyNnkycnNxNDRISzZyWVkrdHlZSUR6bU4vT1ZMTXhlZkZUK2UxR0F2WGpoTjV3L2wzV0dzejVFbURaTGJrcGQ5TFlUQ20vTU9IWTJHaDhjdz0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"0aabe83da9929642\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1026\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlBNSUZzU1BGOG5CMGFYVzJjNS9DYmRsTGhNbHl2QTVCOHJ1T2s0VXlTbEt6LzY1cytrWmw0TWZjVEpmcXpEcTA3Mm1kSkxRY016Y0VyaU5JUnBiZlpFVnpUeHFoczBWalRLdzgxNVVXMkZ1NXdLdk1yYTZ0a3pRTTd1bUFOczlxUkZVM3lES3lZNVZpN0FpUS9vVnVpUW5GOUhKK3p1VG1aS0pzc3l6MGRHdlpzQjFZZzgrUWRVM1dlNklFQWlJVnJ6RHdVYVY2S3pma1dzRWpPWXNNMGp0d01OZmcrbDNZMkdqWUVSeDEwUlZoVDFzSHRiemo0ckp3UkMxeDU2aUQzYmY0aUhrVUJvRWsraFdta29PbHU3MUtNcWR0c1pFQ3RHWElHaDh0dzVWRDNCdnBVUTlMczB3Q3VBYXA5azlVMXdRVDIwcHlMNDZJTG1Ick9VSDQ2cmFtMEhuc3lUWnlPN2dWSlk1akdHWWIwZzlsbnl2RHhDRVAwbGozV3QwK0QyUmtoN09aZkRwTis5OElVSUVDcmVCenZFZnE0bzYwNHFZdUcxVVZUZ1U9In0seyJJZCI6IjEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQktYWHlFUVJnWER0NDhvV2Y2Q0ZZa1lpOGgwcDlQRmoxY2FtM0hvR2RZaGJ6VjBrSGtXMUFnUVR2cWd0NVVRaFY2NWt0NmFzOHN1bzdkNCtzcUhVVXZBdUVKR2tDdklzWlB0L2Z0SWtDVktQeG5uemhKM3J6ZkdOOC9Ncm5IQ21aRXBUaVRYTFpvd21CMnpqeWdEZW1zL05qcjE1aFViZGowZHNRVm9KTmZOR1l1WElJMzF1U2tzMFFKM3llL0NQdXMxWUd3LzBkOWRHSmwreVRkMkV1aFRYT0hjanlJYmk5aStVcUF2TEFFREo4S3NpVFFDTjBYUTFNcUlGV0M0U2U3aWlMb0FmSXNGUmVCYmRHZU5ocTNyUGd1OGcxcm1UN3RZYjk4YzlhTzk2dGp6R2NsckJIQ2g2RUxUMVVtWFllNEltTW1tQlg4VjA3bUM5Q3FiN1lCd1ZKSFE4NXd4TVYzMHRUQ3V6OU5nemZnck1UOXRVNS8yWTdOVTNtL2llMG56TEVUdDFObkc4aEhnRG1RcVExNWU2dndCREhVNllFUFVXM0dxSHkrS289In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"260c4bcb-ad4d-5108-bfc9-29fdb5a9e8f0\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifSx7IklkIjoiMSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"fa17a4ccca7da4a2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1026\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlBNSUZzU1BGOG5CMGFYVzJjNS9DYmRsTGhNbHl2QTVCOHJ1T2s0VXlTbEt6LzY1cytrWmw0TWZjVEpmcXpEcTA3Mm1kSkxRY016Y0VyaU5JUnBiZlpFVnpUeHFoczBWalRLdzgxNVVXMkZ1NXdLdk1yYTZ0a3pRTTd1bUFOczlxUkZVM3lES3lZNVZpN0FpUS9vVnVpUW5GOUhKK3p1VG1aS0pzc3l6MGRHdlpzQjFZZzgrUWRVM1dlNklFQWlJVnJ6RHdVYVY2S3pma1dzRWpPWXNNMGp0d01OZmcrbDNZMkdqWUVSeDEwUlZoVDFzSHRiemo0ckp3UkMxeDU2aUQzYmY0aUhrVUJvRWsraFdta29PbHU3MUtNcWR0c1pFQ3RHWElHaDh0dzVWRDNCdnBVUTlMczB3Q3VBYXA5azlVMXdRVDIwcHlMNDZJTG1Ick9VSDQ2cmFtMEhuc3lUWnlPN2dWSlk1akdHWWIwZzlsbnl2RHhDRVAwbGozV3QwK0QyUmtoN09aZkRwTis5OElVSUVDcmVCenZFZnE0bzYwNHFZdUcxVVZUZ1U9In0seyJJZCI6IjEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQktYWHlFUVJnWER0NDhvV2Y2Q0ZZa1lpOGgwcDlQRmoxY2FtM0hvR2RZaGJ6VjBrSGtXMUFnUVR2cWd0NVVRaFY2NWt0NmFzOHN1bzdkNCtzcUhVVXZBdUVKR2tDdklzWlB0L2Z0SWtDVktQeG5uemhKM3J6ZkdOOC9Ncm5IQ21aRXBUaVRYTFpvd21CMnpqeWdEZW1zL05qcjE1aFViZGowZHNRVm9KTmZOR1l1WElJMzF1U2tzMFFKM3llL0NQdXMxWUd3LzBkOWRHSmwreVRkMkV1aFRYT0hjanlJYmk5aStVcUF2TEFFREo4S3NpVFFDTjBYUTFNcUlGV0M0U2U3aWlMb0FmSXNGUmVCYmRHZU5ocTNyUGd1OGcxcm1UN3RZYjk4YzlhTzk2dGp6R2NsckJIQ2g2RUxUMVVtWFllNEltTW1tQlg4VjA3bUM5Q3FiN1lCd1ZKSFE4NXd4TVYzMHRUQ3V6OU5nemZnck1UOXRVNS8yWTdOVTNtL2llMG56TEVUdDFObkc4aEhnRG1RcVExNWU2dndCREhVNllFUFVXM0dxSHkrS289In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e5b6bce6-48de-5a52-80ff-ded0503a73aa\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifSx7IklkIjoiMSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"9660b93fcd8a9e82\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1554\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlBNSUZzU1BGOG5CMGFYVzJjNS9DYmRsTGhNbHl2QTVCOHJ1T2s0VXlTbEt6LzY1cytrWmw0TWZjVEpmcXpEcTA3Mm1kSkxRY016Y0VyaU5JUnBiZlpFVnpUeHFoczBWalRLdzgxNVVXMkZ1NXdLdk1yYTZ0a3pRTTd1bUFOczlxUkZVM3lES3lZNVZpN0FpUS9vVnVpUW5GOUhKK3p1VG1aS0pzc3l6MGRHdlpzQjFZZzgrUWRVM1dlNklFQWlJVnJ6RHdVYVY2S3pma1dzRWpPWXNNMGp0d01OZmcrbDNZMkdqWUVSeDEwUlZoVDFzSHRiemo0ckp3UkMxeDU2aUQzYmY0aUhrVUJvRWsraFdta29PbHU3MUtNcWR0c1pFQ3RHWElHaDh0dzVWRDNCdnBVUTlMczB3Q3VBYXA5azlVMXdRVDIwcHlMNDZJTG1Ick9VSDQ2cmFtMEhuc3lUWnlPN2dWSlk1akdHWWIwZzlsbnl2RHhDRVAwbGozV3QwK0QyUmtoN09aZkRwTis5OElVSUVDcmVCenZFZnE0bzYwNHFZdUcxVVZUZ1U9IiwiVmlzaWJpbGl0eVRpbWVvdXQiOjF9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJLWFh5RVFSZ1hEdDQ4b1dmNkNGWWtZaThoMHA5UEZqMWNhbTNIb0dkWWhielYwa0hrVzFBZ1FUdnFndDVVUWhWNjVrdDZhczhzdW83ZDQrc3FIVVV2QXVFSkdrQ3ZJc1pQdC9mdElrQ1ZLUHhubnpoSjNyemZHTjgvTXJuSENtWkVwVGlUWExab3dtQjJ6anlnRGVtcy9OanIxNWhVYmRqMGRzUVZvSk5mTkdZdVhJSTMxdVNrczBRSjN5ZS9DUHVzMVlHdy8wZDlkR0psK3lUZDJFdWhUWE9IY2p5SWJpOWkrVXFBdkxBRURKOEtzaVRRQ04wWFExTXFJRldDNFNlN2lpTG9BZklzRlJlQmJkR2VOaHEzclBndThnMXJtVDd0WWI5OGM5YU85NnRqekdjbHJCSENoNkVMVDFVbVhZZTRJbU1tbUJYOFYwN21DOUNxYjdZQndWSkhRODV3eE1WMzB0VEN1ejlOZ3pmZ3JNVDl0VTUvMlk3TlUzbS9pZTBuekxFVHQxTm5HOGhIZ0RtUXFRMTVlNnZ3QkRIVTZZRVBVVzNHcUh5K0tvPSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfSx7IklkIjoiMiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNWh5YURqR1BJTTR0WlRYVy9CWi8xdWRRTEt2M3NwME9kNHZ1ZjA4MHE0bE1IcFZFUU9uclRFTlFvUVpSTzFTbks0MTZVMmVkb0RpK3VzRDdkNk1hNUF0NHBNWXJlTVdKTEN5dXhGWjNCdEV0SVZhRHdKUktvU0ErSUV1R2ExdGZGT1Jwb1ZnSklhY0hZUTdSd3RoTndJUmZZSHE1Z2FzY25Eaml4cmlKYnlKMHVpb2xXb0NNUjl1SnZLUFZ3c3RsK0ZzTlFzNjBFaURTVkFnRG05alZ0YXRrN2YxR3ZDeDNwSkFjY3ZVYzRSQU45bWRQZ3dqcWlWQisxa0RMbnNBR1p0RXNNWU55Q1Rad0tLUmlwekwxL2oyQVB3Yy9ScWJPTEZpVUZrZ0VaZ2IwSVEwMWJvaXhyQ3JXOW9QdHRKSmpWRDJzNHZIcEMvZ0VCMjd6UGNFbFFnRnRXRWlyNnkycnNxNDRISzZyWVkrdHlZSUR6bU4vT1ZMTXhlZkZUK2UxR0F2WGpoTjV3L2wzV0dzejVFbURaTGJrcGQ5TFlUQ20vTU9IWTJHaDhjdz0iLCJWaXNpYmlsaXR5VGltZW91dCI6MX1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"32e37070-65d6-5e95-9c19-12467d32676d\"\n          ]\n        },\n        \"Body\": \"eyJGYWlsZWQiOlt7IkNvZGUiOiJSZWNlaXB0SGFuZGxlSXNJbnZhbGlkIiwiSWQiOiIwIiwiTWVzc2FnZSI6Ik1lc3NhZ2UgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgdmlzaWJpbGl0eSB0aW1lb3V0IGNoYW5nZSIsIlNlbmRlckZhdWx0Ijp0cnVlfSx7IkNvZGUiOiJSZWNlaXB0SGFuZGxlSXNJbnZhbGlkIiwiSWQiOiIxIiwiTWVzc2FnZSI6Ik1lc3NhZ2UgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgdmlzaWJpbGl0eSB0aW1lb3V0IGNoYW5nZSIsIlNlbmRlckZhdWx0Ijp0cnVlfV0sIlN1Y2Nlc3NmdWwiOlt7IklkIjoiMiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"cdb4ea50c1795881\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"12a3d769-adb7-56e3-b32f-b55fb553df1b\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cd2c94ac0fabfd33\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5d2d2de7-a973-50d8-a261-4fd1b1977920\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"ba4dbf9b2f2d9cc1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"78e79350-1315-50c3-8a8a-f1660bf0093b\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bd53da082654a111\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"171\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"753\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"10464bc6-56ab-5d36-8d05-29f04e4ef4ce\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjQ0MzM2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIyIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNDQwNDIifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1lc3NhZ2VJZCI6ImI0MTM3ZTk1LTJhMGUtNDllMy1hMzc0LTI1MDVlYTE4MTIwYyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCN2FPVGFtNnJTanE1ZGI1MnhjTStNTDRiOWpqd1VYcHFtMEFCbUpkbGFzOW00dEtwQ0dCc3VSZ1F6Zk9aYmR6TXpMVk1leHNoMmgxdlZOZVljTE9JUWdIMDlyWFNqTHZkb2lvb0YwdmJ3NjJnNmFYZmwycUFjR01SaEMvekw3djdocVhtbG5PQ1JpL2dFQ3FsemRyZWllYnZMRlIvaGxtRzkvUjRNbk5ESU8vZzNHaHkzVWFmdngyR212bjRVbjNuRFNmUSswMkZpcWdycG9XTzM4TzB2WllDRkMvalNwcHpXWk95RGZHemVHV05HMVh5dkl3aGViRjV6eWNUTFkrWEMvN253aGJHcU5TTkd1ZGQyZ2RxSHVZNm9aKzVzcDIvMHRNNU82VHQ4anZkRllnbEMyR3o3ZVhMUUxXMlJXbzFTOUtrQlhvdlE5c1lwbEhLUklzblp3REo4aWd6OWt1Y1ZOc0gxSDlpUTlOUzByN2FEb3FaTW81cnNBbUUyVVc2RXdFN2VWeFdGVTVpcWIvV20xa09Lem9kUjd1Z0E5WURJWi9LeFZ3NDZuVT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"c939059dd7ecf4c1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"164\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0RvdWJsZUFjay10b3AtMSUzQTRkYTc4NGVlLTU2NmMtNDE1ZC1iMmU5LWIzNGQyNDdmYmI1ZSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f674ad00-286e-5603-b511-cf36308b196f\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5mNjc0YWQwMC0yODZlLTU2MDMtYjUxMS1jZjM2MzA4YjE5NmY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"8f6509bfdf6999cf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0RvdWJsZUFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c0d1c95b-d4d9-511b-b7cd-ab6dcc3c28e3\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"2b11c4da9e4438f2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"118\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3RG91YmxlQWNrLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9b5559ae-9e13-5446-9b6a-3b9886f5bb2a\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD45YjU1NTlhZS05ZTEzLTU0NDYtOWI2YS0zYjk4ODZmNWJiMmE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestErrorOnReceiveFromClosedSubscription.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2mI64HCgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d8ccf1808e4bc741\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"360\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f941cb4f-7862-5264-9318-a97960841a8e\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5mOTQxY2I0Zi03ODYyLTUyNjQtOTMxOC1hOTc5NjA4NDFhOGU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"4f2a52b6805bb59c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:47 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"47fbf4b1-3db2-511f-bfc6-968725555b54\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"c587c7ca19a253b4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"147\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"118\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:47 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0194390b-65bd-5c25-89cc-5b3d7d5ac66e\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"3bb1708ff92f56fa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"520\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:47 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ef931110-81ca-5d39-b697-7326992dd772\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"5c24aac024165631\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"336\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNSYXdFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"403\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:47 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"aa412d57-5450-5144-87f8-4f614cb799ae\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xOmI4YmFmNTNmLTVkNGMtNGU4MS04MGFiLWZlYzVkYzgwMTFhMjwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5hYTQxMmQ1Ny01NDUwLTUxNDQtODdmOC00ZjYxNGNiNzk5YWU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"68a2d8ab863ead98\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"191\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSUzQWI4YmFmNTNmLTVkNGMtNGU4MS04MGFiLWZlYzVkYzgwMTFhMiZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:47 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9eb65bcf-7b07-5cb6-8d27-39f963e0245c\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD45ZWI2NWJjZi03YjA3LTVjYjYtOGQyNy0zOWY5NjNlMDI0NWM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3252de58ed03e0de\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:47 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"384356ec-27b6-50c3-ae50-34da3f514a88\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9d57cfa4573bc63a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"145\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3RXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6442ea80-c328-5f77-8cf9-88b6dbc0d79d\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD42NDQyZWE4MC1jMzI4LTVmNzctOGNmOS04OGI2ZGJjMGQ3OWQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestErrorOnSendToClosedTopic.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2mBv8FJAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"689d698e98396bd7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"84\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdFcnJvck9uU2VuZFRvQ2xvc2VkVG9waWMtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"348\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"998e3d6a-ab20-5a3a-beec-5f5cb3c6ab5c\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3RXJyb3JPblNlbmRUb0Nsb3NlZFRvcGljLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD45OThlM2Q2YS1hYjIwLTVhM2EtYmVlYy01ZjVjYjNjNmFiNWM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"f773d563432f486f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"133\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3RXJyb3JPblNlbmRUb0Nsb3NlZFRvcGljLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"02161f1e-a50d-5422-8b38-7d28bdeb2544\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wMjE2MWYxZS1hNTBkLTU0MjItOGIzOC03ZDI4YmRlYjI1NDQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestMetadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2wLvMftgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"080ef99fd37d9e3b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"68\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdNZXRhZGF0YS10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d9bd1ab9-131c-521c-9ae0-788f0bed1674\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3TWV0YWRhdGEtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmQ5YmQxYWI5LTEzMWMtNTIxYy05YWUwLTc4OGYwYmVkMTY3NDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"426d4ae958ebab6a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"41\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f9e5b88d-44ad-5383-8851-dabb5c5cedb7\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"4b5be636e0fa8b11\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"de0f813c-9212-542c-839f-e30a8ae36a18\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"e6712e124e62539e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"464\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3TWV0YWRhdGEtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2746aab0-2037-5431-9f9a-c88638c6ba05\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"bcd0df8fa702afbf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"280\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd01ldGFkYXRhLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e7147a84-f596-5911-9229-18b2ed678d79\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3TWV0YWRhdGEtdG9wLTE6YTBjZjMwYzktZGY2Yy00YzNkLTlkYTgtMTBmOGE4MzZjZDljPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmU3MTQ3YTg0LWY1OTYtNTkxMS05MjI5LTE4YjJlZDY3OGQ3OTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"3747d5a7a21a6ae1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"3733\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjEuQ0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f1d8d6d7-07ef-53be-8734-b4e11f1e17d6\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmVmNWMyYjFmLTdlODktNTczYy05YzdkLTQ5Mjk2Njc4YjM1NDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmYxZDhkNmQ3LTA3ZWYtNTNiZS04NzM0LWI0ZTExZjFlMTdkNjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"dacf9ce074b825ee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2276\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e26a8567-5278-5655-a785-e7514a89f861\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU3OTI2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTc4ODcifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiZjNmYmZkZTFlODI1MjRkZWMwOGU0YjVmNjYwYTEwNmMiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyIxMjM0NSI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiMTIzNDUifSwiX18weDBfX19fMHgxX19fXzB4Ml9fX18weDNfX19fMHg0X19fXzB4NV9fX18weDZfX19fMHg3X19fXzB4OF9fX18weDlfX19fMHhhX19fXzB4Yl9fX18weGNfX19fMHhkX19fXzB4ZV9fX18weGZfXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiJTAwJTAxJTAyJTAzJTA0JTA1JTA2JTA3JTA4JTA5JTBBJTBCJTBDJTBEJTBFJTBGIn0sIl9fMHgxMF9fX18weDExX19fXzB4MTJfX19fMHgxM19fX18weDE0X19fXzB4MTVfX19fMHgxNl9fX18weDE3X19fXzB4MThfX19fMHgxOV9fX18weDFhX19fXzB4MWJfX19fMHgxY19fX18weDFkX19fXzB4MWVfX19fMHgxZl9fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIlMTAlMTElMTIlMTMlMTQlMTUlMTYlMTclMTglMTklMUElMUIlMUMlMUQlMUUlMUYifSwiX18weDIwX19fXzB4MjFfX19fMHgyMl9fX18weDIzX19fXzB4MjRfX19fMHgyNV9fX18weDI2X19fXzB4MjdfX19fMHgyOF9fX18weDI5X19fXzB4MmFfX19fMHgyYl9fX18weDJjX18tLl9fMHgyZl9fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIlMjAlMjElMjIlMjMkJTI1JiUyNyUyOCUyOSUyQSslMkMtLiUyRiJ9LCJfXzB4MmVfX19fMHgyZV9fX18weDJmX19mb29fXzB4MmZfXy5fXzB4MmVfX19fMHgyZl9fYmFyX18weDJmX18uX18weDJlX19fXzB4MmZfXy5fXzB4MmVfX19fMHgyZl9fYmF6Ll9fMHgyZV9fX18weDJmX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6Ii4uJTJGZm9vJTJGLi4lMkZiYXIlMkYuLiUyRi4uJTJGYmF6Li4lMkYifSwiX18weDJlX19fXzB4MmVfX19fMHg1Y19fZm9vX18weDVjX18uX18weDJlX19fXzB4NWNfX2Jhcl9fMHg1Y19fLl9fMHgyZV9fX18weDVjX18uX18weDJlX19fXzB4NWNfX2Jhei5fXzB4MmVfX19fMHg1Y19fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIuLiU1Q2ZvbyU1Qy4uJTVDYmFyJTVDLi4lNUMuLiU1Q2Jhei4uJTVDIn0sIl9fMHgyZV9fX18weDJlX19fXzB4NWNfX2Zvb19fMHg1Y19fX18weDVjX19iYXJfXzB4NWNfX19fMHg1Y19fX18weDVjX19iYXoiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6Ii4uJTVDZm9vJTVDJTVDYmFyJTVDJTVDJTVDYmF6In0sIl9fMHgzYV9fX18weDNiX19fXzB4M2NfX19fMHgzZF9fX18weDNlX19fXzB4M2ZfXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiOiUzQiUzQz0lM0UlM0YifSwiX18weDQwX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IkAifSwiX18weDViX19fXzB4NWNfX19fMHg1ZF9fX18weDVlX19fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIlNUIlNUMlNUQlNUVfIn19LCJNZXNzYWdlSWQiOiI2OTIzZjMyMy0xYjIyLTQyMzEtOTg4Yi00ZDJmMjEwZTQ3MzIiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnJQa3MzTzJTSE5xOTU1dDd2RmtqaEcxbXJoN05STEVXVFovUEpjcFNBdzNpajEzb1RNUFk5eDFyN2dzRnJYbDQ0c3E0dHIyVTdvcTJPYzBGSkdFbTNjZittdm84U0FPdG5vYkNGRnRCRjlFZThJRjAzQ1VFTnFPYnh6VGtJSmo3VDhPU3M2SVU3eEhmTTlPekpSdjZVOUtFT3BnOVRHM1ZKVHFLMkhRZjRtN3NNWkN4QTRlREIrSGZ4Z002SVNlUU5YS2NaS0xaNVEwS1cxTDd0dWRoN3hISTRmU0p6cEdhNHFBNGVPdXdrUTR4VDVzVStwZHRHbGY0TWVINEh3QkxNYitvOE9Hc1BOK0d3aStRaXBXSGpDS2FXcVZGK0taY3ppeG5taVVwNTVsL3pCUm9ZWVJPaHg0alBRK2xxR08rMW5FWk5oR3JrRWFuTEZ4RHdJd2NXMGFpMVlYYy91RHhmcTZOVG5mVGEyUXRwMDJmRGxmUnFhaVBQb2tBb1RxZ241dHQ4VlZWUkNFY0o3RlNPSWxueGc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"e834c7312ddcf88d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"543\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnJQa3MzTzJTSE5xOTU1dDd2RmtqaEcxbXJoN05STEVXVFovUEpjcFNBdzNpajEzb1RNUFk5eDFyN2dzRnJYbDQ0c3E0dHIyVTdvcTJPYzBGSkdFbTNjZittdm84U0FPdG5vYkNGRnRCRjlFZThJRjAzQ1VFTnFPYnh6VGtJSmo3VDhPU3M2SVU3eEhmTTlPekpSdjZVOUtFT3BnOVRHM1ZKVHFLMkhRZjRtN3NNWkN4QTRlREIrSGZ4Z002SVNlUU5YS2NaS0xaNVEwS1cxTDd0dWRoN3hISTRmU0p6cEdhNHFBNGVPdXdrUTR4VDVzVStwZHRHbGY0TWVINEh3QkxNYitvOE9Hc1BOK0d3aStRaXBXSGpDS2FXcVZGK0taY3ppeG5taVVwNTVsL3pCUm9ZWVJPaHg0alBRK2xxR08rMW5FWk5oR3JrRWFuTEZ4RHdJd2NXMGFpMVlYYy91RHhmcTZOVG5mVGEyUXRwMDJmRGxmUnFhaVBQb2tBb1RxZ241dHQ4VlZWUkNFY0o3RlNPSWxueGc9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdNZXRhZGF0YS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d445c71b-f7f8-55d6-a415-a52def099be2\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"9ed22d950e97fdf3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2487\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjEuQ0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8b7ea551-9e51-5eb0-8bd8-c76786a05ad8\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjE0ZGRhYTY4LWE5OWEtNTJhZS05OTg5LWM4NWViMTZiYjZjNjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjhiN2VhNTUxLTllNTEtNWViMC04YmQ4LWM3Njc4NmEwNWFkODwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"fab137da047753cd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1515\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"89e046dc-1082-56d6-b6b8-24ea087068e2\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU4MDg0IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTgwMjIifSwiQm9keSI6ImhlbGxvIHdvcmxkIiwiTUQ1T2ZCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiZGU4YmE3MGUyOTA3NjljYTE4NTQzZGE5MjQwZGUwMjUiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJfXzB4MjYzYV9fX18weDI2M2FfX19fMHgyNjNhX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IiVFMiU5OCVCQSVFMiU5OCVCQSVFMiU5OCVCQSJ9LCJfXzB4NjBfXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiJTYwIn0sIl9fMHg3Yl9fX18weDdjX19fXzB4N2RfX19fMHg3ZV9fX18weDdmX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IiU3QiU3QyU3RH4lN0YifSwiZm9vX18weDIwX19iYXJfXzB4MjBfX2JheiI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiZm9vJTIwYmFyJTIwYmF6In0sImZvb19fMHgyMl9fYmFyX18weDIyX19iYXoiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6ImZvbyUyMmJhciUyMmJheiJ9LCJmb29fXzB4MmZfX19fMHgyZl9fYmFyX18weDJmX19fXzB4MmZfX19fMHgyZl9fYmF6Ijp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiJmb28lMkYlMkZiYXIlMkYlMkYlMkZiYXoifSwiZm9vX18weDJmX19iYXJfXzB4MmZfX2JheiI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiZm9vJTJGYmFyJTJGYmF6In0sImZvb19fMHg1Y19fYmFyX18weDVjX19iYXoiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6ImZvbyU1Q2JhciU1Q2JheiJ9fSwiTWVzc2FnZUlkIjoiMjExMDkzYzAtNzgyZC00ZmYzLThkYjItYTM3NjlkY2U2NTYwIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUIrd05ZWnZBWlRkWFU5SlQ4WkxNdDl4YXZvWXg3OTVIQnhRTHBzdlFKTHFvSmppbnJPbElaVEFKWTV4aHVMZUlmdDU2SDJ4YU1LMGc0cmM2dDdjUSsyaWhURUZFaDk4dE9uRUxZdHQrMnVaZjl4V1p4NjVwckVCYXFMUnd4QnYwSks1MUxPWUlZTVBmVEFXTjV2UFNienpxVUhYb0UrREM1M2dtRGYxS2w4bzA1ZlVHRDYxZEg2eU56YWhLVDFBWS84L3ZaYmNrT3VjUFJVUjZHL05hMVlvdVFDNnU5dXFCSFRaSzJaMGdkaWQ0WlNFaVlXanVBNzZkQlZxYlVyUDc3RjlQZHE3ZURQMHpnQkFDbVlFVFVCWldJbzk4MlVaYllqNm5aVEl1TzhYSXZtWHN5dllvM1VNd0JrUlY4cVRwU2hBRWV6NUV0WlBiZ3FBTW1zTzFnN2I3cVhBRWx6Ukl4SXZ0a3dmYzlDZlpaRTVqZDRhcGxiZzBZOHdrVkF6R0VRWWw2NDFrQkU3c3hidTVwbElQZnpBPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"c0b5e3822c345bae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"543\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQit3TlladkFaVGRYVTlKVDhaTE10OXhhdm9ZeDc5NUhCeFFMcHN2UUpMcW9Kamluck9sSVpUQUpZNXhodUxlSWZ0NTZIMnhhTUswZzRyYzZ0N2NRKzJpaFRFRkVoOTh0T25FTFl0dCsydVpmOXhXWng2NXByRUJhcUxSd3hCdjBKSzUxTE9ZSVlNUGZUQVdONXZQU2J6enFVSFhvRStEQzUzZ21EZjFLbDhvMDVmVUdENjFkSDZ5TnphaEtUMUFZLzgvdlpiY2tPdWNQUlVSNkcvTmExWW91UUM2dTl1cUJIVFpLMlowZ2RpZDRaU0VpWVdqdUE3NmRCVnFiVXJQNzdGOVBkcTdlRFAwemdCQUNtWUVUVUJaV0lvOTgyVVpiWWo2blpUSXVPOFhJdm1Yc3l2WW8zVU13QmtSVjhxVHBTaEFFZXo1RXRaUGJncUFNbXNPMWc3YjdxWEFFbHpSSXhJdnRrd2ZjOUNmWlpFNWpkNGFwbGJnMFk4d2tWQXpHRVFZbDY0MWtCRTdzeGJ1NXBsSVBmekE9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdNZXRhZGF0YS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8a04fb67-15fa-5a6a-82b1-99510d08045e\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"02bb3e3ede4640de\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd01ldGFkYXRhLXRvcC0xJTNBYTBjZjMwYzktZGY2Yy00YzNkLTlkYTgtMTBmOGE4MzZjZDljJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"265667f7-5e27-5112-b76d-05c146d5857a\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4yNjU2NjdmNy01ZTI3LTUxMTItYjc2ZC0wNWMxNDZkNTg1N2E8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"bc8e22f7cbb24819\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd01ldGFkYXRhLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7856596c-bbe3-500b-8132-3b5aa3115e3f\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"9cbe5b1e58db824c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3TWV0YWRhdGEtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5f3e58f4-b0af-59af-b6a6-3ac2a85dcdc7\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD41ZjNlNThmNC1iMGFmLTU5YWYtYjZhNi0zYWMyYTg1ZGNkYzc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestNack.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg23ExuEIQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bfd8043b7753c6e2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdOYWNrLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"328\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"704e927a-53f9-5810-b5fe-f04c4b0ebf17\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3TmFjay10b3AtMTwvVG9waWNBcm4+CiAgPC9DcmVhdGVUb3BpY1Jlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+NzA0ZTkyN2EtNTNmOS01ODEwLWI1ZmUtZjA0YzRiMGViZjE3PC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L0NyZWF0ZVRvcGljUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"1d684e904de89ab8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"37\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"85\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8ba74e03-ea4c-506c-9b06-2c35f2bb227d\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n      }\n    },\n    {\n      \"ID\": \"029294a89da34162\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"115\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"82a381e3-581c-5406-af53-e3d540e4b617\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd05hY2stc3ViLTEifX0=\"\n      }\n    },\n    {\n      \"ID\": \"d6619cd28bdf997d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"456\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3TmFjay1zdWItMVwiXG5cdFx0fVxuXHRcdF1cblx0XHR9In0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljUmF3TmFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f477b682-8cfd-5418-9bf9-d4b494057609\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0606f6d2aa9ebec9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"272\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd05hY2stc3ViLTEmUHJvdG9jb2w9c3FzJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3TmFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"371\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b8d0926c-5e20-5231-853d-f05a46d8e536\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3TmFjay10b3AtMTplZGRiOTE3Mi0wMzg1LTRhOWEtODBlNi05MTExZjE0MjQ4MmI8L1N1YnNjcmlwdGlvbkFybj4KICA8L1N1YnNjcmliZVJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+YjhkMDkyNmMtNWUyMC01MjMxLTg1M2QtZjA1YTQ2ZDhlNTM2PC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1N1YnNjcmliZVJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"a38fb88e1afa5cda\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"436\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ed0d7f92-b318-5f0e-b147-1da4abe05809\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjFkZDU0NTMzLWJkMWUtNTNiZS04YzBjLTI3MDVhNWU2ZjRiOTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmVkMGQ3ZjkyLWIzMTgtNWYwZS1iMTQ3LTFkYTRhYmUwNTgwOTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"693be16ca2cd8183\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"436\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1e4a4759-2543-55c5-a6eb-256f3dbbe2c2\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmFjYjU1NWM5LWY2YmEtNTFjMy04MjI1LTM3ZmZlZTQyZDZjNDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjFlNGE0NzU5LTI1NDMtNTVjNS1hNmViLTI1NmYzZGJiZTJjMjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"2a6e85772a4c159a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"859\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a89c4d4e-d58f-5199-8442-2f78cd77f388\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjY0NTQwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjQ1MDIifSwiQm9keSI6IjEiLCJNRDVPZkJvZHkiOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiIzMTRjNzdiMjQ5ODkzYzZiM2M3NjVhNDJjYzA4YjI0NSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEifX0sIk1lc3NhZ2VJZCI6ImFjNzdkOTMyLWE4ZWQtNDhjOS1iZWE4LWQ4NDdkZTdiOWYwOSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNWtNRnBPQ1lZU2JTQUl2R1Q5bU0xbW9CY0dlNUVDZzhwZzhSa1VkWWxDRHdGZit2bXR6dGhUVHZNOHRidDVEVzcwNzhRbEhrWGJuVUVZc3NHSUZXSHd6STlOYzc0QVpwUkRqQWhmZEhkb2EweWNiNG9IN2srVmsvcHQzVEI0YVdjUUFWL1F6b0hTYVZLN00xUG8zeEM4aXJMd2dUVUkvVHZQZk1BcllRRGV5ZVBiOFQ3MEJHQ3g4K0lXNHFpMGthcFRiWk42emxUMUlmYTZwS1ZVdnU4R0JzK1A1YWJUaXpTWXlmR21WQytERUNOQUhYaHI4VW9IUG8vQ0h6bHQ3MHNyMVJNRnJOVU1HTjRRdWhqbmEvY0lENFR1SHBRaEFLUi90aHRCVDFIWngvVjFGVzdnUGVjQlQ4L0dJTnFSTTFVSkFlck9tVnY5emY2RlZDdjV0SXBEakpqT0M0VXZDZEFkOTh0Q1VHVi90Y3htb1oxeTRlN04yanJsN1k3aThyVE1TOUxoeUtCVG0xbGVWS2FSMHU5QT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"5e1b8708af7a7083\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"859\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0d5263e5-50db-5719-81d3-01d348239508\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjY0NjE5IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjQ0MjUifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiI5YWE0Njg3YzhiNzU2N2JhYTM4MGQ5ZjMwMGZlMjgzYSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjAifX0sIk1lc3NhZ2VJZCI6ImQ0M2E3NzhlLTY4YjAtNDEwZS05MGExLWVjYjM2ZDNiMzUzNiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCdjNQYmUrcWJtV2FxRmI0VXhNUHY3U3dQSTlFU2dMTnNoZmpKY1ZDc0hPR2J4ZmNJaE9MOU1HbU55bEs4dWFnVEhJbkF3UHo1dm5QSVRhYTJsQXNRUU5KSXY1bFc2dDg1bEJreUZGMXBsbzZOZTVxNFZFNkhZZTVoRzMrYXJUUEVlZjNZKzJHZ1VTcmRwSEY3NGxxMVZtU2ZRZ1d3VEtsRVp5N2VxNmZublorcmJtTDQrNk9kN3J1WEx1bXdEOE5TaVZtOG9tQUVvQlhBWVU0ZWowOS9mblpQQUt5S3NONDBYZ0pZVDd5V1FJMnhhOWZIS0VXTWdlY3RxY091a2Z1UzdPYjhJZ0JueTBhaXpMc2VheGpGYzdMcVlQVE5uc3NFU3ljMVFWd250WHp2N21mb3huWWZXejRWMWtFeWcwbjdtcStsVmR5QUtVNWxiRGFmMkV5aFVCMGlZRzk1OGtkZ1RPeHQxZS84Z0lMY3FLSUhPa3lBU0dxa2dyanVzUzNIL2s3UzNDc1FrSm4rSWZHazR6RnhmUT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3e29ea171dcfb8c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"561\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjVrTUZwT0NZWVNiU0FJdkdUOW1NMW1vQmNHZTVFQ2c4cGc4UmtVZFlsQ0R3RmYrdm10enRoVFR2TTh0YnQ1RFc3MDc4UWxIa1hiblVFWXNzR0lGV0h3ekk5TmM3NEFacFJEakFoZmRIZG9hMHljYjRvSDdrK1ZrL3B0M1RCNGFXY1FBVi9Rem9IU2FWSzdNMVBvM3hDOGlyTHdnVFVJL1R2UGZNQXJZUURleWVQYjhUNzBCR0N4OCtJVzRxaTBrYXBUYlpONnpsVDFJZmE2cEtWVXZ1OEdCcytQNWFiVGl6U1l5ZkdtVkMrREVDTkFIWGhyOFVvSFBvL0NIemx0NzBzcjFSTUZyTlVNR040UXVoam5hL2NJRDRUdUhwUWhBS1IvdGh0QlQxSFp4L1YxRlc3Z1BlY0JUOC9HSU5xUk0xVUpBZXJPbVZ2OXpmNkZWQ3Y1dElwRGpKak9DNFV2Q2RBZDk4dENVR1YvdGN4bW9aMXk0ZTdOMmpybDdZN2k4clRNUzlMaHlLQlRtMWxlVkthUjB1OUE9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljUmF3TmFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"578e1b2e-4861-5d7d-abaa-791850997f6c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"d53a27baf35421f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"020239c4-8950-56bc-927f-5bf291a874ad\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"fd8015f40f7918a3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"561\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnYzUGJlK3FibVdhcUZiNFV4TVB2N1N3UEk5RVNnTE5zaGZqSmNWQ3NIT0dieGZjSWhPTDlNR21OeWxLOHVhZ1RISW5Bd1B6NXZuUElUYWEybEFzUVFOSkl2NWxXNnQ4NWxCa3lGRjFwbG82TmU1cTRWRTZIWWU1aEczK2FyVFBFZWYzWSsyR2dVU3JkcEhGNzRscTFWbVNmUWdXd1RLbEVaeTdlcTZmbm5aK3JibUw0KzZPZDdydVhMdW13RDhOU2lWbThvbUFFb0JYQVlVNGVqMDkvZm5aUEFLeUtzTjQwWGdKWVQ3eVdRSTJ4YTlmSEtFV01nZWN0cWNPdWtmdVM3T2I4SWdCbnkwYWl6THNlYXhqRmM3THFZUFRObnNzRVN5YzFRVndudFh6djdtZm94bllmV3o0VjFrRXlnMG43bXErbFZkeUFLVTVsYkRhZjJFeWhVQjBpWUc5NThrZGdUT3h0MWUvOGdJTGNxS0lIT2t5QVNHcWtncmp1c1MzSC9rN1MzQ3NRa0puK0lmR2s0ekZ4ZlE9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NOU1RvcGljUmF3TmFjay1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fe9ac95b-e9f5-5c80-94e8-ab6df10d2e91\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"b56190d5c3251be4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0e5dcb27-c6f7-5e5c-8ace-a911de0e9c4d\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cc8fd095febfbfd8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"17fba773-f9b2-5786-b7b7-c545e14ba597\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"d2700136e8e15928\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"859\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"815aab78-086a-58f2-90c7-c94e10932ae3\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjY0NTQwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIyIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjQ1MDIifSwiQm9keSI6IjEiLCJNRDVPZkJvZHkiOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiIzMTRjNzdiMjQ5ODkzYzZiM2M3NjVhNDJjYzA4YjI0NSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEifX0sIk1lc3NhZ2VJZCI6ImFjNzdkOTMyLWE4ZWQtNDhjOS1iZWE4LWQ4NDdkZTdiOWYwOSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCOTZtNXp2Qm9hUVVxb2IyWGtBOHd4QzF0c0tiUG5YM2pSZjlNN3h6dFNBZEdHcjJzYjJ5T2hoMnZlMG5ZQUJlczFCVE1UK21uZmt1ZXBJOG1Fam5ZRTNiOGNpTVQ3OWhDQy9Yd2N5c0Z5dDNaZDBwblJBY1o4UVBqREtHcThhQnIwcTZ6Y1p1a09hdi91SGtFUlltNngvSEVIQlZSdWErWHZKQ3hTK2ZTRlNHODJsSDdWRWs3aTI1dVpwdlZQL3M1QU5jMmNlVGtNRGlLbVJvZjR5cHlBNWN5U1hjdFo4cFpWZTY1SkdTeG1hN0lNdVhlWE5YOVg5OFVNVHlldEYrRlJuTFlZdmpiNlYxTVhjcVdiNDBmUVlTNzdOTUNYRGtqUFA0TFRQOEUxdEpQbmo3anprLzJPTHN0L2dCZlFEZVZ5eTB6L3gzUUlLL0RYUXpPcWxMaGRhaW80SGdhRFZ3UlBGSFp3eUc3QkQ5aDJnOFQvME9Ca2plVVNPU2lNeUxFemRPSkF0MmI3bldQY3FMQWxJWnAxZz09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"3c115f1fc2e2e320\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"539\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjk2bTV6dkJvYVFVcW9iMlhrQTh3eEMxdHNLYlBuWDNqUmY5TTd4enRTQWRHR3Iyc2IyeU9oaDJ2ZTBuWUFCZXMxQlRNVCttbmZrdWVwSThtRWpuWUUzYjhjaU1UNzloQ0MvWHdjeXNGeXQzWmQwcG5SQWNaOFFQakRLR3E4YUJyMHE2emNadWtPYXYvdUhrRVJZbTZ4L0hFSEJWUnVhK1h2SkN4UytmU0ZTRzgybEg3VkVrN2kyNXVacHZWUC9zNUFOYzJjZVRrTURpS21Sb2Y0eXB5QTVjeVNYY3RaOHBaVmU2NUpHU3htYTdJTXVYZVhOWDlYOThVTVR5ZXRGK0ZSbkxZWXZqYjZWMU1YY3FXYjQwZlFZUzc3Tk1DWERralBQNExUUDhFMXRKUG5qN2p6ay8yT0xzdC9nQmZRRGVWeXkwei94M1FJSy9EWFF6T3FsTGhkYWlvNEhnYURWd1JQRkhad3lHN0JEOWgyZzhULzBPQmtqZVVTT1NpTXlMRXpkT0pBdDJiN25XUGNxTEFsSVpwMWc9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdOYWNrLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"920d1af9-f397-5c82-8af2-78cfeb6ebe93\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"7ba4509ea30395d8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"859\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2c3d50cc-6ae9-57a2-b37c-32fa7210de11\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjY0NjE5IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIyIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjQ0MjUifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiI5YWE0Njg3YzhiNzU2N2JhYTM4MGQ5ZjMwMGZlMjgzYSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjAifX0sIk1lc3NhZ2VJZCI6ImQ0M2E3NzhlLTY4YjAtNDEwZS05MGExLWVjYjM2ZDNiMzUzNiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCd3ZOU3A2QkRHbXJmYlJDZlJrY1lNOEVLM1Z6S29jS21YY01FaFB2Z3czSzB0aGYzd09NcFB5SmJlM0hyNnhqSVZ0QkFOSTRGUndFZWFDME1jWDZoaUF1cnRJOWs3YzA4R1RwZnBzQzdPUmlCc3lQd0xhaUpnbG1PZy9TZ0xrOEhRSXZsOU9WWm44SHFaaG1uOWdjZUp5VmFlUEs5eFlMdEtLTDBwM09WWGVQa1hXVjROTThOdDBEL0Zma2N2bGJRQmJBN2ZaLzkvTWZ3bEpNUGtHTWFnY0ZSRTJhMFFxQk9MTDVQZHpmWWR0bWlYOFgzVm0wWmUrbTlPc05WQXdrelpJekVQaXBIYVF0ZnFTVTdFMU5BQkhOamtGVmZkM1BjSWNkR3NWNDRYVHNvZ0dTcnR6Y0ZmZ2UrQjFWUDJKS2RPRFY5N1AzcXVtc1VKSWxyZTFnaFNDSHpsY3NTSE5PTm96UjlmcnAvL2FEODFZdk1mVzlLempKSXo3YWd3RFRMaVBFTnp3TGxkMDAvWHVHc1o4VmlXdz09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ec0b2ffe5befc684\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"539\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnd2TlNwNkJER21yZmJSQ2ZSa2NZTThFSzNWektvY0ttWGNNRWhQdmd3M0swdGhmM3dPTXBQeUpiZTNIcjZ4aklWdEJBTkk0RlJ3RWVhQzBNY1g2aGlBdXJ0STlrN2MwOEdUcGZwc0M3T1JpQnN5UHdMYWlKZ2xtT2cvU2dMazhIUUl2bDlPVlpuOEhxWmhtbjlnY2VKeVZhZVBLOXhZTHRLS0wwcDNPVlhlUGtYV1Y0Tk04TnQwRC9GZmtjdmxiUUJiQTdmWi85L01md2xKTVBrR01hZ2NGUkUyYTBRcUJPTEw1UGR6ZllkdG1pWDhYM1ZtMFplK205T3NOVkF3a3paSXpFUGlwSGFRdGZxU1U3RTFOQUJITmprRlZmZDNQY0ljZEdzVjQ0WFRzb2dHU3J0emNGZmdlK0IxVlAySktkT0RWOTdQM3F1bXNVSklscmUxZ2hTQ0h6bGNzU0hOT05velI5ZnJwLy9hRDgxWXZNZlc5S3pqSkl6N2Fnd0RUTGlQRU56d0xsZDAwL1h1R3NaOFZpV3c9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdOYWNrLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:06 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"90594687-da7f-54b7-82f6-24b1c2853d04\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"352ef178d8f50d77\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"159\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd05hY2stdG9wLTElM0FlZGRiOTE3Mi0wMzg1LTRhOWEtODBlNi05MTExZjE0MjQ4MmImVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:06 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"34aef294-7f32-5b22-b6a1-90a267c83c25\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4zNGFlZjI5NC03ZjMyLTViMjItYjZhMS05MGEyNjdjODNjMjU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"40875ece20061d31\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"85\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05hY2stc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:06 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6a81f0fd-38f0-5f28-af8a-92cb200ab69b\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"a51a8d8e2a03623e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"113\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3TmFjay10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:06 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"41e33262-75fe-5ba1-a201-50546d048ca6\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD40MWUzMzI2Mi03NWZlLTViYTEtYTIwMS01MDU0NmQwNDhjYTY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestNonExistentSubscriptionSucceedsOnOpenButFailsOnReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2pJoojCAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6554a034c8b7fc93\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:49 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5555f2f7-0201-53ea-b8e7-90c11ae81666\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestNonExistentTopicSucceedsOnOpenButFailsOnSend.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2wHjJ6EAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"eb44b3c49ec32599\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQW5vbmV4aXN0ZW50dG9waWMmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 404,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"259\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b3d7047e-0664-512b-b4c2-66481e94a064\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPk5vdEZvdW5kPC9Db2RlPgogICAgPE1lc3NhZ2U+VG9waWMgZG9lcyBub3QgZXhpc3Q8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPmIzZDcwNDdlLTA2NjQtNTEyYi1iNGMyLTY2NDgxZTk0YTA2NDwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestNonUTF8MessageBody.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2yIuzJbQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"290de2aec45f472f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"78\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdOb25VVEY4TWVzc2FnZUJvZHktdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"342\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"61ba95dc-9f08-5777-948e-f7ea87fac7dd\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3Tm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD42MWJhOTVkYy05ZjA4LTU3NzctOTQ4ZS1mN2VhODdmYWM3ZGQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"9f743b05391546c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b2b199c5-ff61-58eb-b314-fbf3e7920944\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"e8571512e930a849\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"129\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"100\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"809fc635-faa8-57d5-83da-a403e25b567a\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"edb30051a32e2c80\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"484\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3Tm9uVVRGOE1lc3NhZ2VCb2R5LXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdOb25VVEY4TWVzc2FnZUJvZHktc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f8ab541b-3ba4-50ad-aa95-362d2357a102\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cc46157671923918\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"300\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNSYXdOb25VVEY4TWVzc2FnZUJvZHktdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"385\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8cdb44de-6f27-559d-bc50-26e877d4d537\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3Tm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xOmNmNTg1NzFmLTg2MmUtNDg0OC05NTM5LWFmMGQyNGM0YjgxMzwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD44Y2RiNDRkZS02ZjI3LTU1OWQtYmM1MC0yNmU4NzdkNGQ1Mzc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"210729a0c372e562\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"750\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9QUFFQ0F3UUZCZ2NJQ1FvTERBME9EeEFSRWhNVUZSWVhHQmthR3h3ZEhoOGdJU0lqSkNVbUp5Z3BLaXNzTFM0dk9qczhQVDQlMkZRRnRjWFY1ZllIdDhmWDUlMkZabTl2WEdKaGNseGlZWG91TGx4bWIyOWNMaTVjWW1GeVhDNHVYQzR1WEdKaGVpNHVYQzR1TDJadmJ5OHVMaTlpWVhJdkxpNHZMaTR2WW1GNkxpNHZabTl2TDJKaGNpOWlZWHBtYjI4aVltRnlJbUpoZWk0dVhHWnZiMXhjWW1GeVhGeGNZbUY2Wm05dkx5OWlZWEl2THk5aVlYcG1iMjhnWW1GeUlHSmhlakV5TXpRMTRwaTY0cGk2NHBpNnZiSSUzRCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"232b6a65-83f4-5c1f-9d9f-08539b072cb5\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmZiM2ExY2IwLWQzMDUtNTdiMC1hNWRlLTdlODZjYmY2NzcxYTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjIzMmI2YTY1LTgzZjQtNWMxZi05ZDlmLTA4NTM5YjA3MmNiNTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"4de50cc0d2e750c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"180\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1173\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"837b64c5-a25c-5995-8874-06f3baaf983a\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjU5NzQ3IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTk2ODYifSwiQm9keSI6IkFBRUNBd1FGQmdjSUNRb0xEQTBPRHhBUkVoTVVGUllYR0JrYUd4d2RIaDhnSVNJakpDVW1KeWdwS2lzc0xTNHZPanM4UFQ0L1FGdGNYVjVmWUh0OGZYNS9abTl2WEdKaGNseGlZWG91TGx4bWIyOWNMaTVjWW1GeVhDNHVYQzR1WEdKaGVpNHVYQzR1TDJadmJ5OHVMaTlpWVhJdkxpNHZMaTR2WW1GNkxpNHZabTl2TDJKaGNpOWlZWHBtYjI4aVltRnlJbUpoZWk0dVhHWnZiMXhjWW1GeVhGeGNZbUY2Wm05dkx5OWlZWEl2THk5aVlYcG1iMjhnWW1GeUlHSmhlakV5TXpRMTRwaTY0cGk2NHBpNnZiST0iLCJNRDVPZkJvZHkiOiIwMGFiODk5NmU4MDExYTdhMTRmYjZmYjlhZDgzYzgyMCIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiJkOTYyOTZhYzY3N2E5YWNhMDVkNDlhZTA5OWM2NTZjMCIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImJhc2U2NGVuY29kZWQiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6InRydWUifX0sIk1lc3NhZ2VJZCI6ImY1NmNiY2I2LWI5MzEtNGVlZC05M2IyLWRhYjhmMmRmOGEyZCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCVEpPTUprQTVlMENMSlBmY1hDQzd2UUJiVGRCRllsSEZlWEZZQ2xjdGNyL21qMjBwbnhWak1saGloVkhxV3NEM1BoQ0Q3UWpkV3Z2MHBWdE56ZlBTRFJHcWhCTmd6WnNjRWhpVDFKY0tCQWFtWlRiNDRXeWJDbUtlQzFmdnFWZ0l6R1ZKR1BtTzlXSGZSZjlPWUlWYWtuM01BdnJldE9xSngxRjVvUFg4NEl2dFkzMnRRcVpFdVBpTFF5cmdKZVVmZkprNzFWKzZDR1NrcmREOXZWMk9ubXZuQlJtcE1nNUdRWHkyamY4TTVvTmJycWU5NmdKZW5mVCtrTHQwb2J1UVBDVytNZXFHUmErTEw2Zm15bVRLalZpTEFlaDNtQU9LZ08wenJxUHg5V2x3S1JCRFpNL1VxMi9xYXNIOGtQN1lZTUdMeXovWkxzSGNJMjU2Rm5paVlTV3BoUFYwRDgvWlZmZUxYS3k0UXEyalRQV0M1bFVleHJYcXBZZjVma01XN0wwZkV0NWtjZEgzaFVneUptQXI0cnNHQm9HRS91aWtJeTIxWUplbTNOOD0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"506ae177f04f7b16\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"573\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlRKT01Ka0E1ZTBDTEpQZmNYQ0M3dlFCYlRkQkZZbEhGZVhGWUNsY3Rjci9tajIwcG54VmpNbGhpaFZIcVdzRDNQaENEN1FqZFd2djBwVnROemZQU0RSR3FoQk5nelpzY0VoaVQxSmNLQkFhbVpUYjQ0V3liQ21LZUMxZnZxVmdJekdWSkdQbU85V0hmUmY5T1lJVmFrbjNNQXZyZXRPcUp4MUY1b1BYODRJdnRZMzJ0UXFaRXVQaUxReXJnSmVVZmZKazcxVis2Q0dTa3JkRDl2VjJPbm12bkJSbXBNZzVHUVh5MmpmOE01b05icnFlOTZnSmVuZlQra0x0MG9idVFQQ1crTWVxR1JhK0xMNmZteW1US2pWaUxBZWgzbUFPS2dPMHpycVB4OVdsd0tSQkRaTS9VcTIvcWFzSDhrUDdZWU1HTHl6L1pMc0hjSTI1NkZuaWlZU1dwaFBWMEQ4L1pWZmVMWEt5NFFxMmpUUFdDNWxVZXhyWHFwWWY1ZmtNVzdMMGZFdDVrY2RIM2hVZ3lKbUFyNHJzR0JvR0UvdWlrSXkyMVlKZW0zTjg9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"de9c31df-e5c0-50f6-8aac-53e9fd33d159\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"9751f566ca4b6676\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS10b3AtMSUzQWNmNTg1NzFmLTg2MmUtNDg0OC05NTM5LWFmMGQyNGM0YjgxMyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d91b9d9f-556b-516f-bfb0-ffa94d9831c5\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5kOTFiOWQ5Zi01NTZiLTUxNmYtYmZiMC1mZmE5NGQ5ODMxYzU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"1b7dc0610ec983cf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd05vblVURjhNZXNzYWdlQm9keS1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:00 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bb837fd0-a327-5068-8f07-1de6bbd3e1c7\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"510555930a6a0a39\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"127\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3Tm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:00 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c94804df-9bd4-5c56-b4a6-66e983208cfc\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5jOTQ4MDRkZi05YmQ0LTVjNTYtYjRhNi02NmU5ODMyMDhjZmM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestSendReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2pN2o0HgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3270e78fd030a97e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"71\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdTZW5kUmVjZWl2ZS10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:50 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d5d1e462-71f7-58be-9128-8654691d931d\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmUtdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmQ1ZDFlNDYyLTcxZjctNThiZS05MTI4LTg2NTQ2OTFkOTMxZDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"6be73667120b20d6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"44\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:50 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"508f90de-3e1a-554c-822a-f2e826f0b0c0\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"4549a3248ee9c22e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"122\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:50 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"abfd8e22-23c2-5405-8792-ec143b28b189\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"73f1ebbeffe0bee9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"470\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmUtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:50 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d3087fe0-b14e-5877-b731-1dd6a9a48dfb\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"37a2c04b17a9b6b1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"286\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"378\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:50 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3dfa40da-151d-542b-9429-22ec0df7ef88\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmUtdG9wLTE6ZjEzZjlmYTctMTJiZC00ZjJhLTg5MjUtNjVkMDAzZGMwM2UwPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjNkZmE0MGRhLTE1MWQtNTQyYi05NDI5LTIyZWMwZGY3ZWY4ODwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"791f170f20347123\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"443\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ae0b00fa-84e7-5089-aac9-62cc9c0d2b2a\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmY3ZmI2ZmE4LTFiNTktNTk1Ny1hYmE4LTBkOWUwM2IyMDJmNDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmFlMGIwMGZhLTg0ZTctNTA4OS1hYWM5LTYyY2M5YzBkMmIyYTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"f28ac817d6e5efdf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"443\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"402c481d-80fd-52ba-a682-2a2b98167919\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjIwMmRlMDU5LTE5YTItNWExMy1iMGJlLTgyNmYwMTQ5NjFiMDwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjQwMmM0ODFkLTgwZmQtNTJiYS1hNjgyLTJhMmI5ODE2NzkxOTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"e4d7b522b2304d1c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"443\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MiZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"01114b0a-5359-55c5-aabd-293c4bb29e66\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjE1OWU4YTA2LWZiOTgtNWNmOS04NmYxLWU4MzBlMzczMjc1YTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjAxMTE0YjBhLTUzNTktNTVjNS1hYWJkLTI5M2M0YmIyOWU2NjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"1cac6cc56957fc04\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8a784019-5521-5f57-b59a-222f4dca6adb\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjUxMjM4IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTExOTAifSwiQm9keSI6IjIiLCJNRDVPZkJvZHkiOiJjODFlNzI4ZDlkNGMyZjYzNmYwNjdmODljYzE0ODYyYyIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiJiNzJlMTQwZTcyNjllYmNlOTEwN2JhZjFlZjI0MGJhZSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjIifX0sIk1lc3NhZ2VJZCI6IjlmOGNlMGY2LTI3ZTEtNDg2Ny1hMGFkLTQ5YWE5Mzc2Zjg1YyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCbG42UTVxc3c4MEtubldqMCswUVZ4SGFWY0w1UExYRGFhMEMzcjFhTnh3NVlxaUtUNDZ0QVM4NWpWZVBmVDR3WlFJUXIvam95RmFmQVVwMklmY2hUdzNKNkRVRTdoOEg2NEZBc1cwQmFNdHFDWmd2b2JzM1Noa1hpbGp3QmpQbmo2TDcxVGJuYkZncElBVnJodFMwdmlpLzBtcE40MGNObXgwZmtmd2h5VU1LdDd5T0hWSTNVOE02RTFBRmtZcURNNVZMbjlMeDM3aWpybEoyVFJsMTRqUXNUTS9tSHFOQmFnSTlPM3dya05SYURaRWczdFpsdTVvUG1QS0wvNWkrN3gyQnpBZWllcEpZeTE2am5IWmxOaE9PWkVqeDhkZ1gvbTRoc09OZTVxeWNOWkxqYUQrT1RrM3Vjc2l1a01rQU5RRmZxY2d6OEtmTXRmdTRuMTVMR1pUand5Rkt4QU0vN25XN1ZJOUhGRzJycHVwSVZxQ3dwb0YwSmZMN1FFdUZTZVhycWxoR3E3T0FDTDJIS3JMdXU3OGxyMytGMmpLVmQ4V0tRbURaS0dLVT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"d143c71a502e2965\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bfafdd4b-b21a-5757-a51a-bf7daaf1c2db\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjUxMzA2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTExMTgifSwiQm9keSI6IjEiLCJNRDVPZkJvZHkiOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiIzMTRjNzdiMjQ5ODkzYzZiM2M3NjVhNDJjYzA4YjI0NSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEifX0sIk1lc3NhZ2VJZCI6ImFlMjYwMzFjLTA3MzgtNGJlMy1hZTFkLWM3NWMzYzhjZGI3OSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCVGdmNUViUzFITE1UVjBOZms0aUxlM0N2RmVSUmxFWkdlSHlLbUluS1ZMVHlKVitEeExjOGx5NittUStrcVFNSXEyYnhnTDNaY0dUYU9lc0ZNd08yaDlIS21mcGVjNlVvcStqUVE3OTA2aTFhNXJXZUgyZ0VweVg0d2NWMlVSMC9MVDR1ZUVXZmtoNFRIMTU1Wll1MkZHRHlPNkN5VFdNcmY5OFVnQUJDM080YWdXMDU1NGF3VUNwK3Q0R2ZhT0MwWjhFUHd3TFNhOHc4dGE0Q0VBWmpSdlQvYnpXWHpJTlRrVjRXNjNNdG9FL2swSU1JNXhJa1F3MDRvU1MzQVd3NXNNRkJoSUVxWmROTmRwS3JMTzA0Z0Q0RGViUzMySGpOS0gybDM5cFR6VkV0MStDVkVob2JrUDdzQmN1anZCK2tyejRmNTltNkdEQ3gzNmtkd1hodmJBQm8xRTdINUViQ2t0U3dJd2Niemk3d1oyL2owTEMyR1NKckRQMFhFaEl5NVpwdjlxL2VWRytjYnhzZzZnQUZPSjB3L2pxeU1aeFZtTVQ5Vzc5cWpKUT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"64685fa9ee6cb9ca\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmxuNlE1cXN3ODBLbm5XajArMFFWeEhhVmNMNVBMWERhYTBDM3IxYU54dzVZcWlLVDQ2dEFTODVqVmVQZlQ0d1pRSVFyL2pveUZhZkFVcDJJZmNoVHczSjZEVUU3aDhINjRGQXNXMEJhTXRxQ1pndm9iczNTaGtYaWxqd0JqUG5qNkw3MVRibmJGZ3BJQVZyaHRTMHZpaS8wbXBONDBjTm14MGZrZndoeVVNS3Q3eU9IVkkzVThNNkUxQUZrWXFETTVWTG45THgzN2lqcmxKMlRSbDE0alFzVE0vbUhxTkJhZ0k5TzN3cmtOUmFEWkVnM3RabHU1b1BtUEtMLzVpKzd4MkJ6QWVpZXBKWXkxNmpuSFpsTmhPT1pFang4ZGdYL200aHNPTmU1cXljTlpMamFEK09UazN1Y3NpdWtNa0FOUUZmcWNnejhLZk10ZnU0bjE1TEdaVGp3eUZLeEFNLzduVzdWSTlIRkcycnB1cElWcUN3cG9GMEpmTDdRRXVGU2VYcnFsaEdxN09BQ0wySEtyTHV1NzhscjMrRjJqS1ZkOFdLUW1EWktHS1U9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d84f0e17-1908-5d99-9fb9-6c2101e35815\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"7de041872e34216d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d5b31240-38fa-5515-9187-707620115099\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjUxNDM5IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTEwMzgifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiI5YWE0Njg3YzhiNzU2N2JhYTM4MGQ5ZjMwMGZlMjgzYSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjAifX0sIk1lc3NhZ2VJZCI6IjU0MWI3OTRjLTUxNDUtNDM2MS05NWU1LTkxMmQ5NGFiNTc5ZSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCajcxeDlqMVZlNEpNVTJ1YlRDRkR4ZFFxRzM5VnBpcUZyNG8xZEpjT3hPcHNaR0xyR2NRY2N4WW4zcjVPOTZxU1VDV0dXV25jUnMyMTVHbkh0MUtUN1NTQ2xtMG5nelN0ZVh5RVhlaklJMmVLNHNyaElTT3ByZHVlYnliT1o2Q0Z6VlpsdEhwbnVKVFJkWE5sem9HSFVNMTloL2ZBVWg1aEdhK1Q5QjJLR21KaDRIMktzMGVlTnNMZnNFSzJEL0RkeHV2aU1jQ25NNHdxMjdQVERxeUNhZGtuc3p5WVp1YW1PakZ0R1hXNmhRZE9veVIrR3RXaWFRWHZuSzVmcHhLeEpXcFVsWFB5RWI1dGNqa1dUYzB5Y281UUMyOEIyYzRpUm5LNzJ1eXV2L3QyQTVHZnJoeS8xN0dSd2JKVDFxS0dFeW91MjdnR0R6RVBETFViejJiVjBuNklnVVFUN0U2UTJWQ1gxYUIydTZncGxhUlBHOUhFV0lWZkJDYXdEWnRXakllcEhFRDdhQlBNK2lFaWFVYkoxeUhab2NWeW51c3luVi9icnA4UEwyTT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"910818a7d2029e3b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlRnZjVFYlMxSExNVFYwTmZrNGlMZTNDdkZlUlJsRVpHZUh5S21JbktWTFR5SlYrRHhMYzhseTYrbVEra3FRTUlxMmJ4Z0wzWmNHVGFPZXNGTXdPMmg5SEttZnBlYzZVb3EralFRNzkwNmkxYTVyV2VIMmdFcHlYNHdjVjJVUjAvTFQ0dWVFV2ZraDRUSDE1NVpZdTJGR0R5TzZDeVRXTXJmOThVZ0FCQzNPNGFnVzA1NTRhd1VDcCt0NEdmYU9DMFo4RVB3d0xTYTh3OHRhNENFQVpqUnZUL2J6V1h6SU5Ua1Y0VzYzTXRvRS9rMElNSTV4SWtRdzA0b1NTM0FXdzVzTUZCaElFcVpkTk5kcEtyTE8wNGdENERlYlMzMkhqTktIMmwzOXBUelZFdDErQ1ZFaG9ia1A3c0JjdWp2Qitrcno0ZjU5bTZHREN4MzZrZHdYaHZiQUJvMUU3SDVFYkNrdFN3SXdjYnppN3daMi9qMExDMkdTSnJEUDBYRWhJeTVacHY5cS9lVkcrY2J4c2c2Z0FGT0owdy9qcXlNWnhWbU1UOVc3OXFqSlE9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"755d831b-944e-5902-9d3d-e12d8ca5202c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"c227450dfe331e11\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmo3MXg5ajFWZTRKTVUydWJUQ0ZEeGRRcUczOVZwaXFGcjRvMWRKY094T3BzWkdMckdjUWNjeFluM3I1Tzk2cVNVQ1dHV1duY1JzMjE1R25IdDFLVDdTU0NsbTBuZ3pTdGVYeUVYZWpJSTJlSzRzcmhJU09wcmR1ZWJ5Yk9aNkNGelZabHRIcG51SlRSZFhObHpvR0hVTTE5aC9mQVVoNWhHYStUOUIyS0dtSmg0SDJLczBlZU5zTGZzRUsyRC9EZHh1dmlNY0NuTTR3cTI3UFREcXlDYWRrbnN6eVladWFtT2pGdEdYVzZoUWRPb3lSK0d0V2lhUVh2bks1ZnB4S3hKV3BVbFhQeUViNXRjamtXVGMweWNvNVFDMjhCMmM0aVJuSzcydXl1di90MkE1R2ZyaHkvMTdHUndiSlQxcUtHRXlvdTI3Z0dEekVQRExVYnoyYlYwbjZJZ1VRVDdFNlEyVkNYMWFCMnU2Z3BsYVJQRzlIRVdJVmZCQ2F3RFp0V2pJZXBIRUQ3YUJQTStpRWlhVWJKMXlIWm9jVnludXN5blYvYnJwOFBMMk09In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"595fe562-4726-5560-81c1-87545fcdaa6d\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"c3fc886bf0c9b58c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"166\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXRvcC0xJTNBZjEzZjlmYTctMTJiZC00ZjJhLTg5MjUtNjVkMDAzZGMwM2UwJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3cee8335-6227-5484-9f71-e1037acc6f27\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4zY2VlODMzNS02MjI3LTU0ODQtOWY3MS1lMTAzN2FjYzZmMjc8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"e6a92dd4bfdd9b8c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"92\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"596045ec-3bb8-5107-9890-27da23534ccb\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"60e7dbc7774e426a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3U2VuZFJlY2VpdmUtdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:52 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ef277bdb-e793-5c66-bafa-19edff78b7c5\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5lZjI3N2JkYi1lNzkzLTVjNjYtYmFmYS0xOWVkZmY3OGI3YzU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestSendReceiveJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2sBhhUTgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5c9c384a0394a069\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"75\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdTZW5kUmVjZWl2ZUpTT04tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"339\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:52 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4ca59a7d-5fcb-538e-a146-f84b47274420\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVKU09OLXRvcC0xPC9Ub3BpY0Fybj4KICA8L0NyZWF0ZVRvcGljUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD40Y2E1OWE3ZC01ZmNiLTUzOGUtYTE0Ni1mODRiNDcyNzQ0MjA8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvQ3JlYXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"a4be09afaad70d18\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:52 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"274308d3-4860-5f54-ad15-6ae5508c2678\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"327afd22f4376e20\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:52 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"39cdc0e3-b016-5cc8-9199-a2d5a8fa65e4\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"70aae2697a25862b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"478\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVKU09OLXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU05TVG9waWNSYXdTZW5kUmVjZWl2ZUpTT04tc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:52 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bc6f1e70-9744-5458-b89a-7c468fa83d74\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e7cdc779d71d9e42\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"294\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBU05TVG9waWNSYXdTZW5kUmVjZWl2ZUpTT04tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"382\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b55acf38-ca73-509f-8fd0-ad0ed29ff731\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVKU09OLXRvcC0xOjgxOTg2ZDkxLWM0YjItNGU1MC04NDg0LTM3ODZlZmM3Y2U5NDwvU3Vic2NyaXB0aW9uQXJuPgogIDwvU3Vic2NyaWJlUmVzdWx0PgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5iNTVhY2YzOC1jYTczLTUwOWYtOGZkMC1hZDBlZDI5ZmY3MzE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvU3Vic2NyaWJlUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"cbdc265f3ea0d82f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"239\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9JTdCJTIyRm9vJTIyJTNBKyUyMkJhciUyMiU3RCZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"495315a1-88a6-50a5-815c-7797904b570b\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjFjMTUwZDZkLTUxNmUtNTA5Yi05YzMzLTZmNWI0OTgzNDczNTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjQ5NTMxNWExLTg4YTYtNTBhNS04MTVjLTc3OTc5MDRiNTcwYjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"fd830bf4500c8463\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"177\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"770\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"743fd095-3588-5e1f-92d0-b2a32d650733\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjUzMjcwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNTMyMjUifSwiQm9keSI6IntcIkZvb1wiOiBcIkJhclwifSIsIk1ENU9mQm9keSI6IjMzMzM5OWJhMmI3NmExOTY0MzI2MDdmMjNiM2VjYjk1IiwiTWVzc2FnZUlkIjoiZjNhZDllNzgtMzRiYi00MmUzLTk3ODUtZDQwYzQzZjBmZTBlIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJJY3BRZkZYU0llNzlZd2VHbFUzOGh1QUZhZmpqc0dGUzZ4cEpOMzR3cUkwM3Bxa0UwUXk3dTQ0MTBFTzhzZmpKNDFvc3d5NDZFNHlYS2U0WVBnSmRvb1d1SmdKSlUySWYrTXlVTlg4Tk9nUWdncTNmZVhjWnpIRk5GblhodXlYODZpb0g0L0ovMVZrNytuUFJrN3NTSFg1aFIwR2p5SjlzY1Z1UGtiWmQyRXA3UGZsY1dUOWtjZnBad2pDYWN6eE0zT1owcFNXQ2FOejhaYlNadnI3dHBpTnJFZlprbHl1ZiswQnNiMFBWWjY4ZWY4cis2cmJQRzIxWWtRZFpFdjNJUU9aTmUyL05oNmFTSnR1SFNEOU84TU5vanpkd29NZXhOSS9kcVBHUnVwSzJXd0xoejJPL3ltNXU3R1JhZDRQS1J0YXFBUHRBU2dWVVQwclJPcmRhVkpTRUhzeTExRG5GdFllNGQxNjBiMGJqc2NkM0lFcm9XOGI0R1FEY29wV09KaExmMnkyN2VzN21YNnYwaGhyVy9iaTcvekwvK2lkdmZqRitMZWp5UHdFPSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"e4bc3ce9c163546a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"570\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkljcFFmRlhTSWU3OVl3ZUdsVTM4aHVBRmFmampzR0ZTNnhwSk4zNHdxSTAzcHFrRTBReTd1NDQxMEVPOHNmako0MW9zd3k0NkU0eVhLZTRZUGdKZG9vV3VKZ0pKVTJJZitNeVVOWDhOT2dRZ2dxM2ZlWGNaekhGTkZuWGh1eVg4NmlvSDQvSi8xVms3K25QUms3c1NIWDVoUjBHanlKOXNjVnVQa2JaZDJFcDdQZmxjV1Q5a2NmcFp3akNhY3p4TTNPWjBwU1dDYU56OFpiU1p2cjd0cGlOckVmWmtseXVmKzBCc2IwUFZaNjhlZjhyKzZyYlBHMjFZa1FkWkV2M0lRT1pOZTIvTmg2YVNKdHVIU0Q5TzhNTm9qemR3b01leE5JL2RxUEdSdXBLMld3TGh6Mk8veW01dTdHUmFkNFBLUnRhcUFQdEFTZ1ZVVDByUk9yZGFWSlNFSHN5MTFEbkZ0WWU0ZDE2MGIwYmpzY2QzSUVyb1c4YjRHUURjb3BXT0poTGYyeTI3ZXM3bVg2djBoaHJXL2JpNy96TC8raWR2ZmpGK0xlanlQd0U9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9f59c217-0174-5347-8be1-a0211999ea6b\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"807116fb10c3ed09\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi10b3AtMSUzQTgxOTg2ZDkxLWM0YjItNGU1MC04NDg0LTM3ODZlZmM3Y2U5NCZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0e81ca1b-aa3a-533f-8926-a82db2d77491\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wZTgxY2ExYi1hYTNhLTUzM2YtODkyNi1hODJkYjJkNzc0OTE8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"ee2618ad3c64f5a6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlSlNPTi1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4ac6e035-ecb3-548a-9abd-8203f45e9da6\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"74c321fdf985ce00\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"124\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3U2VuZFJlY2VpdmVKU09OLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:30:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6db9d19b-9a48-5b18-82d0-b3ad82a57cb6\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD42ZGI5ZDE5Yi05YTQ4LTViMTgtODJkMC1iM2FkODJhNTdjYjY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSNSTopicRaw/TestSendReceiveTwo.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg20DTMhdwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e428824d55161c31\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJk5hbWU9U05TVG9waWNSYXdTZW5kUmVjZWl2ZVR3by10b3AtMSZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"338\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:00 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"456e48d8-3d8c-5b7c-bcd0-2aee2578c9b5\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVUd28tdG9wLTE8L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjQ1NmU0OGQ4LTNkOGMtNWI3Yy1iY2QwLTJhZWUyNTc4YzliNTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"fd8ede04c1276b26\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"47\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:00 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"13b7aafe-3719-5208-a189-c8c82fedefc7\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"49b8c6e3e67be0de\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"125\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8113834f-4134-5e67-85f0-e17959c173a8\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"6ef8458f94997001\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"476\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVUd28tc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5d7cbb1d-4c3e-5eb4-827e-d92b54cb437b\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"d4a9d733615a9581\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fa654105-a204-5459-acd5-2333baf1a690\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVUd28tdG9wLTE6NmE4NTZlZjAtYmFjOS00OWJkLTg5YzEtNDI4Yjk4MGZmMjRiPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmZhNjU0MTA1LWEyMDQtNTQ1OS1hY2Q1LTIzMzNiYWYxYTY5MDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"8663aed65594afb2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"47\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"787c94e2-90b5-546c-839e-f6d4884069a3\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n      }\n    },\n    {\n      \"ID\": \"76130db56355f5da\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"125\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ffa4f133-acdd-573e-ad72-9305b4280af1\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn19\"\n      }\n    },\n    {\n      \"ID\": \"1472df6ba227132d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"476\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVUd28tc3ViLTJcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"edf8bbc8-a72f-5d69-8ce6-d9febfda50a6\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"0210d7d3079ed89e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZBdHRyaWJ1dGVzLmVudHJ5LjEua2V5PVJhd01lc3NhZ2VEZWxpdmVyeSZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXRvcC0xJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7382a81a-3199-5f64-bc1f-ca2c296ccdad\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNOU1RvcGljUmF3U2VuZFJlY2VpdmVUd28tdG9wLTE6YzEwZmQ2YjgtM2ExMy00NzEzLWFiMDYtYzkzODczMjhiZTk0PC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjczODJhODFhLTMxOTktNWY2NC1iYzFmLWNhMmMyOTZjY2RhZDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"5bb72c9507609de6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"446\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1710a5c8-8aac-5d14-a0d5-c7fe92594fdd\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPjBkMGJhNzc5LWUwOTQtNTdjNy05Y2I3LWM1NGZmODYxODUwZTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjE3MTBhNWM4LThhYWMtNWQxNC1hMGQ1LWM3ZmU5MjU5NGZkZDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"ff900a96c8d23eed\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"446\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MSZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d11ddc75-0282-5912-97fd-be431a77fbdb\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmZkMTNlNjI1LTIzYzUtNTU2Yy04NGQ1LTg0MTMzYjMwMjdhNTwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmQxMWRkYzc1LTAyODItNTkxMi05N2ZkLWJlNDMxYTc3ZmJkYjwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"bc3ee8beb6cf1b3b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"446\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9MiZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5DTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"dc91e377-c0a3-5e33-985d-8141d8569cfa\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8TWVzc2FnZUlkPmZjNjY1YjYzLWY1ZTktNWZmMi04YWFlLTM5NTVlZDFjZWQzYjwvTWVzc2FnZUlkPgogICAgICAgIDxJZD4wPC9JZD4KICAgICAgPC9tZW1iZXI+CiAgICA8L1N1Y2Nlc3NmdWw+CiAgPC9QdWJsaXNoQmF0Y2hSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmRjOTFlMzc3LWMwYTMtNWUzMy05ODVkLTgxNDFkODU2OWNmYTwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9QdWJsaXNoQmF0Y2hSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"476a0125b5730e19\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b4c5d064-da21-5ba0-b87f-b252c2d7866f\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjYyMDcyIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjE4ODQifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiI5YWE0Njg3YzhiNzU2N2JhYTM4MGQ5ZjMwMGZlMjgzYSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjAifX0sIk1lc3NhZ2VJZCI6IjQ3NjU2NzNjLWE0NTEtNDUzNC04NTQ2LWNkOTliOTgyMDZhZCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCUHRGWXJhcmFuUWZCMFB6VGZXY3VZeVR0YThIU3ZwcHRoQ1pyTktvU1RVNjA2Tm81UXR3UUFsaUFlbkx4RmhEcjZEbS9NQW1rNncvVkFwWkIwZXMwVitaZUdxOGZUNkR2eVpZdnF2UExocmJWc01oemdIQlAvS2dWcGxicjI4U1I3dkg2T2F3aWY3dTVIRVU2WTRuVVFoRjZGaDUrd2xDRDVIWVNOUHVoSzEzTXVKRGhvSDVFa2tiNHdIMU91cU11TFcrWk0ybU55R3R4TTFVVDRLZXN0NHE0ZjdRbm93cGpCaFNGVFVieGVPZE1WOU1ueTRZUkdqcTJKTytHckp2ZGFBc3d5OXpQN0RTV0V5K0hzSVNmZFl2SVVEOUJoWkFKWHZ4eWpIakc1T1FZMDZ0Y0FFSGZaTzJwMStydkNXakpPU3NvczhxNzl5MW54dS84YU92ZzNTQjFMYmlPSXRtM2tUdUpaSUpIYnV4RjVvanVmQnlGZnQya01udnFTd3ZrZkRsMi9vSEp6emVyaDZiMThHWGRLR2VxSWhIanY2VnhISTQ3TDdrdnU0TT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"a5ccd584a453078c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"569\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlB0RllyYXJhblFmQjBQelRmV2N1WXlUdGE4SFN2cHB0aENack5Lb1NUVTYwNk5vNVF0d1FBbGlBZW5MeEZoRHI2RG0vTUFtazZ3L1ZBcFpCMGVzMFYrWmVHcThmVDZEdnlaWXZxdlBMaHJiVnNNaHpnSEJQL0tnVnBsYnIyOFNSN3ZINk9hd2lmN3U1SEVVNlk0blVRaEY2Rmg1K3dsQ0Q1SFlTTlB1aEsxM011SkRob0g1RWtrYjR3SDFPdXFNdUxXK1pNMm1OeUd0eE0xVVQ0S2VzdDRxNGY3UW5vd3BqQmhTRlRVYnhlT2RNVjlNbnk0WVJHanEySk8rR3JKdmRhQXN3eTl6UDdEU1dFeStIc0lTZmRZdklVRDlCaFpBSlh2eHlqSGpHNU9RWTA2dGNBRUhmWk8ycDErcnZDV2pKT1Nzb3M4cTc5eTFueHUvOGFPdmczU0IxTGJpT0l0bTNrVHVKWklKSGJ1eEY1b2p1ZkJ5RmZ0MmtNbnZxU3d2a2ZEbDIvb0hKenplcmg2YjE4R1hkS0dlcUloSGp2NlZ4SEk0N0w3a3Z1NE09In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"076bf135-7b14-5b83-85d1-930363e2c64c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"41c7d12f86f35736\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a6da26b3-f8d4-5594-a988-4485e022b85b\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjYyMjA1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjIwMzAifSwiQm9keSI6IjIiLCJNRDVPZkJvZHkiOiJjODFlNzI4ZDlkNGMyZjYzNmYwNjdmODljYzE0ODYyYyIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiJiNzJlMTQwZTcyNjllYmNlOTEwN2JhZjFlZjI0MGJhZSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjIifX0sIk1lc3NhZ2VJZCI6IjMyNDY2MTQ3LWM3OWItNGIwYy1iOWY5LWFlMDIyYTlkM2RjZSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCaC9nZE9FMVQ2WFdBMlpuUm1jQVZ0dWdLRlVPRXI1U09nL3dpQUJCUlFRcEJ0UFcxem1mT0FucmNxbml4azhHR2kvcHBjbU9iQVZGNjBJbGdjL1RMQ3dha05qU3hjdzF4M1crT2FYWVBCNWRmSDBELy9XUnF4aG5wNzd3cHpPVTlJMWE0M2JYK04yL2YzMTVVbHZPVUdaQlFaN1dmb3Q5Q3NwOTFKNW12ZzEyR1FuMVFtMi90Wm8weGp0alJnQVBmQi9XZHc4REdtS3A4NnBhSFc0NzVNU2YzWTJRWFJ0bHFpYjRMS1U5S2xBSG55LzdTWGc2eW9BSXhUZlExUnlobkY4RVpaYmRScmkzbEZYc0NOVzVrOU1lZ3N1UFIwSmtPb0Riamc1Q2ZieWN3MTRNanhiQU9IVU0vK3RDUVFYZzNXK3Y4bDBpN2IrVFYvbmVWbU5JWkdBdHdiVDZTQ1VxdFhFTndhRDNBN2p0ZWpHMm93VzVxanZXY2JKazlLNklTSVo2Ukx0M0pJeFhXYU4xdjluN1ZEMVo0OG5IRjVNSytROHB0NTdDM3BuWT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"19e0b979bc01687d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"569\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmgvZ2RPRTFUNlhXQTJablJtY0FWdHVnS0ZVT0VyNVNPZy93aUFCQlJRUXBCdFBXMXptZk9BbnJjcW5peGs4R0dpL3BwY21PYkFWRjYwSWxnYy9UTEN3YWtOalN4Y3cxeDNXK09hWFlQQjVkZkgwRC8vV1JxeGhucDc3d3B6T1U5STFhNDNiWCtOMi9mMzE1VWx2T1VHWkJRWjdXZm90OUNzcDkxSjVtdmcxMkdRbjFRbTIvdFpvMHhqdGpSZ0FQZkIvV2R3OERHbUtwODZwYUhXNDc1TVNmM1kyUVhSdGxxaWI0TEtVOUtsQUhueS83U1hnNnlvQUl4VGZRMVJ5aG5GOEVaWmJkUnJpM2xGWHNDTlc1azlNZWdzdVBSMEprT29EYmpnNUNmYnljdzE0TWp4YkFPSFVNLyt0Q1FRWGczVyt2OGwwaTdiK1RWL25lVm1OSVpHQXR3YlQ2U0NVcXRYRU53YUQzQTdqdGVqRzJvd1c1cWp2V2NiSms5SzZJU0laNlJMdDNKSXhYV2FOMXY5bjdWRDFaNDhuSEY1TUsrUThwdDU3QzNwblk9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"61c79655-1f6c-583d-8206-f463079ae5f2\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"c20ab2ab791121f3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d85276c8-cc13-5686-886a-14fed4e5f656\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjYyMzcwIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjE5NTAifSwiQm9keSI6IjEiLCJNRDVPZkJvZHkiOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiIzMTRjNzdiMjQ5ODkzYzZiM2M3NjVhNDJjYzA4YjI0NSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEifX0sIk1lc3NhZ2VJZCI6IjBjNjRjZmNhLTRhNmItNDIyYi1hY2RkLWE2YTNjMWRkN2M3MSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCZFRWYmNyYUx1dkhFQ2U1d3k2cktXMWREZEFMbnBZc1JkdWpVTXdQMTJ5bVdTc0lqS2Q4Sm9YR0VXeXZpSm1PRDNESmcvU3ZUajdLVzdMYllLQU1tTTlVaCswbjQ0UG1CK05YRmpXUEk5STB3Y1BQaXBVKzM5Ujc4aXIvWW5meFpFY1k2cS9aQzAycG5INFBwVnhrblU3aFRwbjdWb2ZHR2F5S2VFL0xOcmo5TTc4Y3ROUTRHR1FvNGk3ZllBc01nV2hDRlVpZkw5cktFeGJ4SStWS1doRDdVUGovVnJHdDBRdXkzNHlVWEhyWUZMWW5xcGNBdXBuVVJvYjl0R3pqZHgvNS8vckhtV0JOUU81WG1vM1pwb1kzanUxWWx6RmJlZHJReFlVeHhmUVdDTjd3SlpNNVlvL2JJVGFOL1RwZm9vSThGY3dSeTFHa2Y5eExsQmxmLzB4VUFaRWIvUG92VWxkU2VqODc5SkxjOTM2eXQ5cjNsblB5cWlrSDJpdlV3TlFoeFc2OEQxM2Y0dm1aczEvY1NkbkJzaElOWURQWjVEbVBrYnRRcWVuOD0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"3a529e928d983621\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"569\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmRUVmJjcmFMdXZIRUNlNXd5NnJLVzFkRGRBTG5wWXNSZHVqVU13UDEyeW1XU3NJaktkOEpvWEdFV3l2aUptT0QzREpnL1N2VGo3S1c3TGJZS0FNbU05VWgrMG40NFBtQitOWEZqV1BJOUkwd2NQUGlwVSszOVI3OGlyL1luZnhaRWNZNnEvWkMwMnBuSDRQcFZ4a25VN2hUcG43Vm9mR0dheUtlRS9MTnJqOU03OGN0TlE0R0dRbzRpN2ZZQXNNZ1doQ0ZVaWZMOXJLRXhieEkrVktXaEQ3VVBqL1ZyR3QwUXV5MzR5VVhIcllGTFlucXBjQXVwblVSb2I5dEd6amR4LzUvL3JIbVdCTlFPNVhtbzNacG9ZM2p1MVlsekZiZWRyUXhZVXh4ZlFXQ043d0paTTVZby9iSVRhTi9UcGZvb0k4RmN3UnkxR2tmOXhMbEJsZi8weFVBWkViL1BvdlVsZFNlajg3OUpMYzkzNnl0OXIzbG5QeXFpa0gyaXZVd05RaHhXNjhEMTNmNHZtWnMxL2NTZG5Cc2hJTllEUFo1RG1Qa2J0UXFlbjg9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"452d550b-6b47-58fa-acaf-373d73b1a82a\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"f05f00fd3e62f8bd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8bab5f73-8c42-5083-be12-3d4594b42d4c\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjYyNDQzIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjE5NjIifSwiQm9keSI6IjEiLCJNRDVPZkJvZHkiOiJjNGNhNDIzOGEwYjkyMzgyMGRjYzUwOWE2Zjc1ODQ5YiIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiIzMTRjNzdiMjQ5ODkzYzZiM2M3NjVhNDJjYzA4YjI0NSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEifX0sIk1lc3NhZ2VJZCI6IjMxODgxYjE1LTIwOWEtNGE3OS1iYjFiLTczMDk2NjRmMmIxNyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCeXRHdkpNdmpvOUpNcWswVXIyeFArekFrbXNycEVBaTRrU3pEbURscE96NS9rL2ZFZjZmcnJxb1VWZ3dQbE1pbVFMZ1NrbWxzcXhRamhHKy9YWFhxTTFOSXgyaThISHVFVkZZQjVRUXJUSFRqRjhQOXkvTkJrTy9lRVdJaGx3YlRMUHJGbHRNRkcybmxuQ29YcXVkTmw4Z1l6VmtGMmhFSVUxZVhreW1NQ1JMamNISDJtUUR0K0FTRys0RWNmYmtNVGxLUUpMTUNmdy9TbEtKa01KSnRObjdVYkJOUWMxT1hlNGY4dndDT3FiT3RFS0pnMFNjVnB0Zk1ROUE3Y1QyVmUvMWpYd0Y1QXlaUW5CMUJ0YlFBUHZjZmpqcEtYbkgyK0hJSzZMYzgwN0JhN2J4azF6MFhNR1Z5Z3FoU0FGRWdLUUJ4bFpsL0doMGJ4cUNrbDdOcExVR2FNdWo4dmFyTWZiZEVxd2F5T0RIQkhjbUR5RGlxVGpHcERkeE11MGdndFZOZDAxKzBlNGxObDJzT1FsL3ovR3Vqd3dNT3laYVNQMitRaFNISDIyST0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"3cae31557eb725c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"70351428-f723-5790-a0f7-761eefd55740\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjYyNTEyIiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjE4NzYifSwiQm9keSI6IjAiLCJNRDVPZkJvZHkiOiJjZmNkMjA4NDk1ZDU2NWVmNjZlN2RmZjlmOTg3NjRkYSIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiI5YWE0Njg3YzhiNzU2N2JhYTM4MGQ5ZjMwMGZlMjgzYSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjAifX0sIk1lc3NhZ2VJZCI6ImRmODkzNGU3LTE3NWUtNDcwNy04NDdmLWUwMGYzOTMxMGEzNyIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCTlUxUUova2k2RzRhMWVvZFlCYm96VUg1MnlTQXdiRzFDZFNoNjNBaWRTeVFNRDUrOC83NEVkUndITDIyUG04OVl5MTVpUldZdXd2cVZoR1hRVDE5NWY2SVlOajRWSXRDWFZVMktob3k4Vk9Dd0wrbnM4NGlSZWdIZ1pRNEdWNzc4U2I3bEhyajFtdVpyM0F0ak9IODlBaGwrSVY5RTN6eEZsYzJoV1h3Vmc2QnJ6QStmazFMcWcrM1pHMlAzS0JPTXg4cVJjdERseHlWbWFmZUcwMkJLQjh4NlNERUlub0NURnZucmQ3YTk5Z0pYeDJ1cEllRU05dmh6OCsyNXVwa0Q3NnhSN3R3dU85NjErVVZmRFI0Nk1iMXl2WUdpNmJ1TFo3Zzh2cVpZbG1rQXRzRG1QelFyVFRZRFF6TUVPVXN5MGt4bGxNL095aGF4SzdIcGVaRllwTDI4UlExMzFhUjMxYjJrSFpoYWdCREg3V3l5b2VFWGVsN3V5aGhlVGdBZGlXZUNubE9YYmsxMU5ES1JuWGxDSVQ4bloxbXBWcGNGdkRxc0Q5N0JKZz0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"fb24f3a56333ecfe\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"569\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnl0R3ZKTXZqbzlKTXFrMFVyMnhQK3pBa21zcnBFQWk0a1N6RG1EbHBPejUvay9mRWY2ZnJycW9VVmd3UGxNaW1RTGdTa21sc3F4UWpoRysvWFhYcU0xTkl4Mmk4SEh1RVZGWUI1UVFyVEhUakY4UDl5L05Ca08vZUVXSWhsd2JUTFByRmx0TUZHMm5sbkNvWHF1ZE5sOGdZelZrRjJoRUlVMWVYa3ltTUNSTGpjSEgybVFEdCtBU0crNEVjZmJrTVRsS1FKTE1DZncvU2xLSmtNSkp0Tm43VWJCTlFjMU9YZTRmOHZ3Q09xYk90RUtKZzBTY1ZwdGZNUTlBN2NUMlZlLzFqWHdGNUF5WlFuQjFCdGJRQVB2Y2ZqanBLWG5IMitISUs2TGM4MDdCYTdieGsxejBYTUdWeWdxaFNBRkVnS1FCeGxabC9HaDBieHFDa2w3TnBMVUdhTXVqOHZhck1mYmRFcXdheU9ESEJIY21EeURpcVRqR3BEZHhNdTBnZ3RWTmQwMSswZTRsTmwyc09RbC96L0d1and3TU95WmFTUDIrUWhTSEgyMkk9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8081874b-ef78-5fb6-869a-e57df78e5f84\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"aa80f3ef3e145e86\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"176\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"879\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6fdfaad9-e25f-52d0-b22e-c8effaa96200\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0EzVFlNTzNCR0RISkZCSFQ3NTpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0MjYyNTg2IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyNjIwMjcifSwiQm9keSI6IjIiLCJNRDVPZkJvZHkiOiJjODFlNzI4ZDlkNGMyZjYzNmYwNjdmODljYzE0ODYyYyIsIk1ENU9mTWVzc2FnZUF0dHJpYnV0ZXMiOiJiNzJlMTQwZTcyNjllYmNlOTEwN2JhZjFlZjI0MGJhZSIsIk1lc3NhZ2VBdHRyaWJ1dGVzIjp7ImEiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjIifX0sIk1lc3NhZ2VJZCI6IjE5NTQ5MzFlLTViYjctNDg5MC1iMTZhLWEyZGUyY2UzOTc5ZiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCMnQzTFdxc2NMckRBc3ZMNDFSb0EvYTk3RVIweDJmUlFxb3pFYkoxTTJTamhlUmJaMTk4U2hBTmVHNWNpNzNrVjVNWkVkZVhNaWdBUVNrK0xEcXlNZjZwamhxbmNBVERyMnpyc2RjVWRQZlk5dnV1RzVQMlcrUUUyWS9iQm1XVFhmOTRRSjdZVldYanlZWFRUc2RVKy9LVlNHQlp0VUlPL3ZTeXZVc21HaUFIZm5OMU5zR3hNSjVIN01kckF2KzlzckJsY1B4dEw5aGNsU1ZldW1TNFNYR3B3ejRON0xJYjNZbFFZeGhtQ0oyTFRMMW9vSmVpU1lLR0RkQmpjZU5VZzJpTHl6Q1Azc2R1VmhBVUpiL2ZsdXc0MEVzYVVmV3RrWitLN1huRXR3T3lqZ3REUEU5Zzc1aksrdHFQOWkxNDQ1Z2Z5aVpRMnZyL3hISmxQWlBwVFBFdzRoZmVxZDFreUowaVd3NW5yLzc5S0RLYnBJNURlL0FnOFNxblZJRXdGYk5IdjlCRitzVGlFcytXeUJzdlZlU2FWZnpCMzJhYzdOZlZkUnlnNklIST0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"a59f703f86c5ebbc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"569\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQk5VMVFKL2tpNkc0YTFlb2RZQmJvelVINTJ5U0F3YkcxQ2RTaDYzQWlkU3lRTUQ1KzgvNzRFZFJ3SEwyMlBtODlZeTE1aVJXWXV3dnFWaEdYUVQxOTVmNklZTmo0Vkl0Q1hWVTJLaG95OFZPQ3dMK25zODRpUmVnSGdaUTRHVjc3OFNiN2xIcmoxbXVacjNBdGpPSDg5QWhsK0lWOUUzenhGbGMyaFdYd1ZnNkJyekErZmsxTHFnKzNaRzJQM0tCT014OHFSY3REbHh5Vm1hZmVHMDJCS0I4eDZTREVJbm9DVEZ2bnJkN2E5OWdKWHgydXBJZUVNOXZoejgrMjV1cGtENzZ4Ujd0d3VPOTYxK1VWZkRSNDZNYjF5dllHaTZidUxaN2c4dnFaWWxta0F0c0RtUHpRclRUWURRek1FT1VzeTBreGxsTS9PeWhheEs3SHBlWkZZcEwyOFJRMTMxYVIzMWIya0haaGFnQkRIN1d5eW9lRVhlbDd1eWhoZVRnQWRpV2VDbmxPWGJrMTFOREtSblhsQ0lUOG5aMW1wVnBjRnZEcXNEOTdCSmc9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"aa79047d-0047-53d4-82a4-664b18b1d3e6\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"ffe797e02856095c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"569\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjJ0M0xXcXNjTHJEQXN2TDQxUm9BL2E5N0VSMHgyZlJRcW96RWJKMU0yU2poZVJiWjE5OFNoQU5lRzVjaTcza1Y1TVpFZGVYTWlnQVFTaytMRHF5TWY2cGpocW5jQVREcjJ6cnNkY1VkUGZZOXZ1dUc1UDJXK1FFMlkvYkJtV1RYZjk0UUo3WVZXWGp5WVhUVHNkVSsvS1ZTR0JadFVJTy92U3l2VXNtR2lBSGZuTjFOc0d4TUo1SDdNZHJBdis5c3JCbGNQeHRMOWhjbFNWZXVtUzRTWEdwd3o0TjdMSWIzWWxRWXhobUNKMkxUTDFvb0plaVNZS0dEZEJqY2VOVWcyaUx5ekNQM3NkdVZoQVVKYi9mbHV3NDBFc2FVZld0a1orSzdYbkV0d095amd0RFBFOWc3NWpLK3RxUDlpMTQ0NWdmeWlaUTJ2ci94SEpsUFpQcFRQRXc0aGZlcWQxa3lKMGlXdzVuci83OUtES2JwSTVEZS9BZzhTcW5WSUV3RmJOSHY5QkYrc1RpRXMrV3lCc3ZWZVNhVmZ6QjMyYWM3TmZWZFJ5ZzZJSEk9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9edc9f92-3811-5614-9d82-fda420e71626\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"3119f7646223a4df\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXRvcC0xJTNBYzEwZmQ2YjgtM2ExMy00NzEzLWFiMDYtYzkzODczMjhiZTk0JlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0d3779bf-7e46-5af5-bae0-1b8966b0883c\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wZDM3NzliZi03ZTQ2LTVhZjUtYmFlMC0xYjg5NjZiMDg4M2M8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"e2a0a09d07178372\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e865ad88-7d3a-50a8-91f6-cfbe65ccd09a\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4b7cd6a1b800f785\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"169\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FTTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXRvcC0xJTNBNmE4NTZlZjAtYmFjOS00OWJkLTg5YzEtNDI4Yjk4MGZmMjRiJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1399513d-002f-5a75-8209-330b18d928bc\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4xMzk5NTEzZC0wMDJmLTVhNzUtODIwOS0zMzBiMThkOTI4YmM8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"d10452bdaa5b5e8e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TTlNUb3BpY1Jhd1NlbmRSZWNlaXZlVHdvLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f8e81321-b3f7-5c38-8382-7117ab00bc0a\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"cd858a17b04d1e55\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVNOU1RvcGljUmF3U2VuZFJlY2VpdmVUd28tdG9wLTEmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"90afb681-dfe9-59b2-827c-d4b7c71e7b7b\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD45MGFmYjY4MS1kZmU5LTU5YjItODI3Yy1kNGI3YzcxZTdiN2I8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestAs/aws_test.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3KLe0plAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"b1b747964e27ac1e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"41\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f2b9a3da-54f9-53db-9178-c1ec4df25ea8\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"451ede785ff1f73b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6ffc41d0-4aab-5732-b601-23e653a0aa41\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"0c7f82491bfe904e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"464\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"654cfaaa-7d0a-5420-9128-989c6401a953\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"16ae7be5e09fe4ff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"130\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IngifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljQXNfYXdzX3Rlc3QtdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d5046588-f02d-52f5-876c-07bee9263f86\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiOWRkNGU0NjEyNjhjODAzNGY1Yzg1NjRlMTU1YzY3YTYiLCJNZXNzYWdlSWQiOiIzYzc0MzQ0ZC1iYWMxLTQ1N2QtYTA4MS0xOWMyZTE2ZjE0ODYifV19\"\n      }\n    },\n    {\n      \"ID\": \"a4106182a2ce67a9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"739\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"919b5889-37f3-5b5b-9373-3abf2ef84628\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MzMzNiIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgzMjYxIn0sIkJvZHkiOiJ4IiwiTUQ1T2ZCb2R5IjoiOWRkNGU0NjEyNjhjODAzNGY1Yzg1NjRlMTU1YzY3YTYiLCJNZXNzYWdlSWQiOiIzYzc0MzQ0ZC1iYWMxLTQ1N2QtYTA4MS0xOWMyZTE2ZjE0ODYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkpYT2g4SXNNQUZ4eEJvVTVGZC84dUQ1VVY5VFMzV2lIRzY0cmtpZFA5WkVzYnM4Qjh3RFpHTHJVQ1BycU5tNnZLbGlLb0xHV09LM0VYV2lkR3hQTFpFVWVZVHdoNC9hZjBMRWRsVjkwdjN6U05HdU1kc3o1WmZURDJLdlpMcEtaYWhoZG1HYmwva1lVTHREcldTUVZCUHdyMDlYWjBQWEVjSklpSFJyS2JvV21oWUVVQTliYXRmWEdZYURtbnhoN1c1b1R0a21PY3k2c3I3VlRMSVIzWDd4dkhFNHBMMTA5VnkvWFpTNU5HTklIbUVUc0o0UGdVSVBTQkZpRU5lUEZpNGdLc3A5SzZ1dVdxU0VVSTRyNzBOSkRSeXFHYnZjVk92VHhnVFBzdGRDaTZTWDJHWkRzYjZFQUM0aURTQ3VNTjNPV0l1VitWc0xjYWFxSzlCaVgxVzJiZVRkMFJyaGY0eXhrekZhRWFHT1BrZVpaQVVlcnN3TjdObFVJZ3hKaE5CdVN4QWRhYmQvemdGZUxIWHEyNUszb2RhbFhDRlF3WEJmSlRWdDg0UDA9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0338e649f446f2c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IiJ9XSwiUXVldWVVcmwiOiJodHRwczovL3VzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9ub25leGlzdGVudC1xdWV1ZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0ea2d351-5014-56f2-8ce4-b167491f1b81\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"7780b86a755e4c6d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkpYT2g4SXNNQUZ4eEJvVTVGZC84dUQ1VVY5VFMzV2lIRzY0cmtpZFA5WkVzYnM4Qjh3RFpHTHJVQ1BycU5tNnZLbGlLb0xHV09LM0VYV2lkR3hQTFpFVWVZVHdoNC9hZjBMRWRsVjkwdjN6U05HdU1kc3o1WmZURDJLdlpMcEtaYWhoZG1HYmwva1lVTHREcldTUVZCUHdyMDlYWjBQWEVjSklpSFJyS2JvV21oWUVVQTliYXRmWEdZYURtbnhoN1c1b1R0a21PY3k2c3I3VlRMSVIzWDd4dkhFNHBMMTA5VnkvWFpTNU5HTklIbUVUc0o0UGdVSVBTQkZpRU5lUEZpNGdLc3A5SzZ1dVdxU0VVSTRyNzBOSkRSeXFHYnZjVk92VHhnVFBzdGRDaTZTWDJHWkRzYjZFQUM0aURTQ3VNTjNPV0l1VitWc0xjYWFxSzlCaVgxVzJiZVRkMFJyaGY0eXhrekZhRWFHT1BrZVpaQVVlcnN3TjdObFVJZ3hKaE5CdVN4QWRhYmQvemdGZUxIWHEyNUszb2RhbFhDRlF3WEJmSlRWdDg0UDA9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"136d2745-94f3-5e2a-84d5-45738df88359\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"f5980548af358892\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ae7477e4-7b6e-53a9-bbfa-15d26265eeda\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"77fb7075df8b3f4d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX2F3c190ZXN0LXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"417be777-57ee-59e1-b500-85414ee5c492\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3LKQIUhwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9b8d6f4709285af5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"72\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ab809212-6eb1-5c05-8673-f02477ba3748\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"60aed6a624c901b8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"121\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2cfe8572-4906-50a2-9877-e744500a6bef\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"3941897e93d8bcdd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"526\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNBc192ZXJpZnlfQXNfcmV0dXJuc19mYWxzZV93aGVuX3Bhc3NlZF9uaWwtdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"df8014f6-8bfe-5bf4-8a43-76c092f2b0b9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7e4656b045e5a266\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"161\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IngifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d22195e3-f269-5a8a-93fe-f7d5eb65d1c7\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiOWRkNGU0NjEyNjhjODAzNGY1Yzg1NjRlMTU1YzY3YTYiLCJNZXNzYWdlSWQiOiJkNjg5MjRmMy05ZDA3LTQwODQtOWE2NC1jMDFjYWZmZTcxYjEifV19\"\n      }\n    },\n    {\n      \"ID\": \"a7a42c38c2e4b5ce\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"783\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a69bf657-7b01-56ce-a131-9461620d9d83\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4NDI4NyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjg0MjA3In0sIkJvZHkiOiJ4IiwiTUQ1T2ZCb2R5IjoiOWRkNGU0NjEyNjhjODAzNGY1Yzg1NjRlMTU1YzY3YTYiLCJNZXNzYWdlSWQiOiJkNjg5MjRmMy05ZDA3LTQwODQtOWE2NC1jMDFjYWZmZTcxYjEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmtLRy9PWWRPZHh6ZWVTOHM2dlAvN2VXOE00eWdIbitCcHNsemk5UGZtMkNyMCt2ZEdXNTdxemt0TCtKWXVoeGxidElGbzEyRElRVE5JczVVeGlWY2t0RlV2NXowT3NiU1ozRkVjVFNYM3ByaXJGU0VNRzB5elQya082Q0hMM25IWUhNNjhrR0VsUGk2eUxiaFlzU1FKb1dpekdreThYemQxNVo0UDVlZmJzUXl1ajluSWtlWFJjS2IwcG1nTnI0T3ZsbkVxR3ZoUDF6U0ZiZ20wQmVtaG1ISkVQR0t1RXVFbE5OZ0UrYTRYczNCZVNQRmVGQkRmSjNCcTZ5K1ZjTGQyaTFPVzdtUXFMTjQ1QWdSYVB2cnBMZXVCUGJjODdIZ2lPNkxURE92a2d3RTdHZ0lNWk0xRGV5Vk8zNG0wbWxZYUVrMFl3TFFEdlpsbVhJNnRHUVdNYVRKUUlQRnNmVzZ3LzZodHN3a2xJY2lobUpoejBZQ2JUa010ZGNYU1BudnZ1WXN2QzlwS0ZJNlk2WW9sMU1pSWF2YXRWRkhsZFZrSlg1WEpBUVl6WGZIbktiYnN6VlBleDlzTitYSDJ2b3pZRXAzVjd0ckc3WGN1cXJoSXpDTWJBPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"aa227d3fd29c8982\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IiJ9XSwiUXVldWVVcmwiOiJodHRwczovL3VzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9ub25leGlzdGVudC1xdWV1ZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0b51bd73-a829-596c-b4e8-df45b1254221\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"e90470c701d69786\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"638\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmtLRy9PWWRPZHh6ZWVTOHM2dlAvN2VXOE00eWdIbitCcHNsemk5UGZtMkNyMCt2ZEdXNTdxemt0TCtKWXVoeGxidElGbzEyRElRVE5JczVVeGlWY2t0RlV2NXowT3NiU1ozRkVjVFNYM3ByaXJGU0VNRzB5elQya082Q0hMM25IWUhNNjhrR0VsUGk2eUxiaFlzU1FKb1dpekdreThYemQxNVo0UDVlZmJzUXl1ajluSWtlWFJjS2IwcG1nTnI0T3ZsbkVxR3ZoUDF6U0ZiZ20wQmVtaG1ISkVQR0t1RXVFbE5OZ0UrYTRYczNCZVNQRmVGQkRmSjNCcTZ5K1ZjTGQyaTFPVzdtUXFMTjQ1QWdSYVB2cnBMZXVCUGJjODdIZ2lPNkxURE92a2d3RTdHZ0lNWk0xRGV5Vk8zNG0wbWxZYUVrMFl3TFFEdlpsbVhJNnRHUVdNYVRKUUlQRnNmVzZ3LzZodHN3a2xJY2lobUpoejBZQ2JUa010ZGNYU1BudnZ1WXN2QzlwS0ZJNlk2WW9sMU1pSWF2YXRWRkhsZFZrSlg1WEpBUVl6WGZIbktiYnN6VlBleDlzTitYSDJ2b3pZRXAzVjd0ckc3WGN1cXJoSXpDTWJBPT0ifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljQXNfdmVyaWZ5X0FzX3JldHVybnNfZmFsc2Vfd2hlbl9wYXNzZWRfbmlsLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e4c16f1b-1a5e-5475-8883-0d2d03526f38\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"7d8fcb521aa87cff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"220bbf64-40bb-5997-8a9c-dd5259b702da\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"e992b30987db6158\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"120\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0FzX3ZlcmlmeV9Bc19yZXR1cm5zX2ZhbHNlX3doZW5fcGFzc2VkX25pbC10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"80b7122f-02ac-5eef-a65f-70191ba05621\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestBatching.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3IOqyezQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1438c5bb022dac59\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"09c0651b-164a-5300-a493-072d0f43a631\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"ac7aa75e9d1c1a23\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"116\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"852a4805-35aa-5099-954c-2a332ca3f5a8\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"d0908443dcebfe96\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"458\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljQmF0Y2hpbmctdG9wLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"69dda0ca-2558-599f-be8e-c2fc3c514cae\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"790004e514973445\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjEiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjIiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjMiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjQiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjUiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"712\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"251a7f88-c0e1-568c-8e6c-1dbed9e8e3bd\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJiY2YyZjgwNi02NzU0LTRhNjctYTZiOS0zYzRkMGExYmMxODAifSx7IklkIjoiMSIsIk1ENU9mTWVzc2FnZUJvZHkiOiI1ZWI2M2JiYmUwMWVlZWQwOTNjYjIyYmI4ZjVhY2RjMyIsIk1lc3NhZ2VJZCI6IjM2MGUyYWZkLWE0OTUtNGIxMi04NDIzLWUyMWYxNGU0MjgzMSJ9LHsiSWQiOiIyIiwiTUQ1T2ZNZXNzYWdlQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiYzQ3NTJiZjYtN2MyNi00ZThiLTlhMzYtMWZkY2I2NzBhY2YxIn0seyJJZCI6IjMiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJmMDZkMDdjMS0wZDM1LTQxNDQtYmIzYi01NmY1YTg4NmNjMzIifSx7IklkIjoiNCIsIk1ENU9mTWVzc2FnZUJvZHkiOiI1ZWI2M2JiYmUwMWVlZWQwOTNjYjIyYmI4ZjVhY2RjMyIsIk1lc3NhZ2VJZCI6IjA4MDEyMDlmLWE1NmQtNDIzOS04ZmM4LWM0YTBiOTdjZmQ4YSJ9LHsiSWQiOiI1IiwiTUQ1T2ZNZXNzYWdlQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiN2VmYjBiNjAtYWU0OC00MTUxLThkOTEtNjIyNTJmOTBhNWRlIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"dff7e4cacbbff935\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjEiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjIiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjMiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjQiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn0seyJJZCI6IjUiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"712\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"baa2fbd3-2888-5041-9d18-99e53181b570\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJjYTQ3NWRkMC05MjM5LTRiMmMtOWMzNy0yNGMwNmU0NzViODAifSx7IklkIjoiMSIsIk1ENU9mTWVzc2FnZUJvZHkiOiI1ZWI2M2JiYmUwMWVlZWQwOTNjYjIyYmI4ZjVhY2RjMyIsIk1lc3NhZ2VJZCI6IjJmZDAwNGFhLThlNjctNGNkZC04YmYzLTg1MjIyMmJlMWE5ZiJ9LHsiSWQiOiIyIiwiTUQ1T2ZNZXNzYWdlQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiYTE4M2VlMGYtNTM4Ny00OTFmLThlNDEtYzEwMDljNTkzYzkzIn0seyJJZCI6IjMiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJkMDVkZjc3OS0yNDkwLTRlYTEtODc1OS1iYTMyOGE2YTFjNmMifSx7IklkIjoiNCIsIk1ENU9mTWVzc2FnZUJvZHkiOiI1ZWI2M2JiYmUwMWVlZWQwOTNjYjIyYmI4ZjVhY2RjMyIsIk1lc3NhZ2VJZCI6ImI0ZmYyMTVjLWI2NWUtNGRlNS05YzY4LTIyNmJlYTA0MjMxZiJ9LHsiSWQiOiI1IiwiTUQ1T2ZNZXNzYWdlQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiOGRiNDJjZjMtZDg4OC00Y2ZkLWJhNzMtNmQ1NjM0ODdmNmM5In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"de95a309e873288d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"81269448-b7dc-5574-97dc-f67eaed5a045\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MTYzNSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNDgyIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiYmNmMmY4MDYtNjc1NC00YTY3LWE2YjktM2M0ZDBhMWJjMTgwIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJ2ZTI3OXl6OGxIZFFiSENBM3FDcTR0cmZPdTU2VXA2TGErSzh5dUEvWHl2SHRsYTdrS0ZQc2w1MG5LRWFpaW00YnJ3T2ZLUFJ3czZOb3dod3BsY05LSDVHVnI3Q0dFNEYxQ09mTTNMVmd2RGpwTGZGQlJoMS9RVE0yaks4Y2hNQm1JWTU3RTFuN3RCQnNwUWdTY2ZjNlZLOHFNaVFGQW96VUFaWVFGclZmYzNwTjhlcVRNbXB0dnBGdjErdFlkZXRKa0tRUFNsa1FzeTJ4OTNlK1Nid25KemlXT1Z6enByN2Rydk4yNG5ZWU1FQjMwM1V2OEh4UFFsbGJyL3BSNlpOTExhUW5MT3Y3ZGZlOCtvTnZVeStVbllGK2VzdWt6RzRiYWlxSzQzalFrYXJyWVY1eDM2NkJYak45NzRpRE5jdlZ1OWQrL2kyQzk2WGZVUUpuRG0wOGVqWGk2WFVHRHZDazRPUUtsQzRWWUJ1dkZxUXZhaGhHdlBuRWx5TkZVVndSL3FpSCtESUhhT05TSDJpVWxlS3ZnPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"b0e10655b76f751c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"93540643-b944-560d-a8a5-6475a04d933c\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MTcwNiIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNTU5In0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiYTE4M2VlMGYtNTM4Ny00OTFmLThlNDEtYzEwMDljNTkzYzkzIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJJaGlHa0R5YmpQZ0Jsb2pSbkVXYXZPa2xYWGVQdUoxN3dPMzY4OE93Y2lJYXQrZS9peEsrVHpPUnozT0VuV3BSYk04MGRaV2lJWTgyMFV0RkFqcmpJQjZ3ekIwWFNNUHZjWFBoZGkvNkd0ZkYzVHVrU1pHMU50bUs1VVdQNzdYT0twK0RNMTZCT3B1NUczc3dwOEZyWklORFZGYXBYdFV0ZDNZRTJOclVoTXJ2ZUxuQlBPQm0rQ29YN0VRWTVhQUhHSWxZRTYvd044eG84aWtydE9KeTdkVDROVmZReFhKdU1nbjYwYmNWQmJrdkhkUFFWSzZwZ2FYOHB5MFRPenNPU21Qd3RlUVd3bmx5Vm9WNlMwcGx0UlFIVXowWm1hNU5mU2h4bk80VDQ5L2lYRnJyYWZOaXNXUXdvMENkYmdoaVRjODVzZysvUitoeUUxU0lqSmVncUNnR1RFOENjdHNKUkt4cW82U1g2Rm02WFRzSVQ4Q0x6d3pTZmw4YTU2amlLcmNtOVk2RVEybWVKVWxjTitNcE5nPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"ea524a28c567baf4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2c7d191d-24cb-591e-8349-7b2b3dc2cc2f\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MTc3NCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNDkwIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiMzYwZTJhZmQtYTQ5NS00YjEyLTg0MjMtZTIxZjE0ZTQyODMxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJscDhYSmw0V0ViQ3pCM3JocDZzOHFEVHJTSDVETDlUSXRhbHFhc25TeDNCWEJMRXQ5aEk5RFZSSkJ3aUpVM3AxNXgyMjI1WFhPUDNCQUlXbGZLM200M0JWM2tnSW5NSkdCQnlzVm4xUlBDNEZBVG9IekVPci9lZUhhNlNvWWtxOXh4Wlg0M2lOOERuTzZ4V0h5dVUrSHpXUWxaVWVKMzlaRC9ZOUM3dC9kRmJTN0RxMVUyd2NxU1hOYWhxM2prVVZRNGJqb2ljMXcxUitLVno5MUljMnFiVjB0ckpzazdETHRoeVhQbEJtdGEyS1N0dUJYZW5XN29FUXVjU0h1NXlnYWZlK3RGVmhRUlVxMHc1cnlqZWlOMDlTeUQ3ZktydnhnMHBJNytacktJQ2JjcnE0dkRKZ1pHdVEvbDZwZnZQVG9sWDVyTEN3aHhJVTVWTk1mWitsd1hJV3p3RFd5OXJ4RVIxRnhEYXhyeGJtY09qQ0M4ZlUrN1hOM1VsRW8ycW1GQUduM2VDWDR1aUVTUlF0QXRGK1dBPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"a09bed4808122759\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8971cad5-f403-59ed-9f7b-a8e3ed0a8cdc\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MTg0MSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNDgyIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiMDgwMTIwOWYtYTU2ZC00MjM5LThmYzgtYzRhMGI5N2NmZDhhIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJmdlVRNDArTW1Rb0R5Tm1RUlJWK0tZQ2NvWmhYTGZhbjI1b0Y3OVZhU1dIRTQ2ZmFOQjJuRXFFN2FJVTdxU2pkb0Y4N1ZJS3BRalVZaTl5ZFFvbUNzZ0JlcnhnK1VKTlpONnNOUlZxL1FHd2xzTTVmd2tiQXdYb29ZUWZQT2d0N2FyWWwwOTlqRVFLVG9IT2NNS2lqMU10M0I5WnhLeUZNZGRjTTBzRHhGeUFqZWtPUks2VTFsMUFaU2h4U1NuUFZ1QjBBWHE3UUQrN2lKQ2hLMGFISjlUK1NEa28rV0RWYnVaZFB0eCtXSDNWRFdEYWoyTlhtc2NwY1RsYk5CckVydWt0MS8zTVNXa1I2QllRRXZNdW0wQWFuSkRxdGpEek41em4wdndWOHpFR25SZFp5ZnEzaWg1Q2dwZW9sZGxZbEpNL2JYV2tuODFFRXJSNzh4dmY1YzF5OXhFc0h2bG01eWE4SkdQUGRGYjc0aVl3Vk5rRjBGdk1veEh1b0liZzRsM2xoT3E2bE41dnhReFk1ZVVoU1lBPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"c9ec14ecc29ca094\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"96f8d52d-e8e2-5152-b909-b71bf1eb7463\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MTkwOSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNDkwIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiN2VmYjBiNjAtYWU0OC00MTUxLThkOTEtNjIyNTJmOTBhNWRlIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJOc3k4RURVdWF3WVhpRncrUDhtdFJCZTg3TzNKdGQyZk1tdVZJL2I5NVg2WDYySGw4RmRTK1VQK0ZtbUFET0xxNGxKdG4zTWVCcEpVRzBHVW5XaUg5NHhTc0ZTa1Bmbnk3aFNER0V0WHJFYW53d0R3NW5kWVE3eHBzMUw4QTJmTk1CMlFsVXppUFVZVzZRNUVQMUwxME5WcDhYQjY2S0srcEtWNkFzQWdyMUN0ejBCaUh4a3UxaVViQisxNWZWOHZybThYZHlCeWdjQldlNWNISkRINmZjcytnT0N6R3dMaU40STVhSTNZbk52S3VYN09RbGVZa3YwejRNV21ZMlAzcEFYTTR1RmNTaEdnZDBGVUFyL2xTUTE2bXoybTIwa0sydzFBS3lOeTU5ci9JdHZCUE9UOVBVdHE1YXUyWVh2M2tvbEg5cjBtMytiK0JPc0N1dVIwZWxRMFlERTYyazBjV1BPaUd0TFlhNVdDdm14Rkp5Ui9LN1hJYVZUb2VUYXMwTjdpU2RPV3ZIQ0ZIeVNBYUNYMlJRPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"f0486f8af24bf2b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"97c1cfd8-4ce8-56d3-ab51-adee55e2b3e2\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjAyMSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNTYyIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiZDA1ZGY3NzktMjQ5MC00ZWExLTg3NTktYmEzMjhhNmExYzZjIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUI3KytIaHZPbWJQYTA5YUhLV3RqNjBzbGFoVDRmS2dDYS9RdEJzWjhiZXA0SkVETlVzMTFMMGkxUHdIc1VZMHVpZkpwVmdscmFEZy9PeCt0QXVINy9vU0dJVHZrYVRPUC9sY1lmRDJaSWkvaXg3NXYvZ3l3dHN1d0RTc2VDdmxOOVYvdGh2Z2o2TEIyTXQyeHdoK2VkeW0raWRVcVZyM1BiU21lUHBtN2dIcU1DLy9oMjErcEVtNDBBbE55aCtWWW1Oc2g5bGsvZVNlcXpSTVA5ZVNldTFvWURFUEloSlhUNDF0dW5DSGdIandwSWw4SEUvc1I0MUxiZklTVFdTcWxyUjN1SW1hYUdmelhUckNyeUozNVdKL0RobHJWNzlrQWFhQkVlZ2FxTXJiOEQ4TFV0aUlSTUtpMWRiK0VadnJTR01vN2E1Zk10c0hnSGJiSEI2bFpVb2V3OGhyK2duTEVqaEpHWTJob3QrQVFxZXppZDhleEI2SGV4bmp2Z0xXY3JqTWF2a1VLQVl6bWNUS1Z0dVI4Sll3PT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"300df232bf1afff2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c7169025-2fa1-5d4f-8bee-f21336ab087e\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjA5MiIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNTU5In0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiYjRmZjIxNWMtYjY1ZS00ZGU1LTljNjgtMjI2YmVhMDQyMzFmIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJZWFNkbjUvaHkxc0ZVMHpjSVJmckdpS2JycFZaTkdFTXNJN0wzRFZEWlRjYWZCdzd0RWkrdEVFTlNSL2lXanVqYWhKSy9DNnFXeUNOKzlPNFZvWTl1YlVOMjdVOGtqbFZFcUJrZXh5YjJidnhhdERSR3hmZXh1Y1pkYnZQcUlWS1FLcGdub096THNEL2JXSEtRbjRYZWtDNWcyYUpwcW1WbTRSUG01M3lSVlc1L2QwcjRzS0diZGJoSXZVSzN6cDNjVW1EaGNHL21Yd3ROcW9HeFJZK1lpQS81OS8zVVg0WnYzdnhWakxNS1d5S3FRVDg4WWVrM3d3K2RMc1E1elc0NHV3aEYrWWs5WlZDUGxsZE54U0IvQ3pjeUJUdHVkYjZ3TW1ZcVhpS2lTbXJWUFIvTkJlVUsrSDRqbzYwMWIxelhhcnAxZ213L2tzQThMMnQ0bVRVZkdCdlFMYy9Tb2RLRWNhZUVaWFRZNjNLQzhQWlJ3LzRLUG1Nc0gzRnFMUU5zd1VFM0F1VVczcTZ3TXExYlFXZkpBPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"5525e121f50111a4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2750\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnZlMjc5eXo4bEhkUWJIQ0EzcUNxNHRyZk91NTZVcDZMYStLOHl1QS9YeXZIdGxhN2tLRlBzbDUwbktFYWlpbTRicndPZktQUndzNk5vd2h3cGxjTktINUdWcjdDR0U0RjFDT2ZNM0xWZ3ZEanBMZkZCUmgxL1FUTTJqSzhjaE1CbUlZNTdFMW43dEJCc3BRZ1NjZmM2Vks4cU1pUUZBb3pVQVpZUUZyVmZjM3BOOGVxVE1tcHR2cEZ2MSt0WWRldEprS1FQU2xrUXN5Mng5M2UrU2J3bkp6aVdPVnp6cHI3ZHJ2TjI0bllZTUVCMzAzVXY4SHhQUWxsYnIvcFI2Wk5MTGFRbkxPdjdkZmU4K29OdlV5K1VuWUYrZXN1a3pHNGJhaXFLNDNqUWthcnJZVjV4MzY2QlhqTjk3NGlETmN2VnU5ZCsvaTJDOTZYZlVRSm5EbTA4ZWpYaTZYVUdEdkNrNE9RS2xDNFZZQnV2RnFRdmFoaEd2UG5FbHlORlVWd1IvcWlIK0RJSGFPTlNIMmlVbGVLdmc9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJJaGlHa0R5YmpQZ0Jsb2pSbkVXYXZPa2xYWGVQdUoxN3dPMzY4OE93Y2lJYXQrZS9peEsrVHpPUnozT0VuV3BSYk04MGRaV2lJWTgyMFV0RkFqcmpJQjZ3ekIwWFNNUHZjWFBoZGkvNkd0ZkYzVHVrU1pHMU50bUs1VVdQNzdYT0twK0RNMTZCT3B1NUczc3dwOEZyWklORFZGYXBYdFV0ZDNZRTJOclVoTXJ2ZUxuQlBPQm0rQ29YN0VRWTVhQUhHSWxZRTYvd044eG84aWtydE9KeTdkVDROVmZReFhKdU1nbjYwYmNWQmJrdkhkUFFWSzZwZ2FYOHB5MFRPenNPU21Qd3RlUVd3bmx5Vm9WNlMwcGx0UlFIVXowWm1hNU5mU2h4bk80VDQ5L2lYRnJyYWZOaXNXUXdvMENkYmdoaVRjODVzZysvUitoeUUxU0lqSmVncUNnR1RFOENjdHNKUkt4cW82U1g2Rm02WFRzSVQ4Q0x6d3pTZmw4YTU2amlLcmNtOVk2RVEybWVKVWxjTitNcE5nPT0ifSx7IklkIjoiMiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCbHA4WEpsNFdFYkN6QjNyaHA2czhxRFRyU0g1REw5VEl0YWxxYXNuU3gzQlhCTEV0OWhJOURWUkpCd2lKVTNwMTV4MjIyNVhYT1AzQkFJV2xmSzNtNDNCVjNrZ0luTUpHQkJ5c1ZuMVJQQzRGQVRvSHpFT3IvZWVIYTZTb1lrcTl4eFpYNDNpTjhEbk82eFdIeXVVK0h6V1FsWlVlSjM5WkQvWTlDN3QvZEZiUzdEcTFVMndjcVNYTmFocTNqa1VWUTRiam9pYzF3MVIrS1Z6OTFJYzJxYlYwdHJKc2s3REx0aHlYUGxCbXRhMktTdHVCWGVuVzdvRVF1Y1NIdTV5Z2FmZSt0RlZoUVJVcTB3NXJ5amVpTjA5U3lEN2ZLcnZ4ZzBwSTcrWnJLSUNiY3JxNHZESmdaR3VRL2w2cGZ2UFRvbFg1ckxDd2h4SVU1Vk5NZlorbHdYSVd6d0RXeTlyeEVSMUZ4RGF4cnhibWNPakNDOGZVKzdYTjNVbEVvMnFtRkFHbjNlQ1g0dWlFU1JRdEF0RitXQT09In0seyJJZCI6IjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmZ2VVE0MCtNbVFvRHlObVFSUlYrS1lDY29aaFhMZmFuMjVvRjc5VmFTV0hFNDZmYU5CMm5FcUU3YUlVN3FTamRvRjg3VklLcFFqVVlpOXlkUW9tQ3NnQmVyeGcrVUpOWk42c05SVnEvUUd3bHNNNWZ3a2JBd1hvb1lRZlBPZ3Q3YXJZbDA5OWpFUUtUb0hPY01LaWoxTXQzQjlaeEt5Rk1kZGNNMHNEeEZ5QWpla09SSzZVMWwxQVpTaHhTU25QVnVCMEFYcTdRRCs3aUpDaEswYUhKOVQrU0RrbytXRFZidVpkUHR4K1dIM1ZEV0RhajJOWG1zY3BjVGxiTkJyRXJ1a3QxLzNNU1drUjZCWVFFdk11bTBBYW5KRHF0akR6TjV6bjB2d1Y4ekVHblJkWnlmcTNpaDVDZ3Blb2xkbFlsSk0vYlhXa244MUVFclI3OHh2ZjVjMXk5eEVzSHZsbTV5YThKR1BQZEZiNzRpWXdWTmtGMEZ2TW94SHVvSWJnNGwzbGhPcTZsTjV2eFF4WTVlVWhTWUE9PSJ9LHsiSWQiOiI0IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJOc3k4RURVdWF3WVhpRncrUDhtdFJCZTg3TzNKdGQyZk1tdVZJL2I5NVg2WDYySGw4RmRTK1VQK0ZtbUFET0xxNGxKdG4zTWVCcEpVRzBHVW5XaUg5NHhTc0ZTa1Bmbnk3aFNER0V0WHJFYW53d0R3NW5kWVE3eHBzMUw4QTJmTk1CMlFsVXppUFVZVzZRNUVQMUwxME5WcDhYQjY2S0srcEtWNkFzQWdyMUN0ejBCaUh4a3UxaVViQisxNWZWOHZybThYZHlCeWdjQldlNWNISkRINmZjcytnT0N6R3dMaU40STVhSTNZbk52S3VYN09RbGVZa3YwejRNV21ZMlAzcEFYTTR1RmNTaEdnZDBGVUFyL2xTUTE2bXoybTIwa0sydzFBS3lOeTU5ci9JdHZCUE9UOVBVdHE1YXUyWVh2M2tvbEg5cjBtMytiK0JPc0N1dVIwZWxRMFlERTYyazBjV1BPaUd0TFlhNVdDdm14Rkp5Ui9LN1hJYVZUb2VUYXMwTjdpU2RPV3ZIQ0ZIeVNBYUNYMlJRPT0ifSx7IklkIjoiNSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNysrSGh2T21iUGEwOWFIS1d0ajYwc2xhaFQ0ZktnQ2EvUXRCc1o4YmVwNEpFRE5VczExTDBpMVB3SHNVWTB1aWZKcFZnbHJhRGcvT3grdEF1SDcvb1NHSVR2a2FUT1AvbGNZZkQyWklpL2l4NzV2L2d5d3RzdXdEU3NlQ3ZsTjlWL3RodmdqNkxCMk10Mnh3aCtlZHltK2lkVXFWcjNQYlNtZVBwbTdnSHFNQy8vaDIxK3BFbTQwQWxOeWgrVlltTnNoOWxrL2VTZXF6Uk1QOWVTZXUxb1lERVBJaEpYVDQxdHVuQ0hnSGp3cElsOEhFL3NSNDFMYmZJU1RXU3FsclIzdUltYWFHZnpYVHJDcnlKMzVXSi9EaGxyVjc5a0FhYUJFZWdhcU1yYjhEOExVdGlJUk1LaTFkYitFWnZyU0dNbzdhNWZNdHNIZ0hiYkhCNmxaVW9ldzhocitnbkxFamhKR1kyaG90K0FRcWV6aWQ4ZXhCNkhleG5qdmdMV2Nyak1hdmtVS0FZem1jVEtWdHVSOEpZdz09In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a4d5c2d8-d9d9-5c53-88b6-a0eec0d3e962\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjMifSx7IklkIjoiNCJ9LHsiSWQiOiIxIn0seyJJZCI6IjUifSx7IklkIjoiMCJ9LHsiSWQiOiIyIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"62a41ea4bb9ccbee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"037ad729-418b-5c8c-a93a-b51f588199bd\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjIzNCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNDgyIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiYzQ3NTJiZjYtN2MyNi00ZThiLTlhMzYtMWZkY2I2NzBhY2YxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJoclVjK0FTbFozNFVhMjJTOTBVbS94UkZnOEUxMzlpK2N0V0luNTkwYVExMGFHcU5VTmpLTE8yTUNlOEtxZFdZSFlTQ0xrQTB6V0pRQ283ZEFvdGxUZjRZOVVpYllTbGI2cU5CWnZMb1JvSFY0QnJVaWo4d0ZpeDFSRUtjNUpvVmtMMGprL2pDaXd3R3VvQmtMSUUxbExyYTBlcTVud0VXOGNhV21KVEx3dmY1dUlheEVxcjRMdUw1OGNMLytDUWJOdTYrcUJJMVNDcnZVM25naTFQWDRmNGpMb3prS1hST2RFUTJicDV3bWZCTkZJb2FnaU8rbWNuYWh6MnNGR2JZbjI4Q2RPY1pJQ2YwVlIrMWJpSDFHVXYwUDNnZWdjQytxMy9ZaUR2eUZXbkdtMDVyUy9NNCtPN2ZMU29WSXQzZk0yY0dPN1JuVkttbTV2SExic0FmYmRwS2xXalYwZ3l1bVRuQzhTcm9QaHVUa3k3Q1krY0oyMlBVMUgvSjNobzM1UU5kU0tvVHIrVTBzb0VyTUdDa0lnPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"c217647f2269e197\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bd1e8f6a-65f1-55ef-a56e-ed5c7cfbc0de\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjMwMiIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNTYxIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiOGRiNDJjZjMtZDg4OC00Y2ZkLWJhNzMtNmQ1NjM0ODdmNmM5IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJWK1dFWEZ3Snc2T1lMemhkVVJmZ1dNSVlhbjdQREhSK243S3c3NE03Q2g3c1FUSWluU3FHbE9jNlhIRkI5M3Jjc2UzMTRBOFBya1VxdHEvWERkZndhVitRQVIvVURFT0pwTk5FeXRMV29idGdmdVBUcTlrQXpRNk4vd2xXVFM1cThhNWx5Q0pHRU5GVXhPMzVSR0cwZmE5dCs2SXlXdUljUGxMcWhSZ0dkL3BEM0ZuYVR0bGp4OC9CN29UQkhHYmlpS0lVY3puK2FPNHV1VCt4YldSM0pSUkJxZlBZNFNqaDArQmFnK1kwRGpJVGEvT012dk84VG55VTdpb2hEYWV0cXBvZ3FXVXVoMW0rcnJ1U1JzVDdCdU9ZeG9sZ0dvRm1nOVhrTnltT1FGbGlkVXluTVNVNitmNzg5eCtvNVd4MURyOURaeVF0djJBN1dWMTg0cEtjdlFha2NXbWQ2NEM3OVJuN3p4OWsxL2xLV29XelM2VXoyRWs0N0xZS1hONGVhYUgxcVdQRXB2V0tpOEFkVTFsM3pnPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"a543eea74d304f3c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cae8f7a6-a866-52e7-bd9e-9590b16ce7d6\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjM3OCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNTU5In0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiY2E0NzVkZDAtOTIzOS00YjJjLTljMzctMjRjMDZlNDc1YjgwIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJocDRTZFpETEZnTUxHZHFaU1g2bHFxYTZiVytwanpTbkN3anlRSFI2VGhKVXB5N1RURlhvazJnZFZGMDJPU3pEODNTRFdaUEV0bEFtREVIUE5rL2E0L3V5MnYvTmtURHJpdlNjTGtRSzdiSVhRQjhpTk93YTRiK21vYnpKU0Z1R1JYTXdXZ1FIY1Nla3IzcnRZc3h4eWRUdzNNMGJjMWZSWHA4OFJkbVFTbEpRNURvMUE2RnJtSkRDYjVsQ3h6bFZ6eUl1TTNJTTViZG5BQm1uenI5c3htTy95cWZmRGVsUVIrMVdhb25sMnphYm5KcHJOOUhRcmZ2eHFiZ3RuUEVRTm1wVlRVU2JJT3BQYmUvMjRnZnMyZW5ZM05ScUxBZVA1QWsxbVhmTGFjejc1dWtPWmphalQ0a3F6QUlKWjFqN2w1YW5UanllSEk3SG1VNzdvK3VqOHBSYjFVcjVvUDNQb1ovRXptUFFjdHZpalJJTU9wdWVsdnMvZ28zRFIvTU5ZVVZYQWlDVythUTNpb2ZhMGJteG1BPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"87632449a645ce9d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ffc5cce5-c8bc-5488-b046-aed3d1b6e338\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjQ3NyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNDg5In0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiZjA2ZDA3YzEtMGQzNS00MTQ0LWJiM2ItNTZmNWE4ODZjYzMyIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJtVmRvOURweStsRGdib1Q3dnd4VzA4aWpJUUFCTjBvSGgzTkI1NWM2Z2hYaFIwd2w0WU1ONi95ZWVaR1FNVE5xTU80MWxLKzhBWVJ2V0tTVnlEcGFkaCtxYXhlL1ArdWlGL1E0UTRWYVdmem16TUh3aFduSnBCb2JGZHlaVnU2Ni9jdDUyQ3VtN1BSVjE1cjhrTGxNeHl5cDRvSTBSWkxybSttOVBwWkorR1RIYXNySEdKTlBKSWVMK2h1dklOVERXZVZ6NnZSZW5kMEZaMy9KTFYvZzdMTDBXRVNiSTVadnVRek5XeCtsV0FiSUZPREJGOWc0NElyek1zclpUY21vSmd6SHg1MTlLbTg4YzZTeHlDOUxYbFJtUUhtTTNqZVNmdUVXek1UNDJKeWRPYmJCNWFySDNZT3VVTjVWL05NenNwS2RYUEU5bi9sYW9PN09tbXVaVTJOK0RveXd4VG9oZVl4bStIV21PZDlyOXk4WitFbnJUWmpTbktDS0xjL1FuRTlYSWFDN2tsbGFLZE1XaVAvekFRPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"83b8633ef0c2e1b2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"729\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8db29bfb-0ceb-5a24-91a7-f9cd15e15d94\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MjU1MCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgxNTYzIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTWVzc2FnZUlkIjoiMmZkMDA0YWEtOGU2Ny00Y2RkLThiZjMtODUyMjIyYmUxYTlmIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJxZElaL2ZJa2JjalVlb1laZlRGNXZnVmJrdGdTRFMwdDZWa1hxWGtSTDgrblBWKzcwOUZLWlhsT2dFNVJuYk0wSFlKbTkrNm44R1I3OGxjV3J0K05hZHBpWGFEbm1sSDJPTFRJRmJLdGM4b1RjRkN1ZmJwWVlwYnIzell4RFNaM1VqTEFzRUFBZ2NIaUF6V3dVbC9rMTRrWnp3VmFFbjJ0c2NvM1FhYitraURQcmovbkI4MXNvT0ZpYnhURHJ6dndEU2IzbmR2ODM3UDdEUUZjRHZlNHR2YXBUZzBFeUtTWHA4QjRRRFBYRVBlMnVoS3F4SGpxaTZDQitVK0JWRXc0dEhoK0RMQ01jNjg4dzl6Y2ZHNVVUZTVXaG54YWJ2eGYwR0RFYlZMQ2VJeXdyTElyK1ZMS0hWODZuQXRjODN3Q2U2TUNUWHZHVE1Zb0Znb0ZtNEt4bkVXVzJ1SHBqTHR4b1RnYkNRN1ZIa054RC9sRkZ3TlVQaHZ1NE5mK0RWNnpCRnI4bFdyNi96RE1jVzRLVVhEQU1BPT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"cde49f5b64ce788d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2750\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQllYU2RuNS9oeTFzRlUwemNJUmZyR2lLYnJwVlpOR0VNc0k3TDNEVkRaVGNhZkJ3N3RFaSt0RUVOU1IvaVdqdWphaEpLL0M2cVd5Q04rOU80Vm9ZOXViVU4yN1U4a2psVkVxQmtleHliMmJ2eGF0RFJHeGZleHVjWmRidlBxSVZLUUtwZ25vT3pMc0QvYldIS1FuNFhla0M1ZzJhSnBxbVZtNFJQbTUzeVJWVzUvZDByNHNLR2JkYmhJdlVLM3pwM2NVbURoY0cvbVh3dE5xb0d4UlkrWWlBLzU5LzNVWDRadjN2eFZqTE1LV3lLcVFUODhZZWszd3crZExzUTV6VzQ0dXdoRitZazlaVkNQbGxkTnhTQi9DemN5QlR0dWRiNndNbVlxWGlLaVNtclZQUi9OQmVVSytINGpvNjAxYjF6WGFycDFnbXcva3NBOEwydDRtVFVmR0J2UUxjL1NvZEtFY2FlRVpYVFk2M0tDOFBaUncvNEtQbU1zSDNGcUxRTnN3VUUzQXVVVzNxNndNcTFiUVdmSkE9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJoclVjK0FTbFozNFVhMjJTOTBVbS94UkZnOEUxMzlpK2N0V0luNTkwYVExMGFHcU5VTmpLTE8yTUNlOEtxZFdZSFlTQ0xrQTB6V0pRQ283ZEFvdGxUZjRZOVVpYllTbGI2cU5CWnZMb1JvSFY0QnJVaWo4d0ZpeDFSRUtjNUpvVmtMMGprL2pDaXd3R3VvQmtMSUUxbExyYTBlcTVud0VXOGNhV21KVEx3dmY1dUlheEVxcjRMdUw1OGNMLytDUWJOdTYrcUJJMVNDcnZVM25naTFQWDRmNGpMb3prS1hST2RFUTJicDV3bWZCTkZJb2FnaU8rbWNuYWh6MnNGR2JZbjI4Q2RPY1pJQ2YwVlIrMWJpSDFHVXYwUDNnZWdjQytxMy9ZaUR2eUZXbkdtMDVyUy9NNCtPN2ZMU29WSXQzZk0yY0dPN1JuVkttbTV2SExic0FmYmRwS2xXalYwZ3l1bVRuQzhTcm9QaHVUa3k3Q1krY0oyMlBVMUgvSjNobzM1UU5kU0tvVHIrVTBzb0VyTUdDa0lnPT0ifSx7IklkIjoiMiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCVitXRVhGd0p3Nk9ZTHpoZFVSZmdXTUlZYW43UERIUituN0t3NzRNN0NoN3NRVElpblNxR2xPYzZYSEZCOTNyY3NlMzE0QThQcmtVcXRxL1hEZGZ3YVYrUUFSL1VERU9KcE5ORXl0TFdvYnRnZnVQVHE5a0F6UTZOL3dsV1RTNXE4YTVseUNKR0VORlV4TzM1UkdHMGZhOXQrNkl5V3VJY1BsTHFoUmdHZC9wRDNGbmFUdGxqeDgvQjdvVEJIR2JpaUtJVWN6bithTzR1dVQreGJXUjNKUlJCcWZQWTRTamgwK0JhZytZMERqSVRhL09NdnZPOFRueVU3aW9oRGFldHFwb2dxV1V1aDFtK3JydVNSc1Q3QnVPWXhvbGdHb0ZtZzlYa055bU9RRmxpZFV5bk1TVTYrZjc4OXgrbzVXeDFEcjlEWnlRdHYyQTdXVjE4NHBLY3ZRYWtjV21kNjRDNzlSbjd6eDlrMS9sS1dvV3pTNlV6MkVrNDdMWUtYTjRlYWFIMXFXUEVwdldLaThBZFUxbDN6Zz09In0seyJJZCI6IjMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmhwNFNkWkRMRmdNTEdkcVpTWDZscXFhNmJXK3BqelNuQ3dqeVFIUjZUaEpVcHk3VFRGWG9rMmdkVkYwMk9TekQ4M1NEV1pQRXRsQW1ERUhQTmsvYTQvdXkydi9Oa1REcml2U2NMa1FLN2JJWFFCOGlOT3dhNGIrbW9iekpTRnVHUlhNd1dnUUhjU2VrcjNydFlzeHh5ZFR3M00wYmMxZlJYcDg4UmRtUVNsSlE1RG8xQTZGcm1KRENiNWxDeHpsVnp5SXVNM0lNNWJkbkFCbW56cjlzeG1PL3lxZmZEZWxRUisxV2FvbmwyemFibkpwck45SFFyZnZ4cWJndG5QRVFObXBWVFVTYklPcFBiZS8yNGdmczJlblkzTlJxTEFlUDVBazFtWGZMYWN6NzV1a09aamFqVDRrcXpBSUpaMWo3bDVhblRqeWVISTdIbVU3N28rdWo4cFJiMVVyNW9QM1BvWi9Fem1QUWN0dmlqUklNT3B1ZWx2cy9nbzNEUi9NTllVVlhBaUNXK2FRM2lvZmEwYm14bUE9PSJ9LHsiSWQiOiI0IiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJtVmRvOURweStsRGdib1Q3dnd4VzA4aWpJUUFCTjBvSGgzTkI1NWM2Z2hYaFIwd2w0WU1ONi95ZWVaR1FNVE5xTU80MWxLKzhBWVJ2V0tTVnlEcGFkaCtxYXhlL1ArdWlGL1E0UTRWYVdmem16TUh3aFduSnBCb2JGZHlaVnU2Ni9jdDUyQ3VtN1BSVjE1cjhrTGxNeHl5cDRvSTBSWkxybSttOVBwWkorR1RIYXNySEdKTlBKSWVMK2h1dklOVERXZVZ6NnZSZW5kMEZaMy9KTFYvZzdMTDBXRVNiSTVadnVRek5XeCtsV0FiSUZPREJGOWc0NElyek1zclpUY21vSmd6SHg1MTlLbTg4YzZTeHlDOUxYbFJtUUhtTTNqZVNmdUVXek1UNDJKeWRPYmJCNWFySDNZT3VVTjVWL05NenNwS2RYUEU5bi9sYW9PN09tbXVaVTJOK0RveXd4VG9oZVl4bStIV21PZDlyOXk4WitFbnJUWmpTbktDS0xjL1FuRTlYSWFDN2tsbGFLZE1XaVAvekFRPT0ifSx7IklkIjoiNSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCcWRJWi9mSWtiY2pVZW9ZWmZURjV2Z1Zia3RnU0RTMHQ2VmtYcVhrUkw4K25QVis3MDlGS1pYbE9nRTVSbmJNMEhZSm05KzZuOEdSNzhsY1dydCtOYWRwaVhhRG5tbEgyT0xUSUZiS3RjOG9UY0ZDdWZicFlZcGJyM3pZeERTWjNVakxBc0VBQWdjSGlBeld3VWwvazE0a1p6d1ZhRW4ydHNjbzNRYWIra2lEUHJqL25CODFzb09GaWJ4VERyenZ3RFNiM25kdjgzN1A3RFFGY0R2ZTR0dmFwVGcwRXlLU1hwOEI0UURQWEVQZTJ1aEtxeEhqcWk2Q0IrVStCVkV3NHRIaCtETENNYzY4OHc5emNmRzVVVGU1V2hueGFidnhmMEdERWJWTENlSXl3ckxJcitWTEtIVjg2bkF0Yzgzd0NlNk1DVFh2R1RNWW9GZ29GbTRLeG5FV1cydUhwakx0eG9UZ2JDUTdWSGtOeEQvbEZGd05VUGh2dTROZitEVjZ6QkZyOGxXcjYvekRNY1c0S1VYREFNQT09In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ea29c004-113a-573e-9df1-a2320830a08e\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifSx7IklkIjoiMiJ9LHsiSWQiOiIzIn0seyJJZCI6IjUifSx7IklkIjoiMSJ9LHsiSWQiOiI0In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"9c4c543b355dad72\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0JhdGNoaW5nLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f6b88aa9-bb1f-543b-b9c9-e89fa215538b\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestCancelSendReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2/CjT/YAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"07b455aeb804f67d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"47\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e278d62c-cd14-52da-bd17-b41ad5ebb210\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"306eb62d3d1c02c5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"125\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"51a4dca1-dee9-5b6d-9513-be97c6168ba7\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"400dd39d72ba4bf7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"476\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljQ2FuY2VsU2VuZFJlY2VpdmUtdG9wLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8bb201ab-821a-50fc-960a-639d9ae59036\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7bb560886cc0cf97\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"95\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0NhbmNlbFNlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3a32002f-442c-5f6f-9c42-62195cd3ffa5\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestDoubleAck.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3EAPpD7QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8bcab989f3349af6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"742ecf0c-b71e-5e03-a774-ad3aae1a3d8d\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"d821be3ad4362c8a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"88\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"73c6d5eb-8164-5c7b-8f14-b7dd9860eff5\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"79b6967263b08722\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"460\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljRG91YmxlQWNrLXRvcC0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNEb3VibGVBY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"66694f97-8c39-522e-8acf-2da1953d11a0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"18ba52381edc1de5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"128\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IjAifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljRG91YmxlQWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d40ccdf4-a23d-53e9-bd5c-afc2bb392067\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNZXNzYWdlSWQiOiJhZmExMmIxNy1lZTVlLTQ0YWMtOTJiNy05NzFiYjZkODIxY2UifV19\"\n      }\n    },\n    {\n      \"ID\": \"25f39d432643c5e9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"128\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IjEifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljRG91YmxlQWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e08b286f-1520-5e29-9ac0-4a590c24bda7\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNZXNzYWdlSWQiOiJjNjhlMTQxZC05MGZjLTQ3YzEtOTY2Ni03ZTBjZTUyZWMzZjYifV19\"\n      }\n    },\n    {\n      \"ID\": \"7440a2fd83a76fc5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"128\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IjIifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljRG91YmxlQWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2e9ea19e-4b85-5b02-bde2-c3a85281488c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiYzgxZTcyOGQ5ZDRjMmY2MzZmMDY3Zjg5Y2MxNDg2MmMiLCJNZXNzYWdlSWQiOiIxODdkNjEwNy04YmUwLTQ2ZWMtYjM1YS1hMmVjNTJjZjc1NWMifV19\"\n      }\n    },\n    {\n      \"ID\": \"e8ce498efa8cb48f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1424\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9d43ae18-251b-5a54-b8c7-cc2e3c1fb9da\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3NjkwNyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc2Njg4In0sIkJvZHkiOiIwIiwiTUQ1T2ZCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNZXNzYWdlSWQiOiJhZmExMmIxNy1lZTVlLTQ0YWMtOTJiNy05NzFiYjZkODIxY2UiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmhQbzNCajB5bUVBaUFUdzVPOThoNDBtVWh5TmNZMFBiS2sxN2ZnS215eG9BRCtCYkY0ZmlQOU84K2JuUStqVWVzSWxTeFJaajlhVVJ5QWJDM2FJbktNWkMrUnhib2Z0cFlHeEZOM05TTERlaU1zMW5MS1hHVmlXRW5yK2FxSjU5NGRmeW05cE1KV1l6cE9vY3hyZ2tiZ2lGUmFqM01lWmVVckJXc0RITGdOTVVLUWJoYmprUVdPbUY0NmovNFNJRTA1TjU4QmJpMDYvb1FUbkI5a0hIY2VpZ3NpMFlWVkFrUFNqai9ld1ZlOFQyczUxTEhhZkNEZnVjVGc1My9PS2pDa2hBRzJMVXNQQzZKbjhubHlqQllqN3E4QWVmSTFEaHBGNW5VUzhRNE5rcUJhVnV1anVubGJKTjNFcU9YY25mTnRtSzJwc0F0NTB4L05qTmxzTURuMklFQUVORUJiQm5nTldZN0RnZlNYWTIrK0tBRXJCNnF1TUVNYWZTNzdTdG5Cb0J2ZlQ5ZDI4ZnpiNHptZjJ3MUE9PSJ9LHsiQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3NjkwNyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc2ODM4In0sIkJvZHkiOiIyIiwiTUQ1T2ZCb2R5IjoiYzgxZTcyOGQ5ZDRjMmY2MzZmMDY3Zjg5Y2MxNDg2MmMiLCJNZXNzYWdlSWQiOiIxODdkNjEwNy04YmUwLTQ2ZWMtYjM1YS1hMmVjNTJjZjc1NWMiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjRwdExlVE1XNkc1a3FDM0xmMmFlbUJjTlRWQVBXcWVSQ0Q3c3RFWFcxSU1VSkhwYlY3QVdmWHBXOWVqQUI2a21pWmZiSHIyRkZsbHRhL3ptRldzQ0NsMWJraGE4UWsxNmE5SWdQbGF1NmZnZEZ3TldodnRSdGs2SGxhZ2RLcWNVWjRuSWkyVHoyUk9MdHFjN01kTGhqdUgzaEY4c2oxNDQrVkFGeTVzSVpTNzZzZjE0L1VuYWRVTklqQ3V0TG9oNUVaVTV6a2xkVEN6SFVvcytueE1ZZjVrbkVlNVRYOFcrZVl4ZmMrRjUyUU9VdFJOZE9PUXBBT25SNE5NL0dFSk1JYXY1aHUzbjl6cCsrVVc1NjkvVDdIUTJ5S2hDQlVoazdWMG9kOElzSlVnVUVDclFGRDhWdmJBMVN5OUNEaEtjUC9uZkVpZFl1d3A4ZTNLQS9Hc1pJTXlUZm5RZXZ5R0hnSERpRXdkSmlmajBSdzZvemQxVFZkbkprSzBjQUtPNFg0N1JnQjJTdm5aVWg5UkVLZFgxblE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"37fafd6845fea120\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MywiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"719\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e97870a3-afc4-532b-bd64-1295b6c0e0a5\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3Njk3MyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc2NzY3In0sIkJvZHkiOiIxIiwiTUQ1T2ZCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNZXNzYWdlSWQiOiJjNjhlMTQxZC05MGZjLTQ3YzEtOTY2Ni03ZTBjZTUyZWMzZjYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlpyaHU1NzJkdDRCWmpKcnVvTE44ckV5dk9BZnlLNCtMZ3d5MnpXNTV2dElta21SRWhFN0Rjb3NxaDJmVGtsemNOOHphSkJUWHVkMXZIdGlMWGVvb2cxTHd4S2JZRVgzVWNERXdrTldUWjIxVlRibGpZWDhxWHVnWmxNVjJ3V3lZR0R3eTdmYjhSN3B5VWFkayt0blFpU0xVVVNWQjhtUlNoa3RvT0V3QzFKRnJxNHpCU2NHeDFmWC9KYXlnRzVNYnIxOGU5aStLaEo2cDdWQ0V2ZndBbmhFQkpnWnpTWHhBbHF3NmVjcGdNUFJjbkx4VUhQU3ZYQTlvaXF5WEgweVhLampVcVRmRzIxM2NxbkNXMjBEajRXM3ptUEp6ZVVtaEM5cTF4MjluNnd3a3JFMXVaYVlzaDJYM0lWV09waDY3SGp0YmZWdGN2dldDNkdkNzlsRE1iSExMeG5hZHAwN1JPY09TWDBZLzE4eCs3V1pvSEtIU0RjQnVNa282ZGw5NVlhK3p2Y1Qyc3lKZHNnNCtuWkpiNkE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"7949bb19367564d3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"983\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmhQbzNCajB5bUVBaUFUdzVPOThoNDBtVWh5TmNZMFBiS2sxN2ZnS215eG9BRCtCYkY0ZmlQOU84K2JuUStqVWVzSWxTeFJaajlhVVJ5QWJDM2FJbktNWkMrUnhib2Z0cFlHeEZOM05TTERlaU1zMW5MS1hHVmlXRW5yK2FxSjU5NGRmeW05cE1KV1l6cE9vY3hyZ2tiZ2lGUmFqM01lWmVVckJXc0RITGdOTVVLUWJoYmprUVdPbUY0NmovNFNJRTA1TjU4QmJpMDYvb1FUbkI5a0hIY2VpZ3NpMFlWVkFrUFNqai9ld1ZlOFQyczUxTEhhZkNEZnVjVGc1My9PS2pDa2hBRzJMVXNQQzZKbjhubHlqQllqN3E4QWVmSTFEaHBGNW5VUzhRNE5rcUJhVnV1anVubGJKTjNFcU9YY25mTnRtSzJwc0F0NTB4L05qTmxzTURuMklFQUVORUJiQm5nTldZN0RnZlNYWTIrK0tBRXJCNnF1TUVNYWZTNzdTdG5Cb0J2ZlQ5ZDI4ZnpiNHptZjJ3MUE9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUI0cHRMZVRNVzZHNWtxQzNMZjJhZW1CY05UVkFQV3FlUkNEN3N0RVhXMUlNVUpIcGJWN0FXZlhwVzllakFCNmttaVpmYkhyMkZGbGx0YS96bUZXc0NDbDFia2hhOFFrMTZhOUlnUGxhdTZmZ2RGd05XaHZ0UnRrNkhsYWdkS3FjVVo0bklpMlR6MlJPTHRxYzdNZExoanVIM2hGOHNqMTQ0K1ZBRnk1c0laUzc2c2YxNC9VbmFkVU5JakN1dExvaDVFWlU1emtsZFRDekhVb3MrbnhNWWY1a25FZTVUWDhXK2VZeGZjK0Y1MlFPVXRSTmRPT1FwQU9uUjROTS9HRUpNSWF2NWh1M245enArK1VXNTY5L1Q3SFEyeUtoQ0JVaGs3VjBvZDhJc0pVZ1VFQ3JRRkQ4VnZiQTFTeTlDRGhLY1AvbmZFaWRZdXdwOGUzS0EvR3NaSU15VGZuUWV2eUdIZ0hEaUV3ZEppZmowUnc2b3pkMVRWZG5Ka0swY0FLTzRYNDdSZ0IyU3ZuWlVoOVJFS2RYMW5RPT0ifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljRG91YmxlQWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"574c31ae-f63a-5c6b-a2bf-5398ef3f2fe5\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifSx7IklkIjoiMSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"e43771457acaaf88\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"983\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmhQbzNCajB5bUVBaUFUdzVPOThoNDBtVWh5TmNZMFBiS2sxN2ZnS215eG9BRCtCYkY0ZmlQOU84K2JuUStqVWVzSWxTeFJaajlhVVJ5QWJDM2FJbktNWkMrUnhib2Z0cFlHeEZOM05TTERlaU1zMW5MS1hHVmlXRW5yK2FxSjU5NGRmeW05cE1KV1l6cE9vY3hyZ2tiZ2lGUmFqM01lWmVVckJXc0RITGdOTVVLUWJoYmprUVdPbUY0NmovNFNJRTA1TjU4QmJpMDYvb1FUbkI5a0hIY2VpZ3NpMFlWVkFrUFNqai9ld1ZlOFQyczUxTEhhZkNEZnVjVGc1My9PS2pDa2hBRzJMVXNQQzZKbjhubHlqQllqN3E4QWVmSTFEaHBGNW5VUzhRNE5rcUJhVnV1anVubGJKTjNFcU9YY25mTnRtSzJwc0F0NTB4L05qTmxzTURuMklFQUVORUJiQm5nTldZN0RnZlNYWTIrK0tBRXJCNnF1TUVNYWZTNzdTdG5Cb0J2ZlQ5ZDI4ZnpiNHptZjJ3MUE9PSJ9LHsiSWQiOiIxIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUI0cHRMZVRNVzZHNWtxQzNMZjJhZW1CY05UVkFQV3FlUkNEN3N0RVhXMUlNVUpIcGJWN0FXZlhwVzllakFCNmttaVpmYkhyMkZGbGx0YS96bUZXc0NDbDFia2hhOFFrMTZhOUlnUGxhdTZmZ2RGd05XaHZ0UnRrNkhsYWdkS3FjVVo0bklpMlR6MlJPTHRxYzdNZExoanVIM2hGOHNqMTQ0K1ZBRnk1c0laUzc2c2YxNC9VbmFkVU5JakN1dExvaDVFWlU1emtsZFRDekhVb3MrbnhNWWY1a25FZTVUWDhXK2VZeGZjK0Y1MlFPVXRSTmRPT1FwQU9uUjROTS9HRUpNSWF2NWh1M245enArK1VXNTY5L1Q3SFEyeUtoQ0JVaGs3VjBvZDhJc0pVZ1VFQ3JRRkQ4VnZiQTFTeTlDRGhLY1AvbmZFaWRZdXdwOGUzS0EvR3NaSU15VGZuUWV2eUdIZ0hEaUV3ZEppZmowUnc2b3pkMVRWZG5Ka0swY0FLTzRYNDdSZ0IyU3ZuWlVoOVJFS2RYMW5RPT0ifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljRG91YmxlQWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"df130f61-4f1a-50c5-82ee-6d57561f834b\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifSx7IklkIjoiMSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"d972dff0d01b89f8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1491\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmhQbzNCajB5bUVBaUFUdzVPOThoNDBtVWh5TmNZMFBiS2sxN2ZnS215eG9BRCtCYkY0ZmlQOU84K2JuUStqVWVzSWxTeFJaajlhVVJ5QWJDM2FJbktNWkMrUnhib2Z0cFlHeEZOM05TTERlaU1zMW5MS1hHVmlXRW5yK2FxSjU5NGRmeW05cE1KV1l6cE9vY3hyZ2tiZ2lGUmFqM01lWmVVckJXc0RITGdOTVVLUWJoYmprUVdPbUY0NmovNFNJRTA1TjU4QmJpMDYvb1FUbkI5a0hIY2VpZ3NpMFlWVkFrUFNqai9ld1ZlOFQyczUxTEhhZkNEZnVjVGc1My9PS2pDa2hBRzJMVXNQQzZKbjhubHlqQllqN3E4QWVmSTFEaHBGNW5VUzhRNE5rcUJhVnV1anVubGJKTjNFcU9YY25mTnRtSzJwc0F0NTB4L05qTmxzTURuMklFQUVORUJiQm5nTldZN0RnZlNYWTIrK0tBRXJCNnF1TUVNYWZTNzdTdG5Cb0J2ZlQ5ZDI4ZnpiNHptZjJ3MUE9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfSx7IklkIjoiMSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNHB0TGVUTVc2RzVrcUMzTGYyYWVtQmNOVFZBUFdxZVJDRDdzdEVYVzFJTVVKSHBiVjdBV2ZYcFc5ZWpBQjZrbWlaZmJIcjJGRmxsdGEvem1GV3NDQ2wxYmtoYThRazE2YTlJZ1BsYXU2ZmdkRndOV2h2dFJ0azZIbGFnZEtxY1VaNG5JaTJUejJST0x0cWM3TWRMaGp1SDNoRjhzajE0NCtWQUZ5NXNJWlM3NnNmMTQvVW5hZFVOSWpDdXRMb2g1RVpVNXprbGRUQ3pIVW9zK254TVlmNWtuRWU1VFg4VytlWXhmYytGNTJRT1V0Uk5kT09RcEFPblI0Tk0vR0VKTUlhdjVodTNuOXpwKytVVzU2OS9UN0hRMnlLaENCVWhrN1Ywb2Q4SXNKVWdVRUNyUUZEOFZ2YkExU3k5Q0RoS2NQL25mRWlkWXV3cDhlM0tBL0dzWklNeVRmblFldnlHSGdIRGlFd2RKaWZqMFJ3Nm96ZDFUVmRuSmtLMGNBS080WDQ3UmdCMlN2blpVaDlSRUtkWDFuUT09IiwiVmlzaWJpbGl0eVRpbWVvdXQiOjF9LHsiSWQiOiIyIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJacmh1NTcyZHQ0QlpqSnJ1b0xOOHJFeXZPQWZ5SzQrTGd3eTJ6VzU1dnRJbWttUkVoRTdEY29zcWgyZlRrbHpjTjh6YUpCVFh1ZDF2SHRpTFhlb29nMUx3eEtiWUVYM1VjREV3a05XVFoyMVZUYmxqWVg4cVh1Z1psTVYyd1d5WUdEd3k3ZmI4UjdweVVhZGsrdG5RaVNMVVVTVkI4bVJTaGt0b09Fd0MxSkZycTR6QlNjR3gxZlgvSmF5Z0c1TWJyMThlOWkrS2hKNnA3VkNFdmZ3QW5oRUJKZ1p6U1h4QWxxdzZlY3BnTVBSY25MeFVIUFN2WEE5b2lxeVhIMHlYS2pqVXFUZkcyMTNjcW5DVzIwRGo0VzN6bVBKemVVbWhDOXExeDI5bjZ3d2tyRTF1WmFZc2gyWDNJVldPcGg2N0hqdGJmVnRjdnZXQzZHZDc5bERNYkhMTHhuYWRwMDdST2NPU1gwWS8xOHgrN1dab0hLSFNEY0J1TWtvNmRsOTVZYSt6dmNUMnN5SmRzZzQrblpKYjZBPT0iLCJWaXNpYmlsaXR5VGltZW91dCI6MX1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"332\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ff1ebf64-161f-5369-9e5d-dd520f1ae0e7\"\n          ]\n        },\n        \"Body\": \"eyJGYWlsZWQiOlt7IkNvZGUiOiJSZWNlaXB0SGFuZGxlSXNJbnZhbGlkIiwiSWQiOiIwIiwiTWVzc2FnZSI6Ik1lc3NhZ2UgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgdmlzaWJpbGl0eSB0aW1lb3V0IGNoYW5nZSIsIlNlbmRlckZhdWx0Ijp0cnVlfSx7IkNvZGUiOiJSZWNlaXB0SGFuZGxlSXNJbnZhbGlkIiwiSWQiOiIxIiwiTWVzc2FnZSI6Ik1lc3NhZ2UgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgdmlzaWJpbGl0eSB0aW1lb3V0IGNoYW5nZSIsIlNlbmRlckZhdWx0Ijp0cnVlfV0sIlN1Y2Nlc3NmdWwiOlt7IklkIjoiMiJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"719b194f72da47c2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d67dd75b-ad42-5cec-a6ac-b56db447bf62\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"f9f70ecfd7c622e0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9bed7c2f-2bab-5a44-9247-1e1932aef9ca\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"bbcd3fc6e48d3df6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b5767ae9-4651-51df-9e89-18df5f54e251\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0552fe2535455d6c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"719\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1634f421-0194-52c7-8686-96171892e149\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3Njk3MyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMiIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc2NzY3In0sIkJvZHkiOiIxIiwiTUQ1T2ZCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNZXNzYWdlSWQiOiJjNjhlMTQxZC05MGZjLTQ3YzEtOTY2Ni03ZTBjZTUyZWMzZjYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQk1GblVaYStzRUxuYmlqUThzYVFlZW5jY1dpMk5yb0szdEhwQkQ3MS9scWlsYlBDNCtCb0pReXZXd3VweVh1UHIyZTFQOTUrMElXOXVZVHBMb241TkpVVGYxVUduUGNtdThrZ3ZoVmJvNEQvays4V1VNdllZeHYzMTZQN2J6MEw3QytxeVVQTXUwenV3RlpZalpoaUlSME5pZlphTnJERHIzUU9xWWxCNENDVWh6ZHRuRVdpcWFCemJXREpEeHRZWi9oTEZVNlV3eERIMUQxTjdoMEN0WGZBSG9yUEUyMzJwc0RaYkQrVXl3aldGdVBGNXJad0NMZTRIUjVIYURMOWNjdGxBZUJGR21zV2w4akNkSk9MbzAxZGV2MUZVMlZ6UDlLNmJDUnlrWVdDT1NHSkNpYWJVV0ljNWdzV3dPRnNKOUl3M2RGcmFvWDNHMEp4bTJzcU5tOXQ5K0pNNTZ4d01aT2NwbFNqUDZRWmZkeDdxWHlXUVJhWFNmSlNFUlp3K09GbGg4eW5IMlgzeVd1WHFMVXk1SUE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"0a3bd8175317d1c0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0RvdWJsZUFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bd76f27c-3300-5fe3-96fd-904a2a061c6d\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestErrorOnReceiveFromClosedSubscription.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2+JCAd6wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"19a58cb5326ec0e5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"66\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"36701d20-5570-5e02-94f2-7f164d8ea1e5\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"db543a68d6cef056\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"144\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"115\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"67b899c2-beef-536f-bcbc-fbf4a6111c88\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"108127e82cfc88f7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"514\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljRXJyb3JPblJlY2VpdmVGcm9tQ2xvc2VkU3Vic2NyaXB0aW9uLXRvcC0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNFcnJvck9uUmVjZWl2ZUZyb21DbG9zZWRTdWJzY3JpcHRpb24tdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"be2107d3-17bc-593b-a816-65e50f4316dc\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"4d0b4a31b97bdb0d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0Vycm9yT25SZWNlaXZlRnJvbUNsb3NlZFN1YnNjcmlwdGlvbi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0b4114f8-8c11-5c47-9d90-76ce94ee83a0\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestErrorOnSendToClosedTopic.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2+ARdROQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3797812a31b45218\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"54\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY0Vycm9yT25TZW5kVG9DbG9zZWRUb3BpYy10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"89302469-4450-572f-9929-465f5caef537\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0Vycm9yT25TZW5kVG9DbG9zZWRUb3BpYy10b3AtMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"d196e9e4c422c3c9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0Vycm9yT25TZW5kVG9DbG9zZWRUb3BpYy10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"103\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2146c1e4-3ee0-5f9c-81ac-a3d2261e1d84\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY0Vycm9yT25TZW5kVG9DbG9zZWRUb3BpYy10b3AtMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"526a8f9477b3d7d0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"490\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljRXJyb3JPblNlbmRUb0Nsb3NlZFRvcGljLXRvcC0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNFcnJvck9uU2VuZFRvQ2xvc2VkVG9waWMtdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5539d012-9ea6-5a3f-9ab2-b22486588827\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ca72e3223eba1bb1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"102\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY0Vycm9yT25TZW5kVG9DbG9zZWRUb3BpYy10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"24b49298-4179-5153-bb81-f0ae5987c34b\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestMetadata.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3GLNwKDwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f03b635edaee429f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"38\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"61a3f915-0a91-5f2e-87eb-9b231397377d\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"4b8e6801ea29e01e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"116\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"87\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e1ffdbfd-3563-5cb5-b828-b9cb2c64f4e6\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY01ldGFkYXRhLXRvcC0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"38274522b8cce29b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"458\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljTWV0YWRhdGEtdG9wLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fb8e4032-6e16-5388-9f19-220477110bdb\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"e05b024d6952a6e7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"1610\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"25a0fa4e-fa30-5fcd-99fa-9878e337e79e\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiZjNmYmZkZTFlODI1MjRkZWMwOGU0YjVmNjYwYTEwNmMiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI0MjMwMjYwMC04ZGY4LTQ5ZDktOTU1My05ZTkyNGNiYzQ5ZmYifV19\"\n      }\n    },\n    {\n      \"ID\": \"7a6adbcf2ff2d232\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2262\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a42d394d-0443-53b4-9234-5b7b1d440be7\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3OTMyMiIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc5MjQ3In0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTUQ1T2ZNZXNzYWdlQXR0cmlidXRlcyI6ImYzZmJmZGUxZTgyNTI0ZGVjMDhlNGI1ZjY2MGExMDZjIiwiTWVzc2FnZUF0dHJpYnV0ZXMiOnsiMTIzNDUiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEyMzQ1In0sIl9fMHgwX19fXzB4MV9fX18weDJfX19fMHgzX19fXzB4NF9fX18weDVfX19fMHg2X19fXzB4N19fX18weDhfX19fMHg5X19fXzB4YV9fX18weGJfX19fMHhjX19fXzB4ZF9fX18weGVfX19fMHhmX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IiUwMCUwMSUwMiUwMyUwNCUwNSUwNiUwNyUwOCUwOSUwQSUwQiUwQyUwRCUwRSUwRiJ9LCJfXzB4MTBfX19fMHgxMV9fX18weDEyX19fXzB4MTNfX19fMHgxNF9fX18weDE1X19fXzB4MTZfX19fMHgxN19fX18weDE4X19fXzB4MTlfX19fMHgxYV9fX18weDFiX19fXzB4MWNfX19fMHgxZF9fX18weDFlX19fXzB4MWZfXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiJTEwJTExJTEyJTEzJTE0JTE1JTE2JTE3JTE4JTE5JTFBJTFCJTFDJTFEJTFFJTFGIn0sIl9fMHgyMF9fX18weDIxX19fXzB4MjJfX19fMHgyM19fX18weDI0X19fXzB4MjVfX19fMHgyNl9fX18weDI3X19fXzB4MjhfX19fMHgyOV9fX18weDJhX19fXzB4MmJfX19fMHgyY19fLS5fXzB4MmZfXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiJTIwJTIxJTIyJTIzJCUyNSYlMjclMjglMjklMkErJTJDLS4lMkYifSwiX18weDJlX19fXzB4MmVfX19fMHgyZl9fZm9vX18weDJmX18uX18weDJlX19fXzB4MmZfX2Jhcl9fMHgyZl9fLl9fMHgyZV9fX18weDJmX18uX18weDJlX19fXzB4MmZfX2Jhei5fXzB4MmVfX19fMHgyZl9fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIuLiUyRmZvbyUyRi4uJTJGYmFyJTJGLi4lMkYuLiUyRmJhei4uJTJGIn0sIl9fMHgyZV9fX18weDJlX19fXzB4NWNfX2Zvb19fMHg1Y19fLl9fMHgyZV9fX18weDVjX19iYXJfXzB4NWNfXy5fXzB4MmVfX19fMHg1Y19fLl9fMHgyZV9fX18weDVjX19iYXouX18weDJlX19fXzB4NWNfXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiLi4lNUNmb28lNUMuLiU1Q2JhciU1Qy4uJTVDLi4lNUNiYXouLiU1QyJ9LCJfXzB4MmVfX19fMHgyZV9fX18weDVjX19mb29fXzB4NWNfX19fMHg1Y19fYmFyX18weDVjX19fXzB4NWNfX19fMHg1Y19fYmF6Ijp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIuLiU1Q2ZvbyU1QyU1Q2JhciU1QyU1QyU1Q2JheiJ9LCJfXzB4M2FfX19fMHgzYl9fX18weDNjX19fXzB4M2RfX19fMHgzZV9fX18weDNmX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjolM0IlM0M9JTNFJTNGIn0sIl9fMHg0MF9fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiJAIn0sIl9fMHg1Yl9fX18weDVjX19fXzB4NWRfX19fMHg1ZV9fXyI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiJTVCJTVDJTVEJTVFXyJ9fSwiTWVzc2FnZUlkIjoiNDIzMDI2MDAtOGRmOC00OWQ5LTk1NTMtOWU5MjRjYmM0OWZmIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJzOEw1UG51UWZyUGErNkVoZ2l1d0JscDdFQTIwUFRud0w2Skwyc0dJQ3lZVVJZRW1EdUZ1RUVMOTZ6am9RSm13SkRZdEI5WUorZTA2Zm9wSVMzNVF4MnR6RWE5OWhUOHBBUGZCaDg5VHRwVFRiNzQveXh0d3J0aHVObDdYRENremdQREhhcklPY1RRcndaVXZsME9JRDJWYndpWlMxVDR3R0xRcnhaMnBqdGpkWFNrbnpLLy9DSDZjRkRPdy9HZDExWmFOdjcwaTNRc1J4M2VGK2R2cHgvRWYzc0tVSEI5SjhFditCQ2JNY29VaFNiR2VqWFB3b2lycm52cDhLL0lvTjVtK3RwZG9RcUtlaDZ4b20yME43WGkxZ3NDOEVOcEEweDE3Rm9xSERjUFduYlhzWnM1UUQwRkRROEMvNHFuNWprMlAvZnZrbnR2WUZacE1tZDFXeDlNV3piOVBwcTZqNFEwazdqaFZKclRWdVRzQktZWXhxMnk1TDJWam9uaUYwd2xEZ1hTSk1IZFJuZURmbXJUNHZ3PT0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"a8418e3f676ec05a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"849\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"aedfdafe-02f4-5441-9b17-b8c81bf3ec12\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiZGU4YmE3MGUyOTA3NjljYTE4NTQzZGE5MjQwZGUwMjUiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiJmMTRmNzg1YS0wNzJlLTQ5OTYtODI1OC1mMDg1OWNkMTAwODgifV19\"\n      }\n    },\n    {\n      \"ID\": \"11e1451fceb755c2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"540\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnM4TDVQbnVRZnJQYSs2RWhnaXV3QmxwN0VBMjBQVG53TDZKTDJzR0lDeVlVUllFbUR1RnVFRUw5Nnpqb1FKbXdKRFl0QjlZSitlMDZmb3BJUzM1UXgydHpFYTk5aFQ4cEFQZkJoODlUdHBUVGI3NC95eHR3cnRodU5sN1hEQ2t6Z1BESGFySU9jVFFyd1pVdmwwT0lEMlZid2laUzFUNHdHTFFyeFoycGp0amRYU2tueksvL0NINmNGRE93L0dkMTFaYU52NzBpM1FzUngzZUYrZHZweC9FZjNzS1VIQjlKOEV2K0JDYk1jb1VoU2JHZWpYUHdvaXJybnZwOEsvSW9ONW0rdHBkb1FxS2VoNnhvbTIwTjdYaTFnc0M4RU5wQTB4MTdGb3FIRGNQV25iWHNaczVRRDBGRFE4Qy80cW41amsyUC9mdmtudHZZRlpwTW1kMVd4OU1XemI5UHBxNmo0UTBrN2poVkpyVFZ1VHNCS1lZeHEyeTVMMlZqb25pRjB3bERnWFNKTUhkUm5lRGZtclQ0dnc9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNNZXRhZGF0YS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fc95c6fa-aea1-5aba-8105-a4ccb7a672e9\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"29a274eb219353bd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"167\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1501\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f10f4a40-a451-5554-8b6e-2876bd568d07\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3OTUzNyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc5MzkxIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTUQ1T2ZNZXNzYWdlQXR0cmlidXRlcyI6ImRlOGJhNzBlMjkwNzY5Y2ExODU0M2RhOTI0MGRlMDI1IiwiTWVzc2FnZUF0dHJpYnV0ZXMiOnsiX18weDI2M2FfX19fMHgyNjNhX19fXzB4MjYzYV9fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIlRTIlOTglQkElRTIlOTglQkElRTIlOTglQkEifSwiX18weDYwX18iOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IiU2MCJ9LCJfXzB4N2JfX19fMHg3Y19fX18weDdkX19fXzB4N2VfX19fMHg3Zl9fIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIlN0IlN0MlN0R+JTdGIn0sImZvb19fMHgyMF9fYmFyX18weDIwX19iYXoiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6ImZvbyUyMGJhciUyMGJheiJ9LCJmb29fXzB4MjJfX2Jhcl9fMHgyMl9fYmF6Ijp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiJmb28lMjJiYXIlMjJiYXoifSwiZm9vX18weDJmX19fXzB4MmZfX2Jhcl9fMHgyZl9fX18weDJmX19fXzB4MmZfX2JheiI6eyJEYXRhVHlwZSI6IlN0cmluZyIsIlN0cmluZ1ZhbHVlIjoiZm9vJTJGJTJGYmFyJTJGJTJGJTJGYmF6In0sImZvb19fMHgyZl9fYmFyX18weDJmX19iYXoiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6ImZvbyUyRmJhciUyRmJheiJ9LCJmb29fXzB4NWNfX2Jhcl9fMHg1Y19fYmF6Ijp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiJmb28lNUNiYXIlNUNiYXoifX0sIk1lc3NhZ2VJZCI6ImYxNGY3ODVhLTA3MmUtNDk5Ni04MjU4LWYwODU5Y2QxMDA4OCIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCamp0Tzc4ckVZK0JjaCtwUFovZHdTdHo5TzJvbmE0TkgzYkM3Nm5IbGFvRC85UlFiYldaV3pRaXdvNncyUGpPUDZMMVFCYnA3K1V0UHNRZXdBSUc2WWRYS0I2VWhaT3dkRktqOTBlUE4xNWxXQ1RTYnVyRDRydVVJTSs5WWdhM2dRM0ZiZmxUeDdWd2lkV1RtR1g0bVRLdnZiODVwZjlZRUMrM24zb0pkVXpKRUwzQkJuMFZ3UjRLaExhZ2gwcHFmSXB3dnNzdWhhOEw1VWc1ZlJRVmJNbFg0Q0EvaTRGejFsa3JncFBzMFZKYW1YSm9zU0JKRjdXVUoxTjZzaGlRTkdaSnBWVUNoeXdQSW5ReXZLVTljWW9tdm1wRXFEVFNURzFhZzZmYk1tNW9yT3dXeGxrWVpkeEpyYU5HaGNWa09ZZ25nNVJHaC92dXp5VzVMcUVycGZ6N0dON0M2NE0wYXFEQ0FMT3lFRW8rMjFNaDhNYzlZaGp6WHU1cmI2UjRadnJibUZteVlYUTRCTXJCbURGQXc2UT09In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"f627fcc02f09156d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"540\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmpqdE83OHJFWStCY2grcFBaL2R3U3R6OU8yb25hNE5IM2JDNzZuSGxhb0QvOVJRYmJXWld6UWl3bzZ3MlBqT1A2TDFRQmJwNytVdFBzUWV3QUlHNllkWEtCNlVoWk93ZEZLajkwZVBOMTVsV0NUU2J1ckQ0cnVVSU0rOVlnYTNnUTNGYmZsVHg3VndpZFdUbUdYNG1US3Z2Yjg1cGY5WUVDKzNuM29KZFV6SkVMM0JCbjBWd1I0S2hMYWdoMHBxZklwd3Zzc3VoYThMNVVnNWZSUVZiTWxYNENBL2k0RnoxbGtyZ3BQczBWSmFtWEpvc1NCSkY3V1VKMU42c2hpUU5HWkpwVlVDaHl3UEluUXl2S1U5Y1lvbXZtcEVxRFRTVEcxYWc2ZmJNbTVvck93V3hsa1laZHhKcmFOR2hjVmtPWWduZzVSR2gvdnV6eVc1THFFcnBmejdHTjdDNjRNMGFxRENBTE95RUVvKzIxTWg4TWM5WWhqelh1NXJiNlI0WnZyYm1GbXlZWFE0Qk1yQm1ERkF3NlE9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNNZXRhZGF0YS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a413f943-ae86-599b-b6a2-9b75b78181c8\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"8dc4e9b978f006c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY01ldGFkYXRhLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0b4d7951-c187-5c4c-a94e-1b67d8805963\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestNack.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3BLMIycgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4e4be699c479085f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"34\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a34e5f75-414c-5d0f-ad90-3d43584da7e4\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n      }\n    },\n    {\n      \"ID\": \"a4a966577a5d28a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"112\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"83\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bb7e9cf6-7ad7-5f14-8baa-fec063d5b5ff\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY05hY2stdG9wLTEifX0=\"\n      }\n    },\n    {\n      \"ID\": \"cf8d6b62d0ab4908\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"450\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljTmFjay10b3AtMVwiXG5cdFx0fVxuXHRcdF1cblx0XHR9In0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljTmFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d6f8a141-fcbd-5e73-bf44-c377e5bf4498\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ddcdf71b029d93d8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"189\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f85a960a-c9b6-5ea2-91fa-f43cd0b40449\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiOWFhNDY4N2M4Yjc1NjdiYWEzODBkOWYzMDBmZTI4M2EiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNZXNzYWdlSWQiOiIyM2UzNjRiNy03ZTRkLTQ2ZWMtYTVmNy03NjIzMjM3NjViOGYifV19\"\n      }\n    },\n    {\n      \"ID\": \"f2c3a7cdaf8cbd17\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"189\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"58dea096-1423-5b80-9c89-c2a00d21116b\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiMzE0Yzc3YjI0OTg5M2M2YjNjNzY1YTQyY2MwOGIyNDUiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNZXNzYWdlSWQiOiI1YzY5NWE4OC02MDZiLTRlYzgtODNmNy1iZDhkMDMxYzgyMDUifV19\"\n      }\n    },\n    {\n      \"ID\": \"420b99a683e8c47b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"845\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d86f2de7-bbb6-52d3-9c55-4fd1a2b4d838\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3NDM5OCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc0MzI0In0sIkJvZHkiOiIxIiwiTUQ1T2ZCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiMzE0Yzc3YjI0OTg5M2M2YjNjNzY1YTQyY2MwOGIyNDUiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIxIn19LCJNZXNzYWdlSWQiOiI1YzY5NWE4OC02MDZiLTRlYzgtODNmNy1iZDhkMDMxYzgyMDUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjdZOER5L3RhNEdVdm5Zb2RoTVA5WW8zWk5lWk1RRXJVZVMySU5vT2NGN1d0Q0NsN3FWMTlhWjhVTVE0Y0NBTnkrbUFnV1VtN0dZaUIvT3dVVC9pS2pOWVhtS1RkM1JBWURyR2dWRTVtRXhYVGpQZ0YrRTQyMVQrejF5YU1oMG1qQzhJczIrRDZ3TDJWWXFNS0FDSWQrZi9GZmJ0RXJsKzNZU0FqTjVDVUlSd2h6bVRYVE9MeWdPUjNmKyt6dVl2a2g1YjFMY09RSDRNVFZLNzZTb2FTWjVuTVhvRjk2anAvMkUzMlZDQW9kdWg1a3hubzRZdDBzaVNHOERuT2J2SFozd0ozWGlCYnVpRU95WjdjMjZyTW5MejFDUHVaVEVpL1FyVWhaY3JzM0UzSU5uM2tmUkdyWlNFNks0V2pQL1pXVEsyNDV3L2svcVhDS1pFMC95UHQwTDNkWk1wUjl6aUJqM3dQT29aS2V6a1AycFEwNXhJZUdFYy9oRkVEaDZQVlRQamlKRzFZeFlGNFZpOUVJVG1iTWc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"28a8e74424af4972\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"845\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cbacd26c-9b08-5c58-b582-b05a820af6b3\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3NDQ3MSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc0MjQ5In0sIkJvZHkiOiIwIiwiTUQ1T2ZCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiOWFhNDY4N2M4Yjc1NjdiYWEzODBkOWYzMDBmZTI4M2EiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIwIn19LCJNZXNzYWdlSWQiOiIyM2UzNjRiNy03ZTRkLTQ2ZWMtYTVmNy03NjIzMjM3NjViOGYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkNFMUQzQmJTM1BScnpyVXBIQTlOSVhqdFB3dFMxZ0xZdEVwY2RqMENlSU5HY25hQUlESzZuWHh0LzVsQnRSYXF6UEI4bUxhc2hVeTVDMkIyY243WHVLSXFUZXBpQWJTOHZQQWkxUHZqcVdTTGdTTDNzUmVJQWdscGFMcG5hVk5EQnNQUXJHYWdqcThiT0gvRkQycUQzV3lkUGNoazBvTTdUUUozU1p4QUZiSjBTbU9MYkh5ZzBNRjBJKzBoMmQ2cnlsT3EvSDlqeUdkSVJRV0RKSHJuNnZsd2FselZqUVI0eFJEMmhwczJYMk5ySzRCbll2Y3dIbXA0NU92THVWRzJycmJ1RWc1RmE0VVpZOElOTEc5YXBDZklPZ0VremN1eUxUY3NFOE5PTGtRQjJxSFhzZ1J2cm5mRjZzaXd4MlFwODl5Z1J3VDl5ZWwzNjVZbzFiaHhFaE02OURRNjU1aWlUY3NzVEgrQThlMUkxQ29EWk1vNllaNmVHTHQ2bHdmOU12ckFBV3dVQW80ZlVqaFlETkdmUEE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"49c3490582e061fd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"558\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjdZOER5L3RhNEdVdm5Zb2RoTVA5WW8zWk5lWk1RRXJVZVMySU5vT2NGN1d0Q0NsN3FWMTlhWjhVTVE0Y0NBTnkrbUFnV1VtN0dZaUIvT3dVVC9pS2pOWVhtS1RkM1JBWURyR2dWRTVtRXhYVGpQZ0YrRTQyMVQrejF5YU1oMG1qQzhJczIrRDZ3TDJWWXFNS0FDSWQrZi9GZmJ0RXJsKzNZU0FqTjVDVUlSd2h6bVRYVE9MeWdPUjNmKyt6dVl2a2g1YjFMY09RSDRNVFZLNzZTb2FTWjVuTVhvRjk2anAvMkUzMlZDQW9kdWg1a3hubzRZdDBzaVNHOERuT2J2SFozd0ozWGlCYnVpRU95WjdjMjZyTW5MejFDUHVaVEVpL1FyVWhaY3JzM0UzSU5uM2tmUkdyWlNFNks0V2pQL1pXVEsyNDV3L2svcVhDS1pFMC95UHQwTDNkWk1wUjl6aUJqM3dQT29aS2V6a1AycFEwNXhJZUdFYy9oRkVEaDZQVlRQamlKRzFZeFlGNFZpOUVJVG1iTWc9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljTmFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6a389d6c-c625-541f-9555-ff5adf272ef4\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"8fca9479fa510ce6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"83bd2da2-2a70-5e1d-95bd-4f94337274f6\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"6c0be236e3b84782\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"558\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ChangeMessageVisibilityBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkNFMUQzQmJTM1BScnpyVXBIQTlOSVhqdFB3dFMxZ0xZdEVwY2RqMENlSU5HY25hQUlESzZuWHh0LzVsQnRSYXF6UEI4bUxhc2hVeTVDMkIyY243WHVLSXFUZXBpQWJTOHZQQWkxUHZqcVdTTGdTTDNzUmVJQWdscGFMcG5hVk5EQnNQUXJHYWdqcThiT0gvRkQycUQzV3lkUGNoazBvTTdUUUozU1p4QUZiSjBTbU9MYkh5ZzBNRjBJKzBoMmQ2cnlsT3EvSDlqeUdkSVJRV0RKSHJuNnZsd2FselZqUVI0eFJEMmhwczJYMk5ySzRCbll2Y3dIbXA0NU92THVWRzJycmJ1RWc1RmE0VVpZOElOTEc5YXBDZklPZ0VremN1eUxUY3NFOE5PTGtRQjJxSFhzZ1J2cm5mRjZzaXd4MlFwODl5Z1J3VDl5ZWwzNjVZbzFiaHhFaE02OURRNjU1aWlUY3NzVEgrQThlMUkxQ29EWk1vNllaNmVHTHQ2bHdmOU12ckFBV3dVQW80ZlVqaFlETkdmUEE9PSIsIlZpc2liaWxpdHlUaW1lb3V0IjoxfV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1NRU1RvcGljTmFjay10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2ca1be50-0bea-5e44-8a5d-dc6612e824af\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"1743e54b576ff202\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ccad27dc-aca3-5db1-81d4-45eab5a1d3dc\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"7699fd724353d796\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9f595b1b-424e-51ed-b7d3-392d5b4d0f80\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"a7627a2394cbb779\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"845\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"99f01bfc-2ae5-54a0-b725-79ca33e65acd\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3NDM5OCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMiIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc0MzI0In0sIkJvZHkiOiIxIiwiTUQ1T2ZCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiMzE0Yzc3YjI0OTg5M2M2YjNjNzY1YTQyY2MwOGIyNDUiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIxIn19LCJNZXNzYWdlSWQiOiI1YzY5NWE4OC02MDZiLTRlYzgtODNmNy1iZDhkMDMxYzgyMDUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnNUTGhaRFo1a1FtcHFsWEhNS2dYaDQ2b0syeE12WVFkZ2dKL1VWKzFja2Z2OWZKREF6ZW1zVEpQSXZBejVRSjFFQ1hXUWFRb095eGRFS2RFUWFNaUVvTHFSVUFRd2c3QytqcUdud1hnSit4Qk1GZ1VIN1BGVGkzVmdvdnYrRzFvMk15eTRiTkNSeXBXQXRwWndpUW1FRlFwM2VvYml5R3M3UERhamk0S3I2bk12YUNzZ1ZvaFlSOHdLb2Q0b2NjaDB2QWtTeS96b3Y0KytEQTVJVGViak5QczJUT1cwK2oyUncvc2l2VmgwRlJPUmE0U2dqSXRRODM1UUxyYkhHODY1dFNqdzdFdVhpMFdUQmYwcjJGU3JRRGxnWE53cWIwWE1Oa0JVWEZMakNMdHkrV1dxQmZkUkhlQ3l2WVVIY1ZtSG1aWDl4d0syNUJKODZuTU1nV0RMT2dmMVBzMzBCaWQ4RU04Y2M2Q2o4TjEwMGtEMFZwVFhPZlJ4eEhwWmJQU0JNZ1JzeGxFVmxaQ2R0bklsbVZmUkE9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"9a9d9b9bcaa116a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"845\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"492dc8dd-b9a9-5e2f-8d73-aaeba0aab042\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3NDQ3MSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMiIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0Mjc0MjQ5In0sIkJvZHkiOiIwIiwiTUQ1T2ZCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiOWFhNDY4N2M4Yjc1NjdiYWEzODBkOWYzMDBmZTI4M2EiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIwIn19LCJNZXNzYWdlSWQiOiIyM2UzNjRiNy03ZTRkLTQ2ZWMtYTVmNy03NjIzMjM3NjViOGYiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjRTTWlqNE80NjVDcm9HZXVFdDVqdVpNVmFIUE9FRURCeURhS3F0RXJ2eW53Y3BnQk5kOGV5OU1hY29tSmo4Szljalh1NnVqcVBrRldGcEhKa0d6SG54eXV6N2s1czBYQll1Smo0OXhaZXZkK3NhRHEweG5uVDYxUTJ0d3pZZlU5VGFsZ0hqcTdmMnlQSGRYQVhuUUdvYU9DU3htQTN4WTBUMmtVeUhWTXNJVG1FNDNHVGI3dkRpRWk3aWt5TEVvRkU4ZHVVbStvVUJBK0JxaHJTUW42cGU1V08vekJlM3dUZkkweGdXekROUCtTNXROS2Ivb1hGZ3dhSURvTFgvOVlqUU95N21DNWtKcEt2RjdrZHNZVWFrSHEwc29ZbFgvRlBjN0RkMnNxZEwxWUFFRk5RUWlTQ04zaFNrVEhvRThXMEVLTkpnNVd4NjRrcEdtMWp4TWJyK2w1RFRrUCtXL0xyaFloc2lGbk5IWGpERjYvRHBhOE9GSHFhSUZXYkVKWGFyeklDY21XNXZiKzRISTFib1lWdXc9PSJ9XX0=\"\n      }\n    },\n    {\n      \"ID\": \"27677d85c495b6a7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"536\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQnNUTGhaRFo1a1FtcHFsWEhNS2dYaDQ2b0syeE12WVFkZ2dKL1VWKzFja2Z2OWZKREF6ZW1zVEpQSXZBejVRSjFFQ1hXUWFRb095eGRFS2RFUWFNaUVvTHFSVUFRd2c3QytqcUdud1hnSit4Qk1GZ1VIN1BGVGkzVmdvdnYrRzFvMk15eTRiTkNSeXBXQXRwWndpUW1FRlFwM2VvYml5R3M3UERhamk0S3I2bk12YUNzZ1ZvaFlSOHdLb2Q0b2NjaDB2QWtTeS96b3Y0KytEQTVJVGViak5QczJUT1cwK2oyUncvc2l2VmgwRlJPUmE0U2dqSXRRODM1UUxyYkhHODY1dFNqdzdFdVhpMFdUQmYwcjJGU3JRRGxnWE53cWIwWE1Oa0JVWEZMakNMdHkrV1dxQmZkUkhlQ3l2WVVIY1ZtSG1aWDl4d0syNUJKODZuTU1nV0RMT2dmMVBzMzBCaWQ4RU04Y2M2Q2o4TjEwMGtEMFZwVFhPZlJ4eEhwWmJQU0JNZ1JzeGxFVmxaQ2R0bklsbVZmUkE9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNOYWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3d501264-b0f3-5916-9d10-7052a9f0179b\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"455ef11f8b1106c4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"536\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjRTTWlqNE80NjVDcm9HZXVFdDVqdVpNVmFIUE9FRURCeURhS3F0RXJ2eW53Y3BnQk5kOGV5OU1hY29tSmo4Szljalh1NnVqcVBrRldGcEhKa0d6SG54eXV6N2s1czBYQll1Smo0OXhaZXZkK3NhRHEweG5uVDYxUTJ0d3pZZlU5VGFsZ0hqcTdmMnlQSGRYQVhuUUdvYU9DU3htQTN4WTBUMmtVeUhWTXNJVG1FNDNHVGI3dkRpRWk3aWt5TEVvRkU4ZHVVbStvVUJBK0JxaHJTUW42cGU1V08vekJlM3dUZkkweGdXekROUCtTNXROS2Ivb1hGZ3dhSURvTFgvOVlqUU95N21DNWtKcEt2RjdrZHNZVWFrSHEwc29ZbFgvRlBjN0RkMnNxZEwxWUFFRk5RUWlTQ04zaFNrVEhvRThXMEVLTkpnNVd4NjRrcEdtMWp4TWJyK2w1RFRrUCtXL0xyaFloc2lGbk5IWGpERjYvRHBhOE9GSHFhSUZXYkVKWGFyeklDY21XNXZiKzRISTFib1lWdXc9PSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNOYWNrLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"24ab650a-ac2a-58bb-b3b5-073cb5292636\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"cb6a1b5aaa136ac1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"82\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05hY2stdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"02c2d06e-5658-5f4f-be30-b2584f5b61c2\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestNonExistentSubscriptionSucceedsOnOpenButFailsOnReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg2/M7W25gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"7a266869a7878726\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"165\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vdXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L25vbmV4aXN0ZW50LXN1YnNjcmlwdGlvbiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f1b69d67-48ab-5ebd-a47f-ff5151abd4b0\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestNonExistentTopicSucceedsOnOpenButFailsOnSend.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3GHDYPNgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"8d136fd05dde4141\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"117\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IiJ9XSwiUXVldWVVcmwiOiJodHRwczovL3VzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9ub25leGlzdGVudC1xdWV1ZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:18 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"AWS.SimpleQueueService.NonExistentQueue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"892a955b-89f2-506e-a9a1-f76d90f439a5\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uYXdzLnNxcyNRdWV1ZURvZXNOb3RFeGlzdCIsIm1lc3NhZ2UiOiJUaGUgc3BlY2lmaWVkIHF1ZXVlIGRvZXMgbm90IGV4aXN0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestNonUTF8MessageBody.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3ACNEirQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"17a36399132addfc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7cffc640-67e6-52d9-b89d-a4767ee6b6d5\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"d78eee0b791c1deb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"44178069-ff22-59ff-9818-e25fe6227df3\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"bde40e839a476a70\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"478\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljTm9uVVRGOE1lc3NhZ2VCb2R5LXRvcC0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNOb25VVEY4TWVzc2FnZUJvZHktdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fe48fe3d-329c-5dc6-a79b-9c0b2b9cf9ca\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"07159f8ffdb814e5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"497\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"365423a0-370b-57cb-9074-41962e0b33c7\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiZDk2Mjk2YWM2NzdhOWFjYTA1ZDQ5YWUwOTljNjU2YzAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiMDBhYjg5OTZlODAxMWE3YTE0ZmI2ZmI5YWQ4M2M4MjAiLCJNZXNzYWdlSWQiOiJkZjBjMWJlNS00ZWE2LTQ5MjAtYTJhOS0xZTU3YzQ0YWUxN2MifV19\"\n      }\n    },\n    {\n      \"ID\": \"04c3936af6bda3dd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"177\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1159\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0df4a0b5-96c1-5578-93c9-c2838fc15174\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3Mjc3MyIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjcyNjQxIn0sIkJvZHkiOiJBQUVDQXdRRkJnY0lDUW9MREEwT0R4QVJFaE1VRlJZWEdCa2FHeHdkSGg4Z0lTSWpKQ1VtSnlncEtpc3NMUzR2T2pzOFBUNC9RRnRjWFY1ZllIdDhmWDUvWm05dlhHSmhjbHhpWVhvdUxseG1iMjljTGk1Y1ltRnlYQzR1WEM0dVhHSmhlaTR1WEM0dUwyWnZieTh1TGk5aVlYSXZMaTR2TGk0dlltRjZMaTR2Wm05dkwySmhjaTlpWVhwbWIyOGlZbUZ5SW1KaGVpNHVYR1p2YjF4Y1ltRnlYRnhjWW1GNlptOXZMeTlpWVhJdkx5OWlZWHBtYjI4Z1ltRnlJR0poZWpFeU16UTE0cGk2NHBpNjRwaTZ2Ykk9IiwiTUQ1T2ZCb2R5IjoiMDBhYjg5OTZlODAxMWE3YTE0ZmI2ZmI5YWQ4M2M4MjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiZDk2Mjk2YWM2NzdhOWFjYTA1ZDQ5YWUwOTljNjU2YzAiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJiYXNlNjRlbmNvZGVkIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiJ0cnVlIn19LCJNZXNzYWdlSWQiOiJkZjBjMWJlNS00ZWE2LTQ5MjAtYTJhOS0xZTU3YzQ0YWUxN2MiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmtrSEJrUDB3aUs3d0huT3o0N0VUS0IvWjFhcE9LYlRqVVVKZ1pRaGRsTDNaUlNCYjg1bTF3NTRYWERZd1BEeWRDVXRYSXBuUHJyZHVOYmlZaEtQQXVtTyt2MVFsL3ZQcFliUFZERUhqV0szcXdPL2o5bTJ1aFNGN3E1ODlLenN4Vk5QeUpxQVlzK0ZpRGF1a1F6blUxN3Q1MmVUNVVUYWl6TXFNUlYyVW8rbTBoTjl6YTZ5NTNIT0FQUWQ0Vm51YWw2MXRqK3BmTGlSNGo3VnVYaFJFWHFUeHRlQU9vTW43YmJjTmUxUy9ZRG5GdnNUeEgxZFkzRktoamJTR3hvYngzZUFtYnBTVVQ5SnprQURmTEhCdkVqQ1dqSDZpU3dSb3liVnJwQlpjejFYRW1va01LNzhCeG4yWjNGY2JPczgzWnZ4aVpvVHg4cWxBWVpQc2xuVGUyRkpMQlVZVUc2eVBwWXF6V01NNWg5eC9Vb3I0dmZMeFFFZXYwUzVtVFNKLzZicHg4TFBsR0ZCRWZrYzdvMHJkYVQyYW9MNVVIamF5R0h1VHljT2dPQjg9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4c820f1caf05fc5a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"570\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQmtrSEJrUDB3aUs3d0huT3o0N0VUS0IvWjFhcE9LYlRqVVVKZ1pRaGRsTDNaUlNCYjg1bTF3NTRYWERZd1BEeWRDVXRYSXBuUHJyZHVOYmlZaEtQQXVtTyt2MVFsL3ZQcFliUFZERUhqV0szcXdPL2o5bTJ1aFNGN3E1ODlLenN4Vk5QeUpxQVlzK0ZpRGF1a1F6blUxN3Q1MmVUNVVUYWl6TXFNUlYyVW8rbTBoTjl6YTZ5NTNIT0FQUWQ0Vm51YWw2MXRqK3BmTGlSNGo3VnVYaFJFWHFUeHRlQU9vTW43YmJjTmUxUy9ZRG5GdnNUeEgxZFkzRktoamJTR3hvYngzZUFtYnBTVVQ5SnprQURmTEhCdkVqQ1dqSDZpU3dSb3liVnJwQlpjejFYRW1va01LNzhCeG4yWjNGY2JPczgzWnZ4aVpvVHg4cWxBWVpQc2xuVGUyRkpMQlVZVUc2eVBwWXF6V01NNWg5eC9Vb3I0dmZMeFFFZXYwUzVtVFNKLzZicHg4TFBsR0ZCRWZrYzdvMHJkYVQyYW9MNVVIamF5R0h1VHljT2dPQjg9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4aa043c2-acc2-5a23-ab38-21f4b5c2ee2f\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"f8ca6465114b9e8b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"96\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY05vblVURjhNZXNzYWdlQm9keS10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"31599af9-2c62-5d83-be74-f8cf3562598f\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestSendReceive.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3HLZszuQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f4065286be68aca0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"41\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ea6ea9d0-85d3-585f-9483-cbe69cd4e910\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"a6d9dbcd664c410e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"90\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9b7455d6-7136-5c30-8c8a-37e0683eed7f\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"aae8d89e361562c6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"464\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljU2VuZFJlY2VpdmUtdG9wLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4635f06a-fc91-5f18-a809-925ce599be57\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"faac55fe768d189f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"66af09c5-7c9d-5073-a51d-6bf36595213c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiOWFhNDY4N2M4Yjc1NjdiYWEzODBkOWYzMDBmZTI4M2EiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNZXNzYWdlSWQiOiI1ZDhhNDQ4MC03NGFmLTQ3NmQtOWExZi0zMDhiZjFiYTkyYmUifV19\"\n      }\n    },\n    {\n      \"ID\": \"ca4cfe9bf1bbce73\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"576b12ef-4726-53c3-a51a-70d95e2e428c\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiMzE0Yzc3YjI0OTg5M2M2YjNjNzY1YTQyY2MwOGIyNDUiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNZXNzYWdlSWQiOiJhMWFhNzBlNy1mZjI3LTRmNzAtYTlkNC1iN2U2MmJjZGJjNTkifV19\"\n      }\n    },\n    {\n      \"ID\": \"4329a0c165485f35\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a0104016-a5b8-5c8f-9d7a-2220bcb01dc0\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiYjcyZTE0MGU3MjY5ZWJjZTkxMDdiYWYxZWYyNDBiYWUiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiYzgxZTcyOGQ5ZDRjMmY2MzZmMDY3Zjg5Y2MxNDg2MmMiLCJNZXNzYWdlSWQiOiJjZGJlOWM5NS02NzZkLTQzMGYtOTVjMC1lYTI4MTMxNWEyYzEifV19\"\n      }\n    },\n    {\n      \"ID\": \"0f05c412cb42d1df\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"865\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"49d1696c-d173-5720-8fa6-0b5ac87be66f\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MDQ3NiIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgwNDAzIn0sIkJvZHkiOiIyIiwiTUQ1T2ZCb2R5IjoiYzgxZTcyOGQ5ZDRjMmY2MzZmMDY3Zjg5Y2MxNDg2MmMiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiYjcyZTE0MGU3MjY5ZWJjZTkxMDdiYWYxZWYyNDBiYWUiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIyIn19LCJNZXNzYWdlSWQiOiJjZGJlOWM5NS02NzZkLTQzMGYtOTVjMC1lYTI4MTMxNWEyYzEiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkdCZmhsR2VXNXlqcTc2YjRXUnJTd1lVZlQxZjJmbHhGZVIvMlpGWFdMclRsK0N5UzdZL1hlOXlnc3dubVdGRk8vaUp3MWRHUHFlRFBDc0JKVUh6Rmg0ZHNmanZqb01QeEh2bmdpMFZtL2F4VzZrY252U1E2ZnlCc2FsZVMxUWJPaG9rMVBZNEt6SFd5WjRxd0R4WVZMS3ovR3h0cGp0Sk5iVVc5UktLZEN0UTFiQkw1bCt1NGtRaHhBR3BDMTQ1MTRCZ210bEZmekFERkd1K25YWGlTUmtPVGNVNDBMcEFRd1lWMmZhR1JkUmF1YWtrSzNCS3BuaHVWY1hBdVNHVGVReHRBL01HQmFiRzQ5bmlSSExwdHZlM1k5OXJVU0lTSTBvT014RzRaS1BDa2JYVzZxTTh3MG1vTVliMzdORmUvV1JLYVZxSGNpM0tzdVpEVjYzbzdmVUNwbjEvcGFxdkZhYlcydHFUNVdzUjJzRnhNYUsydXJkYTdmSE8rU2hocytKNTVnVUlLZnpMR0haaHJ1aEtWOXA4T21OMWtxZGRyREhlWW9XckRNTXc9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"9edba1aa220d5c6d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"865\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0667b1eb-f846-5eab-95d5-d3dde14edfe4\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MDU0NCIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgwMjYxIn0sIkJvZHkiOiIwIiwiTUQ1T2ZCb2R5IjoiY2ZjZDIwODQ5NWQ1NjVlZjY2ZTdkZmY5Zjk4NzY0ZGEiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiOWFhNDY4N2M4Yjc1NjdiYWEzODBkOWYzMDBmZTI4M2EiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIwIn19LCJNZXNzYWdlSWQiOiI1ZDhhNDQ4MC03NGFmLTQ3NmQtOWExZi0zMDhiZjFiYTkyYmUiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQm15ckpBMUxvL2RFeTZGdE9nRUYwbjF0cDRVcTlHd3NzMGI1TmhuMkx0eUs2cDNJbzE1M3BLQTdXb0taSENjTVFLUjdDa3VMNmYveGVFbWZhTEdYVWNoRE1YL0pKaW5VSFZOdmNoLzh5SGVvRi9xT2FvaEJWLzQxdmJTbjdNSVZRWmxTdFlvcjlSRFkzcHJJQnhoZ2E2ZDRxZVRXalYzd2F0a2lkZWRyQmdFcEprWDZxcXZmd3d4c3pQeU1DTmZ1Z2lLZjdYcG1yb1NqQXl3UEVUTDcwWWRjUUVBZUJhZmNlNS83TG9SVGNCVlliNXNGemRQc2NZVWxEQy9IZEZwSllUUk9BWWlsY2lvUjM4eVVLYkN4aStLdDFkYVZKTk1PMUxoUEE3NGd6TGI2bXB6dElzVlAxZjBxYVVhemhzOTQ5NGVFWTlPN0dnSko4NnZjODFkNGRTZ1doVkVNbnZOT2lhOThxb0U4OXJCeElYaUNtWWk4cGdCdC9KU3NtKy9kdlRkNGFkT0ZrOHRSaUlFNXc0cDJmM2YwdmVrWWpwb0czdE5rc2RINkFxWGc9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d84e3aa95b17d1b1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkdCZmhsR2VXNXlqcTc2YjRXUnJTd1lVZlQxZjJmbHhGZVIvMlpGWFdMclRsK0N5UzdZL1hlOXlnc3dubVdGRk8vaUp3MWRHUHFlRFBDc0JKVUh6Rmg0ZHNmanZqb01QeEh2bmdpMFZtL2F4VzZrY252U1E2ZnlCc2FsZVMxUWJPaG9rMVBZNEt6SFd5WjRxd0R4WVZMS3ovR3h0cGp0Sk5iVVc5UktLZEN0UTFiQkw1bCt1NGtRaHhBR3BDMTQ1MTRCZ210bEZmekFERkd1K25YWGlTUmtPVGNVNDBMcEFRd1lWMmZhR1JkUmF1YWtrSzNCS3BuaHVWY1hBdVNHVGVReHRBL01HQmFiRzQ5bmlSSExwdHZlM1k5OXJVU0lTSTBvT014RzRaS1BDa2JYVzZxTTh3MG1vTVliMzdORmUvV1JLYVZxSGNpM0tzdVpEVjYzbzdmVUNwbjEvcGFxdkZhYlcydHFUNVdzUjJzRnhNYUsydXJkYTdmSE8rU2hocytKNTVnVUlLZnpMR0haaHJ1aEtWOXA4T21OMWtxZGRyREhlWW9XckRNTXc9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ce5a6421-53bb-5bc1-9ddd-06174ab3da8e\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"d5504c90a3e7900d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"170\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"865\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3cd6f17b-b04a-58d4-a0e8-934da942099b\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI4MDY3OSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjgwMzM1In0sIkJvZHkiOiIxIiwiTUQ1T2ZCb2R5IjoiYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWIiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiMzE0Yzc3YjI0OTg5M2M2YjNjNzY1YTQyY2MwOGIyNDUiLCJNZXNzYWdlQXR0cmlidXRlcyI6eyJhIjp7IkRhdGFUeXBlIjoiU3RyaW5nIiwiU3RyaW5nVmFsdWUiOiIxIn19LCJNZXNzYWdlSWQiOiJhMWFhNzBlNy1mZjI3LTRmNzAtYTlkNC1iN2U2MmJjZGJjNTkiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlh6UDh3ck9LZi80b29QbTBsVGRYV0pPQlV1Rjd4Z1dJMU5vbFBsSzdLaGs1TmhEdzVsc3lFY3ZvbG5wWWw5d3VkQlNPbWZ2NnduUXpmZEorc3JSdzhjRUE2V0k5cVlsY3duTlIzQjV2TmU5WTRZdllMYUJFcHVGYnM5eVZKeHphWXJoaUhXR1RmblJENFhPaURwZGtXQk00Mkg4SFlaMEJ6cktERnRVejVvN1I3dXFMcWpEdi9pQW5PTDMrVjc5TjRuQzd1akUvMlZBS3M2am85ZVB5RkpWaW56aFo2S2ZQZnN4eXgrR2c5QXZxTnFTVTk3R2Mvd3VkNzdoVnJ0WGdJSlZyWFhacGdxMTE5WDZLbXBYWWtPcWt2YlFnOTZ0eW14V1hPaXdJWG1uTzJYcGhRR3lFWlREZWhLbnQ3VG9rN1FUVE8vMURRajlTRXQwMkdWNzgxMkh2MXFpSytKT1NzRTlEMEptK05hRVozR1F2UVVybDZWQnNUZnpXZzRnZksrdWR0RGEvMkVJK0FrZ214elk1dk5XMDdGclJVbzhTNVlIeVdkQW03Z0E9In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"c3e1cb65abc8a36d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQm15ckpBMUxvL2RFeTZGdE9nRUYwbjF0cDRVcTlHd3NzMGI1TmhuMkx0eUs2cDNJbzE1M3BLQTdXb0taSENjTVFLUjdDa3VMNmYveGVFbWZhTEdYVWNoRE1YL0pKaW5VSFZOdmNoLzh5SGVvRi9xT2FvaEJWLzQxdmJTbjdNSVZRWmxTdFlvcjlSRFkzcHJJQnhoZ2E2ZDRxZVRXalYzd2F0a2lkZWRyQmdFcEprWDZxcXZmd3d4c3pQeU1DTmZ1Z2lLZjdYcG1yb1NqQXl3UEVUTDcwWWRjUUVBZUJhZmNlNS83TG9SVGNCVlliNXNGemRQc2NZVWxEQy9IZEZwSllUUk9BWWlsY2lvUjM4eVVLYkN4aStLdDFkYVZKTk1PMUxoUEE3NGd6TGI2bXB6dElzVlAxZjBxYVVhemhzOTQ5NGVFWTlPN0dnSko4NnZjODFkNGRTZ1doVkVNbnZOT2lhOThxb0U4OXJCeElYaUNtWWk4cGdCdC9KU3NtKy9kdlRkNGFkT0ZrOHRSaUlFNXc0cDJmM2YwdmVrWWpwb0czdE5rc2RINkFxWGc9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d1fc1505-afac-5f2f-a2bf-7733b6a4cdff\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"df4455d6d742fcd3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"563\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQlh6UDh3ck9LZi80b29QbTBsVGRYV0pPQlV1Rjd4Z1dJMU5vbFBsSzdLaGs1TmhEdzVsc3lFY3ZvbG5wWWw5d3VkQlNPbWZ2NnduUXpmZEorc3JSdzhjRUE2V0k5cVlsY3duTlIzQjV2TmU5WTRZdllMYUJFcHVGYnM5eVZKeHphWXJoaUhXR1RmblJENFhPaURwZGtXQk00Mkg4SFlaMEJ6cktERnRVejVvN1I3dXFMcWpEdi9pQW5PTDMrVjc5TjRuQzd1akUvMlZBS3M2am85ZVB5RkpWaW56aFo2S2ZQZnN4eXgrR2c5QXZxTnFTVTk3R2Mvd3VkNzdoVnJ0WGdJSlZyWFhacGdxMTE5WDZLbXBYWWtPcWt2YlFnOTZ0eW14V1hPaXdJWG1uTzJYcGhRR3lFWlREZWhLbnQ3VG9rN1FUVE8vMURRajlTRXQwMkdWNzgxMkh2MXFpSytKT1NzRTlEMEptK05hRVozR1F2UVVybDZWQnNUZnpXZzRnZksrdWR0RGEvMkVJK0FrZ214elk1dk5XMDdGclJVbzhTNVlIeVdkQW03Z0E9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"393aa75e-7160-58d7-84c6-c56868683a9a\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"ea5dffc73fc5b6c3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"89\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlLXRvcC0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5f65f14d-35bb-53cf-8060-937b2cb394f6\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestSendReceiveJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3AOfzzUAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4ecd9970fa766a8a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"45\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJTUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a9a1088c-3d90-5f9c-84a3-6aba24916897\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"691529342c58d3e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"94\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"921fc8eb-93c8-5943-9494-aadd8ac99e48\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpTUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"d4c956504ffafab9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"472\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlNRU1RvcGljU2VuZFJlY2VpdmVKU09OLXRvcC0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNTZW5kUmVjZWl2ZUpTT04tdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"aa135d88-1881-58b2-bb67-3fbe01809fb9\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"376fdaf7a3d9c1ee\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"151\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6IntcIkZvb1wiOiBcIkJhclwifSJ9XSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvU1FTVG9waWNTZW5kUmVjZWl2ZUpTT04tdG9wLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"51552e2f-44d1-5fc9-89fd-4c195dd0a8c2\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiMzMzMzk5YmEyYjc2YTE5NjQzMjYwN2YyM2IzZWNiOTUiLCJNZXNzYWdlSWQiOiI3MzliNDc0Yi1lM2JkLTQ4ODgtODE3Ny1lNTA1NmEzNDY2ZGEifV19\"\n      }\n    },\n    {\n      \"ID\": \"e1565b8f7072d13f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"756\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1df2ea43-b2c8-5d95-9edc-8875abc9da9e\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFXVVdFVVNQVUlHQkxPNEdKRCIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTc3MzkzNDI3MzU0OSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzczOTM0MjczNDcxIn0sIkJvZHkiOiJ7XCJGb29cIjogXCJCYXJcIn0iLCJNRDVPZkJvZHkiOiIzMzMzOTliYTJiNzZhMTk2NDMyNjA3ZjIzYjNlY2I5NSIsIk1lc3NhZ2VJZCI6IjczOWI0NzRiLWUzYmQtNDg4OC04MTc3LWU1MDU2YTM0NjZkYSIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCNVZac0w3OERoSTNYMkhSYzJJT2hUa0t0anNNY1BmUEhLUUNvREJUMUZGWE1QaWJOYUhGVGZ4L1lnVjZTTVdFT0s1VW9zSFVXOG52Y3RvSy8rZ3BIWlhPNEtKUDF2a3dxZCtjaGJEcG1wYzhoQVJqSnpUaHJtbVVGQldQaUpaQldHTlN4dUFYcmx6N0oyZU9jYzJPdE1lQ0JQQ2JwMFdzSzZxYk1CKzh3Q0YzSVgvUFRnMDVKc3Y2bVFGR2FLTEtzK0Y3MHlTOThpSGVjb1M0OUEwZDk4eGJPMmNzbXVNTjZ6QUs0U0xlN0lUd0lBVWx1aGFESU1lb1BUR3NlSGJxVzBZRlFMcFVnZkE2Q0dKZW5Lc3JMMmYzbERrckRXRU5laDhML2tDK3labUhHbkg2emZ6RDVCNFNYbU9OTzRLWUVxdVJOdUh1aWgwQTA3cjFoSm5VcFRtZk5nVU0xcUc2b0FURm1qRUk4ZjlXNEJocCtjRFFRYUlmem15bTZENHFBYitrQzFmV1pIaXFPQ1hXcXNzbmNEU3doYzVURWVPK0ZVeE9ETmc4RTlTaz0ifV19\"\n      }\n    },\n    {\n      \"ID\": \"53f077122f7f99fe\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"567\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQjVWWnNMNzhEaEkzWDJIUmMySU9oVGtLdGpzTWNQZlBIS1FDb0RCVDFGRlhNUGliTmFIRlRmeC9ZZ1Y2U01XRU9LNVVvc0hVVzhudmN0b0svK2dwSFpYTzRLSlAxdmt3cWQrY2hiRHBtcGM4aEFSakp6VGhybW1VRkJXUGlKWkJXR05TeHVBWHJsejdKMmVPY2MyT3RNZUNCUENicDBXc0s2cWJNQis4d0NGM0lYL1BUZzA1SnN2Nm1RRkdhS0xLcytGNzB5Uzk4aUhlY29TNDlBMGQ5OHhiTzJjc211TU42ekFLNFNMZTdJVHdJQVVsdWhhRElNZW9QVEdzZUhicVcwWUZRTHBVZ2ZBNkNHSmVuS3NyTDJmM2xEa3JEV0VOZWg4TC9rQyt5Wm1IR25INnpmekQ1QjRTWG1PTk80S1lFcXVSTnVIdWloMEEwN3IxaEpuVXBUbWZOZ1VNMXFHNm9BVEZtakVJOGY5VzRCaHArY0RRUWFJZnpteW02RDRxQWIra0MxZldaSGlxT0NYV3Fzc25jRFN3aGM1VEVlTytGVXhPRE5nOEU5U2s9In1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d0d481e9-4732-51c2-8012-e3df5e3396c9\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"98d5d17309d15f7d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"93\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9TUVNUb3BpY1NlbmRSZWNlaXZlSlNPTi10b3AtMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"40b04a59-aa8f-5902-a17d-286fb38eae09\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestConformanceSQSTopic/TestSendReceiveTwo.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3IOp6lVwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": null\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestFIFO/TestSNSTopic/TestSendReceiveInvalidNoDeduplicationID.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3QNc1tXAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bb2f87fc98498210\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"173\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJkF0dHJpYnV0ZXMuZW50cnkuMS5rZXk9Rmlmb1RvcGljJkF0dHJpYnV0ZXMuZW50cnkuMS52YWx1ZT10cnVlJk5hbWU9VGVzdEZJRk9TTlNUb3BpY19UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9EZWR1cGxpY2F0aW9uSUQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"374\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6a304da2-4b26-5ba1-a790-2f945237936d\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm88L1RvcGljQXJuPgogIDwvQ3JlYXRlVG9waWNSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPjZhMzA0ZGEyLTRiMjYtNWJhMS1hNzkwLTJmOTQ1MjM3OTM2ZDwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9DcmVhdGVUb3BpY1Jlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"2bc777278117b304\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"78\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cefe4576-648a-5cb5-aae9-27407d9b79a6\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC1zdWItMSJ9\"\n      }\n    },\n    {\n      \"ID\": \"935865f5ac06a7de\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"156\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"127\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"debb9070-33c2-5f41-b917-f2462ad34a52\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC1zdWItMSJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"90bbfca81abe4275\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"538\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXN1Yi0xXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NTY3NTI2NjU1NzYvVGVzdEZJRk9TTlNUb3BpY19UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9EZWR1cGxpY2F0aW9uSUQtc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"71530136-846f-5376-acd4-63009d7e3665\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"93f84e4ebd9e9478\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"287\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC1zdWItMSZQcm90b2NvbD1zcXMmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBVGVzdEZJRk9TTlNUb3BpY19UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9EZWR1cGxpY2F0aW9uSUQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"417\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a98a1f94-c43b-57df-8e3c-7da2dd2a3f13\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm86M2JmODZjNjUtMThlMC00MTZlLTg4MWEtYjIzZDRiYzlmNDdiPC9TdWJzY3JpcHRpb25Bcm4+CiAgPC9TdWJzY3JpYmVSZXN1bHQ+CiAgPFJlc3BvbnNlTWV0YWRhdGE+CiAgICA8UmVxdWVzdElkPmE5OGExZjk0LWM0M2ItNTdkZi04ZTNjLTdkYTJkZDJhM2YxMzwvUmVxdWVzdElkPgogIDwvUmVzcG9uc2VNZXRhZGF0YT4KPC9TdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"0164030702e4cad1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"257\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmVG9waWNBcm49YXJuJTNBYXdzJTNBc25zJTNBdXMtZWFzdC0yJTNBNDU2NzUyNjY1NTc2JTNBVGVzdEZJRk9TTlNUb3BpY19UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9EZWR1cGxpY2F0aW9uSUQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"322\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"054be4ad-f7d3-5bdc-8489-869beec17310\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPkludmFsaWRQYXJhbWV0ZXI8L0NvZGU+CiAgICA8TWVzc2FnZT5JbnZhbGlkIHBhcmFtZXRlcjogVGhlIE1lc3NhZ2VHcm91cElkIHBhcmFtZXRlciBpcyByZXF1aXJlZCBmb3IgRklGTyB0b3BpY3M8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPjA1NGJlNGFkLWY3ZDMtNWJkYy04NDg5LTg2OWJlZWMxNzMxMDwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"273e865b7b75d985\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"205\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC10b3AtMS5maWZvJTNBM2JmODZjNjUtMThlMC00MTZlLTg4MWEtYjIzZDRiYzlmNDdiJlZlcnNpb249MjAxMC0wMy0zMQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"060b7a64-2f68-5334-9d28-1852367aabf8\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4wNjBiN2E2NC0yZjY4LTUzMzQtOWQyOC0xODUyMzY3YWFiZjg8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"ef5e26087e34e130\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC1zdWItMSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"90c00d95-a3fb-5703-be6b-6fa3bae9c210\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"7b43d10f4212b4dc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"159\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm8mVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:30 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"32c64fb0-267c-5e93-af05-2d863f6e065f\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4zMmM2NGZiMC0yNjdjLTVlOTMtYWYwNS0yZDg2M2Y2ZTA2NWY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestFIFO/TestSNSTopic/TestSendReceiveInvalidNoMessageGroupID.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3PErSJogAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"62ab47496a25189f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"251\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJkF0dHJpYnV0ZXMuZW50cnkuMS5rZXk9Q29udGVudEJhc2VkRGVkdXBsaWNhdGlvbiZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZBdHRyaWJ1dGVzLmVudHJ5LjIua2V5PUZpZm9Ub3BpYyZBdHRyaWJ1dGVzLmVudHJ5LjIudmFsdWU9dHJ1ZSZOYW1lPVRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"373\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a87ec388-4ebc-543a-9d2d-a1be57b3e308\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbzwvVG9waWNBcm4+CiAgPC9DcmVhdGVUb3BpY1Jlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+YTg3ZWMzODgtNGViYy01NDNhLTlkMmQtYTFiZTU3YjNlMzA4PC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L0NyZWF0ZVRvcGljUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"4d8a8b65b4bf051a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"125\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ef661620-bee1-5f23-a13e-7416a7f1bd3b\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"968ea14c8377c420\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"155\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"92da4b70-4c85-59a2-aef2-294655957bba\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"b6d76b8aa38df819\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"536\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f33ae414-79da-569e-84f2-862260cad486\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"aa29d7a21e806aa7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"285\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXRvcC0xLmZpZm8mVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"416\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9cc1fc62-2eee-5f22-888f-9e5437fed810\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbzpjZjcwYjBkMi02YTNiLTQ2NzQtOGYzZS1kYThjYmU3YzlmZTk8L1N1YnNjcmlwdGlvbkFybj4KICA8L1N1YnNjcmliZVJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+OWNjMWZjNjItMmVlZS01ZjIyLTg4OGYtOWU1NDM3ZmVkODEwPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1N1YnNjcmliZVJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"fd4ff4b5dd0780d9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"566\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjEuQ0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"322\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"380c737e-5c0b-5437-b3d4-1148451b8305\"\n          ]\n        },\n        \"Body\": \"PEVycm9yUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxFcnJvcj4KICAgIDxUeXBlPlNlbmRlcjwvVHlwZT4KICAgIDxDb2RlPkludmFsaWRQYXJhbWV0ZXI8L0NvZGU+CiAgICA8TWVzc2FnZT5JbnZhbGlkIHBhcmFtZXRlcjogVGhlIE1lc3NhZ2VHcm91cElkIHBhcmFtZXRlciBpcyByZXF1aXJlZCBmb3IgRklGTyB0b3BpY3M8L01lc3NhZ2U+CiAgPC9FcnJvcj4KICA8UmVxdWVzdElkPjM4MGM3MzdlLTVjMGItNTQzNy1iM2Q0LTExNDg0NTFiODMwNTwvUmVxdWVzdElkPgo8L0Vycm9yUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"99e11dad00b60804\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"204\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXRvcC0xLmZpZm8lM0FjZjcwYjBkMi02YTNiLTQ2NzQtOGYzZS1kYThjYmU3YzlmZTkmVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b9909bc1-3244-5617-b8d9-f9f72b54f125\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5iOTkwOWJjMS0zMjQ0LTU2MTctYjhkOS1mOWY3MmI1NGYxMjU8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"cf06f696b54e3ba3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"125\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"37a08097-3fdd-5034-99f3-e2a126cdd22c\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"ced84df75c3547ae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"158\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3151992d-c6ef-5886-b657-fb1bdfff1fb4\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD4zMTUxOTkyZC1jNmVmLTU4ODYtYjY1Ny1mYjFiZGZmZjFmYjQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestFIFO/TestSNSTopic/TestSendReceiveValid.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3MJu2g9AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c29c5a489f6e5584\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"233\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPUNyZWF0ZVRvcGljJkF0dHJpYnV0ZXMuZW50cnkuMS5rZXk9Q29udGVudEJhc2VkRGVkdXBsaWNhdGlvbiZBdHRyaWJ1dGVzLmVudHJ5LjEudmFsdWU9dHJ1ZSZBdHRyaWJ1dGVzLmVudHJ5LjIua2V5PUZpZm9Ub3BpYyZBdHRyaWJ1dGVzLmVudHJ5LjIudmFsdWU9dHJ1ZSZOYW1lPVRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"355\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a6ebc907-c772-5ef2-8db6-ab31de7faf3d\"\n          ]\n        },\n        \"Body\": \"PENyZWF0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxDcmVhdGVUb3BpY1Jlc3VsdD4KICAgIDxUb3BpY0Fybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbzwvVG9waWNBcm4+CiAgPC9DcmVhdGVUb3BpY1Jlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+YTZlYmM5MDctYzc3Mi01ZWYyLThkYjYtYWIzMWRlN2ZhZjNkPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L0NyZWF0ZVRvcGljUmVzcG9uc2U+Cg==\"\n      }\n    },\n    {\n      \"ID\": \"01a1c1df7343626d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"59\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZU5hbWUiOiJUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"107\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b2def630-f969-5837-8e1a-9406e064c743\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n      }\n    },\n    {\n      \"ID\": \"84c7d14aaab4ca77\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"137\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"108\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"232b1650-48b1-58b4-873e-746651bc17c0\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjpUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn19\"\n      }\n    },\n    {\n      \"ID\": \"cfc07d69798867f1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"500\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtc3ViLTFcIlxuXHRcdH1cblx0XHRdXG5cdFx0fSJ9LCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"13b215fc-0fde-5155-9816-77ca16d3ae21\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"afc45d9fd8261d06\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"249\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVN1YnNjcmliZSZFbmRwb2ludD1hcm4lM0Fhd3MlM0FzcXMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xJlByb3RvY29sPXNxcyZUb3BpY0Fybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXRvcC0xLmZpZm8mVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"398\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b9b64a97-c278-5b25-a03b-28a1db758aea\"\n          ]\n        },\n        \"Body\": \"PFN1YnNjcmliZVJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8U3Vic2NyaWJlUmVzdWx0PgogICAgPFN1YnNjcmlwdGlvbkFybj5hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbzo4MzkyYmU2Yy0xOTAwLTQ4M2QtOThlNy0yMTc3MWQzYjAzMDI8L1N1YnNjcmlwdGlvbkFybj4KICA8L1N1YnNjcmliZVJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+YjliNjRhOTctYzI3OC01YjI1LWEwM2ItMjhhMWRiNzU4YWVhPC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1N1YnNjcmliZVJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"9645dc43eff2d0a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"539\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVB1Ymxpc2hCYXRjaCZQdWJsaXNoQmF0Y2hSZXF1ZXN0RW50cmllcy5tZW1iZXIuMS5JZD0wJlB1Ymxpc2hCYXRjaFJlcXVlc3RFbnRyaWVzLm1lbWJlci4xLk1lc3NhZ2U9aGVsbG8rd29ybGQmUHVibGlzaEJhdGNoUmVxdWVzdEVudHJpZXMubWVtYmVyLjEuQ0xFQVJFRA==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"479\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5190d403-dc7d-561a-93aa-b635c57077d5\"\n          ]\n        },\n        \"Body\": \"PFB1Ymxpc2hCYXRjaFJlc3BvbnNlIHhtbG5zPSJodHRwOi8vc25zLmFtYXpvbmF3cy5jb20vZG9jLzIwMTAtMDMtMzEvIj4KICA8UHVibGlzaEJhdGNoUmVzdWx0PgogICAgPEZhaWxlZC8+CiAgICA8U3VjY2Vzc2Z1bD4KICAgICAgPG1lbWJlcj4KICAgICAgICA8U2VxdWVuY2VOdW1iZXI+MTAwMDAwMDAwMDAwMDAwMDMwMDA8L1NlcXVlbmNlTnVtYmVyPgogICAgICAgIDxNZXNzYWdlSWQ+MThhNjM3Y2YtZTkxYy01MDhjLWJkOGYtNTVmOWYwMTE5MTQzPC9NZXNzYWdlSWQ+CiAgICAgICAgPElkPjA8L0lkPgogICAgICA8L21lbWJlcj4KICAgIDwvU3VjY2Vzc2Z1bD4KICA8L1B1Ymxpc2hCYXRjaFJlc3VsdD4KICA8UmVzcG9uc2VNZXRhZGF0YT4KICAgIDxSZXF1ZXN0SWQ+NTE5MGQ0MDMtZGM3ZC01NjFhLTkzYWEtYjYzNWM1NzA3N2Q1PC9SZXF1ZXN0SWQ+CiAgPC9SZXNwb25zZU1ldGFkYXRhPgo8L1B1Ymxpc2hCYXRjaFJlc3BvbnNlPgo=\"\n      }\n    },\n    {\n      \"ID\": \"979a2e3e91f057af\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"188\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"41527d3f-a271-58e1-b891-1f09bb7f3795\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"cefffd5783b8c7df\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"188\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1ecbee4d-2125-58b7-b30e-8c7b382b87c3\"\n          ]\n        },\n        \"Body\": \"e30=\"\n      }\n    },\n    {\n      \"ID\": \"0fff6ee329ded978\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"188\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"1429\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c63027d1-8116-5713-ba98-45e79818c867\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFST0FSSU1WQ1dWRVI3N0ozSFFMMzpBV1MtQ0xPVURDQVNUIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNzczOTM0Mjg2ODA1IiwiQXBwcm94aW1hdGVSZWNlaXZlQ291bnQiOiIxIiwiU2VudFRpbWVzdGFtcCI6IjE3NzM5MzQyODY1MDIifSwiQm9keSI6IntcbiAgXCJUeXBlXCIgOiBcIk5vdGlmaWNhdGlvblwiLFxuICBcIk1lc3NhZ2VJZFwiIDogXCIxOGE2MzdjZi1lOTFjLTUwOGMtYmQ4Zi01NWY5ZjAxMTkxNDNcIixcbiAgXCJTZXF1ZW5jZU51bWJlclwiIDogXCIxMDAwMDAwMDAwMDAwMDAwMzAwMFwiLFxuICBcIlRvcGljQXJuXCIgOiBcImFybjphd3M6c25zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6VGVzdEZJRk9TTlNUb3BpY19UZXN0U2VuZFJlY2VpdmVWYWxpZC10b3AtMS5maWZvXCIsXG4gIFwiTWVzc2FnZVwiIDogXCJoZWxsbyB3b3JsZFwiLFxuICBcIlRpbWVzdGFtcFwiIDogXCIyMDI2LTAzLTE5VDE1OjMxOjI1LjkyM1pcIixcbiAgXCJVbnN1YnNjcmliZVVSTFwiIDogXCJodHRwczovL3Nucy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS8/QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm46YXdzOnNuczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OlRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbzo4MzkyYmU2Yy0xOTAwLTQ4M2QtOThlNy0yMTc3MWQzYjAzMDJcIixcbiAgXCJNZXNzYWdlQXR0cmlidXRlc1wiIDoge1xuICAgIFwiTWVzc2FnZUdyb3VwSWRcIiA6IHtcIlR5cGVcIjpcIlN0cmluZ1wiLFwiVmFsdWVcIjpcIjFcIn1cbiAgfVxufSIsIk1ENU9mQm9keSI6ImEyMzNkZGUzNTZlN2IyMzdmOWZiNGRiZjk0MzQ2MWNmIiwiTWVzc2FnZUlkIjoiMmQ3ODdkNzktZGJjYS00ZjY5LThlODAtMWMwZjMyYjkxMTZhIiwiUmVjZWlwdEhhbmRsZSI6IkFRRUJHWXBoWUljak5WVnNSRS9QTmhJMXlZL0I1Nmh6aFdvUTNqMThmOE9jcjJrWENyanZXamlOWFFDemIvV2FhanRMSndNa3RiOVpSWjdPdTF0TDZhZi9WV3pFbDd1L09TMlkrV3ZxQ0ZHdndPV1FPaFVqYW9Wc3VKc2VnMmwrZVI1QWtoOUc2aTAwQy9kYzIxZGI1ZU94OHJ1UWFqcy9WeDUxNjF6ZjI3bXpLZUttZTB5ZU9ZNU1tN0JVTW9vSTI5cjlEY25zQkFKL2pJc0t5V3p6ZXVwRmhsMVlpZ04xd3JWUlJ1OXpkazY1dzc1amJnT05GMUlvRExxSjB0cjVQWWVJOHdlcXN6MElGcXpCT1N5S3lPYUhFTjg1WTdNRUN3V2JyZ3NDNTZZUi9pQ0NCTjVDUWgwUHVDZ0U3cWxaazk4RFRPQVYxamIwSHAwaDhYWmhOYk1jOUJyK1BySjg3NytFQmk5OVI0cUZpY3dpMlh0bUUwb24wZ3RLdmdZN2MyYURnQXBYZjJNQUg3cExJNFhkZmNhSzQycXlFTldIWitwSTdnRTB4SFJYZDdwUlFQWGUwRUNpWlFIcHc4WC9YNDl5In1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"5f0a3a7d7e93eb64\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"601\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkdZcGhZSWNqTlZWc1JFL1BOaEkxeVkvQjU2aHpoV29RM2oxOGY4T2NyMmtYQ3JqdldqaU5YUUN6Yi9XYWFqdExKd01rdGI5WlJaN091MXRMNmFmL1ZXekVsN3UvT1MyWStXdnFDRkd2d09XUU9oVWphb1ZzdUpzZWcybCtlUjVBa2g5RzZpMDBDL2RjMjFkYjVlT3g4cnVRYWpzL1Z4NTE2MXpmMjdtektlS21lMHllT1k1TW03QlVNb29JMjlyOURjbnNCQUovaklzS3lXenpldXBGaGwxWWlnTjF3clZSUnU5emRrNjV3NzVqYmdPTkYxSW9ETHFKMHRyNVBZZUk4d2Vxc3owSUZxekJPU3lLeU9hSEVOODVZN01FQ3dXYnJnc0M1NllSL2lDQ0JONUNRaDBQdUNnRTdxbFprOThEVE9BVjFqYjBIcDBoOFhaaE5iTWM5QnIrUHJKODc3K0VCaTk5UjRxRmljd2kyWHRtRTBvbjBndEt2Z1k3YzJhRGdBcFhmMk1BSDdwTEk0WGRmY2FLNDJxeUVOV0haK3BJN2dFMHhIUlhkN3BSUVBYZTBFQ2laUUhwdzhYL1g0OXkifV0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDU2NzUyNjY1NTc2L1Rlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtc3ViLTEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1cf06939-fe3c-57e6-88a4-0b0fe7320892\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"b6ac1bc135bdabfd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"186\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPVVuc3Vic2NyaWJlJlN1YnNjcmlwdGlvbkFybj1hcm4lM0Fhd3MlM0FzbnMlM0F1cy1lYXN0LTIlM0E0NTY3NTI2NjU1NzYlM0FUZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXRvcC0xLmZpZm8lM0E4MzkyYmU2Yy0xOTAwLTQ4M2QtOThlNy0yMTc3MWQzYjAzMDImVmVyc2lvbj0yMDEwLTAzLTMx\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f5d9e7bd-c936-52b9-972b-858bd0389376\"\n          ]\n        },\n        \"Body\": \"PFVuc3Vic2NyaWJlUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD5mNWQ5ZTdiZC1jOTM2LTUyYjktOTcyYi04NThiZDAzODkzNzY8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvVW5zdWJzY3JpYmVSZXNwb25zZT4K\"\n      }\n    },\n    {\n      \"ID\": \"75c40231ee783038\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"107\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ],\n          \"X-Amzn-Query-Mode\": [\n            \"true\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ1Njc1MjY2NTU3Ni9UZXN0RklGT1NOU1RvcGljX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXN1Yi0xIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0c054f73-d014-5e0a-94a6-2d45c91b017e\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"44ac4cccd2fa637d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sns.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/x-www-form-urlencoded\",\n        \"BodyParts\": [\n          \"QWN0aW9uPURlbGV0ZVRvcGljJlRvcGljQXJuPWFybiUzQWF3cyUzQXNucyUzQXVzLWVhc3QtMiUzQTQ1Njc1MjY2NTU3NiUzQVRlc3RGSUZPU05TVG9waWNfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyZWZXJzaW9uPTIwMTAtMDMtMzE=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"201\"\n          ],\n          \"Content-Type\": [\n            \"text/xml\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"70782cfc-a9f9-5c9b-8d44-4ecab0f61d54\"\n          ]\n        },\n        \"Body\": \"PERlbGV0ZVRvcGljUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zbnMuYW1hem9uYXdzLmNvbS9kb2MvMjAxMC0wMy0zMS8iPgogIDxSZXNwb25zZU1ldGFkYXRhPgogICAgPFJlcXVlc3RJZD43MDc4MmNmYy1hOWY5LTVjOWItOGQ0NC00ZWNhYjBmNjFkNTQ8L1JlcXVlc3RJZD4KICA8L1Jlc3BvbnNlTWV0YWRhdGE+CjwvRGVsZXRlVG9waWNSZXNwb25zZT4K\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestFIFO/TestSQSTopic/TestSendReceiveInvalidNoDeduplicationID.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7d7DkaEPsp2wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"488c1b7baccec043\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"119\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IkZpZm9RdWV1ZSI6InRydWUifSwiUXVldWVOYW1lIjoiVGVzdEZJRk9TUVNUb3BpY1YyX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb0RlZHVwbGljYXRpb25JRC10b3AtMS5maWZvIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"133\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c8fe192d-a596-55ff-a284-47f9e1cce82b\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm8ifQ==\"\n      }\n    },\n    {\n      \"ID\": \"ef216f838ffba6a3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"163\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm8ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"134\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f55f2002-99bb-539e-b832-7ed6dde1fe4a\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ2MjM4MDIyNTcyMjpUZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm8ifX0=\"\n      }\n    },\n    {\n      \"ID\": \"3ca56206193d9a4f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"552\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDYyMzgwMjI1NzIyOlRlc3RGSUZPU1FTVG9waWNWMl9UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9EZWR1cGxpY2F0aW9uSUQtdG9wLTEuZmlmb1wiXG5cdFx0fVxuXHRcdF1cblx0XHR9In0sIlF1ZXVlVXJsIjoiaHR0cHM6Ly9zcXMudXMtZWFzdC0yLmFtYXpvbmF3cy5jb20vNDYyMzgwMjI1NzIyL1Rlc3RGSUZPU1FTVG9waWNWMl9UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9EZWR1cGxpY2F0aW9uSUQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"70c6bccc-fcf9-5394-890f-e218b8a3ee40\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"295ccc1c86c5adf5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"184\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJNZXNzYWdlQm9keSI6ImhlbGxvIHdvcmxkIn1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm8ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"135\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"InvalidParameterValue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8f9fa8f3-579c-5344-9a93-f62713c6fe90\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uLmNvcmFsLnNlcnZpY2UjSW52YWxpZFBhcmFtZXRlclZhbHVlRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSByZXF1ZXN0IG11c3QgY29udGFpbiB0aGUgcGFyYW1ldGVyIE1lc3NhZ2VHcm91cElkLiJ9\"\n      }\n    },\n    {\n      \"ID\": \"2bb6505bef40e020\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"133\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vRGVkdXBsaWNhdGlvbklELXRvcC0xLmZpZm8ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a92d077d-a742-594c-9f12-59a9e3184498\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestFIFO/TestSQSTopic/TestSendReceiveInvalidNoMessageGroupID.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7d7DkZK1G+aQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6366424e88b30d8f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"153\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IkNvbnRlbnRCYXNlZERlZHVwbGljYXRpb24iOiJ0cnVlIiwiRmlmb1F1ZXVlIjoidHJ1ZSJ9LCJRdWV1ZU5hbWUiOiJUZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"26c22a4d-366e-57ae-8ecc-74997237919c\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyJ9\"\n      }\n    },\n    {\n      \"ID\": \"3a2c883514b69b62\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"162\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"133\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b0785a50-4d25-5f0b-9f70-0484097f2939\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ2MjM4MDIyNTcyMjpUZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"ab18dd9635cce259\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"550\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDYyMzgwMjI1NzIyOlRlc3RGSUZPU1FTVG9waWNWMl9UZXN0U2VuZFJlY2VpdmVJbnZhbGlkTm9NZXNzYWdlR3JvdXBJRC10b3AtMS5maWZvXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NjIzODAyMjU3MjIvVGVzdEZJRk9TUVNUb3BpY1YyX1Rlc3RTZW5kUmVjZWl2ZUludmFsaWROb01lc3NhZ2VHcm91cElELXRvcC0xLmZpZm8ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a38c8ae8-cee8-510a-b76d-d43c8ab20738\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"11a7cff7dccb146c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"135\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Query-Error\": [\n            \"InvalidParameterValue;Sender\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cd8c196e-fb59-50fa-8b61-47babf03a6c8\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJjb20uYW1hem9uLmNvcmFsLnNlcnZpY2UjSW52YWxpZFBhcmFtZXRlclZhbHVlRXhjZXB0aW9uIiwibWVzc2FnZSI6IlRoZSByZXF1ZXN0IG11c3QgY29udGFpbiB0aGUgcGFyYW1ldGVyIE1lc3NhZ2VHcm91cElkLiJ9\"\n      }\n    },\n    {\n      \"ID\": \"2b0f583db6179994\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"132\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlSW52YWxpZE5vTWVzc2FnZUdyb3VwSUQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6947b160-652e-58bd-923a-efb42174ce8f\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/awssnssqs/testdata/TestFIFO/TestSQSTopic/TestSendReceiveValid.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7d7DkZArpthgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0b80062d7e7d1cf4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"135\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.CreateQueue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IkNvbnRlbnRCYXNlZERlZHVwbGljYXRpb24iOiJ0cnVlIiwiRmlmb1F1ZXVlIjoidHJ1ZSJ9LCJRdWV1ZU5hbWUiOiJUZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a3942545-7353-58bb-8c80-7b91370ab888\"\n          ]\n        },\n        \"Body\": \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9\"\n      }\n    },\n    {\n      \"ID\": \"37296bc76bc72205\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"144\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.GetQueueAttributes\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJRdWV1ZUFybiJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"115\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f6b9c333-cc21-5112-9137-9de788786121\"\n          ]\n        },\n        \"Body\": \"eyJBdHRyaWJ1dGVzIjp7IlF1ZXVlQXJuIjoiYXJuOmF3czpzcXM6dXMtZWFzdC0yOjQ2MjM4MDIyNTcyMjpUZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"b872a000f87315c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"514\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SetQueueAttributes\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVzIjp7IlBvbGljeSI6Intcblx0XHRcIlZlcnNpb25cIjogXCIyMDEyLTEwLTE3XCIsXG5cdFx0XCJJZFwiOiBcIkFsbG93UXVldWVcIixcblx0XHRcIlN0YXRlbWVudFwiOiBbXG5cdFx0e1xuXHRcdFwiU2lkXCI6IFwiTXlTUVNQb2xpY3kwMDFcIixcblx0XHRcIkVmZmVjdFwiOiBcIkFsbG93XCIsXG5cdFx0XCJQcmluY2lwYWxcIjoge1xuXHRcdFwiQVdTXCI6IFwiKlwiXG5cdFx0fSxcblx0XHRcIkFjdGlvblwiOiBcInNxczpTZW5kTWVzc2FnZVwiLFxuXHRcdFwiUmVzb3VyY2VcIjogXCJhcm46YXdzOnNxczp1cy1lYXN0LTI6NDYyMzgwMjI1NzIyOlRlc3RGSUZPU1FTVG9waWNWMl9UZXN0U2VuZFJlY2VpdmVWYWxpZC10b3AtMS5maWZvXCJcblx0XHR9XG5cdFx0XVxuXHRcdH0ifSwiUXVldWVVcmwiOiJodHRwczovL3Nxcy51cy1lYXN0LTIuYW1hem9uYXdzLmNvbS80NjIzODAyMjU3MjIvVGVzdEZJRk9TUVNUb3BpY1YyX1Rlc3RTZW5kUmVjZWl2ZVZhbGlkLXRvcC0xLmZpZm8ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"eb761631-365a-5f1d-8717-48e572038f2e\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    },\n    {\n      \"ID\": \"fb0f07a8000497b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"265\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.SendMessageBatch\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJDTEVBUkVE\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"232\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9662cf02-26b8-5134-8575-91d662e1a107\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAiLCJNRDVPZk1lc3NhZ2VBdHRyaWJ1dGVzIjoiNzZmODkzMTU1Y2NjNmY1ZTAxNzQ3MTU3NWRmZDUwYjUiLCJNRDVPZk1lc3NhZ2VCb2R5IjoiNWViNjNiYmJlMDFlZWVkMDkzY2IyMmJiOGY1YWNkYzMiLCJNZXNzYWdlSWQiOiI5NjIzMWY1OC05ZTdhLTQ1NjYtOWZlMi03NjFmZWVhOWMzMzYiLCJTZXF1ZW5jZU51bWJlciI6IjE4ODg2MzQ1MDE5MjM4MTI3ODcyIn1dfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ba83c145a0d21888\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"195\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.ReceiveMessage\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJBdHRyaWJ1dGVOYW1lcyI6WyJBbGwiXSwiTWF4TnVtYmVyT2ZNZXNzYWdlcyI6MSwiTWVzc2FnZUF0dHJpYnV0ZU5hbWVzIjpbIkFsbCJdLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"933\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c2c8c961-7b9b-5368-b941-97b53fc2435b\"\n          ]\n        },\n        \"Body\": \"eyJNZXNzYWdlcyI6W3siQXR0cmlidXRlcyI6eyJTZW5kZXJJZCI6IkFJREFJNEJTWVE0TzZLNVZJTDIzQyIsIkFwcHJveGltYXRlRmlyc3RSZWNlaXZlVGltZXN0YW1wIjoiMTcxNzE5MTE5MzUzMSIsIkFwcHJveGltYXRlUmVjZWl2ZUNvdW50IjoiMSIsIlNlbnRUaW1lc3RhbXAiOiIxNzE3MTkxMTkzNDcxIiwiU2VxdWVuY2VOdW1iZXIiOiIxODg4NjM0NTAxOTIzODEyNzg3MiIsIk1lc3NhZ2VEZWR1cGxpY2F0aW9uSWQiOiJiOTRkMjdiOTkzNGQzZTA4YTUyZTUyZDdkYTdkYWJmYWM0ODRlZmUzN2E1MzgwZWU5MDg4ZjdhY2UyZWZjZGU5IiwiTWVzc2FnZUdyb3VwSWQiOiIxIn0sIkJvZHkiOiJoZWxsbyB3b3JsZCIsIk1ENU9mQm9keSI6IjVlYjYzYmJiZTAxZWVlZDA5M2NiMjJiYjhmNWFjZGMzIiwiTUQ1T2ZNZXNzYWdlQXR0cmlidXRlcyI6Ijc2Zjg5MzE1NWNjYzZmNWUwMTc0NzE1NzVkZmQ1MGI1IiwiTWVzc2FnZUF0dHJpYnV0ZXMiOnsiTWVzc2FnZUdyb3VwSWQiOnsiRGF0YVR5cGUiOiJTdHJpbmciLCJTdHJpbmdWYWx1ZSI6IjEifX0sIk1lc3NhZ2VJZCI6Ijk2MjMxZjU4LTllN2EtNDU2Ni05ZmUyLTc2MWZlZWE5YzMzNiIsIlJlY2VpcHRIYW5kbGUiOiJBUUVCRXY5d08yNnlJMFI5TnJxR0hwVm9HWnhTejA4djJOb0ZRa3FLYnlNaE5tZWpndEw3b1dGamZhMnNYVGEzM1hDbWlRdzhtRmo1azEwdGJDSnF2WUtBUXZOODA3NVRkdDBXUFpIcy9jZUpFbENCWmdyNHhVVW1VQVZrYkxmQ1JYS0hzMGVNVGEwRUlaSjgxWEt2QW9ONDVpaGora0ZpZk1xSll4SDBvV0RJZEl1MXpoa3ErblV6bUt0NGVzeWlTemRwMlNMQzJKWUlTcW1ZQkQ4L3IvNjZsd1RWbXQ3SldDZkRkVms5TWw1ZGJUZzI5WU12OUpvdEZGRXZhYTY3aFBYcHI5NzZ1TjhRblhEbWViMW1adHZVdmNScmIvUlVidkN5aUNNZ2lUTU0vMEszbFJ0M05iMDhnUW1WUWQ3STZZUU8ifV19\"\n      }\n    },\n    {\n      \"ID\": \"12af619e194dd77d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"480\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteMessageBatch\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJFbnRyaWVzIjpbeyJJZCI6IjAiLCJSZWNlaXB0SGFuZGxlIjoiQVFFQkV2OXdPMjZ5STBSOU5ycUdIcFZvR1p4U3owOHYyTm9GUWtxS2J5TWhObWVqZ3RMN29XRmpmYTJzWFRhMzNYQ21pUXc4bUZqNWsxMHRiQ0pxdllLQVF2TjgwNzVUZHQwV1BaSHMvY2VKRWxDQlpncjR4VVVtVUFWa2JMZkNSWEtIczBlTVRhMEVJWko4MVhLdkFvTjQ1aWhqK2tGaWZNcUpZeEgwb1dESWRJdTF6aGtxK25Vem1LdDRlc3lpU3pkcDJTTEMySllJU3FtWUJEOC9yLzY2bHdUVm10N0pXQ2ZEZFZrOU1sNWRiVGcyOVlNdjlKb3RGRkV2YWE2N2hQWHByOTc2dU44UW5YRG1lYjFtWnR2VXZjUnJiL1JVYnZDeWlDTWdpVE1NLzBLM2xSdDNOYjA4Z1FtVlFkN0k2WVFPIn1dLCJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"27\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a260c8a0-396f-5536-b34f-96747d362505\"\n          ]\n        },\n        \"Body\": \"eyJTdWNjZXNzZnVsIjpbeyJJZCI6IjAifV19\"\n      }\n    },\n    {\n      \"ID\": \"f71c8f2024a0c6cf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://sqs.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"114\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSQS.DeleteQueue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.0\",\n        \"BodyParts\": [\n          \"eyJRdWV1ZVVybCI6Imh0dHBzOi8vc3FzLnVzLWVhc3QtMi5hbWF6b25hd3MuY29tLzQ2MjM4MDIyNTcyMi9UZXN0RklGT1NRU1RvcGljVjJfVGVzdFNlbmRSZWNlaXZlVmFsaWQtdG9wLTEuZmlmbyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.0\"\n          ],\n          \"Date\": [\n            \"Fri, 31 May 2024 21:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"96248dd5-5ed5-5984-b591-d3011a8c89b7\"\n          ]\n        },\n        \"Body\": \"\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "pubsub/azuresb/azuresb.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package azuresb provides an implementation of pubsub using Azure Service\n// Bus Topic and Subscription.\n// See https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview for an overview.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, azuresb registers\n// for the scheme \"azuresb\".\n// The default URL opener will use a Service Bus Connection String based on\n// AZURE_SERVICEBUS_HOSTNAME or SERVICEBUS_CONNECTION_STRING environment variables.\n// SERVICEBUS_CONNECTION_STRING takes precedence.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Message Delivery Semantics\n//\n// Azure ServiceBus supports at-least-once semantics in the default Peek-Lock\n// mode; messages will be redelivered if they are not Acked, or if they are\n// explicitly Nacked.\n//\n// ServiceBus also supports a Receive-Delete mode, which essentially auto-acks a\n// message when it is delivered, resulting in at-most-once semantics. Set\n// SubscriberOptions.ReceiveAndDelete to true to tell azuresb.Subscription that\n// you've enabled Receive-Delete mode. When enabled, pubsub.Message.Ack is a\n// no-op, pubsub.Message.Nackable will return false, and pubsub.Message.Nack\n// will panic.\n//\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # As\n//\n// azuresb exposes the following types for As:\n//   - Topic: *servicebus.Topic\n//   - Subscription: *servicebus.Subscription\n//   - Message.BeforeSend: *servicebus.Message\n//   - Message.AfterSend: None\n//   - Message: *servicebus.Message\n//   - Error: common.Retryable, *amqp.Error, *amqp.LinkError\npackage azuresb // import \"gocloud.dev/pubsub/azuresb\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\tcommon \"github.com/Azure/azure-amqp-common-go/v3\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azidentity\"\n\tservicebus \"github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus\"\n\t\"github.com/Azure/go-amqp\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nconst (\n\tdefaultListenerTimeout = 2 * time.Second\n)\n\nvar sendBatcherOpts = &batcher.Options{\n\tMaxBatchSize: 1,   // SendBatch only supports one message at a time\n\tMaxHandlers:  100, // max concurrency for sends\n}\n\nvar recvBatcherOpts = &batcher.Options{\n\tMaxBatchSize: 50,\n\tMaxHandlers:  100, // max concurrency for reads\n}\n\nvar ackBatcherOpts = &batcher.Options{\n\tMaxBatchSize: 1,\n\tMaxHandlers:  100, // max concurrency for acks\n}\n\nfunc init() {\n\to := new(defaultOpener)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, o)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, o)\n}\n\n// defaultURLOpener creates an URLOpener with ConnectionString initialized from\n// AZURE_SERVICEBUS_HOSTNAME or SERVICEBUS_CONNECTION_STRING environment variables.\n// SERVICEBUS_CONNECTION_STRING takes precedence.\ntype defaultOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *defaultOpener) defaultOpener() (*URLOpener, error) {\n\to.init.Do(func() {\n\t\tcs := os.Getenv(\"SERVICEBUS_CONNECTION_STRING\")\n\t\tsbHostname := os.Getenv(\"AZURE_SERVICEBUS_HOSTNAME\")\n\t\tif cs == \"\" && sbHostname == \"\" {\n\t\t\to.err = errors.New(\"Neither SERVICEBUS_CONNECTION_STRING nor AZURE_SERVICEBUS_HOSTNAME environment variables are set\")\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{ConnectionString: cs, ServiceBusHostname: sbHostname}\n\t})\n\treturn o.opener, o.err\n}\n\nfunc (o *defaultOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topener, err := o.defaultOpener()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: %v\", u, err)\n\t}\n\treturn opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *defaultOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topener, err := o.defaultOpener()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: %v\", u, err)\n\t}\n\treturn opener.OpenSubscriptionURL(ctx, u)\n}\n\n// Scheme is the URL scheme azuresb registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"azuresb\"\n\n// URLOpener opens Azure Service Bus URLs like \"azuresb://mytopic\" for\n// topics or \"azuresb://mytopic?subscription=mysubscription\" for subscriptions.\n//\n//   - The URL's host+path is used as the topic name.\n//   - For subscriptions, the subscription name must be provided in the\n//     \"subscription\" query parameter.\n//   - For subscriptions, the ListenerTimeout can be overridden with time.Duration parseable values in \"listener_timeout\".\n//\n// No other query parameters are supported.\ntype URLOpener struct {\n\t// ConnectionString is the Service Bus connection string (required if ServiceBusHostname is not defined).\n\t// https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues\n\tConnectionString string\n\n\t// Azure ServiceBus hostname.\n\t// https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-go-how-to-use-queues?tabs=bash\n\tServiceBusHostname string\n\n\t// ClientOptions are options when creating the Client.\n\tServiceBusClientOptions *servicebus.ClientOptions\n\n\t// Options passed when creating the ServiceBus Topic/Subscription.\n\tServiceBusSenderOptions   *servicebus.NewSenderOptions\n\tServiceBusReceiverOptions *servicebus.ReceiverOptions\n\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n}\n\nfunc (o *URLOpener) sbClient(kind string, u *url.URL) (*servicebus.Client, error) {\n\tif o.ConnectionString == \"\" && o.ServiceBusHostname == \"\" {\n\t\treturn nil, fmt.Errorf(\"open %s %v: one of ConnectionString or ServiceBusHostname is required\", kind, u)\n\t}\n\n\t// Auth using shared key.\n\tif o.ConnectionString != \"\" {\n\t\tclient, err := NewClientFromConnectionString(o.ConnectionString, o.ServiceBusClientOptions)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open %s %v: invalid connection string %q: %v\", kind, u, o.ConnectionString, err)\n\t\t}\n\t\treturn client, nil\n\t}\n\n\t// Auth using Azure AAD Workload Identity/AAD Pod Identities/AKS Kubelet Identity/Service Principal.\n\tclient, err := NewClientFromServiceBusHostname(o.ServiceBusHostname, o.ServiceBusClientOptions)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s %v: invalid service bus hostname %q: %v\", kind, u, o.ServiceBusHostname, err)\n\t}\n\treturn client, nil\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\tsbClient, err := o.sbClient(\"topic\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor param := range u.Query() {\n\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t}\n\ttopicName := path.Join(u.Host, u.Path)\n\tsbSender, err := NewSender(sbClient, topicName, o.ServiceBusSenderOptions)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: couldn't open topic %q: %v\", u, topicName, err)\n\t}\n\treturn OpenTopic(ctx, sbSender, &o.TopicOptions)\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\tsbClient, err := o.sbClient(\"subscription\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttopicName := path.Join(u.Host, u.Path)\n\tq := u.Query()\n\tsubName := q.Get(\"subscription\")\n\tq.Del(\"subscription\")\n\tif subName == \"\" {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: missing required query parameter subscription\", u)\n\t}\n\topts := o.SubscriptionOptions\n\tif lts := q.Get(\"listener_timeout\"); lts != \"\" {\n\t\tq.Del(\"listener_timeout\")\n\t\td, err := time.ParseDuration(lts)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid listener_timeout %q: %v\", u, lts, err)\n\t\t}\n\t\topts.ListenerTimeout = d\n\t}\n\tif mrbss := q.Get(\"max_recv_batch_size\"); mrbss != \"\" {\n\t\tq.Del(\"max_recv_batch_size\")\n\t\tmrbs, err := strconv.Atoi(mrbss)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid max_recv_batch_size %q: %v\", u, mrbss, err)\n\t\t}\n\t\topts.ReceiveBatcherOptions.MaxBatchSize = mrbs\n\t}\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t}\n\tsbReceiver, err := NewReceiver(sbClient, topicName, subName, o.ServiceBusReceiverOptions)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: couldn't open subscription %q: %v\", u, subName, err)\n\t}\n\treturn OpenSubscription(ctx, sbClient, sbReceiver, &opts)\n}\n\ntype topic struct {\n\tsbSender *servicebus.Sender\n}\n\n// TopicOptions provides configuration options for an Azure SB Topic.\ntype TopicOptions struct {\n\t// BatcherOptions adds constraints to the default batching done for sends.\n\tBatcherOptions batcher.Options\n}\n\n// NewClientFromConnectionString returns a *servicebus.Client from a Service Bus connection string, using shared key for auth.\n// https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues\nfunc NewClientFromConnectionString(connectionString string, opts *servicebus.ClientOptions) (*servicebus.Client, error) {\n\treturn servicebus.NewClientFromConnectionString(connectionString, opts)\n}\n\n// NewClientFromConnectionString returns a *servicebus.Client from a Service Bus connection string, using shared key for auth.\n// for example you can use workload identity autorization.\n// https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-go-how-to-use-queues?tabs=bash\nfunc NewClientFromServiceBusHostname(serviceBusHostname string, opts *servicebus.ClientOptions) (*servicebus.Client, error) {\n\tcred, err := azidentity.NewDefaultAzureCredential(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tclient, err := servicebus.NewClient(serviceBusHostname, cred, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn client, nil\n}\n\n// NewSender returns a *servicebus.Sender associated with a Service Bus Client.\nfunc NewSender(sbClient *servicebus.Client, topicName string, opts *servicebus.NewSenderOptions) (*servicebus.Sender, error) {\n\treturn sbClient.NewSender(topicName, opts)\n}\n\n// NewReceiver returns a *servicebus.Receiver associated with a Service Bus Topic.\nfunc NewReceiver(sbClient *servicebus.Client, topicName, subscriptionName string, opts *servicebus.ReceiverOptions) (*servicebus.Receiver, error) {\n\treturn sbClient.NewReceiverForSubscription(topicName, subscriptionName, opts)\n}\n\n// OpenTopic initializes a pubsub Topic on a given Service Bus Sender.\nfunc OpenTopic(ctx context.Context, sbSender *servicebus.Sender, opts *TopicOptions) (*pubsub.Topic, error) {\n\tt, err := openTopic(ctx, sbSender, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tbo := sendBatcherOpts.NewMergedOptions(&opts.BatcherOptions)\n\treturn pubsub.NewTopic(t, bo), nil\n}\n\n// openTopic returns the driver for OpenTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openTopic(ctx context.Context, sbSender *servicebus.Sender, _ *TopicOptions) (driver.Topic, error) {\n\tif sbSender == nil {\n\t\treturn nil, errors.New(\"azuresb: OpenTopic requires a Service Bus Sender\")\n\t}\n\treturn &topic{sbSender: sbSender}, nil\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *topic) SendBatch(ctx context.Context, dms []*driver.Message) error {\n\tif len(dms) != 1 {\n\t\tpanic(\"azuresb.SendBatch should only get one message at a time\")\n\t}\n\tdm := dms[0]\n\tsbms := &servicebus.Message{Body: dm.Body}\n\tif len(dm.Metadata) > 0 {\n\t\tsbms.ApplicationProperties = map[string]any{}\n\t\tfor k, v := range dm.Metadata {\n\t\t\tsbms.ApplicationProperties[k] = v\n\t\t}\n\t}\n\tif dm.BeforeSend != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif p, ok := i.(**servicebus.Message); ok {\n\t\t\t\t*p = sbms\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := dm.BeforeSend(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\terr := t.sbSender.SendMessage(ctx, sbms, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif dm.AfterSend != nil {\n\t\tasFunc := func(i any) bool { return false }\n\t\tif err := dm.AfterSend(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *topic) IsRetryable(err error) bool {\n\t_, retryable := errorCode(err)\n\treturn retryable\n}\n\nfunc (t *topic) As(i any) bool {\n\tp, ok := i.(**servicebus.Sender)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = t.sbSender\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs\nfunc (*topic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc errorAs(err error, i any) bool {\n\tswitch v := err.(type) {\n\tcase *amqp.LinkError:\n\t\tif p, ok := i.(**amqp.LinkError); ok {\n\t\t\t*p = v\n\t\t\treturn true\n\t\t}\n\tcase *amqp.Error:\n\t\tif p, ok := i.(**amqp.Error); ok {\n\t\t\t*p = v\n\t\t\treturn true\n\t\t}\n\tcase common.Retryable:\n\t\tif p, ok := i.(*common.Retryable); ok {\n\t\t\t*p = v\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (*topic) ErrorCode(err error) gcerrors.ErrorCode {\n\tcode, _ := errorCode(err)\n\treturn code\n}\n\n// Close implements driver.Topic.Close.\nfunc (*topic) Close() error { return nil }\n\ntype subscription struct {\n\tsbReceiver *servicebus.Receiver\n\topts       *SubscriptionOptions\n}\n\n// SubscriptionOptions will contain configuration for subscriptions.\ntype SubscriptionOptions struct {\n\t// If false, the serviceBus.Subscription MUST be in the default Peek-Lock mode.\n\t// If true, the serviceBus.Subscription MUST be in Receive-and-Delete mode.\n\t// When true: pubsub.Message.Ack will be a no-op, pubsub.Message.Nackable\n\t// will return true, and pubsub.Message.Nack will panic.\n\tReceiveAndDelete bool\n\n\t// ReceiveBatcherOptions adds constraints to the default batching done for receives.\n\tReceiveBatcherOptions batcher.Options\n\n\t// AckBatcherOptions adds constraints to the default batching done for acks.\n\t// Only used when ReceiveAndDelete is false.\n\tAckBatcherOptions batcher.Options\n\n\t// ListenerTimeout is the amount of time to wait before timing out the\n\t// ReceiveMessages RPC call. This is used to ensure the receive operation is\n\t// non-blocking as the RPC blocks if there are no messages.\n\t// Defaults to 2 seconds.\n\tListenerTimeout time.Duration\n}\n\n// OpenSubscription initializes a pubsub Subscription on a given Service Bus Subscription and its parent Service Bus Topic.\nfunc OpenSubscription(ctx context.Context, sbClient *servicebus.Client, sbReceiver *servicebus.Receiver, opts *SubscriptionOptions) (*pubsub.Subscription, error) {\n\tds, err := openSubscription(ctx, sbClient, sbReceiver, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\trbo := recvBatcherOpts.NewMergedOptions(&opts.ReceiveBatcherOptions)\n\tabo := ackBatcherOpts.NewMergedOptions(&opts.AckBatcherOptions)\n\treturn pubsub.NewSubscription(ds, rbo, abo), nil\n}\n\n// openSubscription returns a driver.Subscription.\nfunc openSubscription(ctx context.Context, sbClient *servicebus.Client, sbReceiver *servicebus.Receiver, opts *SubscriptionOptions) (driver.Subscription, error) {\n\tif sbClient == nil {\n\t\treturn nil, errors.New(\"azuresb: OpenSubscription requires a Service Bus Client\")\n\t}\n\tif sbReceiver == nil {\n\t\treturn nil, errors.New(\"azuresb: OpenSubscription requires a Service Bus Receiver\")\n\t}\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\tif opts.ListenerTimeout == 0 {\n\t\topts.ListenerTimeout = defaultListenerTimeout\n\t}\n\treturn &subscription{sbReceiver: sbReceiver, opts: opts}, nil\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (s *subscription) IsRetryable(err error) bool {\n\t_, retryable := errorCode(err)\n\treturn retryable\n}\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tp, ok := i.(**servicebus.Receiver)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s.sbReceiver\n\treturn true\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs\nfunc (s *subscription) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc (s *subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\tcode, _ := errorCode(err)\n\treturn code\n}\n\n// ReceiveBatch implements driver.Subscription.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\t// ReceiveMessages will block until rctx is Done; we want to return after\n\t// a reasonably short delay even if there are no messages. So, create a\n\t// sub context for the RPC.\n\trctx, cancel := context.WithTimeout(ctx, s.opts.ListenerTimeout)\n\tdefer cancel()\n\n\tvar messages []*driver.Message\n\tsbmsgs, err := s.sbReceiver.ReceiveMessages(rctx, maxMessages, nil)\n\tfor _, sbmsg := range sbmsgs {\n\t\tmetadata := map[string]string{}\n\t\tfor key, value := range sbmsg.ApplicationProperties {\n\t\t\tif strVal, ok := value.(string); ok {\n\t\t\t\tmetadata[key] = strVal\n\t\t\t}\n\t\t}\n\t\tmessages = append(messages, &driver.Message{\n\t\t\tLoggableID: sbmsg.MessageID,\n\t\t\tBody:       sbmsg.Body,\n\t\t\tMetadata:   metadata,\n\t\t\tAckID:      sbmsg,\n\t\t\tAsFunc:     messageAsFunc(sbmsg),\n\t\t})\n\t}\n\t// Mask rctx timeouts, they are expected if no messages are available.\n\tif err == rctx.Err() {\n\t\terr = nil\n\t}\n\treturn messages, err\n}\n\nfunc messageAsFunc(sbmsg *servicebus.ReceivedMessage) func(any) bool {\n\treturn func(i any) bool {\n\t\tp, ok := i.(**servicebus.ReceivedMessage)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\t*p = sbmsg\n\t\treturn true\n\t}\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ids []driver.AckID) error {\n\tif s.opts.ReceiveAndDelete {\n\t\t// Ack is a no-op in Receive-and-Delete mode.\n\t\treturn nil\n\t}\n\tvar err error\n\tfor _, id := range ids {\n\t\toneErr := s.sbReceiver.CompleteMessage(ctx, id.(*servicebus.ReceivedMessage), nil)\n\t\tif oneErr != nil {\n\t\t\terr = oneErr\n\t\t}\n\t}\n\treturn err\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool {\n\tif s == nil {\n\t\treturn false\n\t}\n\treturn !s.opts.ReceiveAndDelete\n}\n\n// SendNacks implements driver.Subscription.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ids []driver.AckID) error {\n\tif !s.CanNack() {\n\t\tpanic(\"unreachable\")\n\t}\n\tvar err error\n\tfor _, id := range ids {\n\t\toneErr := s.sbReceiver.AbandonMessage(ctx, id.(*servicebus.ReceivedMessage), nil)\n\t\tif oneErr != nil {\n\t\t\terr = oneErr\n\t\t}\n\t}\n\treturn err\n}\n\n// errorCode returns an error code and whether err is retryable.\nfunc errorCode(err error) (gcerrors.ErrorCode, bool) {\n\t// Unfortunately Azure sometimes returns common.Retryable or even\n\t// errors.errorString, which don't expose anything other than the error\n\t// string :-(.\n\tif strings.Contains(err.Error(), \"status code 404\") {\n\t\treturn gcerrors.NotFound, false\n\t}\n\tif strings.Contains(err.Error(), \"status code 401\") {\n\t\treturn gcerrors.PermissionDenied, false\n\t}\n\tvar cond amqp.ErrCond\n\tvar aderr *amqp.LinkError\n\tvar aerr *amqp.Error\n\tif errors.As(err, &aderr) {\n\t\tif aderr.RemoteErr == nil {\n\t\t\treturn gcerrors.NotFound, false\n\t\t}\n\t\tcond = aderr.RemoteErr.Condition\n\t} else if errors.As(err, &aerr) {\n\t\tcond = aerr.Condition\n\t}\n\tswitch cond {\n\tcase amqp.ErrCondNotFound:\n\t\treturn gcerrors.NotFound, false\n\n\tcase amqp.ErrCondPreconditionFailed:\n\t\treturn gcerrors.FailedPrecondition, false\n\n\tcase amqp.ErrCondInternalError:\n\t\treturn gcerrors.Internal, true\n\n\tcase amqp.ErrCondNotImplemented:\n\t\treturn gcerrors.Unimplemented, false\n\n\tcase amqp.ErrCondUnauthorizedAccess, amqp.ErrCondNotAllowed:\n\t\treturn gcerrors.PermissionDenied, false\n\n\tcase amqp.ErrCondResourceLimitExceeded:\n\t\treturn gcerrors.ResourceExhausted, true\n\n\tcase amqp.ErrCondInvalidField:\n\t\treturn gcerrors.InvalidArgument, false\n\t}\n\treturn gcerrors.Unknown, true\n}\n\n// Close implements driver.Subscription.Close.\nfunc (*subscription) Close() error { return nil }\n"
  },
  {
    "path": "pubsub/azuresb/azuresb_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//\thttps://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\npackage azuresb\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azidentity\"\n\tservicebus \"github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus/admin\"\n)\n\nvar (\n\t// See docs below on how to provision an Azure Service Bus Namespace and obtaining the connection string.\n\t// https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues\n\tconnString = os.Getenv(\"SERVICEBUS_CONNECTION_STRING\")\n\tsbHostname = os.Getenv(\"AZURE_SERVICEBUS_HOSTNAME\")\n)\n\nconst (\n\tnonexistentTopicName = \"nonexistent-topic\"\n\n\t// Try to keep the entity name under Azure limits.\n\t// https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quotas\n\t// says 50, but there appears to be some additional overhead. 40 works.\n\tmaxNameLen = 40\n)\n\ntype harness struct {\n\tadminClient *admin.Client\n\tsbClient    *servicebus.Client\n\tnumTopics   uint32 // atomic\n\tnumSubs     uint32 // atomic\n\tcloser      func()\n\tautodelete  bool\n\ttopics      map[driver.Topic]string\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tif connString == \"\" && sbHostname == \"\" {\n\t\treturn nil, fmt.Errorf(\"azuresb: test harness requires environment variable SERVICEBUS_CONNECTION_STRING or AZURE_SERVICEBUS_HOSTNAME to run\")\n\t}\n\tadminClient, err := admin.NewClientFromConnectionString(connString, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsbClient, err := NewClientFromConnectionString(connString, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnoop := func() {}\n\treturn &harness{\n\t\tadminClient: adminClient,\n\t\tsbClient:    sbClient,\n\t\tcloser:      noop,\n\t\ttopics:      map[driver.Topic]string{},\n\t}, nil\n}\n\nfunc newHarnessUsingAutodelete(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\th, err := newHarness(ctx, t)\n\tif err == nil {\n\t\th.(*harness).autodelete = true\n\t}\n\treturn h, err\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (dt driver.Topic, cleanup func(), err error) {\n\ttopicName := sanitize(fmt.Sprintf(\"%s-top-%d\", testName, atomic.AddUint32(&h.numTopics, 1)))\n\tif err := createTopic(ctx, topicName, h.adminClient, nil); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tsbSender, err := NewSender(h.sbClient, topicName, nil)\n\tdt, err = openTopic(ctx, sbSender, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\th.topics[dt] = topicName\n\tcleanup = func() {\n\t\tsbSender.Close(ctx)\n\t\tdeleteTopic(ctx, topicName, h.adminClient)\n\t}\n\treturn dt, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\tsbSender, err := NewSender(h.sbClient, nonexistentTopicName, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdt, err := openTopic(ctx, sbSender, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\th.topics[dt] = nonexistentTopicName\n\treturn dt, nil\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error) {\n\tsubName := sanitize(fmt.Sprintf(\"%s-sub-%d\", testName, atomic.AddUint32(&h.numSubs, 1)))\n\ttopicName := h.topics[dt]\n\terr = createSubscription(ctx, topicName, subName, h.adminClient, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar opts servicebus.ReceiverOptions\n\tif h.autodelete {\n\t\topts.ReceiveMode = servicebus.ReceiveModeReceiveAndDelete\n\t}\n\tsbReceiver, err := NewReceiver(h.sbClient, topicName, subName, &opts)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tsopts := SubscriptionOptions{}\n\tif h.autodelete {\n\t\tsopts.ReceiveAndDelete = true\n\t}\n\tds, err = openSubscription(ctx, h.sbClient, sbReceiver, &sopts)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tcleanup = func() {\n\t\tsbReceiver.Close(ctx)\n\t\tdeleteSubscription(ctx, topicName, subName, h.adminClient)\n\t}\n\treturn ds, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\tconst topicName = \"topic-for-nonexistent-sub\"\n\t_, cleanup, err := h.CreateTopic(ctx, topicName)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tsbReceiver, err := NewReceiver(h.sbClient, topicName, \"nonexistent-subscription\", nil)\n\tif err != nil {\n\t\treturn nil, cleanup, err\n\t}\n\tsub, err := openSubscription(ctx, h.sbClient, sbReceiver, nil)\n\treturn sub, cleanup, err\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) MaxBatchSizes() (int, int) { return sendBatcherOpts.MaxBatchSize, 0 }\n\nfunc (h *harness) SupportsMultipleSubscriptions() bool { return true }\n\n// Please run the TestConformance with an extended timeout since each test needs to perform CRUD for ServiceBus Topics and Subscriptions.\n// Example: C:\\Go\\bin\\go.exe test -timeout 60s gocloud.dev/pubsub/azuresb -run ^TestConformance$\nfunc TestConformance(t *testing.T) {\n\tif !*setup.Record {\n\t\tt.Skip(\"replaying is not yet supported for Azure pubsub\")\n\t}\n\tasTests := []drivertest.AsTest{sbAsTest{}}\n\tdrivertest.RunConformanceTests(t, newHarness, asTests)\n}\n\nfunc TestConformanceWithAutodelete(t *testing.T) {\n\tif !*setup.Record {\n\t\tt.Skip(\"replaying is not yet supported for Azure pubsub\")\n\t}\n\tasTests := []drivertest.AsTest{sbAsTest{}}\n\tdrivertest.RunConformanceTests(t, newHarnessUsingAutodelete, asTests)\n}\n\ntype sbAsTest struct{}\n\nfunc (sbAsTest) Name() string {\n\treturn \"azure\"\n}\n\nfunc (sbAsTest) TopicCheck(topic *pubsub.Topic) error {\n\tvar t2 servicebus.Sender\n\tif topic.As(&t2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &t2)\n\t}\n\tvar t3 *servicebus.Sender\n\tif !topic.As(&t3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &t3)\n\t}\n\treturn nil\n}\n\nfunc (sbAsTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar s2 servicebus.Receiver\n\tif sub.As(&s2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &s2)\n\t}\n\tvar s3 *servicebus.Receiver\n\tif !sub.As(&s3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &s3)\n\t}\n\treturn nil\n}\n\nfunc (sbAsTest) TopicErrorCheck(t *pubsub.Topic, err error) error {\n\treturn nil\n}\n\nfunc (sbAsTest) SubscriptionErrorCheck(s *pubsub.Subscription, err error) error {\n\treturn nil\n}\n\nfunc (sbAsTest) MessageCheck(m *pubsub.Message) error {\n\tvar m2 servicebus.ReceivedMessage\n\tif m.As(&m2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &m2)\n\t}\n\tvar m3 *servicebus.ReceivedMessage\n\tif !m.As(&m3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &m3)\n\t}\n\treturn nil\n}\n\nfunc (sbAsTest) BeforeSend(as func(any) bool) error {\n\tvar m *servicebus.Message\n\tif !as(&m) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &m)\n\t}\n\treturn nil\n}\n\nfunc (sbAsTest) AfterSend(as func(any) bool) error {\n\treturn nil\n}\n\nfunc sanitize(s string) string {\n\t// First trim some not-so-useful strings that are part of all test names.\n\ts = strings.Replace(s, \"TestConformance/Test\", \"\", 1)\n\ts = strings.Replace(s, \"TestConformanceWithAutodelete/Test\", \"\", 1)\n\ts = strings.Replace(s, \"/\", \"_\", -1)\n\tif len(s) > maxNameLen {\n\t\t// Drop prefix, not suffix, because suffix includes something to make\n\t\t// entities unique within a test.\n\t\ts = s[len(s)-maxNameLen:]\n\t}\n\treturn s\n}\n\n// createTopic ensures the existence of a Service Bus Topic on a given Namespace.\nfunc createTopic(ctx context.Context, topicName string, adminClient *admin.Client, properties *admin.TopicProperties) error {\n\tt, _ := adminClient.GetTopic(ctx, topicName, nil)\n\tif t != nil {\n\t\t_, _ = adminClient.DeleteTopic(ctx, topicName, nil)\n\t}\n\topts := admin.CreateTopicOptions{\n\t\tProperties: properties,\n\t}\n\t_, err := adminClient.CreateTopic(ctx, topicName, &opts)\n\treturn err\n}\n\n// deleteTopic removes a Service Bus Topic on a given Namespace.\nfunc deleteTopic(ctx context.Context, topicName string, adminClient *admin.Client) error {\n\tt, _ := adminClient.GetTopic(ctx, topicName, nil)\n\tif t != nil {\n\t\t_, err := adminClient.DeleteTopic(ctx, topicName, nil)\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// createSubscription ensures the existence of a Service Bus Subscription on a given Namespace and Topic.\nfunc createSubscription(ctx context.Context, topicName, subscriptionName string, adminClient *admin.Client, properties *admin.SubscriptionProperties) error {\n\ts, _ := adminClient.GetSubscription(ctx, topicName, subscriptionName, nil)\n\tif s != nil {\n\t\t_, _ = adminClient.DeleteSubscription(ctx, topicName, subscriptionName, nil)\n\t}\n\topts := admin.CreateSubscriptionOptions{\n\t\tProperties: properties,\n\t}\n\t_, err := adminClient.CreateSubscription(ctx, topicName, subscriptionName, &opts)\n\treturn err\n}\n\n// deleteSubscription removes a Service Bus Subscription on a given Namespace and Topic.\nfunc deleteSubscription(ctx context.Context, topicName, subscriptionName string, adminClient *admin.Client) error {\n\tse, _ := adminClient.GetSubscription(ctx, topicName, subscriptionName, nil)\n\tif se != nil {\n\t\t_, err := adminClient.DeleteSubscription(ctx, topicName, subscriptionName, nil)\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// to run test using Azure Entra credentials:\n// 1. grant access to ${AZURE_CLIENT_ID} to Service Bus namespace\n// 2. run test:\n// AZURE_CLIENT_SECRET='secret' \\\n// AZURE_CLIENT_ID=client_id_uud \\\n// AZURE_TENANT_ID=tenant_id_uuid \\\n// AZURE_SERVICEBUS_HOSTNAME=hostname go test -benchmem -run=^$ -bench ^BenchmarkAzureServiceBusPubSub$ gocloud.dev/pubsub/azuresb\nfunc BenchmarkAzureServiceBusPubSub(b *testing.B) {\n\tconst (\n\t\tbenchmarkTopicName        = \"benchmark-topic\"\n\t\tbenchmarkSubscriptionName = \"benchmark-subscription\"\n\t)\n\tctx := context.Background()\n\n\tvar adminClient *admin.Client\n\tvar sbClient *servicebus.Client\n\tvar err error\n\n\tif connString == \"\" && sbHostname == \"\" {\n\t\tb.Fatal(\"azuresb: benchmark requires environment variable SERVICEBUS_CONNECTION_STRING or AZURE_SERVICEBUS_HOSTNAME to run\")\n\t}\n\n\tif connString != \"\" {\n\t\tadminClient, err = admin.NewClientFromConnectionString(connString, nil)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t\tsbClient, err = NewClientFromConnectionString(connString, nil)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t} else if sbHostname != \"\" {\n\t\tcred, err := azidentity.NewDefaultAzureCredential(nil)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t\tadminClient, err = admin.NewClient(sbHostname, cred, nil)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t\tsbClient, err = NewClientFromServiceBusHostname(sbHostname, nil)\n\t\tif err != nil {\n\t\t\tb.Fatal(err)\n\t\t}\n\t}\n\n\t// Make topic.\n\tif err := createTopic(ctx, benchmarkTopicName, adminClient, nil); err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer deleteTopic(ctx, benchmarkTopicName, adminClient)\n\n\tsbSender, err := NewSender(sbClient, benchmarkTopicName, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer sbSender.Close(ctx)\n\ttopic, err := OpenTopic(ctx, sbSender, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\n\t// Make subscription.\n\tif err := createSubscription(ctx, benchmarkTopicName, benchmarkSubscriptionName, adminClient, nil); err != nil {\n\t\tb.Fatal(err)\n\t}\n\tsbReceiver, err := NewReceiver(sbClient, benchmarkTopicName, benchmarkSubscriptionName, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tsub, err := OpenSubscription(ctx, sbClient, sbReceiver, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n\nfunc fakeConnectionStringInEnv() func() {\n\toldEnvVal := os.Getenv(\"SERVICEBUS_CONNECTION_STRING\")\n\tos.Setenv(\"SERVICEBUS_CONNECTION_STRING\", \"Endpoint=sb://foo.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=mykey\")\n\treturn func() {\n\t\tos.Setenv(\"SERVICEBUS_CONNECTION_STRING\", oldEnvVal)\n\t}\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"azuresb://mytopic\", false},\n\t\t// Invalid parameter.\n\t\t{\"azuresb://mytopic?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"azuresb://mytopic?subscription=mysub\", false},\n\t\t// Missing subscription.\n\t\t{\"azuresb://mytopic\", true},\n\t\t// Setting listener_timeout.\n\t\t{\"azuresb://mytopic?subscription=mysub&listener_timeout=10s\", false},\n\t\t// Invalid listener_timeout.\n\t\t{\"azuresb://mytopic?subscription=mysub&listener_timeout=xxx\", true},\n\t\t// Invalid parameter.\n\t\t{\"azuresb://mytopic?subscription=mysub&param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pubsub/azuresb/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage azuresb_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"os\"\n\n\tservicebus \"github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/azuresb\"\n)\n\nfunc ExampleOpenTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Change these as needed for your application.\n\tconnString := os.Getenv(\"SERVICEBUS_CONNECTION_STRING\")\n\ttopicName := \"test-topic\"\n\n\tif connString == \"\" {\n\t\tlog.Fatal(\"Service Bus ConnectionString is not set\")\n\t}\n\n\t// Connect to Azure Service Bus for the given topic.\n\tsbClient, err := azuresb.NewClientFromConnectionString(connString, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tsbSender, err := azuresb.NewSender(sbClient, topicName, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer sbSender.Close(ctx)\n\n\t// Construct a *pubsub.Topic.\n\ttopic, err := azuresb.OpenTopic(ctx, sbSender, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/azuresb\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\n\t// This URL will open the topic \"mytopic\" using a connection string\n\t// from the environment variable SERVICEBUS_CONNECTION_STRING.\n\ttopic, err := pubsub.OpenTopic(ctx, \"azuresb://mytopic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Change these as needed for your application.\n\tserviceBusConnString := os.Getenv(\"SERVICEBUS_CONNECTION_STRING\")\n\tconst topicName = \"test-topic\"\n\tconst subscriptionName = \"test-subscription\"\n\n\t// Connect to Azure Service Bus for the given subscription.\n\tsbClient, err := azuresb.NewClientFromConnectionString(serviceBusConnString, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tsbReceiver, err := azuresb.NewReceiver(sbClient, topicName, subscriptionName, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer sbReceiver.Close(ctx)\n\n\t// Construct a *pubsub.Subscription.\n\tsubscription, err := azuresb.OpenSubscription(ctx, sbClient, sbReceiver, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/azuresb\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// This URL will open the subscription \"mysubscription\" for the topic\n\t// \"mytopic\" using a connection string from the environment variable\n\t// SERVICEBUS_CONNECTION_STRING.\n\tsubscription, err := pubsub.OpenSubscription(ctx,\n\t\t\"azuresb://mytopic?subscription=mysubscription\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription_inReceiveAndDeleteMode() {\n\tctx := context.Background()\n\n\t// Change these as needed for your application.\n\tserviceBusConnString := os.Getenv(\"SERVICEBUS_CONNECTION_STRING\")\n\tconst topicName = \"test-topic\"\n\tconst subscriptionName = \"test-subscription\"\n\n\t// Connect to Azure Service Bus for the given subscription.\n\tsbClient, err := azuresb.NewClientFromConnectionString(serviceBusConnString, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// Create the azuresb.Subscription, configuring it with the\n\t// ReceiveAndDelete option.\n\t// See https://godoc.org/github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus#SubscriptionWithReceiveAndDelete.\n\tsbReceiverOptions := &servicebus.ReceiverOptions{\n\t\tReceiveMode: servicebus.ReceiveModeReceiveAndDelete,\n\t}\n\tsbReceiver, err := azuresb.NewReceiver(sbClient, topicName, subscriptionName, sbReceiverOptions)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer sbReceiver.Close(ctx)\n\n\t// Construct a *pubsub.Subscription. Since we configured\n\t// the azuresb.Subscription with ReceiveAndDelete mode, we need\n\t// to set SubscriptionOptions.ReceiveAndDelete = true.\n\tsubscription, err := azuresb.OpenSubscription(ctx,\n\t\tsbClient, sbReceiver, &azuresb.SubscriptionOptions{ReceiveAndDelete: true})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/azuresb/testdata/README",
    "content": "This directory is here just so that the prerelease script (internal/testing/prerelease.sh)\nwill run this package's tests with -record.\n"
  },
  {
    "path": "pubsub/batcher/batcher.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package batcher supports batching of items. Create a Batcher with a handler and\n// add items to it. Items are accumulated while handler calls are in progress; when\n// the handler returns, it will be called again with items accumulated since the last\n// call. Multiple concurrent calls to the handler are supported.\npackage batcher // import \"gocloud.dev/pubsub/batcher\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"reflect\"\n\t\"sync\"\n)\n\n// Split determines how to split n (representing n items) into batches based on\n// opts. It returns a slice of batch sizes.\n//\n// For example, Split(10) might return [10], [5, 5], or [2, 2, 2, 2, 2]\n// depending on opts. opts may be nil to accept defaults.\n//\n// Split will return nil if n is less than o.MinBatchSize.\n//\n// The sum of returned batches may be less than n (e.g., if n is 10x larger\n// than o.MaxBatchSize, but o.MaxHandlers is less than 10).\nfunc Split(n int, opts *Options) []int {\n\to := newOptionsWithDefaults(opts)\n\tif n < o.MinBatchSize {\n\t\t// No batch yet.\n\t\treturn nil\n\t}\n\tif o.MaxBatchSize == 0 {\n\t\t// One batch is fine.\n\t\treturn []int{n}\n\t}\n\n\t// TODO(rvangent): Consider trying to even out the batch sizes.\n\t// For example, n=10 with MaxBatchSize 9 and MaxHandlers 2 will Split\n\t// to [9, 1]; it could be [5, 5].\n\tvar batches []int\n\tfor n >= o.MinBatchSize && len(batches) < o.MaxHandlers {\n\t\tb := min(o.MaxBatchSize, n)\n\t\tbatches = append(batches, b)\n\t\tn -= b\n\t}\n\treturn batches\n}\n\n// A Batcher batches items.\ntype Batcher struct {\n\topts          Options\n\thandler       func(any) error\n\titemSliceZero reflect.Value  // nil (zero value) for slice of items\n\twg            sync.WaitGroup // tracks active Add calls\n\n\tmu        sync.Mutex\n\tpending   []waiter // items waiting to be handled\n\tnHandlers int      // number of currently running handler goroutines\n\tshutdown  bool\n}\n\n// Message is larger than the maximum batch byte size\nvar ErrMessageTooLarge = errors.New(\"batcher: message too large\")\n\ntype sizableItem interface {\n\tByteSize() int\n}\n\ntype waiter struct {\n\titem any\n\terrc chan error\n}\n\n// Options sets options for Batcher.\ntype Options struct {\n\t// Maximum number of concurrent handlers. Defaults to 1.\n\tMaxHandlers int\n\t// Minimum size of a batch. Defaults to 1.\n\t// May be ignored during shutdown.\n\tMinBatchSize int\n\t// Maximum size of a batch. 0 means no limit.\n\tMaxBatchSize int\n\t// Maximum bytesize of a batch. 0 means no limit.\n\tMaxBatchByteSize int\n}\n\n// newOptionsWithDefaults returns Options with defaults applied to opts.\n// opts may be nil to accept all defaults.\nfunc newOptionsWithDefaults(opts *Options) Options {\n\tvar o Options\n\tif opts != nil {\n\t\to = *opts\n\t}\n\tif o.MaxHandlers == 0 {\n\t\to.MaxHandlers = 1\n\t}\n\tif o.MinBatchSize == 0 {\n\t\to.MinBatchSize = 1\n\t}\n\treturn o\n}\n\n// newMergedOptions returns o merged with opts.\nfunc (o *Options) NewMergedOptions(opts *Options) *Options {\n\tmaxH := o.MaxHandlers\n\tif opts.MaxHandlers != 0 && (maxH == 0 || opts.MaxHandlers < maxH) {\n\t\tmaxH = opts.MaxHandlers\n\t}\n\tminB := o.MinBatchSize\n\tif opts.MinBatchSize != 0 && (minB == 0 || opts.MinBatchSize > minB) {\n\t\tminB = opts.MinBatchSize\n\t}\n\tmaxB := o.MaxBatchSize\n\tif opts.MaxBatchSize != 0 && (maxB == 0 || opts.MaxBatchSize < maxB) {\n\t\tmaxB = opts.MaxBatchSize\n\t}\n\tmaxBB := o.MaxBatchByteSize\n\tif opts.MaxBatchByteSize != 0 && (maxBB == 0 || opts.MaxBatchByteSize < maxBB) {\n\t\tmaxBB = opts.MaxBatchByteSize\n\t}\n\tc := &Options{\n\t\tMaxHandlers:      maxH,\n\t\tMinBatchSize:     minB,\n\t\tMaxBatchSize:     maxB,\n\t\tMaxBatchByteSize: maxBB,\n\t}\n\treturn c\n}\n\n// New creates a new Batcher.\n//\n// itemType is type that will be batched. For example, if you\n// want to create batches of *Entry, pass reflect.TypeOf(&Entry{}) for itemType.\n//\n// opts can be nil to accept defaults.\n//\n// handler is a function that will be called on each bundle. If itemExample is\n// of type T, the argument to handler is of type []T.\nfunc New(itemType reflect.Type, opts *Options, handler func(any) error) *Batcher {\n\treturn &Batcher{\n\t\topts:          newOptionsWithDefaults(opts),\n\t\thandler:       handler,\n\t\titemSliceZero: reflect.Zero(reflect.SliceOf(itemType)),\n\t}\n}\n\n// Add adds an item to the batcher. It blocks until the handler has\n// processed the item and reports the error that the handler returned.\n// If Shutdown has been called, Add immediately returns an error.\nfunc (b *Batcher) Add(ctx context.Context, item any) error {\n\tc := b.AddNoWait(item)\n\t// Wait until either our result is ready or the context is done.\n\tselect {\n\tcase err := <-c:\n\t\treturn err\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\t}\n}\n\n// AddNoWait adds an item to the batcher and returns immediately. When the handler is\n// called on the item, the handler's error return value will be sent to the channel\n// returned from AddNoWait.\nfunc (b *Batcher) AddNoWait(item any) <-chan error {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\t// Create a channel to receive the error from the handler.\n\tc := make(chan error, 1)\n\tif b.shutdown {\n\t\tc <- errors.New(\"batcher: shut down\")\n\t\treturn c\n\t}\n\n\tif b.opts.MaxBatchByteSize > 0 {\n\t\tif sizable, ok := item.(sizableItem); ok {\n\t\t\tif sizable.ByteSize() > b.opts.MaxBatchByteSize {\n\t\t\t\tc <- ErrMessageTooLarge\n\t\t\t\treturn c\n\t\t\t}\n\t\t}\n\t}\n\n\t// Add the item to the pending list.\n\tb.pending = append(b.pending, waiter{item, c})\n\tif b.nHandlers < b.opts.MaxHandlers {\n\t\t// If we can start a handler, do so with the item just added and any others that are pending.\n\t\tb.handleBatch(b.nextBatch())\n\t}\n\t// If we can't start a handler, then one of the currently running handlers will\n\t// take our item.\n\treturn c\n}\n\n// Requires b.mu be held.\nfunc (b *Batcher) handleBatch(batch []waiter) {\n\tif len(batch) == 0 {\n\t\treturn\n\t}\n\tb.wg.Add(1)\n\tgo func() {\n\t\tb.callHandler(batch)\n\t\tb.wg.Done()\n\t}()\n\tb.nHandlers++\n}\n\n// nextBatch returns the batch to process, and updates b.pending.\n// It returns nil if there's no batch ready for processing.\n// b.mu must be held.\nfunc (b *Batcher) nextBatch() []waiter {\n\t// If we're not shutting down, respect minimums.  If we're shutting down\n\t// though, we ignore minimums to make sure everything is flushed.\n\tif !b.shutdown && len(b.pending) < b.opts.MinBatchSize {\n\t\treturn nil\n\t}\n\n\tif b.opts.MaxBatchByteSize == 0 && (b.opts.MaxBatchSize == 0 || len(b.pending) <= b.opts.MaxBatchSize) {\n\t\t// Send it all!\n\t\tbatch := b.pending\n\t\tb.pending = nil\n\t\treturn batch\n\t}\n\n\tbatch := make([]waiter, 0, len(b.pending))\n\tbatchByteSize := 0\n\tfor _, msg := range b.pending {\n\t\titemByteSize := 0\n\t\tif sizable, ok := msg.item.(sizableItem); ok {\n\t\t\titemByteSize = sizable.ByteSize()\n\t\t}\n\t\treachedMaxSize := b.opts.MaxBatchSize > 0 && len(batch)+1 > b.opts.MaxBatchSize\n\t\treachedMaxByteSize := b.opts.MaxBatchByteSize > 0 && batchByteSize+itemByteSize > b.opts.MaxBatchByteSize\n\n\t\tif reachedMaxSize || reachedMaxByteSize {\n\t\t\tbreak\n\t\t}\n\t\tbatch = append(batch, msg)\n\t\tbatchByteSize = batchByteSize + itemByteSize\n\t}\n\n\tb.pending = b.pending[len(batch):]\n\treturn batch\n}\n\nfunc (b *Batcher) callHandler(batch []waiter) {\n\tfor batch != nil {\n\n\t\t// Collect the items into a slice of the example type.\n\t\titems := b.itemSliceZero\n\t\tfor _, m := range batch {\n\t\t\titems = reflect.Append(items, reflect.ValueOf(m.item))\n\t\t}\n\t\t// Call the handler and report the result to all waiting\n\t\t// callers of Add.\n\t\terr := b.handler(items.Interface())\n\t\tfor _, m := range batch {\n\t\t\tm.errc <- err\n\t\t}\n\t\tb.mu.Lock()\n\t\t// If there is more work, keep running; otherwise exit. Take the new batch\n\t\t// and decrement the handler count atomically, so that newly added items will\n\t\t// always get to run.\n\t\tbatch = b.nextBatch()\n\t\tif batch == nil {\n\t\t\tb.nHandlers--\n\t\t}\n\t\tb.mu.Unlock()\n\t}\n}\n\n// Shutdown waits for all active calls to Add to finish, then\n// returns. After Shutdown is called, all subsequent calls to Add fail.\n// Shutdown should be called only once.\nfunc (b *Batcher) Shutdown() {\n\tb.mu.Lock()\n\tb.shutdown = true\n\t// If there aren't any handlers running, there might be a partial\n\t// batch. Make sure it gets flushed even if it hasn't reached the\n\t// minimums.\n\tif b.nHandlers == 0 {\n\t\tb.handleBatch(b.nextBatch())\n\t}\n\tb.mu.Unlock()\n\tb.wg.Wait()\n}\n"
  },
  {
    "path": "pubsub/batcher/batcher_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage batcher_test\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"reflect\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/pubsub/batcher\"\n)\n\nfunc TestSplit(t *testing.T) {\n\ttests := []struct {\n\t\tn    int\n\t\topts *batcher.Options\n\t\twant []int\n\t}{\n\t\t// Defaults.\n\t\t{0, nil, nil},\n\t\t{1, nil, []int{1}},\n\t\t{10, nil, []int{10}},\n\t\t// MinBatchSize.\n\t\t{4, &batcher.Options{MinBatchSize: 5}, nil},\n\t\t{8, &batcher.Options{MinBatchSize: 5, MaxBatchSize: 7}, []int{7}},\n\t\t// <= MaxBatchSize.\n\t\t{5, &batcher.Options{MaxBatchSize: 5}, []int{5}},\n\t\t{9, &batcher.Options{MaxBatchSize: 10}, []int{9}},\n\t\t// > MaxBatchSize with MaxHandlers = 1.\n\t\t{5, &batcher.Options{MaxBatchSize: 4}, []int{4}},\n\t\t{999, &batcher.Options{MaxBatchSize: 10}, []int{10}},\n\t\t// MaxBatchSize with MaxHandlers > 1.\n\t\t{10, &batcher.Options{MaxBatchSize: 4, MaxHandlers: 2}, []int{4, 4}},\n\t\t{10, &batcher.Options{MaxBatchSize: 5, MaxHandlers: 2}, []int{5, 5}},\n\t\t{10, &batcher.Options{MaxBatchSize: 9, MaxHandlers: 2}, []int{9, 1}},\n\t\t{9, &batcher.Options{MaxBatchSize: 4, MaxHandlers: 3}, []int{4, 4, 1}},\n\t\t{10, &batcher.Options{MaxBatchSize: 4, MaxHandlers: 3}, []int{4, 4, 2}},\n\t\t// All 3 options together.\n\t\t{8, &batcher.Options{MinBatchSize: 5, MaxBatchSize: 7, MaxHandlers: 2}, []int{7}},\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := batcher.Split(test.n, test.opts)\n\t\tif diff := cmp.Diff(got, test.want); diff != \"\" {\n\t\t\tt.Errorf(\"%d/%#v: got %v want %v diff %s\", test.n, test.opts, got, test.want, diff)\n\t\t}\n\t}\n}\n\nfunc TestSequential(t *testing.T) {\n\t// Verify that sequential non-concurrent Adds to a batcher produce single-item batches.\n\t// Since there is no concurrent work, the Batcher will always produce the items one at a time.\n\tctx := context.Background()\n\tvar got []int\n\te := errors.New(\"e\")\n\tb := batcher.New(reflect.TypeFor[int](), nil, func(items any) error {\n\t\tgot = items.([]int)\n\t\treturn e\n\t})\n\tfor i := range 10 {\n\t\terr := b.Add(ctx, i)\n\t\tif err != e {\n\t\t\tt.Errorf(\"got %v, want %v\", err, e)\n\t\t}\n\t\twant := []int{i}\n\t\tif !cmp.Equal(got, want) {\n\t\t\tt.Errorf(\"got %+v, want %+v\", got, want)\n\t\t}\n\t}\n}\n\ntype sizableItem struct {\n\tbyteSize int\n}\n\nfunc (i *sizableItem) ByteSize() int {\n\treturn i.byteSize\n}\n\nfunc TestPreventsAddingItemsLargerThanBatchMaxByteSize(t *testing.T) {\n\tctx := context.Background()\n\titemType := reflect.TypeFor[*sizableItem]()\n\tb := batcher.New(itemType, &batcher.Options{MaxBatchByteSize: 1}, func(items any) error {\n\t\treturn nil\n\t})\n\n\terr := b.Add(ctx, &sizableItem{2})\n\te := batcher.ErrMessageTooLarge\n\tif err != e {\n\t\tt.Errorf(\"got %v, want %v\", err, e)\n\t}\n\n\terr = b.Add(ctx, &sizableItem{1})\n\tif err != nil {\n\t\tt.Errorf(\"got error %v, want nil\", err)\n\t}\n}\n\nfunc TestBatchingConsidersMaxSizeAndMaxByteSize(t *testing.T) {\n\tctx := context.Background()\n\titemType := reflect.TypeFor[*sizableItem]()\n\ttests := []struct {\n\t\titemCount      int\n\t\titemSize       int\n\t\topts           *batcher.Options\n\t\twantBatchCount int\n\t}{\n\t\t{10, 0, &batcher.Options{MaxBatchSize: 2, MinBatchSize: 2}, 5},\n\t\t{10, 10, &batcher.Options{MaxBatchByteSize: 10, MinBatchSize: 1}, 10},\n\t\t{10, 5, &batcher.Options{MaxBatchByteSize: 10, MinBatchSize: 2}, 5},\n\t}\n\n\tfor _, test := range tests {\n\t\tvar got [][]*sizableItem\n\t\tb := batcher.New(itemType, test.opts, func(items any) error {\n\t\t\tgot = append(got, items.([]*sizableItem))\n\t\t\treturn nil\n\t\t})\n\n\t\tvar wg sync.WaitGroup\n\t\titem := &sizableItem{test.itemSize}\n\t\tfor i := 0; i < test.itemCount; i++ {\n\t\t\twg.Add(1)\n\t\t\tgo func() {\n\t\t\t\tdefer wg.Done()\n\t\t\t\tif err := b.Add(ctx, item); err != nil {\n\t\t\t\t\tt.Errorf(\"b.Add(ctx, item) error: %v\", err)\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t\twg.Wait()\n\t\tif len(got) != test.wantBatchCount {\n\t\t\tt.Errorf(\"got %d batches, want %d\", len(got), test.wantBatchCount)\n\t\t}\n\t}\n}\n\nfunc TestMinBatchSize(t *testing.T) {\n\t// Verify the MinBatchSize option works.\n\tvar got [][]int\n\tb := batcher.New(reflect.TypeFor[int](), &batcher.Options{MinBatchSize: 3}, func(items any) error {\n\t\tgot = append(got, items.([]int))\n\t\treturn nil\n\t})\n\tfor i := range 6 {\n\t\tb.AddNoWait(i)\n\t}\n\tb.Shutdown()\n\twant := [][]int{{0, 1, 2}, {3, 4, 5}}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %+v, want %+v\", got, want)\n\t}\n}\n\nfunc TestSaturation(t *testing.T) {\n\t// Verify that under high load the maximum number of handlers are running.\n\tctx := context.Background()\n\tconst (\n\t\tmaxHandlers  = 10\n\t\tmaxBatchSize = 50\n\t)\n\tvar (\n\t\tmu               sync.Mutex\n\t\toutstanding, max int             // number of handlers\n\t\tmaxBatch         int             // size of largest batch\n\t\tcount            = map[int]int{} // how many of each item the handlers observe\n\t)\n\tb := batcher.New(reflect.TypeFor[int](), &batcher.Options{MaxHandlers: maxHandlers, MaxBatchSize: maxBatchSize}, func(x any) error {\n\t\titems := x.([]int)\n\t\tmu.Lock()\n\t\toutstanding++\n\t\tif outstanding > max {\n\t\t\tmax = outstanding\n\t\t}\n\t\tfor _, x := range items {\n\t\t\tcount[x]++\n\t\t}\n\t\tif len(items) > maxBatch {\n\t\t\tmaxBatch = len(items)\n\t\t}\n\t\tmu.Unlock()\n\t\tdefer func() { mu.Lock(); outstanding--; mu.Unlock() }()\n\t\t// Sleep a little to increase the likelihood of saturation.\n\t\ttime.Sleep(10 * time.Millisecond)\n\t\treturn nil\n\t})\n\tvar wg sync.WaitGroup\n\tconst nItems = 1000\n\tfor i := range nItems {\n\t\twg.Add(1)\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\t// Sleep a little to increase the likelihood of saturation.\n\t\t\ttime.Sleep(time.Millisecond)\n\t\t\tif err := b.Add(ctx, i); err != nil {\n\t\t\t\tt.Errorf(\"b.Add(ctx, %d) error: %v\", i, err)\n\t\t\t}\n\t\t}()\n\t}\n\twg.Wait()\n\t// Check that we saturated the batcher.\n\tif max != maxHandlers {\n\t\tt.Errorf(\"max concurrent handlers = %d, want %d\", max, maxHandlers)\n\t}\n\t// Check that at least one batch had more than one item.\n\tif maxBatch <= 1 || maxBatch > maxBatchSize {\n\t\tt.Errorf(\"got max batch size of %d, expected > 1 and <= %d\", maxBatch, maxBatchSize)\n\t}\n\t// Check that handlers saw every item exactly once.\n\twant := map[int]int{}\n\tfor i := range nItems {\n\t\twant[i] = 1\n\t}\n\tif diff := cmp.Diff(count, want); diff != \"\" {\n\t\tt.Errorf(\"items: %s\", diff)\n\t}\n}\n\nfunc TestShutdown(t *testing.T) {\n\tctx := context.Background()\n\tvar nHandlers int64 // atomic\n\tc := make(chan int, 10)\n\tb := batcher.New(reflect.TypeFor[int](), &batcher.Options{MaxHandlers: cap(c)}, func(x any) error {\n\t\tfor range x.([]int) {\n\t\t\tc <- 0\n\t\t}\n\t\tatomic.AddInt64(&nHandlers, 1)\n\t\tdefer atomic.AddInt64(&nHandlers, -1)\n\t\ttime.Sleep(time.Second) // we want handlers to be active on Shutdown\n\t\treturn nil\n\t})\n\tfor i := 0; i < cap(c); i++ {\n\t\tgo func() {\n\t\t\terr := b.Add(ctx, 0)\n\t\t\tif err != nil {\n\t\t\t\tt.Errorf(\"b.Add error: %v\", err)\n\t\t\t}\n\t\t}()\n\t}\n\t// Make sure all goroutines have started.\n\tfor i := 0; i < cap(c); i++ {\n\t\t<-c\n\t}\n\tb.Shutdown()\n\n\tif got := atomic.LoadInt64(&nHandlers); got != 0 {\n\t\tt.Fatalf(\"%d Handlers still active after Shutdown returns\", got)\n\t}\n\tif err := b.Add(ctx, 1); err == nil {\n\t\tt.Error(\"got nil, want error from Add after Shutdown\")\n\t}\n}\n\n// TestMinBatchSizeFlushesOnShutdown ensures that Shutdown() flushes batches, even if\n// the pending count is less than the minimum batch size.\nfunc TestMinBatchSizeFlushesOnShutdown(t *testing.T) {\n\tvar got [][]int\n\n\tbatchSize := 3\n\tb := batcher.New(reflect.TypeFor[int](), &batcher.Options{MinBatchSize: batchSize}, func(items any) error {\n\t\tgot = append(got, items.([]int))\n\t\treturn nil\n\t})\n\tfor i := 0; i < (batchSize - 1); i++ {\n\t\tb.AddNoWait(i)\n\t}\n\n\t// Ensure that we've received nothing\n\tif len(got) > 0 {\n\t\tt.Errorf(\"got batch unexpectedly: %+v\", got)\n\t}\n\n\tb.Shutdown()\n\n\twant := [][]int{{0, 1}}\n\tif !cmp.Equal(got, want) {\n\t\tt.Errorf(\"got %+v, want %+v on shutdown\", got, want)\n\t}\n}\n\nfunc TestItemCanBeInterface(t *testing.T) {\n\treaderType := reflect.TypeFor[[]io.Reader]().Elem()\n\tcalled := false\n\tb := batcher.New(readerType, nil, func(items any) error {\n\t\tcalled = true\n\t\t_, ok := items.([]io.Reader)\n\t\tif !ok {\n\t\t\tt.Fatal(\"items is not a []io.Reader\")\n\t\t}\n\t\treturn nil\n\t})\n\tb.Add(context.Background(), &bytes.Buffer{})\n\tif !called {\n\t\tt.Fatal(\"handler not called\")\n\t}\n}\n"
  },
  {
    "path": "pubsub/benchmark_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage pubsub\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gocloud.dev/pubsub/driver\"\n\t\"golang.org/x/sync/errgroup\"\n)\n\nconst (\n\t// How long to run the test.\n\trunFor = 25 * time.Second\n\t// How long the \"warmup period\" is, during which we report more frequently.\n\treportWarmup = 500 * time.Millisecond\n\t// Minimum frequency for reporting throughput, during warmup and after that.\n\treportPeriodWarmup = 50 * time.Millisecond\n\treportPeriod       = 1 * time.Second\n\t// Number of output lines per test. We set this to a constant so that it's\n\t// easy to copy/paste the output into a Google Sheet with pre-created graphs.\n\t// Should be above runFor / reportPeriod + reportWarmup / reportPeriodWarmup.\n\tnumLinesPerTest = 50\n\t// Number of data points to smooth msgs/sec and RPCs/sec over.\n\tsmoothing = 5\n)\n\ntype fakeSub struct {\n\tdriver.Subscription\n\tstart   time.Time\n\tprofile func(bool, int) (int, time.Duration)\n\tmsgs    []*driver.Message\n}\n\nfunc (*fakeSub) SendAcks(ctx context.Context, ackIDs []driver.AckID) error { return nil }\nfunc (*fakeSub) CanNack() bool                                             { return false }\nfunc (*fakeSub) Close() error                                              { return nil }\n\nfunc (s *fakeSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tn, delay := s.profile(s.inMiddleThird(), maxMessages)\n\tif delay > 0 {\n\t\ttime.Sleep(delay)\n\t}\n\treturn s.msgs[:n], nil\n}\n\n// inMiddleThird returns true if this test is in the middle third of the running\n// time; used for burstiness tests.\nfunc (s *fakeSub) inMiddleThird() bool {\n\telapsed := time.Since(s.start)\n\treturn elapsed > runFor/3 && elapsed < runFor*2/3\n}\n\n// TestReceivePerformance enables characterization of Receive under various\n// situations, characterized in \"tests\" below.\nfunc TestReceivePerformance(t *testing.T) {\n\tt.Skip(\"Skipped by default\")\n\n\tconst defaultNumGoRoutines = 100\n\tdefaultReceiveProfile := func(_ bool, maxMessages int) (int, time.Duration) { return maxMessages, 0 }\n\tdefaultProcessProfile := func(bool) time.Duration { return 0 }\n\n\ttests := []struct {\n\t\tdescription string\n\t\t// See the defaults above.\n\t\tnumGoRoutines  int\n\t\treceiveProfile func(bool, int) (int, time.Duration)\n\t\tprocessProfile func(bool) time.Duration\n\t}{\n\t\t{\n\t\t\tdescription: \"baseline\",\n\t\t},\n\t\t{\n\t\t\tdescription:   \"1 goroutine\",\n\t\t\tnumGoRoutines: 1,\n\t\t},\n\t\t{\n\t\t\tdescription:    \"receive 100ms\",\n\t\t\treceiveProfile: func(_ bool, maxMessages int) (int, time.Duration) { return maxMessages, 100 * time.Millisecond },\n\t\t},\n\t\t{\n\t\t\tdescription:    \"receive 1s\",\n\t\t\treceiveProfile: func(_ bool, maxMessages int) (int, time.Duration) { return maxMessages, 1 * time.Second },\n\t\t},\n\t\t{\n\t\t\tdescription:    \"process 100ms\",\n\t\t\tprocessProfile: func(bool) time.Duration { return 100 * time.Millisecond },\n\t\t},\n\t\t{\n\t\t\tdescription:    \"process 1s\",\n\t\t\tprocessProfile: func(bool) time.Duration { return 1 * time.Second },\n\t\t},\n\t\t{\n\t\t\tdescription: \"receive 1s process 70ms\",\n\t\t\treceiveProfile: func(_ bool, maxMessages int) (int, time.Duration) {\n\t\t\t\treturn maxMessages, 1 * time.Second\n\t\t\t},\n\t\t\tprocessProfile: func(bool) time.Duration { return 70 * time.Millisecond },\n\t\t},\n\t\t{\n\t\t\tdescription: \"receive 250ms+stddev 150ms, process 10ms + stddev 5ms\",\n\t\t\treceiveProfile: func(_ bool, maxMessages int) (int, time.Duration) {\n\t\t\t\treturn maxMessages, time.Duration(rand.NormFloat64()*150+250) * time.Millisecond\n\t\t\t},\n\t\t\tprocessProfile: func(bool) time.Duration { return time.Duration(rand.NormFloat64()*5+10) * time.Millisecond },\n\t\t},\n\t\t{\n\t\t\tdescription: \"bursty message arrival\",\n\t\t\treceiveProfile: func(inMiddleThird bool, maxMessages int) (int, time.Duration) {\n\t\t\t\t// When in the middle third of the running time, return 0 messages.\n\t\t\t\tn := maxMessages\n\t\t\t\tif inMiddleThird {\n\t\t\t\t\tn = 0\n\t\t\t\t}\n\t\t\t\treturn n, time.Duration(rand.NormFloat64()*25+100) * time.Millisecond\n\t\t\t},\n\t\t\tprocessProfile: func(bool) time.Duration { return time.Duration(rand.NormFloat64()*5+10) * time.Millisecond },\n\t\t},\n\t\t{\n\t\t\tdescription: \"bursty receive time\",\n\t\t\treceiveProfile: func(inMiddleThird bool, maxMessages int) (int, time.Duration) {\n\t\t\t\t// When in the middle third of the running time, 10x the RPC time.\n\t\t\t\td := time.Duration(rand.NormFloat64()*25+100) * time.Millisecond\n\t\t\t\tif inMiddleThird {\n\t\t\t\t\td *= 10\n\t\t\t\t}\n\t\t\t\treturn maxMessages, d\n\t\t\t},\n\t\t\tprocessProfile: func(bool) time.Duration { return time.Duration(rand.NormFloat64()*5+10) * time.Millisecond },\n\t\t},\n\t\t{\n\t\t\tdescription: \"bursty process time\",\n\t\t\treceiveProfile: func(_ bool, maxMessages int) (int, time.Duration) {\n\t\t\t\treturn maxMessages, time.Duration(rand.NormFloat64()*25+100) * time.Millisecond\n\t\t\t},\n\t\t\tprocessProfile: func(inMiddleThird bool) time.Duration {\n\t\t\t\td := time.Duration(rand.NormFloat64()*5+10) * time.Millisecond\n\t\t\t\tif inMiddleThird {\n\t\t\t\t\td *= 100\n\t\t\t\t}\n\t\t\t\treturn d\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tdescription: \"intermittent\",\n\t\t\treceiveProfile: func(_ bool, maxMessages int) (int, time.Duration) {\n\t\t\t\tn := rand.Int() % 2\n\t\t\t\treturn n, 250 * time.Millisecond\n\t\t\t},\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tif test.numGoRoutines == 0 {\n\t\t\ttest.numGoRoutines = defaultNumGoRoutines\n\t\t}\n\t\tif test.receiveProfile == nil {\n\t\t\ttest.receiveProfile = defaultReceiveProfile\n\t\t}\n\t\tif test.processProfile == nil {\n\t\t\ttest.processProfile = defaultProcessProfile\n\t\t}\n\t\tt.Run(test.description, func(t *testing.T) {\n\t\t\trunBenchmark(t, test.description, test.numGoRoutines, test.receiveProfile, test.processProfile)\n\t\t})\n\t}\n}\n\nfunc runBenchmark(t *testing.T, description string, numGoRoutines int, receiveProfile func(bool, int) (int, time.Duration), processProfile func(bool) time.Duration) {\n\tt.Helper()\n\n\tmsgs := make([]*driver.Message, maxBatchSize)\n\tfor i := range msgs {\n\t\tmsgs[i] = &driver.Message{}\n\t}\n\n\tfake := &fakeSub{msgs: msgs, profile: receiveProfile, start: time.Now()}\n\tsub := newSubscription(fake, nil, nil)\n\tdefer sub.Shutdown(context.Background())\n\n\t// Header row.\n\tfmt.Printf(\"%s\\tmsgs/sec\\tRPCs/sec\\tbatchsize\\n\", description)\n\n\tvar mu sync.Mutex\n\tstart := time.Now()\n\tvar lastReport time.Time\n\tnumMsgs := 0\n\tvar prevMsgsPerSec, prevRPCsPerSec []float64     // last <smoothing> datapoints\n\tvar runningMsgsPerSec, runningRPCsPerSec float64 // sum of values in above slices\n\tnumRPCs := 0\n\tlastMaxMessages := 0\n\tnLines := 1 // header\n\n\t// mu must be locked when called.\n\treportLine := func(now time.Time) {\n\t\telapsed := now.Sub(start)\n\t\telapsedSinceReport := now.Sub(lastReport)\n\n\t\t// Smooth msgsPerSec over the last <smoothing> datapoints.\n\t\tmsgsPerSec := float64(numMsgs) / elapsedSinceReport.Seconds()\n\t\tprevMsgsPerSec = append(prevMsgsPerSec, msgsPerSec)\n\t\trunningMsgsPerSec += msgsPerSec\n\t\tif len(prevMsgsPerSec) > smoothing {\n\t\t\trunningMsgsPerSec -= prevMsgsPerSec[0]\n\t\t\tif runningMsgsPerSec < 0 {\n\t\t\t\trunningMsgsPerSec = 0\n\t\t\t}\n\t\t\tprevMsgsPerSec = prevMsgsPerSec[1:]\n\t\t}\n\n\t\t// Smooth rpcsPerSec over the last <smoothing> datapoints.\n\t\trpcsPerSec := float64(numRPCs) / elapsedSinceReport.Seconds()\n\t\tprevRPCsPerSec = append(prevRPCsPerSec, rpcsPerSec)\n\t\trunningRPCsPerSec += rpcsPerSec\n\t\tif len(prevRPCsPerSec) > smoothing {\n\t\t\trunningRPCsPerSec -= prevRPCsPerSec[0]\n\t\t\tif runningRPCsPerSec < 0 {\n\t\t\t\trunningRPCsPerSec = 0\n\t\t\t}\n\t\t\tprevRPCsPerSec = prevRPCsPerSec[1:]\n\t\t}\n\n\t\tfmt.Printf(\"%f\\t%f\\t%f\\t%d\\n\", elapsed.Seconds(), runningMsgsPerSec/float64(len(prevMsgsPerSec)), runningRPCsPerSec/float64(len(prevRPCsPerSec)), lastMaxMessages)\n\t\tnLines++\n\n\t\tlastReport = now\n\t\tnumMsgs = 0\n\t\tnumRPCs = 0\n\t}\n\n\tsub.preReceiveBatchHook = func(maxMessages int) {\n\t\tmu.Lock()\n\t\tdefer mu.Unlock()\n\t\tlastMaxMessages = maxMessages\n\t\tnumRPCs++\n\t\tif lastReport.IsZero() {\n\t\t\treportLine(time.Now())\n\t\t}\n\t}\n\n\tctx, cancel := context.WithTimeout(context.Background(), runFor)\n\tdefer cancel()\n\tdone := make(chan struct{})\n\tgo func() {\n\t\tperiod := reportPeriodWarmup\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase now := <-time.After(period):\n\t\t\t\tmu.Lock()\n\t\t\t\treportLine(now)\n\t\t\t\tmu.Unlock()\n\t\t\t\tif now.Sub(start) > reportWarmup {\n\t\t\t\t\tperiod = reportPeriod\n\t\t\t\t}\n\t\t\tcase <-ctx.Done():\n\t\t\t\tclose(done)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\tvar grp errgroup.Group\n\tfor range numGoRoutines {\n\t\tgrp.Go(func() error {\n\t\t\t// Each goroutine loops until ctx is canceled.\n\t\t\tfor {\n\t\t\t\tm, err := sub.Receive(ctx)\n\t\t\t\tif errors.Is(err, context.DeadlineExceeded) {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tmu.Lock()\n\t\t\t\tnumMsgs++\n\t\t\t\tmu.Unlock()\n\t\t\t\tdelay := processProfile(fake.inMiddleThird())\n\t\t\t\tif delay > 0 {\n\t\t\t\t\ttime.Sleep(delay)\n\t\t\t\t}\n\t\t\t\tm.Ack()\n\t\t\t}\n\t\t})\n\t}\n\tif err := grp.Wait(); err != nil {\n\t\tt.Errorf(\"%s: %v\", description, err)\n\t}\n\t<-done\n\tif nLines > numLinesPerTest {\n\t\tt.Errorf(\"produced too many lines (%d)\", nLines)\n\t}\n\tfor n := nLines; n < numLinesPerTest; n++ {\n\t\tfmt.Println()\n\t}\n}\n"
  },
  {
    "path": "pubsub/driver/driver.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package driver defines interfaces to be implemented by pubsub drivers, which\n// will be used by the pubsub package to interact with the underlying services.\n// Application code should use package pubsub.\npackage driver // import \"gocloud.dev/pubsub/driver\"\n\nimport (\n\t\"context\"\n\n\t\"gocloud.dev/gcerrors\"\n)\n\n// AckID is the identifier of a message for purposes of acknowledgement.\ntype AckID any\n\n// AckInfo represents an action on an AckID.\ntype AckInfo struct {\n\t// AckID is the AckID the action is for.\n\tAckID AckID\n\t// IsAck is true if the AckID should be acked, false if it should be nacked.\n\tIsAck bool\n}\n\n// Message is data to be published (sent) to a topic and later received from\n// subscriptions on that topic.\ntype Message struct {\n\t// LoggableID should be set to an opaque message identifer for\n\t// received messages.\n\tLoggableID string\n\n\t// Body contains the content of the message.\n\tBody []byte\n\n\t// Metadata has key/value pairs describing the message.\n\tMetadata map[string]string\n\n\t// AckID should be set to something identifying the message on the\n\t// server. It may be passed to Subscription.SendAcks to acknowledge\n\t// the message, or to Subscription.SendNacks. This field should only\n\t// be set by methods implementing Subscription.ReceiveBatch.\n\tAckID AckID\n\n\t// AsFunc allows drivers to expose driver-specific types;\n\t// see Topic.As for more details.\n\t// AsFunc must be populated on messages returned from ReceiveBatch.\n\tAsFunc func(any) bool\n\n\t// BeforeSend is a callback used when sending a message. It should remain\n\t// nil on messages returned from ReceiveBatch.\n\t//\n\t// The callback must be called exactly once, before the message is sent.\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeSend func(asFunc func(any) bool) error\n\n\t// AfterSend is a callback used when sending a message. It should remain\n\t// nil on messages returned from ReceiveBatch.\n\t//\n\t// The callback must be called at most once, after the message is sent.\n\t// If Send returns an error, AfterSend will not be called.\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAfterSend func(asFunc func(any) bool) error\n}\n\n// ByteSize estimates the size in bytes of the message for the purpose of restricting batch sizes.\nfunc (m *Message) ByteSize() int {\n\treturn len(m.Body)\n}\n\n// Topic publishes messages.\n// Drivers may optionally also implement io.Closer; Close will be called\n// when the pubsub.Topic is Shutdown.\ntype Topic interface {\n\t// SendBatch should publish all the messages in ms. It should\n\t// return only after all the messages are sent, an error occurs, or the\n\t// context is done.\n\t//\n\t// Only the Body and (optionally) Metadata fields of the Messages in ms\n\t// will be set by the caller of SendBatch.\n\t//\n\t// If any message in the batch fails to send, SendBatch should return an\n\t// error.\n\t//\n\t// If there is a transient failure, this method should not retry but\n\t// should return an error for which IsRetryable returns true. The\n\t// concrete API takes care of retry logic.\n\t//\n\t// The slice ms should not be retained past the end of the call to\n\t// SendBatch.\n\t//\n\t// SendBatch may be called concurrently from multiple goroutines.\n\t//\n\t// Drivers can control the number of messages sent in a single batch\n\t// and the concurrency of calls to SendBatch via a batcher.Options\n\t// passed to pubsub.NewTopic.\n\tSendBatch(ctx context.Context, ms []*Message) error\n\n\t// IsRetryable should report whether err can be retried.\n\t// err will always be a non-nil error returned from SendBatch.\n\tIsRetryable(err error) bool\n\n\t// As allows drivers to expose driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAs(i any) bool\n\n\t// ErrorAs allows drivers to expose driver-specific types for errors.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tErrorAs(error, any) bool\n\n\t// ErrorCode should return a code that describes the error, which was returned by\n\t// one of the other methods in this interface.\n\tErrorCode(error) gcerrors.ErrorCode\n\n\t// Close cleans up any resources used by the Topic. Once Close is called,\n\t// there will be no method calls to the Topic other than As, ErrorAs, and\n\t// ErrorCode.\n\tClose() error\n}\n\n// Subscription receives published messages.\n// Drivers may optionally also implement io.Closer; Close will be called\n// when the pubsub.Subscription is Shutdown.\ntype Subscription interface {\n\t// ReceiveBatch should return a batch of messages that have queued up\n\t// for the subscription on the server, up to maxMessages.\n\t//\n\t// If there is a transient failure, this method should not retry but\n\t// should return a nil slice and an error. The concrete API will take\n\t// care of retry logic.\n\t//\n\t// If no messages are currently available, this method should block for\n\t// no more than about 1 second. It can return an empty\n\t// slice of messages and no error. ReceiveBatch will be called again\n\t// immediately, so implementations should try to wait for messages for some\n\t// non-zero amount of time before returning zero messages. If the underlying\n\t// service doesn't support waiting, then a time.Sleep can be used.\n\t//\n\t// ReceiveBatch may be called concurrently from multiple goroutines.\n\t//\n\t// Drivers can control the maximum value of maxMessages and the concurrency\n\t// of calls to ReceiveBatch via a batcher.Options passed to\n\t// pubsub.NewSubscription.\n\tReceiveBatch(ctx context.Context, maxMessages int) ([]*Message, error)\n\n\t// SendAcks should acknowledge the messages with the given ackIDs on\n\t// the server so that they will not be received again for this\n\t// subscription if the server gets the acks before their deadlines.\n\t// This method should return only after all the ackIDs are sent, an\n\t// error occurs, or the context is done.\n\t//\n\t// It is acceptable for SendAcks to be a no-op for drivers that don't\n\t// support message acknowledgement.\n\t//\n\t// Drivers should suppress errors caused by double-acking a message.\n\t//\n\t// SendAcks may be called concurrently from multiple goroutines.\n\t//\n\t// Drivers can control the maximum size of ackIDs and the concurrency\n\t// of calls to SendAcks/SendNacks via a batcher.Options passed to\n\t// pubsub.NewSubscription.\n\tSendAcks(ctx context.Context, ackIDs []AckID) error\n\n\t// CanNack must return true iff the driver supports Nacking messages.\n\t//\n\t// If CanNack returns false, SendNacks will never be called, and Nack will\n\t// panic if called.\n\tCanNack() bool\n\n\t// SendNacks should notify the server that the messages with the given ackIDs\n\t// are not being processed by this client, so that they will be received\n\t// again later, potentially by another subscription.\n\t// This method should return only after all the ackIDs are sent, an\n\t// error occurs, or the context is done.\n\t//\n\t// If the service does not suppport nacking of messages, return false from\n\t// CanNack, and SendNacks will never be called.\n\t//\n\t// SendNacks may be called concurrently from multiple goroutines.\n\t//\n\t// Drivers can control the maximum size of ackIDs and the concurrency\n\t// of calls to SendAcks/Nacks via a batcher.Options passed to\n\t// pubsub.NewSubscription.\n\tSendNacks(ctx context.Context, ackIDs []AckID) error\n\n\t// IsRetryable should report whether err can be retried.\n\t// err will always be a non-nil error returned from ReceiveBatch or SendAcks.\n\tIsRetryable(err error) bool\n\n\t// As converts i to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAs(i any) bool\n\n\t// ErrorAs allows drivers to expose driver-specific types for errors.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tErrorAs(error, any) bool\n\n\t// ErrorCode should return a code that describes the error, which was returned by\n\t// one of the other methods in this interface.\n\tErrorCode(error) gcerrors.ErrorCode\n\n\t// Close cleans up any resources used by the Topic. Once Close is called,\n\t// there will be no method calls to the Topic other than As, ErrorAs, and\n\t// ErrorCode.\n\tClose() error\n}\n"
  },
  {
    "path": "pubsub/drivertest/drivertest.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package drivertest provides a conformance test for implementations of\n// driver.\npackage drivertest // import \"gocloud.dev/pubsub/drivertest\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"slices\"\n\t\"sort\"\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/escape\"\n\t\"gocloud.dev/internal/retry\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"golang.org/x/sync/errgroup\"\n)\n\n// Harness descibes the functionality test harnesses must provide to run\n// conformance tests.\ntype Harness interface {\n\t// CreateTopic creates a new topic and returns a driver.Topic\n\t// for testing. The topic may have to be removed manually if the test is\n\t// abruptly terminated or the network connection fails.\n\tCreateTopic(ctx context.Context, testName string) (dt driver.Topic, cleanup func(), err error)\n\n\t// MakeNonexistentTopic makes a driver.Topic referencing a topic that\n\t// does not exist.\n\tMakeNonexistentTopic(ctx context.Context) (driver.Topic, error)\n\n\t// CreateSubscription creates a new subscription, subscribed\n\t// to the given topic, and returns a driver.Subscription for testing. The\n\t// subscription may have to be cleaned up manually if the test is abruptly\n\t// terminated or the network connection fails.\n\tCreateSubscription(ctx context.Context, t driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error)\n\n\t// MakeNonexistentSubscription makes a driver.Subscription referencing a\n\t// subscription that does not exist.\n\tMakeNonexistentSubscription(ctx context.Context) (ds driver.Subscription, cleanup func(), err error)\n\n\t// Close closes resources used by the harness, but does not call Close\n\t// on the Topics and Subscriptions generated by the Harness.\n\tClose()\n\n\t// MaxBatchSizes returns the maximum size of SendBatch/Send(Na|A)cks, or 0\n\t// if there's no max.\n\tMaxBatchSizes() (int, int)\n\n\t// SupportsMultipleSubscriptions reports whether the driver supports\n\t// multiple subscriptions for the same topic.\n\tSupportsMultipleSubscriptions() bool\n}\n\n// HarnessMaker describes functions that construct a harness for running tests.\n// It is called exactly once per test; Harness.Close() will be called when the test is complete.\ntype HarnessMaker func(ctx context.Context, t *testing.T) (Harness, error)\n\n// AsTest represents a test of As functionality.\n// The conformance test:\n// 1. Calls TopicCheck.\n// 2. Calls SubscriptionCheck.\n// 3. Sends a message, setting Message.BeforeSend to BeforeSend\n//\n//\tand Message.AfterSend to AfterSend.\n//\n// 4. Receives the message and calls MessageCheck.\n// 5. Calls TopicErrorCheck.\n// 6. Calls SubscriptionErrorCheck.\ntype AsTest interface {\n\t// Name should return a descriptive name for the test.\n\tName() string\n\t// TopicCheck will be called to allow verifcation of Topic.As.\n\tTopicCheck(t *pubsub.Topic) error\n\t// SubscriptionCheck will be called to allow verification of Subscription.As.\n\tSubscriptionCheck(s *pubsub.Subscription) error\n\t// TopicErrorCheck will be called to allow verification of Topic.ErrorAs.\n\t// The error will be the one returned from SendBatch when called with\n\t// a non-existent topic.\n\tTopicErrorCheck(t *pubsub.Topic, err error) error\n\t// SubscriptionErrorCheck will be called to allow verification of\n\t// Subscription.ErrorAs.\n\t// The error will be the one returned from ReceiveBatch when called with\n\t// a non-existent subscription.\n\tSubscriptionErrorCheck(s *pubsub.Subscription, err error) error\n\t// MessageCheck will be called to allow verification of Message.As.\n\tMessageCheck(m *pubsub.Message) error\n\t// BeforeSend will be used as Message.BeforeSend as part of sending a test\n\t// message.\n\tBeforeSend(as func(any) bool) error\n\t// AfterSend will be used as Message.AfterSend as part of sending a test\n\t// message.\n\tAfterSend(as func(any) bool) error\n}\n\n// Many tests set the maximum batch size to 1 to make record/replay stable.\nvar batchSizeOne = &batcher.Options{MaxBatchSize: 1, MaxHandlers: 1}\n\ntype verifyAsFailsOnNil struct{}\n\nfunc (verifyAsFailsOnNil) Name() string {\n\treturn \"verify As returns false when passed nil\"\n}\n\nfunc (verifyAsFailsOnNil) TopicCheck(t *pubsub.Topic) error {\n\tif t.As(nil) {\n\t\treturn errors.New(\"want Topic.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) SubscriptionCheck(s *pubsub.Subscription) error {\n\tif s.As(nil) {\n\t\treturn errors.New(\"want Subscription.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) TopicErrorCheck(t *pubsub.Topic, err error) (ret error) {\n\tdefer func() {\n\t\tif recover() == nil {\n\t\t\tret = errors.New(\"want Topic.ErrorAs to panic when passed nil\")\n\t\t}\n\t}()\n\tt.ErrorAs(err, nil)\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) SubscriptionErrorCheck(s *pubsub.Subscription, err error) (ret error) {\n\tdefer func() {\n\t\tif recover() == nil {\n\t\t\tret = errors.New(\"want Subscription.ErrorAs to panic when passed nil\")\n\t\t}\n\t}()\n\ts.ErrorAs(err, nil)\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) MessageCheck(m *pubsub.Message) error {\n\tif m.As(nil) {\n\t\treturn errors.New(\"want Message.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) BeforeSend(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want Message.BeforeSend's As function to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) AfterSend(as func(any) bool) error {\n\tif as(nil) {\n\t\treturn errors.New(\"want Message.AfterSend's As function to return false when passed nil\")\n\t}\n\treturn nil\n}\n\n// RunConformanceTests runs conformance tests for driver implementations of pubsub.\nfunc RunConformanceTests(t *testing.T, newHarness HarnessMaker, asTests []AsTest) {\n\tt.Helper()\n\n\ttests := map[string]func(t *testing.T, newHarness HarnessMaker){\n\t\t\"TestSendReceive\":                          testSendReceive,\n\t\t\"TestSendReceiveTwo\":                       testSendReceiveTwo,\n\t\t\"TestSendReceiveJSON\":                      testSendReceiveJSON,\n\t\t\"TestNack\":                                 testNack,\n\t\t\"TestBatching\":                             testBatching,\n\t\t\"TestDoubleAck\":                            testDoubleAck,\n\t\t\"TestErrorOnSendToClosedTopic\":             testErrorOnSendToClosedTopic,\n\t\t\"TestErrorOnReceiveFromClosedSubscription\": testErrorOnReceiveFromClosedSubscription,\n\t\t\"TestCancelSendReceive\":                    testCancelSendReceive,\n\t\t\"TestNonExistentTopicSucceedsOnOpenButFailsOnSend\":           testNonExistentTopicSucceedsOnOpenButFailsOnSend,\n\t\t\"TestNonExistentSubscriptionSucceedsOnOpenButFailsOnReceive\": testNonExistentSubscriptionSucceedsOnOpenButFailsOnReceive,\n\t\t\"TestMetadata\":           testMetadata,\n\t\t\"TestNonUTF8MessageBody\": testNonUTF8MessageBody,\n\t}\n\tfor name, test := range tests {\n\t\tt.Run(name, func(t *testing.T) { test(t, newHarness) })\n\t}\n\n\tasTests = append(asTests, verifyAsFailsOnNil{})\n\tt.Run(\"TestAs\", func(t *testing.T) {\n\t\tfor _, st := range asTests {\n\t\t\tif st.Name() == \"\" {\n\t\t\t\tt.Fatalf(\"AsTest.Name is required\")\n\t\t\t}\n\t\t\tt.Run(st.Name(), func(t *testing.T) { testAs(t, newHarness, st) })\n\t\t}\n\t})\n}\n\n// RunBenchmarks runs benchmarks for driver implementations of pubsub.\nfunc RunBenchmarks(b *testing.B, topic *pubsub.Topic, sub *pubsub.Subscription) {\n\tb.Helper()\n\n\tb.Run(\"BenchmarkReceive\", func(b *testing.B) {\n\t\tbenchmark(b, topic, sub, false)\n\t})\n\tb.Run(\"BenchmarkSend\", func(b *testing.B) {\n\t\tbenchmark(b, topic, sub, true)\n\t})\n}\n\nfunc testNonExistentTopicSucceedsOnOpenButFailsOnSend(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdt, err := h.MakeNonexistentTopic(ctx)\n\tif err != nil {\n\t\t// Failure shouldn't happen for non-existent topics until messages are sent\n\t\t// to them.\n\t\tt.Fatalf(\"creating a local topic that doesn't exist on the server: %v\", err)\n\t}\n\ttopic := pubsub.NewTopic(dt, nil)\n\tdefer func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\tm := &pubsub.Message{}\n\terr = topic.Send(ctx, m)\n\tif err == nil || gcerrors.Code(err) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v for send to non-existent topic, want code=NotFound\", err)\n\t}\n}\n\nfunc testNonExistentSubscriptionSucceedsOnOpenButFailsOnReceive(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tds, cleanup, err := h.MakeNonexistentSubscription(ctx)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to make non-existent subscription: %v\", err)\n\t}\n\tdefer cleanup()\n\tsub := pubsub.NewSubscription(ds, batchSizeOne, batchSizeOne)\n\tdefer func() {\n\t\tif err := sub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t// The test will hang here if the message isn't available, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\t_, err = sub.Receive(ctx2)\n\tif err == nil || ctx2.Err() != nil || gcerrors.Code(err) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v for receive from non-existent subscription, want code=NotFound\", err)\n\t}\n}\n\nfunc testSendReceive(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\ttopic, sub, cleanup, err := makePair(ctx, t, h)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\twant := publishN(ctx, t, topic, 3)\n\tgot := receiveN(ctx, t, sub, len(want))\n\n\t// Verify LoggableID is set.\n\tfor _, msg := range got {\n\t\tif msg.LoggableID == \"\" {\n\t\t\tt.Errorf(\"msg.LoggableID was empty, should be set\")\n\t\t}\n\t}\n\n\t// Check that the received messages match the sent ones.\n\tif diff := diffMessageSets(got, want); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\n// Receive from two subscriptions to the same topic.\n// Verify both get all the messages.\nfunc testSendReceiveTwo(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tif !h.SupportsMultipleSubscriptions() {\n\t\tt.Skip(\"multiple subscriptions to a topic not supported\")\n\t}\n\n\tdt, cleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\ttopic := pubsub.NewTopic(dt, batchSizeOne)\n\tdefer func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\tvar ss []*pubsub.Subscription\n\tfor range 2 {\n\t\tds, cleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tdefer cleanup()\n\t\ts := pubsub.NewSubscription(ds, batchSizeOne, batchSizeOne)\n\t\tdefer func() {\n\t\t\tif err := s.Shutdown(ctx); err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t}\n\t\t}()\n\t\tss = append(ss, s)\n\t}\n\twant := publishN(ctx, t, topic, 3)\n\tfor i, s := range ss {\n\t\tgot := receiveN(ctx, t, s, len(want))\n\t\tif diff := diffMessageSets(got, want); diff != \"\" {\n\t\t\tt.Errorf(\"sub #%d: %s\", i, diff)\n\t\t}\n\t}\n}\n\nfunc testSendReceiveJSON(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst json = `{\"Foo\": \"Bar\"}`\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\ttopic, sub, cleanup, err := makePair(ctx, t, h)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tsendM := &pubsub.Message{Body: []byte(json)}\n\tif err := topic.Send(ctx, sendM); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\treceiveM, err := sub.Receive(ctx2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\treceiveM.Ack()\n\tif diff := diffMessageSets([]*pubsub.Message{receiveM}, []*pubsub.Message{sendM}); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\nfunc testNack(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst nMessages = 2\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdt, topicCleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer topicCleanup()\n\tds, subCleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer subCleanup()\n\tif !ds.CanNack() {\n\t\tt.Skip(\"Nack not supported\")\n\t}\n\ttopic := pubsub.NewTopic(dt, batchSizeOne)\n\tdefer func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tsub := pubsub.NewSubscription(ds, batchSizeOne, batchSizeOne)\n\tdefer func() {\n\t\tif err := sub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\twant := publishN(ctx, t, topic, nMessages)\n\n\t// Get the messages, but nack them.\n\t// Make sure to nack after receiving all of them; otherwise, we could\n\t// receive one of the messages twice instead of receiving all nMessages.\n\t// The test will hang here if the messages aren't redelivered, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tvar got []*pubsub.Message\n\tfor range nMessages {\n\t\tm, err := sub.Receive(ctx2)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot = append(got, m)\n\t}\n\tfor _, m := range got {\n\t\tm.Nack()\n\t}\n\t// Check that the received messages match the sent ones.\n\tif diff := diffMessageSets(got, want); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n\t// The test will hang here if the messages aren't redelivered, so use a shorter timeout.\n\tctx2, cancel = context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\n\tgot = nil\n\tfor range nMessages {\n\t\tm, err := sub.Receive(ctx2)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot = append(got, m)\n\t\tm.Ack()\n\t}\n\tif diff := diffMessageSets(got, want); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\nfunc testBatching(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst nMessages = 12 // must be divisible by 2\n\tconst batchSize = nMessages / 2\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tmaxSendBatch, maxAckBatch := h.MaxBatchSizes()\n\n\tdt, topicCleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer topicCleanup()\n\tds, subCleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer subCleanup()\n\n\tsendBatchOpts := &batcher.Options{MinBatchSize: batchSize, MaxBatchSize: batchSize}\n\t// If the driver doesn't support batchSize batches, fall back to size 1.\n\tif maxSendBatch != 0 && batchSize > maxSendBatch {\n\t\tsendBatchOpts = batchSizeOne\n\t}\n\ttopic := pubsub.NewTopic(dt, sendBatchOpts)\n\tdefer func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tackBatchOpts := &batcher.Options{MinBatchSize: batchSize, MaxBatchSize: batchSize}\n\t// If the driver doesn't support batchSize batches, fall back to size 1.\n\tif maxAckBatch != 0 && batchSize > maxAckBatch {\n\t\tackBatchOpts = batchSizeOne\n\t}\n\tsub := pubsub.NewSubscription(ds, batchSizeOne, ackBatchOpts)\n\tdefer func() {\n\t\tif err := sub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t// Publish nMessages. We have to do them asynchronously because topic.Send\n\t// blocks until the message is sent, and these messages won't be sent until\n\t// all batchSize are queued.\n\t// Note: this test uses the same Body for each message, because the order\n\t// that they appear in the SendBatch is not stable.\n\tgr, grctx := errgroup.WithContext(ctx)\n\tvar want []*pubsub.Message\n\tfor range nMessages {\n\t\tm := &pubsub.Message{Body: []byte(\"hello world\")}\n\t\twant = append(want, m)\n\t\tgr.Go(func() error { return topic.Send(grctx, m) })\n\t}\n\tif err := gr.Wait(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Get the messages.\n\t// The test will hang here if the messages aren't delivered, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tvar got []*pubsub.Message\n\tfor range nMessages {\n\t\tm, err := sub.Receive(ctx2)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot = append(got, m)\n\t\tm.Ack()\n\t}\n\tif diff := diffMessageSets(got, want); diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\nfunc testDoubleAck(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tdt, topicCleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer topicCleanup()\n\tds, subCleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer subCleanup()\n\n\t// Publish 3 messages.\n\tfor i := range 3 {\n\t\terr := dt.SendBatch(ctx, []*driver.Message{{Body: []byte(strconv.Itoa(i))}})\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\t// Retrieve the messages.\n\t// The test will hang here if the messages aren't delivered, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tvar dms []*driver.Message\n\tfor len(dms) != 3 {\n\t\tcurdms, err := ds.ReceiveBatch(ctx2, 3)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif err := ctx2.Err(); err != nil {\n\t\t\tt.Fatalf(\"never received expected messages: %v\", err)\n\t\t}\n\t\tdms = append(dms, curdms...)\n\t}\n\n\t// Ack the first two messages.\n\terr = ds.SendAcks(ctx, []driver.AckID{dms[0].AckID, dms[1].AckID})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Ack them again; this should succeed even though we've acked them before.\n\t// If services return an error for this, drivers should drop them.\n\terr = ds.SendAcks(ctx, []driver.AckID{dms[0].AckID, dms[1].AckID})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif !ds.CanNack() {\n\t\treturn\n\t}\n\n\t// Nack all 3 messages. This should also succeed, and the nack of the third\n\t// message should take effect, so we should be able to fetch it again.\n\t// Note that the other messages *may* also be re-sent, because we're nacking\n\t// them here (even though we acked them earlier); it depends on service\n\t// semantics and time-sensitivity.\n\terr = ds.SendNacks(ctx, []driver.AckID{dms[0].AckID, dms[1].AckID, dms[2].AckID})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// The test will hang here if the message isn't redelivered, so use a shorter timeout.\n\tctx2, cancel = context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\n\t// We're looking to re-receive dms[2].\nLoop:\n\tfor {\n\t\tcurdms, err := ds.ReceiveBatch(ctx2, 1)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tfor _, curdm := range curdms {\n\t\t\tif bytes.Equal(curdm.Body, dms[2].Body) {\n\t\t\t\t// Found it!\n\t\t\t\tbreak Loop\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Publish n different messages to the topic. Return the messages.\nfunc publishN(ctx context.Context, t *testing.T, topic *pubsub.Topic, n int) []*pubsub.Message {\n\tt.Helper()\n\n\tvar ms []*pubsub.Message\n\tfor i := range n {\n\t\tm := &pubsub.Message{\n\t\t\tBody:     []byte(strconv.Itoa(i)),\n\t\t\tMetadata: map[string]string{\"a\": strconv.Itoa(i)},\n\t\t}\n\t\tif err := topic.Send(ctx, m); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tms = append(ms, m)\n\t}\n\treturn ms\n}\n\n// Receive and ack n messages from sub.\nfunc receiveN(ctx context.Context, t *testing.T, sub *pubsub.Subscription, n int) []*pubsub.Message {\n\tt.Helper()\n\n\t// The test will hang here if the message(s) aren't available, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tvar ms []*pubsub.Message\n\tfor range n {\n\t\tm, err := sub.Receive(ctx2)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tms = append(ms, m)\n\t\tm.Ack()\n\t}\n\treturn ms\n}\n\n// Find the differences between two sets of messages.\nfunc diffMessageSets(got, want []*pubsub.Message) string {\n\tfor _, m := range got {\n\t\tm.LoggableID = \"\"\n\t}\n\tless := func(x, y *pubsub.Message) bool { return bytes.Compare(x.Body, y.Body) < 0 }\n\treturn cmp.Diff(got, want, cmpopts.SortSlices(less), cmpopts.IgnoreUnexported(pubsub.Message{}))\n}\n\nfunc testErrorOnSendToClosedTopic(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdt, cleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\ttopic := pubsub.NewTopic(dt, batchSizeOne)\n\tif err := topic.Shutdown(ctx); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Check that sending to the closed topic fails.\n\tm := &pubsub.Message{}\n\tif err := topic.Send(ctx, m); err == nil {\n\t\tt.Error(\"topic.Send returned nil, want error\")\n\t}\n\tif err := topic.Shutdown(ctx); err == nil {\n\t\tt.Error(\"wanted error on double Shutdown\")\n\t}\n}\n\nfunc testErrorOnReceiveFromClosedSubscription(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\tdt, cleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tds, cleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tsub := pubsub.NewSubscription(ds, batchSizeOne, batchSizeOne)\n\tif err := sub.Shutdown(ctx); err != nil {\n\t\tt.Error(err)\n\t}\n\tif _, err = sub.Receive(ctx); err == nil {\n\t\tt.Error(\"sub.Receive returned nil, want error\")\n\t}\n\tif err := sub.Shutdown(ctx); err == nil {\n\t\tt.Error(\"wanted error on double Shutdown\")\n\t}\n}\n\nfunc testCancelSendReceive(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\ttopic, sub, cleanup, err := makePair(ctx, t, h)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tctx, cancel := context.WithCancel(ctx)\n\tcancel()\n\n\tm := &pubsub.Message{}\n\tif err := topic.Send(ctx, m); !isCanceled(err) {\n\t\tt.Errorf(\"topic.Send returned %v (%T), want context.Canceled\", err, err)\n\t}\n\tif _, err := sub.Receive(ctx); !isCanceled(err) {\n\t\tt.Errorf(\"sub.Receive returned %v (%T), want context.Canceled\", err, err)\n\t}\n\n\t// It would be nice to add a test that cancels an in-flight blocking Receive.\n\t// However, because pubsub.Subscription.Receive repeatedly calls\n\t// driver.ReceiveBatch if it returns 0 messages, it's difficult to write\n\t// such a test without it being flaky for drivers with record/replay\n\t// (the number of times driver.ReceiveBatch is called is timing-dependent).\n}\n\nfunc testMetadata(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\t// Some services limit the number of metadata per message.\n\t// Sort the escape.WeirdStrings values for record/replay consistency,\n\t// then break the weird strings up into groups of at most maxMetadataKeys.\n\tconst maxMetadataKeys = 10\n\tvar weirdStrings []string\n\tfor _, v := range escape.WeirdStrings {\n\t\tweirdStrings = append(weirdStrings, v)\n\t}\n\tslices.Sort(weirdStrings)\n\n\tweirdMetaDataGroups := []map[string]string{{}}\n\ti := 0\n\tfor _, k := range weirdStrings {\n\t\tweirdMetaDataGroups[i][k] = k\n\t\tif len(weirdMetaDataGroups[i]) == maxMetadataKeys {\n\t\t\tweirdMetaDataGroups = append(weirdMetaDataGroups, map[string]string{})\n\t\t\ti++\n\t\t}\n\t}\n\n\ttopic, sub, cleanup, err := makePair(ctx, t, h)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tfor _, wm := range weirdMetaDataGroups {\n\t\tm := &pubsub.Message{\n\t\t\tBody:     []byte(\"hello world\"),\n\t\t\tMetadata: wm,\n\t\t}\n\t\tif err := topic.Send(ctx, m); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\t// The test will hang here if the messages aren't delivered, so use a shorter timeout.\n\t\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\t\tdefer cancel()\n\t\tm, err = sub.Receive(ctx2)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tm.Ack()\n\n\t\tif diff := cmp.Diff(m.Metadata, wm); diff != \"\" {\n\t\t\tt.Fatalf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", m.Metadata, wm, diff)\n\t\t}\n\t}\n\n\t// Verify that non-UTF8 strings in metadata key or value fail.\n\tm := &pubsub.Message{\n\t\tBody:     []byte(\"hello world\"),\n\t\tMetadata: map[string]string{escape.NonUTF8String: \"bar\"},\n\t}\n\tif err := topic.Send(ctx, m); err == nil {\n\t\tt.Error(\"got nil error, expected error for using non-UTF8 string as metadata key\")\n\t}\n\tm.Metadata = map[string]string{\"foo\": escape.NonUTF8String}\n\tif err := topic.Send(ctx, m); err == nil {\n\t\tt.Error(\"got nil error, expected error for using non-UTF8 string as metadata value\")\n\t}\n}\n\nfunc testNonUTF8MessageBody(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\t// Set up.\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\n\ttopic, sub, cleanup, err := makePair(ctx, t, h)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Sort the WeirdStrings map for record/replay consistency.\n\tvar weirdStrings [][]string // [0] = key, [1] = value\n\tfor k, v := range escape.WeirdStrings {\n\t\tweirdStrings = append(weirdStrings, []string{k, v})\n\t}\n\tsort.Slice(weirdStrings, func(i, j int) bool { return weirdStrings[i][0] < weirdStrings[j][0] })\n\n\t// Construct a message body with the weird strings and some non-UTF-8 bytes.\n\tvar body []byte\n\tfor _, v := range weirdStrings {\n\t\tbody = append(body, []byte(v[1])...)\n\t}\n\tbody = append(body, []byte(escape.NonUTF8String)...)\n\tm := &pubsub.Message{Body: body}\n\n\tif err := topic.Send(ctx, m); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// The test will hang here if the messages aren't delivered, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tm, err = sub.Receive(ctx2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm.Ack()\n\n\tif diff := cmp.Diff(m.Body, body); diff != \"\" {\n\t\tt.Fatalf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%s\", m.Body, body, diff)\n\t}\n}\n\nfunc isCanceled(err error) bool {\n\tif err == context.Canceled {\n\t\treturn true\n\t}\n\tif cerr, ok := err.(*retry.ContextError); ok {\n\t\treturn cerr.CtxErr == context.Canceled\n\t}\n\treturn gcerrors.Code(err) == gcerrors.Canceled\n}\n\nfunc makePair(ctx context.Context, t *testing.T, h Harness) (*pubsub.Topic, *pubsub.Subscription, func(), error) {\n\tt.Helper()\n\n\tdt, topicCleanup, err := h.CreateTopic(ctx, t.Name())\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\tds, subCleanup, err := h.CreateSubscription(ctx, dt, t.Name())\n\tif err != nil {\n\t\ttopicCleanup()\n\t\treturn nil, nil, nil, err\n\t}\n\ttopic := pubsub.NewTopic(dt, batchSizeOne)\n\tsub := pubsub.NewSubscription(ds, batchSizeOne, batchSizeOne)\n\tcleanup := func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t\tif err := sub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t\tsubCleanup()\n\t\ttopicCleanup()\n\t}\n\treturn topic, sub, cleanup, nil\n}\n\n// testAs tests the various As functions, using AsTest.\nfunc testAs(t *testing.T, newHarness HarnessMaker, st AsTest) {\n\tt.Helper()\n\n\tctx := context.Background()\n\th, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\ttopic, sub, cleanup, err := makePair(ctx, t, h)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tif err := st.TopicCheck(topic); err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif err := st.SubscriptionCheck(sub); err != nil {\n\t\tt.Error(err)\n\t}\n\n\tmsg := &pubsub.Message{\n\t\tBody:       []byte(\"x\"),\n\t\tBeforeSend: st.BeforeSend,\n\t\tAfterSend:  st.AfterSend,\n\t}\n\tif err := topic.Send(ctx, msg); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// The test will hang here if the messages aren't delivered, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tm, err := sub.Receive(ctx2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := st.MessageCheck(m); err != nil {\n\t\tt.Error(err)\n\t}\n\tm.Ack()\n\n\t// Make a nonexistent topic and try to to send on it, to get an error we can\n\t// use to call TopicErrorCheck.\n\tdt, err := h.MakeNonexistentTopic(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tnonexistentTopic := pubsub.NewTopic(dt, batchSizeOne)\n\tdefer func() {\n\t\tif err := nonexistentTopic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\t// The test will hang here if Send doesn't fail quickly, so set a shorter timeout.\n\tctx2, cancel = context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\ttopicErr := nonexistentTopic.Send(ctx2, &pubsub.Message{})\n\tif topicErr == nil || gcerrors.Code(topicErr) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v sending to nonexistent topic, want Code=NotFound\", topicErr)\n\t} else if err := st.TopicErrorCheck(topic, topicErr); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Make a nonexistent subscription and try to receive from it, to get an error\n\t// we can use to call SubscriptionErrorCheck.\n\tds, cleanup, err := h.MakeNonexistentSubscription(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\tnonExistentSub := pubsub.NewSubscription(ds, batchSizeOne, batchSizeOne)\n\tdefer func() {\n\t\tif err := nonExistentSub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t// The test will hang here if Receive doesn't fail quickly, so set a shorter timeout.\n\tctx2, cancel = context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\t_, subErr := nonExistentSub.Receive(ctx2)\n\tif subErr == nil || ctx2.Err() != nil || gcerrors.Code(subErr) != gcerrors.NotFound {\n\t\tt.Errorf(\"got error %v receiving from nonexistent subscription, want Code=NotFound\", subErr)\n\t} else if err := st.SubscriptionErrorCheck(nonExistentSub, subErr); err != nil {\n\t\tt.Error(err)\n\t}\n}\n\n// Publishes a large number of messages to topic concurrently, and then times\n// how long it takes to send (if timeSend is true) or receive (if timeSend\n// is false) them all.\nfunc benchmark(b *testing.B, topic *pubsub.Topic, sub *pubsub.Subscription, timeSend bool) {\n\tb.Helper()\n\n\tattrs := map[string]string{\"label\": \"value\"}\n\tbody := []byte(\"hello, world\")\n\tconst (\n\t\tnMessages          = 10000\n\t\tconcurrencySend    = 100\n\t\tconcurrencyReceive = 100\n\t)\n\tif nMessages%concurrencySend != 0 || nMessages%concurrencyReceive != 0 {\n\t\tb.Fatal(\"nMessages must be divisible by # of sending/receiving goroutines\")\n\t}\n\tb.ResetTimer()\n\tfor i := 0; i < b.N; i++ {\n\t\tif !timeSend {\n\t\t\tb.StopTimer()\n\t\t}\n\t\tif err := publishNConcurrently(topic, nMessages, concurrencySend, attrs, body); err != nil {\n\t\t\tb.Fatalf(\"publishing: %v\", err)\n\t\t}\n\t\tb.Logf(\"published %d messages\", nMessages)\n\t\tif timeSend {\n\t\t\tb.StopTimer()\n\t\t} else {\n\t\t\tb.StartTimer()\n\t\t}\n\t\tif err := receiveNConcurrently(sub, nMessages, concurrencyReceive); err != nil {\n\t\t\tb.Fatalf(\"receiving: %v\", err)\n\t\t}\n\t\tb.SetBytes(nMessages * 1e6)\n\t\tif timeSend {\n\t\t\tb.Log(\"MB/s is actually number of messages sent per second\")\n\t\t} else {\n\t\t\tb.Log(\"MB/s is actually number of messages received per second\")\n\t\t}\n\t\tif timeSend {\n\t\t\tb.StartTimer()\n\t\t}\n\t}\n}\n\nfunc publishNConcurrently(topic *pubsub.Topic, nMessages, nGoroutines int, attrs map[string]string, body []byte) error {\n\treturn runConcurrently(nMessages, nGoroutines, func(ctx context.Context) error {\n\t\treturn topic.Send(ctx, &pubsub.Message{Metadata: attrs, Body: body})\n\t})\n}\n\nfunc receiveNConcurrently(sub *pubsub.Subscription, nMessages, nGoroutines int) error {\n\treturn runConcurrently(nMessages, nGoroutines, func(ctx context.Context) error {\n\t\tm, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tm.Ack()\n\t\treturn nil\n\t})\n}\n\n// Call function f n times concurrently, using g goroutines. g must divide n.\n// Wait until all calls complete. If any fail, cancel the remaining ones.\nfunc runConcurrently(n, g int, f func(context.Context) error) error {\n\tgr, ctx := errgroup.WithContext(context.Background())\n\tng := n / g\n\tfor range g {\n\t\tgr.Go(func() error {\n\t\t\tfor range ng {\n\t\t\t\tif err := f(ctx); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t})\n\t}\n\treturn gr.Wait()\n}\n"
  },
  {
    "path": "pubsub/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage pubsub_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/pubsub\"\n\n\tpbraw \"cloud.google.com/go/pubsub/apiv1\"\n\tpbapi \"cloud.google.com/go/pubsub/apiv1/pubsubpb\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc ExampleTopic_Send() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar topic *pubsub.Topic\n\n\terr := topic.Send(ctx, &pubsub.Message{\n\t\tBody: []byte(\"Hello, World!\\n\"),\n\t\t// Metadata is optional and can be nil.\n\t\tMetadata: map[string]string{\n\t\t\t// These are examples of metadata.\n\t\t\t// There is nothing special about the key names.\n\t\t\t\"language\":   \"en\",\n\t\t\t\"importance\": \"high\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc ExampleSubscription_Receive() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar subscription *pubsub.Subscription\n\n\t// Loop on received messages.\n\tfor {\n\t\tmsg, err := subscription.Receive(ctx)\n\t\tif err != nil {\n\t\t\t// Errors from Receive indicate that Receive will no longer succeed.\n\t\t\tlog.Printf(\"Receiving message: %v\", err)\n\t\t\tbreak\n\t\t}\n\t\t// Do work based on the message, for example:\n\t\tfmt.Printf(\"Got message: %q\\n\", msg.Body)\n\t\t// Messages must always be acknowledged with Ack.\n\t\tmsg.Ack()\n\t}\n}\n\nfunc ExampleSubscription_Receive_concurrent() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar subscription *pubsub.Subscription\n\n\t// Loop on received messages. We can use a channel as a semaphore to limit how\n\t// many goroutines we have active at a time as well as wait on the goroutines\n\t// to finish before exiting.\n\tconst maxHandlers = 10\n\tsem := make(chan struct{}, maxHandlers)\nrecvLoop:\n\tfor {\n\t\tmsg, err := subscription.Receive(ctx)\n\t\tif err != nil {\n\t\t\t// Errors from Receive indicate that Receive will no longer succeed.\n\t\t\tlog.Printf(\"Receiving message: %v\", err)\n\t\t\tbreak\n\t\t}\n\n\t\t// Wait if there are too many active handle goroutines and acquire the\n\t\t// semaphore. If the context is canceled, stop waiting and start shutting\n\t\t// down.\n\t\tselect {\n\t\tcase sem <- struct{}{}:\n\t\tcase <-ctx.Done():\n\t\t\tbreak recvLoop\n\t\t}\n\n\t\t// Handle the message in a new goroutine.\n\t\tgo func() {\n\t\t\tdefer func() { <-sem }() // Release the semaphore.\n\t\t\tdefer msg.Ack()          // Messages must always be acknowledged with Ack.\n\n\t\t\t// Do work based on the message, for example:\n\t\t\tfmt.Printf(\"Got message: %q\\n\", msg.Body)\n\t\t}()\n\t}\n\n\t// We're no longer receiving messages. Wait to finish handling any\n\t// unacknowledged messages by totally acquiring the semaphore.\n\tfor range maxHandlers {\n\t\tsem <- struct{}{}\n\t}\n}\n\nfunc ExampleMessage_As() {\n\t// This example is specific to the gcppubsub implementation; it demonstrates\n\t// access to the underlying PubsubMessage type.\n\t// The types exposed for As by gcppubsub are documented in\n\t// https://godoc.org/gocloud.dev/pubsub/gcppubsub#hdr-As\n\n\tctx := context.Background()\n\tsub, err := pubsub.OpenSubscription(ctx, \"gcppubsub://project/topic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\n\tmsg, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tvar pm *pbapi.PubsubMessage\n\tif msg.As(&pm) {\n\t\t_ = pm.GetAttributes()\n\t}\n\tmsg.Ack()\n}\n\nfunc ExampleSubscription_As() {\n\t// This example is specific to the gcppubsub implementation; it demonstrates\n\t// access to the underlying SubscriberClient type.\n\t// The types exposed for As by gcppubsub are documented in\n\t// https://godoc.org/gocloud.dev/pubsub/gcppubsub#hdr-As\n\n\tctx := context.Background()\n\tsub, err := pubsub.OpenSubscription(ctx, \"gcppubsub://project/topic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\n\tvar sc *pbraw.SubscriberClient\n\tif sub.As(&sc) {\n\t\t_ = sc.CallOptions\n\t}\n}\n\nfunc ExampleSubscription_ErrorAs() {\n\t// This example is specific to the gcppubsub implementation; it demonstrates\n\t// access to the underlying Status type.\n\t// The types exposed for As by gcppubsub are documented in\n\t// https://godoc.org/gocloud.dev/pubsub/gcppubsub#hdr-As\n\n\tctx := context.Background()\n\tsub, err := pubsub.OpenSubscription(ctx, \"gcppubsub://project/badtopic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\n\tmsg, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tvar s *status.Status\n\t\tif sub.ErrorAs(err, &s) {\n\t\t\t_ = s.Code()\n\t\t}\n\t\tlog.Fatal(err)\n\t}\n\tmsg.Ack()\n}\n\nfunc ExampleTopic_As() {\n\t// This example is specific to the gcppubsub implementation; it demonstrates\n\t// access to the underlying PublisherClient type.\n\t// The types exposed for As by gcppubsub are documented in\n\t// https://godoc.org/gocloud.dev/pubsub/gcppubsub#hdr-As\n\n\tctx := context.Background()\n\ttopic, err := pubsub.OpenTopic(ctx, \"gcppubsub://project/topic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\n\tvar pc *pbraw.PublisherClient\n\tif topic.As(&pc) {\n\t\t_ = pc\n\t}\n}\n\nfunc ExampleTopic_ErrorAs() {\n\t// This example is specific to the gcppubsub implementation; it demonstrates\n\t// access to the underlying Status type.\n\t// The types exposed for As by gcppubsub are documented in\n\t// https://godoc.org/gocloud.dev/pubsub/gcppubsub#hdr-As\n\n\tctx := context.Background()\n\ttopic, err := pubsub.OpenTopic(ctx, \"gcppubsub://project/topic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\n\terr = topic.Send(ctx, &pubsub.Message{Body: []byte(\"hello\")})\n\tif err != nil {\n\t\tvar s *status.Status\n\t\tif topic.ErrorAs(err, &s) {\n\t\t\t_ = s.Code()\n\t\t}\n\t\tlog.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "pubsub/gcppubsub/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcppubsub_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/gcppubsub\"\n\n\traw \"cloud.google.com/go/pubsub/apiv1\"\n\tpb \"cloud.google.com/go/pubsub/apiv1/pubsubpb\"\n)\n\nfunc ExampleOpenTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// Open a gRPC connection to the GCP Pub/Sub API.\n\tconn, cleanup, err := gcppubsub.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Construct a PublisherClient using the connection.\n\tpubClient, err := gcppubsub.PublisherClient(ctx, conn)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer pubClient.Close()\n\n\t// Construct a *pubsub.Topic.\n\ttopic, err := gcppubsub.OpenTopicByPath(pubClient, \"projects/myprojectID/topics/example-topic\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/gcppubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\ttopic, err := pubsub.OpenTopic(ctx, \"gcppubsub://projects/myproject/topics/mytopic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Open a gRPC connection to the GCP Pub/Sub API.\n\tconn, cleanup, err := gcppubsub.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Construct a SubscriberClient using the connection.\n\tsubClient, err := gcppubsub.SubscriberClient(ctx, conn)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subClient.Close()\n\n\t// Construct a *pubsub.Subscription.\n\tsubscription, err := gcppubsub.OpenSubscriptionByPath(\n\t\tsubClient, \"projects/myprojectID/subscriptions/example-subscription\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_extendingAckDeadline() {\n\tctx := context.Background()\n\n\t// Construct a *pubsub.Subscription, in this example using a URL.\n\tconst subName = \"projects/myprojectID/subscriptions/example-subscription\"\n\tsubscription, err := pubsub.OpenSubscription(ctx, \"gcppubsub://\"+subName)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n\n\t// Get the underlying SubscriberClient. If you used the constructor to create\n\t// the subscription (e.g., gcppubsub.OpenSubscriptionByPath), you may already\n\t// have the client.\n\tvar client *raw.SubscriberClient\n\tif !subscription.As(&client) {\n\t\tlog.Fatal(\"Couldn't get SubscriberClient using As\")\n\t}\n\n\t// Now assume you've got a message, and processing is going to take a long time;\n\t// you want to extend the default Ack deadline.\n\tmsg, err := subscription.Receive(ctx)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to receive message: %v\", err)\n\t}\n\n\t// Get the underlying ReceivedMessage.\n\tvar rm *pb.ReceivedMessage\n\tif !msg.As(&rm) {\n\t\tlog.Fatal(\"Couldn't get ReceivedMessage using As\")\n\t}\n\n\t// Call ModifyAckDeadline.\n\tif err := client.ModifyAckDeadline(ctx, &pb.ModifyAckDeadlineRequest{\n\t\tSubscription:       subName,\n\t\tAckIds:             []string{rm.AckId},\n\t\tAckDeadlineSeconds: 30 * 60, // 30m, or whatever you need\n\t}); err != nil {\n\t\tlog.Fatalf(\"Failed to ModifyAckDeadline: %v\", err)\n\t}\n\t// ... eventually Ack the message.\n\tmsg.Ack()\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/gcppubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tsubscription, err := pubsub.OpenSubscription(ctx,\n\t\t\"gcppubsub://projects/my-project/subscriptions/my-subscription\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/gcppubsub/gcppubsub.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcppubsub provides a pubsub implementation that uses GCP\n// PubSub. Use OpenTopic to construct a *pubsub.Topic, and/or OpenSubscription\n// to construct a *pubsub.Subscription.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, gcppubsub registers\n// for the scheme \"gcppubsub\".\n// The default URL opener will creating a connection using use default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// GCP Pub/Sub emulator is supported as per https://cloud.google.com/pubsub/docs/emulator\n// So, when environment variable 'PUBSUB_EMULATOR_HOST' is set\n// driver connects to the specified emulator host by default.\n//\n// # Message Delivery Semantics\n//\n// GCP Pub/Sub supports at-least-once semantics; applications must\n// call Message.Ack after processing a message, or it will be redelivered.\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # As\n//\n// gcppubsub exposes the following types for As:\n//   - Topic: *raw.PublisherClient\n//   - Subscription: *raw.SubscriberClient\n//   - Message.BeforeSend: *pb.PubsubMessage\n//   - Message.AfterSend: *string for the pb.PublishResponse.MessageIds entry corresponding to the message.\n//   - Message: *pb.PubsubMessage, *pb.ReceivedMessage\n//   - Error: *google.golang.org/grpc/status.Status\npackage gcppubsub // import \"gocloud.dev/pubsub/gcppubsub\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\traw \"cloud.google.com/go/pubsub/apiv1\"\n\tpb \"cloud.google.com/go/pubsub/apiv1/pubsubpb\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\t\"google.golang.org/grpc/credentials/oauth\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar endPoint = \"pubsub.googleapis.com:443\"\n\nvar sendBatcherOpts = &batcher.Options{\n\tMaxBatchSize: 1000, // The PubSub service limits the number of messages in a single Publish RPC\n\tMaxHandlers:  2,\n\t// The PubSub service limits the size of the request body in a single Publish RPC.\n\t// The limit is currently documented as \"10MB (total size)\" and \"10MB (data field)\" per message.\n\t// We are enforcing 9MiB to give ourselves some headroom for message attributes since those\n\t// are currently not considered when computing the byte size of a message.\n\tMaxBatchByteSize: 9 * 1024 * 1024,\n}\n\nvar defaultRecvBatcherOpts = &batcher.Options{\n\t// GCP Pub/Sub returns at most 1000 messages per RPC.\n\tMaxBatchSize: 1000,\n\tMaxHandlers:  10,\n}\n\nvar ackBatcherOpts = &batcher.Options{\n\t// The PubSub service limits the size of Acknowledge/ModifyAckDeadline RPCs.\n\t// (E.g., \"Request payload size exceeds the limit: 524288 bytes.\").\n\tMaxBatchSize: 1000,\n\tMaxHandlers:  2,\n}\n\nfunc init() {\n\to := new(lazyCredsOpener)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, o)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, o)\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\tPublisherClient,\n\tSubscriberClient,\n\twire.Struct(new(SubscriptionOptions)),\n\twire.Struct(new(TopicOptions)),\n\twire.Struct(new(URLOpener), \"Conn\", \"TopicOptions\", \"SubscriptionOptions\"),\n)\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenTopicURL/OpenSubscriptionURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) defaultConn(ctx context.Context) (*URLOpener, error) {\n\to.init.Do(func() {\n\t\tvar conn *grpc.ClientConn\n\t\tvar err error\n\t\tif e := os.Getenv(\"PUBSUB_EMULATOR_HOST\"); e != \"\" {\n\t\t\t// Connect to the GCP pubsub emulator by overriding the default endpoint\n\t\t\t// if the 'PUBSUB_EMULATOR_HOST' environment variable is set.\n\t\t\t// Check https://cloud.google.com/pubsub/docs/emulator for more info.\n\t\t\tendPoint = e\n\t\t\tconn, err = dialEmulator(ctx, e)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\t\t} else {\n\t\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconn, _, err = Dial(ctx, creds.TokenSource)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\to.opener = &URLOpener{Conn: conn}\n\t})\n\treturn o.opener, o.err\n}\n\nfunc (o *lazyCredsOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topener, err := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: failed to open default connection: %v\", u, err)\n\t}\n\treturn opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *lazyCredsOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topener, err := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: failed to open default connection: %v\", u, err)\n\t}\n\treturn opener.OpenSubscriptionURL(ctx, u)\n}\n\n// Scheme is the URL scheme gcppubsub registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"gcppubsub\"\n\n// URLOpener opens GCP Pub/Sub URLs like \"gcppubsub://projects/myproject/topics/mytopic\" for\n// topics or \"gcppubsub://projects/myproject/subscriptions/mysub\" for subscriptions.\n//\n// The shortened forms \"gcppubsub://myproject/mytopic\" for topics or\n// \"gcppubsub://myproject/mysub\" for subscriptions are also supported.\n//\n// The following query parameters are supported:\n//\n//   - max_recv_batch_size: sets SubscriptionOptions.MaxBatchSize.\n//   - max_send_batch_size: sets TopicOptions.BatcherOptions.MaxBatchSize.\n//   - nacklazy: sets SubscriberOptions.NackLazy. The value must be parseable by `strconv.ParseBool`.\n//\n// Currently their use is limited to subscribers.\ntype URLOpener struct {\n\t// Conn must be set to a non-nil ClientConn authenticated with\n\t// Cloud Pub/Sub scope or equivalent.\n\tConn *grpc.ClientConn\n\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topts := o.TopicOptions\n\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"max_send_batch_size\":\n\t\t\tmaxBatchSize, err := queryParameterInt(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q: %v\", u, param, err)\n\t\t\t}\n\n\t\t\tif maxBatchSize <= 0 || maxBatchSize > 1000 {\n\t\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q: must be between 1 and 1000\", u, param)\n\t\t\t}\n\n\t\t\topts.BatcherOptions.MaxBatchSize = maxBatchSize\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\tpc, err := PublisherClient(ctx, o.Conn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttopicPath := path.Join(u.Host, u.Path)\n\tif topicPathRE.MatchString(topicPath) {\n\t\treturn OpenTopicByPath(pc, topicPath, &opts)\n\t}\n\t// Shortened form?\n\ttopicName := strings.TrimPrefix(u.Path, \"/\")\n\treturn OpenTopic(pc, gcp.ProjectID(u.Host), topicName, &opts), nil\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\t// Set subscription options to use defaults\n\topts := o.SubscriptionOptions\n\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"max_recv_batch_size\":\n\t\t\tmaxBatchSize, err := queryParameterInt(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q: %v\", u, param, err)\n\t\t\t}\n\n\t\t\tif maxBatchSize <= 0 || maxBatchSize > 1000 {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q: must be between 1 and 1000\", u, param)\n\t\t\t}\n\n\t\t\topts.MaxBatchSize = maxBatchSize\n\t\tcase \"nacklazy\":\n\t\t\tvar err error\n\t\t\tnackLazy, err := queryParameterBool(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q: %v\", u, param, err)\n\t\t\t}\n\t\t\topts.NackLazy = nackLazy\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\tsc, err := SubscriberClient(ctx, o.Conn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsubPath := path.Join(u.Host, u.Path)\n\tif subscriptionPathRE.MatchString(subPath) {\n\t\treturn OpenSubscriptionByPath(sc, subPath, &opts)\n\t}\n\t// Shortened form?\n\tsubName := strings.TrimPrefix(u.Path, \"/\")\n\treturn OpenSubscription(sc, gcp.ProjectID(u.Host), subName, &opts), nil\n}\n\ntype topic struct {\n\tpath   string\n\tclient *raw.PublisherClient\n}\n\n// Dial opens a gRPC connection to the GCP Pub Sub API.\n//\n// The second return value is a function that can be called to clean up\n// the connection opened by Dial.\nfunc Dial(ctx context.Context, ts gcp.TokenSource) (*grpc.ClientConn, func(), error) {\n\tconn, err := grpc.DialContext(ctx, endPoint,\n\t\tgrpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, \"\")),\n\t\tgrpc.WithPerRPCCredentials(oauth.TokenSource{TokenSource: ts}),\n\t\t// The default message size limit for gRPC is 4MB, while GCP\n\t\t// PubSub supports messages up to 10MB. Aside from the message itself\n\t\t// there is also other data in the gRPC response, bringing the maximum\n\t\t// response size above 10MB. Tell gRPC to support up to 11MB.\n\t\t// https://github.com/googleapis/google-cloud-node/issues/1991\n\t\tgrpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024*1024*11)),\n\t\tuseragent.GRPCDialOption(\"pubsub\"),\n\t)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn conn, func() { conn.Close() }, nil\n}\n\n// dialEmulator opens a gRPC connection to the GCP Pub Sub API.\nfunc dialEmulator(ctx context.Context, e string) (*grpc.ClientConn, error) {\n\tconn, err := grpc.DialContext(ctx, e,\n\t\tgrpc.WithTransportCredentials(insecure.NewCredentials()),\n\t\tuseragent.GRPCDialOption(\"pubsub\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn conn, nil\n}\n\n// PublisherClient returns a *raw.PublisherClient that can be used in OpenTopic.\nfunc PublisherClient(ctx context.Context, conn *grpc.ClientConn) (*raw.PublisherClient, error) {\n\treturn raw.NewPublisherClient(ctx, option.WithGRPCConn(conn))\n}\n\n// SubscriberClient returns a *raw.SubscriberClient that can be used in OpenSubscription.\nfunc SubscriberClient(ctx context.Context, conn *grpc.ClientConn) (*raw.SubscriberClient, error) {\n\treturn raw.NewSubscriberClient(ctx, option.WithGRPCConn(conn))\n}\n\n// TopicOptions will contain configuration for topics.\ntype TopicOptions struct {\n\t// BatcherOptions adds constraints to the default batching done for sends.\n\tBatcherOptions batcher.Options\n}\n\n// OpenTopic returns a *pubsub.Topic backed by an existing GCP PubSub topic\n// in the given projectID. topicName is the last part of the full topic\n// path, e.g., \"foo\" from \"projects/<projectID>/topic/foo\".\n// See the package documentation for an example.\nfunc OpenTopic(client *raw.PublisherClient, projectID gcp.ProjectID, topicName string, opts *TopicOptions) *pubsub.Topic {\n\ttopicPath := fmt.Sprintf(\"projects/%s/topics/%s\", projectID, topicName)\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tbo := sendBatcherOpts.NewMergedOptions(&opts.BatcherOptions)\n\treturn pubsub.NewTopic(openTopic(client, topicPath), bo)\n}\n\nvar topicPathRE = regexp.MustCompile(\"^projects/.+/topics/.+$\")\n\n// OpenTopicByPath returns a *pubsub.Topic backed by an existing GCP PubSub\n// topic. topicPath must be of the form \"projects/<projectID>/topic/<topic>\".\n// See the package documentation for an example.\nfunc OpenTopicByPath(client *raw.PublisherClient, topicPath string, opts *TopicOptions) (*pubsub.Topic, error) {\n\tif !topicPathRE.MatchString(topicPath) {\n\t\treturn nil, fmt.Errorf(\"invalid topicPath %q; must match %v\", topicPath, topicPathRE)\n\t}\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tbo := sendBatcherOpts.NewMergedOptions(&opts.BatcherOptions)\n\treturn pubsub.NewTopic(openTopic(client, topicPath), bo), nil\n}\n\n// openTopic returns the driver for OpenTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openTopic(client *raw.PublisherClient, topicPath string) driver.Topic {\n\treturn &topic{topicPath, client}\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *topic) SendBatch(ctx context.Context, dms []*driver.Message) error {\n\tvar ms []*pb.PubsubMessage\n\tfor _, dm := range dms {\n\t\tpsm := &pb.PubsubMessage{Data: dm.Body, Attributes: dm.Metadata}\n\t\tif dm.BeforeSend != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**pb.PubsubMessage); ok {\n\t\t\t\t\t*p = psm\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := dm.BeforeSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tms = append(ms, psm)\n\t}\n\treq := &pb.PublishRequest{Topic: t.path, Messages: ms}\n\tpr, err := t.client.Publish(ctx, req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(pr.MessageIds) == len(dms) {\n\t\tfor n, dm := range dms {\n\t\t\tif dm.AfterSend != nil {\n\t\t\t\tasFunc := func(i any) bool {\n\t\t\t\t\tif p, ok := i.(*string); ok {\n\t\t\t\t\t\t*p = pr.MessageIds[n]\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif err := dm.AfterSend(asFunc); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (t *topic) IsRetryable(error) bool {\n\t// The client handles retries.\n\treturn false\n}\n\n// As implements driver.Topic.As.\nfunc (t *topic) As(i any) bool {\n\tc, ok := i.(**raw.PublisherClient)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = t.client\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs\nfunc (*topic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc errorAs(err error, i any) bool {\n\ts, ok := status.FromError(err)\n\tif !ok {\n\t\treturn false\n\t}\n\tp, ok := i.(**status.Status)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s\n\treturn true\n}\n\nfunc (*topic) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\n// Close implements driver.Topic.Close.\nfunc (*topic) Close() error { return nil }\n\ntype subscription struct {\n\tclient  *raw.SubscriberClient\n\tpath    string\n\toptions *SubscriptionOptions\n}\n\n// SubscriptionOptions will contain configuration for subscriptions.\ntype SubscriptionOptions struct {\n\t// MaxBatchSize caps the maximum batch size used when retrieving messages. It defaults to 1000.\n\tMaxBatchSize int\n\n\t// NackLazy determines what Nack does.\n\t//\n\t// By default, Nack uses ModifyAckDeadline to set the ack deadline\n\t// for the nacked message to 0, so that it will be redelivered immediately.\n\t// Set NackLazy to true to bypass this behavior; Nack will do nothing,\n\t// and the message will be redelivered after the existing ack deadline\n\t// expires.\n\tNackLazy bool\n\n\t// ReceiveBatcherOptions adds constraints to the default batching done for receives.\n\tReceiveBatcherOptions batcher.Options\n\n\t// AckBatcherOptions adds constraints to the default batching done for acks.\n\tAckBatcherOptions batcher.Options\n}\n\n// OpenSubscription returns a *pubsub.Subscription backed by an existing GCP\n// PubSub subscription subscriptionName in the given projectID. See the package\n// documentation for an example.\nfunc OpenSubscription(client *raw.SubscriberClient, projectID gcp.ProjectID, subscriptionName string, opts *SubscriptionOptions) *pubsub.Subscription {\n\tpath := fmt.Sprintf(\"projects/%s/subscriptions/%s\", projectID, subscriptionName)\n\n\tdsub := openSubscription(client, path, opts)\n\trecvOpts := *defaultRecvBatcherOpts\n\trecvOpts.MaxBatchSize = dsub.options.MaxBatchSize\n\trbo := recvOpts.NewMergedOptions(&dsub.options.ReceiveBatcherOptions)\n\tabo := ackBatcherOpts.NewMergedOptions(&dsub.options.AckBatcherOptions)\n\treturn pubsub.NewSubscription(dsub, rbo, abo)\n}\n\nvar subscriptionPathRE = regexp.MustCompile(\"^projects/.+/subscriptions/.+$\")\n\n// OpenSubscriptionByPath returns a *pubsub.Subscription backed by an existing\n// GCP PubSub subscription. subscriptionPath must be of the form\n// \"projects/<projectID>/subscriptions/<subscription>\".\n// See the package documentation for an example.\nfunc OpenSubscriptionByPath(client *raw.SubscriberClient, subscriptionPath string, opts *SubscriptionOptions) (*pubsub.Subscription, error) {\n\tif !subscriptionPathRE.MatchString(subscriptionPath) {\n\t\treturn nil, fmt.Errorf(\"invalid subscriptionPath %q; must match %v\", subscriptionPath, subscriptionPathRE)\n\t}\n\n\tdsub := openSubscription(client, subscriptionPath, opts)\n\trecvOpts := *defaultRecvBatcherOpts\n\trecvOpts.MaxBatchSize = dsub.options.MaxBatchSize\n\trbo := recvOpts.NewMergedOptions(&dsub.options.ReceiveBatcherOptions)\n\tabo := ackBatcherOpts.NewMergedOptions(&dsub.options.AckBatcherOptions)\n\treturn pubsub.NewSubscription(dsub, rbo, abo), nil\n}\n\n// openSubscription returns a driver.Subscription.\nfunc openSubscription(client *raw.SubscriberClient, subscriptionPath string, opts *SubscriptionOptions) *subscription {\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\tif opts.MaxBatchSize == 0 {\n\t\topts.MaxBatchSize = defaultRecvBatcherOpts.MaxBatchSize\n\t}\n\treturn &subscription{client, subscriptionPath, opts}\n}\n\n// ReceiveBatch implements driver.Subscription.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\t// Whether to ask Pull to return immediately, or wait for some messages to\n\t// arrive. If we're making multiple RPCs, we don't want any of them to wait;\n\t// we might have gotten messages from one of the other RPCs.\n\t// maxMessages will only be high enough to set this to true in high-throughput\n\t// situations, so the likelihood of getting 0 messages is small anyway.\n\treturnImmediately := maxMessages == s.options.MaxBatchSize\n\n\treq := &pb.PullRequest{\n\t\tSubscription:      s.path,\n\t\tReturnImmediately: returnImmediately,\n\t\tMaxMessages:       int32(maxMessages),\n\t}\n\tresp, err := s.client.Pull(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(resp.ReceivedMessages) == 0 {\n\t\t// If we did happen to get 0 messages, and we didn't ask the server to wait\n\t\t// for messages, sleep a bit to avoid spinning.\n\t\tif returnImmediately {\n\t\t\ttime.Sleep(100 * time.Millisecond)\n\t\t}\n\t\treturn nil, nil\n\t}\n\n\tms := make([]*driver.Message, 0, len(resp.ReceivedMessages))\n\tfor _, rm := range resp.ReceivedMessages {\n\t\trmm := rm.Message\n\t\tm := &driver.Message{\n\t\t\tLoggableID: rmm.MessageId,\n\t\t\tBody:       rmm.Data,\n\t\t\tMetadata:   rmm.Attributes,\n\t\t\tAckID:      rm.AckId,\n\t\t\tAsFunc:     messageAsFunc(rmm, rm),\n\t\t}\n\t\tms = append(ms, m)\n\t}\n\treturn ms, nil\n}\n\nfunc messageAsFunc(pm *pb.PubsubMessage, rm *pb.ReceivedMessage) func(any) bool {\n\treturn func(i any) bool {\n\t\tip, ok := i.(**pb.PubsubMessage)\n\t\tif ok {\n\t\t\t*ip = pm\n\t\t\treturn true\n\t\t}\n\t\trp, ok := i.(**pb.ReceivedMessage)\n\t\tif ok {\n\t\t\t*rp = rm\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t}\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ids []driver.AckID) error {\n\tids2 := make([]string, 0, len(ids))\n\tfor _, id := range ids {\n\t\tids2 = append(ids2, id.(string))\n\t}\n\treturn s.client.Acknowledge(ctx, &pb.AcknowledgeRequest{Subscription: s.path, AckIds: ids2})\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool { return true }\n\n// SendNacks implements driver.Subscription.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ids []driver.AckID) error {\n\tif s.options.NackLazy {\n\t\treturn nil\n\t}\n\tids2 := make([]string, 0, len(ids))\n\tfor _, id := range ids {\n\t\tids2 = append(ids2, id.(string))\n\t}\n\treturn s.client.ModifyAckDeadline(ctx, &pb.ModifyAckDeadlineRequest{\n\t\tSubscription:       s.path,\n\t\tAckIds:             ids2,\n\t\tAckDeadlineSeconds: 0,\n\t})\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (s *subscription) IsRetryable(err error) bool {\n\t// The client mostly handles retries, but does not\n\t// include DeadlineExceeded for some reason.\n\treturn s.ErrorCode(err) == gcerrors.DeadlineExceeded\n}\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tc, ok := i.(**raw.SubscriberClient)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = s.client\n\treturn true\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs\nfunc (*subscription) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc (*subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\n// Close implements driver.Subscription.Close.\nfunc (*subscription) Close() error { return nil }\n\nfunc queryParameterInt(value []string) (int, error) {\n\tif len(value) > 1 {\n\t\treturn 0, fmt.Errorf(\"expected only one parameter value, got: %v\", len(value))\n\t}\n\n\treturn strconv.Atoi(value[0])\n}\n\nfunc queryParameterBool(value []string) (bool, error) {\n\tif len(value) > 1 {\n\t\treturn false, fmt.Errorf(\"expected only one parameter value, got: %v\", len(value))\n\t}\n\n\treturn strconv.ParseBool(value[0])\n}\n"
  },
  {
    "path": "pubsub/gcppubsub/gcppubsub_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcppubsub\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"testing\"\n\n\traw \"cloud.google.com/go/pubsub/apiv1\"\n\t\"cloud.google.com/go/pubsub/apiv1/pubsubpb\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// projectID is the project ID that was used during the last test run using\n// --record.\nconst projectID = \"go-cloud-test-216917\"\n\ntype harness struct {\n\tcloser    func()\n\tpubClient *raw.PublisherClient\n\tsubClient *raw.SubscriberClient\n\tnumTopics uint32 // atomic\n\tnumSubs   uint32 // atomic\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tconn, done := setup.NewGCPgRPCConn(ctx, t, endPoint, \"pubsub\")\n\tpubClient, err := PublisherClient(ctx, conn)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"making publisher client: %v\", err)\n\t}\n\tsubClient, err := SubscriberClient(ctx, conn)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"making subscription client: %v\", err)\n\t}\n\treturn &harness{closer: done, pubClient: pubClient, subClient: subClient, numTopics: 0, numSubs: 0}, nil\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (dt driver.Topic, cleanup func(), err error) {\n\t// We may encounter topics that were created by a previous test run and were\n\t// not properly cleaned up. In such a case delete the existing topic and create\n\t// a new topic with a higher topic number (to avoid cool-off issues between\n\t// deletion and re-creation).\n\tfor {\n\t\ttopicName := fmt.Sprintf(\"%s-topic-%d\", sanitize(testName), atomic.AddUint32(&h.numTopics, 1))\n\t\ttopicPath := fmt.Sprintf(\"projects/%s/topics/%s\", projectID, topicName)\n\t\tdt, cleanup, err := createTopic(ctx, h.pubClient, topicName, topicPath)\n\t\tif err != nil && status.Code(err) == codes.AlreadyExists {\n\t\t\t// Delete the topic and retry.\n\t\t\th.pubClient.DeleteTopic(ctx, &pubsubpb.DeleteTopicRequest{Topic: topicPath})\n\t\t\tcontinue\n\t\t}\n\t\treturn dt, cleanup, err\n\t}\n}\n\nfunc createTopic(ctx context.Context, pubClient *raw.PublisherClient, topicName, topicPath string) (dt driver.Topic, cleanup func(), err error) {\n\t_, err = pubClient.CreateTopic(ctx, &pubsubpb.Topic{Name: topicPath})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdt = openTopic(pubClient, path.Join(\"projects\", projectID, \"topics\", topicName))\n\tcleanup = func() {\n\t\tpubClient.DeleteTopic(ctx, &pubsubpb.DeleteTopicRequest{Topic: topicPath})\n\t}\n\treturn dt, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\treturn openTopic(h.pubClient, path.Join(\"projects\", projectID, \"topics\", \"nonexistent-topic\")), nil\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error) {\n\t// We may encounter subscriptions that were created by a previous test run\n\t// and were not properly cleaned up. In such a case delete the existing\n\t// subscription and create a new subscription with a higher subscription\n\t// number (to avoid cool-off issues between deletion and re-creation).\n\tfor {\n\t\tsubName := fmt.Sprintf(\"%s-subscription-%d\", sanitize(testName), atomic.AddUint32(&h.numSubs, 1))\n\t\tsubPath := fmt.Sprintf(\"projects/%s/subscriptions/%s\", projectID, subName)\n\t\tds, cleanup, err := createSubscription(ctx, h.subClient, dt, subName, subPath)\n\t\tif err != nil && status.Code(err) == codes.AlreadyExists {\n\t\t\t// Delete the subscription and retry.\n\t\t\th.subClient.DeleteSubscription(ctx, &pubsubpb.DeleteSubscriptionRequest{Subscription: subPath})\n\t\t\tcontinue\n\t\t}\n\t\treturn ds, cleanup, err\n\t}\n}\n\nfunc createSubscription(ctx context.Context, subClient *raw.SubscriberClient, dt driver.Topic, subName, subPath string) (ds driver.Subscription, cleanup func(), err error) {\n\tt := dt.(*topic)\n\t_, err = subClient.CreateSubscription(ctx, &pubsubpb.Subscription{\n\t\tName:  subPath,\n\t\tTopic: t.path,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tds = openSubscription(subClient, path.Join(\"projects\", projectID, \"subscriptions\", subName), nil)\n\tcleanup = func() {\n\t\tsubClient.DeleteSubscription(ctx, &pubsubpb.DeleteSubscriptionRequest{Subscription: subPath})\n\t}\n\treturn ds, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\treturn openSubscription(h.subClient, path.Join(\"projects\", projectID, \"subscriptions\", \"nonexistent-subscription\"), nil), func() {}, nil\n}\n\nfunc (h *harness) Close() {\n\th.pubClient.Close()\n\th.subClient.Close()\n\th.closer()\n}\n\nfunc (h *harness) MaxBatchSizes() (int, int) {\n\treturn sendBatcherOpts.MaxBatchSize, ackBatcherOpts.MaxBatchSize\n}\n\nfunc (*harness) SupportsMultipleSubscriptions() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tasTests := []drivertest.AsTest{gcpAsTest{}}\n\tdrivertest.RunConformanceTests(t, newHarness, asTests)\n}\n\nfunc BenchmarkGcpPubSub(b *testing.B) {\n\tctx := context.Background()\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\t// Connect.\n\tconn, cleanup, err := Dial(ctx, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Make topic.\n\tpc, err := PublisherClient(ctx, conn)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\ttopicName := fmt.Sprintf(\"%s-topic\", b.Name())\n\ttopicPath := fmt.Sprintf(\"projects/%s/topics/%s\", projectID, topicName)\n\tdt, cleanup1, err := createTopic(ctx, pc, topicName, topicPath)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup1()\n\ttopic := pubsub.NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\n\t// Make subscription.\n\tsc, err := SubscriberClient(ctx, conn)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tsubName := fmt.Sprintf(\"%s-subscription\", b.Name())\n\tsubPath := fmt.Sprintf(\"projects/%s/subscriptions/%s\", projectID, subName)\n\tds, cleanup2, err := createSubscription(ctx, sc, dt, subName, subPath)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup2()\n\tsub := pubsub.NewSubscription(ds, defaultRecvBatcherOpts, ackBatcherOpts)\n\tdefer sub.Shutdown(ctx)\n\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n\ntype gcpAsTest struct{}\n\nfunc (gcpAsTest) Name() string {\n\treturn \"gcp test\"\n}\n\nfunc (gcpAsTest) TopicCheck(topic *pubsub.Topic) error {\n\tvar c2 raw.PublisherClient\n\tif topic.As(&c2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &c2)\n\t}\n\tvar c3 *raw.PublisherClient\n\tif !topic.As(&c3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &c3)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar c2 raw.SubscriberClient\n\tif sub.As(&c2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &c2)\n\t}\n\tvar c3 *raw.SubscriberClient\n\tif !sub.As(&c3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &c3)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) TopicErrorCheck(t *pubsub.Topic, err error) error {\n\tvar s *status.Status\n\tif !t.ErrorAs(err, &s) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to a gRPC Status\", err, err)\n\t}\n\tif s.Code() != codes.NotFound {\n\t\treturn fmt.Errorf(\"got code %s, want NotFound\", s.Code())\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) SubscriptionErrorCheck(sub *pubsub.Subscription, err error) error {\n\tvar s *status.Status\n\tif !sub.ErrorAs(err, &s) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to a gRPC Status\", err, err)\n\t}\n\tif s.Code() != codes.NotFound {\n\t\treturn fmt.Errorf(\"got code %s, want NotFound\", s.Code())\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) MessageCheck(m *pubsub.Message) error {\n\tvar pm pubsubpb.PubsubMessage\n\tif m.As(&pm) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &pm)\n\t}\n\tvar ppm *pubsubpb.PubsubMessage\n\tif !m.As(&ppm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &ppm)\n\t}\n\tvar prm *pubsubpb.ReceivedMessage\n\tif !m.As(&prm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &prm)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) BeforeSend(as func(any) bool) error {\n\tvar ppm *pubsubpb.PubsubMessage\n\tif !as(&ppm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &ppm)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) AfterSend(as func(any) bool) error {\n\tvar msgId string\n\tif !as(&msgId) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &msgId)\n\t}\n\treturn nil\n}\n\nfunc sanitize(testName string) string {\n\treturn strings.Replace(testName, \"/\", \"_\", -1)\n}\n\nfunc TestOpenTopic(t *testing.T) {\n\tctx := context.Background()\n\tcreds, err := setup.FakeGCPCredentials(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tprojID, err := gcp.DefaultProjectID(creds)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tconn, cleanup, err := Dial(ctx, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\tpc, err := PublisherClient(ctx, conn)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttopic := OpenTopic(pc, projID, \"my-topic\", nil)\n\tdefer topic.Shutdown(ctx)\n\terr = topic.Send(ctx, &pubsub.Message{Body: []byte(\"hello world\")})\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Repeat with OpenTopicByPath.\n\ttopic, err = OpenTopicByPath(pc, path.Join(\"projects\", string(projID), \"topics\", \"my-topic\"), nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\terr = topic.Send(ctx, &pubsub.Message{Body: []byte(\"hello world\")})\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Try an invalid path.\n\t_, err = OpenTopicByPath(pc, \"my-topic\", nil)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n}\n\nfunc TestOpenSubscription(t *testing.T) {\n\tctx := context.Background()\n\tcreds, err := setup.FakeGCPCredentials(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tprojID, err := gcp.DefaultProjectID(creds)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tconn, cleanup, err := Dial(ctx, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\tsc, err := SubscriberClient(ctx, conn)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tsub := OpenSubscription(sc, projID, \"my-subscription\", nil)\n\tdefer sub.Shutdown(ctx)\n\t_, err = sub.Receive(ctx)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Repeat with OpenSubscriptionByPath.\n\tsub, err = OpenSubscriptionByPath(sc, path.Join(\"projects\", string(projID), \"subscriptions\", \"my-subscription\"), nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\t_, err = sub.Receive(ctx)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Try an invalid path.\n\t_, err = OpenSubscriptionByPath(sc, \"my-subscription\", nil)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK, short form.\n\t\t{\"gcppubsub://myproject/mytopic\", false},\n\t\t// OK, long form.\n\t\t{\"gcppubsub://projects/myproject/topic/mytopic\", false},\n\t\t// Invalid parameter.\n\t\t{\"gcppubsub://myproject/mytopic?param=value\", true},\n\t\t// Valid max_send_batch_size\n\t\t{\"gcppubsub://projects/mytopic?max_send_batch_size=1\", false},\n\t\t// Invalid max_send_batch_size\n\t\t{\"gcppubsub://projects/mytopic?max_send_batch_size=0\", true},\n\t\t// Invalid max_send_batch_size\n\t\t{\"gcppubsub://projects/mytopic?max_send_batch_size=1001\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK, short form.\n\t\t{\"gcppubsub://myproject/mysub\", false},\n\t\t// OK, long form.\n\t\t{\"gcppubsub://projects/myproject/subscriptions/mysub\", false},\n\t\t// Invalid parameter.\n\t\t{\"gcppubsub://myproject/mysub?param=value\", true},\n\t\t// Valid max_recv_batch_size\n\t\t{\"gcppubsub://projects/myproject/subscriptions/mysub?max_recv_batch_size=1\", false},\n\t\t// Invalid max_recv_batch_size\n\t\t{\"gcppubsub://projects/myproject/subscriptions/mysub?max_recv_batch_size=0\", true},\n\t\t// Invalid max_recv_batch_size\n\t\t{\"gcppubsub://projects/myproject/subscriptions/mysub?max_recv_batch_size=1001\", true},\n\t\t// Valid nacklazy\n\t\t{\"gcppubsub://projects/myproject/subscriptions/mysub?nacklazy=true\", false},\n\t\t// Invalid nacklazy\n\t\t{\"gcppubsub://projects/myproject/subscriptions/mysub?nacklazy=foo\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pubsub/gcppubsubv2/example_test.go",
    "content": "// Copyright 2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcppubsubv2_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/gcppubsubv2\"\n)\n\nfunc ExampleOpenTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// Open a gRPC connection to the GCP Pub/Sub API.\n\t// Alternatively, skip this and pass nil to Client below to use the default.\n\tconn, cleanup, err := gcppubsubv2.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Construct a Client using the connection.\n\tclient, err := gcppubsubv2.Client(ctx, \"myprojectid\", conn)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer client.Close()\n\n\t// Construct a *pubsub.Topic.\n\ttopic := gcppubsubv2.OpenTopic(client, \"example-topic\", nil)\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/gcppubsubv2\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\ttopic, err := pubsub.OpenTopic(ctx, \"gcppubsubv2://projects/myproject/topics/mytopic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Open a gRPC connection to the GCP Pub/Sub API.\n\t// Alternatively, skip this and pass nil to Client below to use the default.\n\tconn, cleanup, err := gcppubsubv2.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Construct a Client using the connection.\n\tclient, err := gcppubsubv2.Client(ctx, \"myprojectID\", conn)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer client.Close()\n\n\t// Construct a *pubsub.Subscription.\n\tsubscription := gcppubsubv2.OpenSubscription(client, \"example-subscription\", nil)\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/gcppubsubv2\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tsubscription, err := pubsub.OpenSubscription(ctx,\n\t\t\"gcppubsubv2://projects/my-project/subscriptions/my-subscription\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/gcppubsubv2/gcppubsub.go",
    "content": "// Copyright 2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcppubsub provides a pubsub implementation that uses GCP\n// PubSub. Use OpenTopic to construct a *pubsub.Topic, and/or OpenSubscription\n// to construct a *pubsub.Subscription.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, gcppubsubv2 registers\n// for the scheme \"gcppubsubv2\".\n// The default URL opener will creating a connection using use default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// GCP Pub/Sub emulator is supported as per https://cloud.google.com/pubsub/docs/emulator\n// So, when environment variable 'PUBSUB_EMULATOR_HOST' is set\n// driver connects to the specified emulator host by default.\n//\n// # Message Delivery Semantics\n//\n// GCP Pub/Sub supports at-least-once semantics; applications must\n// call Message.Ack after processing a message, or it will be redelivered.\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # As\n//\n// gcppubsubv2 exposes the following types for As:\n//   - Topic: *raw.Publisher\n//   - Subscription: *raw.Subscriber\n//   - Message.BeforeSend: *raw.Message\n//   - Message.AfterSend: *string for the raw.PublishResult serverID corresponding to the message.\n//   - Message: *raw.Message\n//   - Error: *google.golang.org/grpc/status.Status\npackage gcppubsubv2 // import \"gocloud.dev/pubsub/gcppubsubv2\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\traw \"cloud.google.com/go/pubsub/v2\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/insecure\"\n\t\"google.golang.org/grpc/credentials/oauth\"\n\t\"google.golang.org/grpc/status\"\n)\n\nvar endPoint = \"pubsub.googleapis.com:443\"\n\nvar sendBatcherOpts = &batcher.Options{\n\t// The underlying library does its own batching, so for throughput\n\t// what we pick here doesn't matter much. It's simpler and more\n\t// likely to elicit good behavior from the underlying library to\n\t// do one message at a time. It also results in clearer errors,\n\t// at least back to the concrete type, because returning an error\n\t// from SendBatch when some messages were sent and others weren't\n\t// is always a bit unfortunate.\n\tMaxBatchSize: 1,\n\tMaxHandlers:  1000,\n}\n\nvar defaultRecvBatcherOpts = &batcher.Options{\n\t// Single threaded; v2 wants only a single Receive. We get concurrency\n\t// via concurrent callbacks; the resulting messages are buffered\n\t// in memory until they can be returned via ReceiveBatch. When that\n\t// happens, we might as well return a lot of them.\n\tMaxBatchSize: 5000,\n\tMaxHandlers:  1,\n}\n\nvar ackBatcherOpts = &batcher.Options{\n\t// Similar to SendBatch.\n\tMaxBatchSize: 1,\n\tMaxHandlers:  1000,\n}\n\nfunc init() {\n\to := new(lazyCredsOpener)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, o)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, o)\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\tClient,\n\twire.Struct(new(SubscriptionOptions)),\n\twire.Struct(new(TopicOptions)),\n\twire.Struct(new(URLOpener), \"Conn\", \"TopicOptions\", \"SubscriptionOptions\"),\n)\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenTopicURL/OpenSubscriptionURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) defaultConn(ctx context.Context) (*URLOpener, error) {\n\to.init.Do(func() {\n\t\tvar conn *grpc.ClientConn\n\t\tvar err error\n\t\tif e := os.Getenv(\"PUBSUB_EMULATOR_HOST\"); e != \"\" {\n\t\t\t// Connect to the GCP pubsub emulator by overriding the default endpoint\n\t\t\t// if the 'PUBSUB_EMULATOR_HOST' environment variable is set.\n\t\t\t// Check https://cloud.google.com/pubsub/docs/emulator for more info.\n\t\t\tendPoint = e\n\t\t\tconn, err = dialEmulator(ctx, e)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\t\t} else {\n\t\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconn, _, err = Dial(ctx, creds.TokenSource)\n\t\t\tif err != nil {\n\t\t\t\to.err = err\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\to.opener = &URLOpener{Conn: conn}\n\t})\n\treturn o.opener, o.err\n}\n\nfunc (o *lazyCredsOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topener, err := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: failed to open default connection: %v\", u, err)\n\t}\n\treturn opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *lazyCredsOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topener, err := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: failed to open default connection: %v\", u, err)\n\t}\n\treturn opener.OpenSubscriptionURL(ctx, u)\n}\n\n// Scheme is the URL scheme gcppubsubv2 registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"gcppubsubv2\"\n\n// URLOpener opens GCP Pub/Sub URLs like \"gcppubsubv2://projects/myproject/topics/mytopic\" for\n// topics or \"gcppubsubv2://projects/myproject/subscriptions/mysub\" for subscriptions.\n//\n// The shortened forms \"gcppubsubv2://myproject/mytopic\" for topics or\n// \"gcppubsubv2://myproject/mysub\" for subscriptions are also supported.\n//\n// The following query parameters are supported:\n//\n//   - max_recv_batch_size: sets SubscriptionOptions.MaxBatchSize.\n//   - max_send_batch_size: sets TopicOptions.BatcherOptions.MaxBatchSize.\n//\n// Currently their use is limited to subscribers.\ntype URLOpener struct {\n\t// Conn must be set to a non-nil ClientConn authenticated with\n\t// Cloud Pub/Sub scope or equivalent.\n\tConn *grpc.ClientConn\n\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topts := o.TopicOptions\n\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"max_send_batch_size\":\n\t\t\tmaxBatchSize, err := queryParameterInt(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q: %v\", u, param, err)\n\t\t\t}\n\n\t\t\tif maxBatchSize <= 0 || maxBatchSize > 1000 {\n\t\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q: must be between 1 and 1000\", u, param)\n\t\t\t}\n\n\t\t\topts.BatcherOptions.MaxBatchSize = maxBatchSize\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\tclient, err := Client(ctx, gcp.ProjectID(u.Host), o.Conn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttopicPath := path.Join(u.Host, u.Path)\n\tif topicPathRE.MatchString(topicPath) {\n\t\treturn OpenTopicByPath(client, topicPath, &opts)\n\t}\n\t// Shortened form?\n\ttopicName := strings.TrimPrefix(u.Path, \"/\")\n\treturn OpenTopic(client, topicName, &opts), nil\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\t// Set subscription options to use defaults\n\topts := o.SubscriptionOptions\n\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"max_recv_batch_size\":\n\t\t\tmaxBatchSize, err := queryParameterInt(value)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q: %v\", u, param, err)\n\t\t\t}\n\n\t\t\tif maxBatchSize <= 0 || maxBatchSize > 1000 {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q: must be between 1 and 1000\", u, param)\n\t\t\t}\n\n\t\t\topts.MaxBatchSize = maxBatchSize\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\tclient, err := Client(ctx, gcp.ProjectID(u.Host), o.Conn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsubPath := path.Join(u.Host, u.Path)\n\tif subscriptionPathRE.MatchString(subPath) {\n\t\treturn OpenSubscriptionByPath(client, subPath, &opts)\n\t}\n\t// Shortened form?\n\tsubName := strings.TrimPrefix(u.Path, \"/\")\n\treturn OpenSubscription(client, subName, &opts), nil\n}\n\ntype topic struct {\n\tpublisher *raw.Publisher\n}\n\n// Dial opens a gRPC connection to the GCP Pub Sub API.\n//\n// The second return value is a function that can be called to clean up\n// the connection opened by Dial.\nfunc Dial(ctx context.Context, ts gcp.TokenSource) (*grpc.ClientConn, func(), error) {\n\tconn, err := grpc.DialContext(ctx, endPoint,\n\t\tgrpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, \"\")),\n\t\tgrpc.WithPerRPCCredentials(oauth.TokenSource{TokenSource: ts}),\n\t\t// The default message size limit for gRPC is 4MB, while GCP\n\t\t// PubSub supports messages up to 10MB. Aside from the message itself\n\t\t// there is also other data in the gRPC response, bringing the maximum\n\t\t// response size above 10MB. Tell gRPC to support up to 11MB.\n\t\t// https://github.com/googleapis/google-cloud-node/issues/1991\n\t\tgrpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024*1024*11)),\n\t\tuseragent.GRPCDialOption(\"pubsub\"),\n\t)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn conn, func() { conn.Close() }, nil\n}\n\n// dialEmulator opens a gRPC connection to the GCP Pub Sub API.\nfunc dialEmulator(ctx context.Context, e string) (*grpc.ClientConn, error) {\n\tconn, err := grpc.DialContext(ctx, e,\n\t\tgrpc.WithTransportCredentials(insecure.NewCredentials()),\n\t\tuseragent.GRPCDialOption(\"pubsub\"))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn conn, nil\n}\n\n// Client returns a *raw.Client that can be used in OpenTopic and/or OpenSubscription.\n// conn is optional.\nfunc Client(ctx context.Context, projectID gcp.ProjectID, conn *grpc.ClientConn) (*raw.Client, error) {\n\tif conn == nil {\n\t\treturn raw.NewClient(ctx, string(projectID))\n\t}\n\treturn raw.NewClient(ctx, string(projectID), option.WithGRPCConn(conn))\n}\n\n// TopicOptions will contain configuration for topics.\ntype TopicOptions struct {\n\t// BatcherOptions adds constraints to the default batching done for sends.\n\tBatcherOptions batcher.Options\n}\n\n// OpenTopic returns a *pubsub.Topic backed by an existing GCP PubSub topic\n// topicName is the last part of the full topic path, e.g., \"foo\" from \"projects/<projectID>/topic/foo\".\n// See the package documentation for an example.\nfunc OpenTopic(client *raw.Client, topicName string, opts *TopicOptions) *pubsub.Topic {\n\tpublisher := client.Publisher(topicName)\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tbo := sendBatcherOpts.NewMergedOptions(&opts.BatcherOptions)\n\treturn pubsub.NewTopic(openTopic(publisher), bo)\n}\n\nvar topicPathRE = regexp.MustCompile(\"^projects/.+/topics/(.+)$\")\n\n// OpenTopicByPath returns a *pubsub.Topic backed by an existing GCP PubSub\n// topic. topicPath must be of the form \"projects/<projectID>/topic/<topic>\".\n// See the package documentation for an example.\nfunc OpenTopicByPath(client *raw.Client, topicPath string, opts *TopicOptions) (*pubsub.Topic, error) {\n\tmatches := topicPathRE.FindStringSubmatch(topicPath)\n\tif len(matches) != 2 {\n\t\treturn nil, fmt.Errorf(\"invalid topicPath %q; must match %v\", topicPath, topicPathRE)\n\t}\n\ttopicName := matches[1]\n\treturn OpenTopic(client, topicName, opts), nil\n}\n\n// openTopic returns the driver for OpenTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openTopic(publisher *raw.Publisher) driver.Topic {\n\treturn &topic{publisher}\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *topic) SendBatch(ctx context.Context, dms []*driver.Message) error {\n\tvar results []*raw.PublishResult\n\tfor _, dm := range dms {\n\t\tpsm := &raw.Message{Data: dm.Body, Attributes: dm.Metadata}\n\t\tif dm.BeforeSend != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**raw.Message); ok {\n\t\t\t\t\t*p = psm\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := dm.BeforeSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\t// Publish always returns immediately; the return value's Get\n\t\t// function blocks until there's a result.\n\t\tresults = append(results, t.publisher.Publish(ctx, psm))\n\t}\n\tfor n, dm := range dms {\n\t\tpr := results[n]\n\t\tmessageID, err := pr.Get(ctx)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif dm.AfterSend != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(*string); ok {\n\t\t\t\t\t*p = messageID\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := dm.AfterSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (t *topic) IsRetryable(error) bool {\n\t// The client handles retries.\n\treturn false\n}\n\n// As implements driver.Topic.As.\nfunc (t *topic) As(i any) bool {\n\tc, ok := i.(**raw.Publisher)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = t.publisher\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs\nfunc (*topic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc errorAs(err error, i any) bool {\n\ts, ok := status.FromError(err)\n\tif !ok {\n\t\treturn false\n\t}\n\tp, ok := i.(**status.Status)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s\n\treturn true\n}\n\nfunc (*topic) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\n// Close implements driver.Topic.Close.\nfunc (*topic) Close() error { return nil }\n\ntype ackableMsg struct {\n\trawm *raw.Message\n\tch   chan bool\n}\n\ntype subscription struct {\n\tsubscriber *raw.Subscriber\n\toptions    *SubscriptionOptions\n\n\t// Fields for managing the single Receive RPC called in the background.\n\treceiving     bool            // true when there's an active RPC\n\treceiveCtx    context.Context // the single background context used when calling Receive\n\treceiveCancel func()          // cancel func for receiveCtx; called during Close\n\n\t// Fields used for managing buffered messages.\n\tmu         sync.Mutex\n\tdms        []*driver.Message            // buffered messages for next ReceiveBatch\n\treceiveErr error                        // error returned by last Receive, to be returned by next ReceiveBatch\n\tacks       map[driver.AckID]*ackableMsg // returned messages that haven't yet been acked/nacked\n}\n\n// SubscriptionOptions will contain configuration for subscriptions.\ntype SubscriptionOptions struct {\n\t// MaxBatchSize caps the maximum batch size used when retrieving messages. It defaults to 1000.\n\tMaxBatchSize int\n\n\t// ReceiveBatcherOptions adds constraints to the default batching done for receives.\n\tReceiveBatcherOptions batcher.Options\n\n\t// AckBatcherOptions adds constraints to the default batching done for acks.\n\tAckBatcherOptions batcher.Options\n}\n\n// OpenSubscription returns a *pubsub.Subscription backed by an existing GCP\n// PubSub subscription subscriptionName. See the package documentation for an example.\nfunc OpenSubscription(client *raw.Client, subscriptionName string, opts *SubscriptionOptions) *pubsub.Subscription {\n\tsubscriber := client.Subscriber(subscriptionName)\n\tdsub := openSubscription(subscriber, opts)\n\trecvOpts := *defaultRecvBatcherOpts\n\trecvOpts.MaxBatchSize = dsub.options.MaxBatchSize\n\trbo := recvOpts.NewMergedOptions(&dsub.options.ReceiveBatcherOptions)\n\tabo := ackBatcherOpts.NewMergedOptions(&dsub.options.AckBatcherOptions)\n\treturn pubsub.NewSubscription(dsub, rbo, abo)\n}\n\nvar subscriptionPathRE = regexp.MustCompile(\"^projects/.+/subscriptions/(.+)$\")\n\n// OpenSubscriptionByPath returns a *pubsub.Subscription backed by an existing\n// GCP PubSub subscription. subscriptionPath must be of the form\n// \"projects/<projectID>/subscriptions/<subscription>\".\n// See the package documentation for an example.\nfunc OpenSubscriptionByPath(client *raw.Client, subscriptionPath string, opts *SubscriptionOptions) (*pubsub.Subscription, error) {\n\tmatches := subscriptionPathRE.FindStringSubmatch(subscriptionPath)\n\tif len(matches) != 2 {\n\t\treturn nil, fmt.Errorf(\"invalid subscriptionPath %q; must match %v\", subscriptionPath, subscriptionPathRE)\n\t}\n\tsubscriptionName := matches[1]\n\treturn OpenSubscription(client, subscriptionName, opts), nil\n}\n\n// openSubscription returns a driver.Subscription.\nfunc openSubscription(subscriber *raw.Subscriber, opts *SubscriptionOptions) *subscription {\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\tif opts.MaxBatchSize == 0 {\n\t\topts.MaxBatchSize = defaultRecvBatcherOpts.MaxBatchSize\n\t}\n\t// Construct a context that's used (repeatedly if necessary) to call Receive.\n\t// It never expires; the Receive may last forever.\n\t// The cancel function is used during shutdown.\n\tctx, cancel := context.WithCancel(context.Background())\n\treturn &subscription{\n\t\tsubscriber:    subscriber,\n\t\toptions:       opts,\n\t\treceiving:     false,\n\t\treceiveCtx:    ctx,\n\t\treceiveCancel: cancel,\n\t\tacks:          map[driver.AckID]*ackableMsg{},\n\t}\n}\n\n// ReceiveBatch implements driver.Subscription.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tif !s.receiving {\n\t\t// Start up the goroutine that calls Receive.\n\t\ts.receiving = true\n\t\tgo func() {\n\t\t\t// Receive blocks until receiveCtx ends, which will only happen during shutdown,\n\t\t\t// or if there's a fatal error.\n\t\t\t// During normal use, this goroutine will sit here in Receive,\n\t\t\t// the underlying library will call the callback as messages arrive,\n\t\t\t// the callback implementation will add them to s.dms, and\n\t\t\t// ReceiveBatch will pull them off.\n\t\t\t//\n\t\t\t// The underlying library *requires* that Ack or Nack be called inside the\n\t\t\t// callback. Therefore, after adding the message to s.dms, the callback\n\t\t\t// (which is running in its own goroutine from the underlying library)\n\t\t\t// creates a channel and waits on it; Ack/Nack will write true/false to that\n\t\t\t// channel, allowing the callback to finally return.\n\t\t\terr := s.subscriber.Receive(s.receiveCtx, func(ctx context.Context, rawm *raw.Message) {\n\t\t\t\tdm := &driver.Message{\n\t\t\t\t\tLoggableID: rawm.ID,\n\t\t\t\t\tBody:       rawm.Data,\n\t\t\t\t\tMetadata:   rawm.Attributes,\n\t\t\t\t\tAckID:      driver.AckID(rawm.ID),\n\t\t\t\t\tAsFunc: func(i any) bool {\n\t\t\t\t\t\trm, ok := i.(**raw.Message)\n\t\t\t\t\t\tif ok {\n\t\t\t\t\t\t\t*rm = rawm\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t\t// As described above, ackCh will be used to wait here until\n\t\t\t\t// Ack or Nack is called.\n\t\t\t\tackCh := make(chan bool)\n\t\t\t\ts.mu.Lock()\n\t\t\t\ts.acks[rawm.ID] = &ackableMsg{rawm, ackCh}\n\t\t\t\ts.dms = append(s.dms, dm)\n\t\t\t\ts.mu.Unlock()\n\t\t\t\tisAck := <-ackCh\n\t\t\t\tif isAck {\n\t\t\t\t\trawm.Ack()\n\t\t\t\t} else {\n\t\t\t\t\trawm.Nack()\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Receive returned. Either we're shutting down, or there's a permanent error.\n\t\t\t// Either way, reset so that if ReceiveBatch is called again, we'll retry.\n\t\t\ts.mu.Lock()\n\t\t\tif !errors.Is(err, context.Canceled) {\n\t\t\t\ts.receiveErr = err\n\t\t\t}\n\t\t\ts.receiving = false\n\t\t\ts.mu.Unlock()\n\t\t}()\n\t}\n\n\t// Return up to maxMessages from the buffer.\n\tvar dms []*driver.Message\n\tif err := s.receiveErr; err != nil {\n\t\ts.receiveErr = nil\n\t\treturn nil, err\n\t}\n\tif len(s.dms) <= maxMessages {\n\t\tdms = s.dms\n\t\ts.dms = nil\n\t} else {\n\t\tdms = s.dms[0:maxMessages]\n\t\ts.dms = s.dms[maxMessages:]\n\t}\n\tif len(dms) == 0 {\n\t\ttime.Sleep(100 * time.Millisecond)\n\t\treturn nil, nil\n\t}\n\treturn dms, nil\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ids []driver.AckID) error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor _, id := range ids {\n\t\tif ackable := s.acks[id]; ackable != nil {\n\t\t\tackable.ch <- true\n\t\t\tclose(ackable.ch)\n\t\t\tdelete(s.acks, id)\n\t\t}\n\t}\n\treturn nil\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool { return true }\n\n// SendNacks implements driver.Subscription.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ids []driver.AckID) error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor _, id := range ids {\n\t\tif ackable := s.acks[id]; ackable != nil {\n\t\t\tackable.ch <- false\n\t\t\tclose(ackable.ch)\n\t\t\tdelete(s.acks, id)\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (s *subscription) IsRetryable(err error) bool {\n\t// The client mostly handles retries, but does not\n\t// include DeadlineExceeded for some reason.\n\treturn s.ErrorCode(err) == gcerrors.DeadlineExceeded\n}\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tc, ok := i.(**raw.Subscriber)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = s.subscriber\n\treturn true\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs\nfunc (*subscription) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc (*subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\n// Close implements driver.Subscription.Close.\nfunc (s *subscription) Close() error {\n\ts.receiveCancel()\n\treturn nil\n}\n\nfunc queryParameterInt(value []string) (int, error) {\n\tif len(value) > 1 {\n\t\treturn 0, fmt.Errorf(\"expected only one parameter value, got: %v\", len(value))\n\t}\n\n\treturn strconv.Atoi(value[0])\n}\n"
  },
  {
    "path": "pubsub/gcppubsubv2/gcppubsub_test.go",
    "content": "// Copyright 2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcppubsubv2\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"testing\"\n\n\traw \"cloud.google.com/go/pubsub/v2\"\n\t\"cloud.google.com/go/pubsub/v2/apiv1/pubsubpb\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// projectID is the project ID that was used during the last test run using\n// --record.\nconst projectID = \"go-cloud-test-216917\"\n\ntype harness struct {\n\tcloser    func()\n\tclient    *raw.Client\n\tnumTopics uint32 // atomic\n\tnumSubs   uint32 // atomic\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tclient, err := Client(ctx, projectID, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"making client: %v\", err)\n\t}\n\treturn &harness{closer: func() {}, client: client, numTopics: 0, numSubs: 0}, nil\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (dt driver.Topic, cleanup func(), err error) {\n\ttopicName := fmt.Sprintf(\"%s-topic-%d\", sanitize(testName), atomic.AddUint32(&h.numTopics, 1))\n\treturn createTopic(ctx, h.client, topicName)\n}\n\nfunc topicPath(topicName string) string {\n\treturn fmt.Sprintf(\"projects/%s/topics/%s\", projectID, topicName)\n}\nfunc subscriptionPath(subName string) string {\n\treturn fmt.Sprintf(\"projects/%s/subscriptions/%s\", projectID, subName)\n}\n\nfunc createTopic(ctx context.Context, client *raw.Client, topicName string) (dt driver.Topic, cleanup func(), err error) {\n\t_, err = client.TopicAdminClient.CreateTopic(ctx, &pubsubpb.Topic{Name: topicPath(topicName)})\n\t// We may encounter topics that were created by a previous test run and were\n\t// not properly cleaned up. In such a case delete the existing topic and create\n\t// a new topic with a higher topic number (to avoid cool-off issues between\n\t// deletion and re-creation).\n\tif err != nil && status.Code(err) == codes.AlreadyExists {\n\t\tdeleteTopic(ctx, client, topicName)\n\t\treturn createTopic(ctx, client, topicName)\n\t}\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to create topic: %w\", err)\n\t}\n\tdt = openTopic(client.Publisher(topicName))\n\tcleanup = func() {\n\t\tdeleteTopic(ctx, client, topicName)\n\t}\n\treturn dt, cleanup, nil\n}\n\nfunc deleteTopic(ctx context.Context, client *raw.Client, topicName string) {\n\t_ = client.TopicAdminClient.DeleteTopic(ctx, &pubsubpb.DeleteTopicRequest{\n\t\tTopic: topicPath(topicName),\n\t})\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\treturn openTopic(h.client.Publisher(\"nonexistent-topic\")), nil\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error) {\n\tsubName := fmt.Sprintf(\"%s-subscription-%d\", sanitize(testName), atomic.AddUint32(&h.numSubs, 1))\n\treturn createSubscription(ctx, h.client, dt, subName)\n}\n\nfunc createSubscription(ctx context.Context, client *raw.Client, dt driver.Topic, subName string) (ds driver.Subscription, cleanup func(), err error) {\n\tt := dt.(*topic)\n\t_, err = client.SubscriptionAdminClient.CreateSubscription(ctx, &pubsubpb.Subscription{\n\t\tName:  subscriptionPath(subName),\n\t\tTopic: t.publisher.String(),\n\t})\n\t// We may encounter subscriptions that were created by a previous test run\n\t// and were not properly cleaned up. In such a case delete the existing\n\t// subscription and create a new subscription with a higher subscription\n\t// number (to avoid cool-off issues between deletion and re-creation).\n\tif err != nil && status.Code(err) == codes.AlreadyExists {\n\t\tdeleteSubscription(ctx, client, subName)\n\t\treturn createSubscription(ctx, client, dt, subName)\n\t}\n\tif err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"failed to create subscription: %w\", err)\n\t}\n\tds = openSubscription(client.Subscriber(subName), nil)\n\tcleanup = func() {\n\t\tdeleteSubscription(ctx, client, subName)\n\t}\n\treturn ds, cleanup, nil\n}\n\nfunc deleteSubscription(ctx context.Context, client *raw.Client, subName string) {\n\t_ = client.SubscriptionAdminClient.DeleteSubscription(ctx, &pubsubpb.DeleteSubscriptionRequest{\n\t\tSubscription: subscriptionPath(subName)},\n\t)\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\treturn openSubscription(h.client.Subscriber(\"nonexistent-subscription\"), nil), func() {}, nil\n}\n\nfunc (h *harness) Close() {\n\th.client.Close()\n\th.closer()\n}\n\nfunc (h *harness) MaxBatchSizes() (int, int) {\n\treturn sendBatcherOpts.MaxBatchSize, ackBatcherOpts.MaxBatchSize\n}\n\nfunc (*harness) SupportsMultipleSubscriptions() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tif !*setup.Record {\n\t\tt.Skip(\"replaying is not supported for gcppubsubv2 because it uses a streaming RPC internally\")\n\t}\n\tasTests := []drivertest.AsTest{gcpAsTest{}}\n\tdrivertest.RunConformanceTests(t, newHarness, asTests)\n}\n\nfunc BenchmarkGcpPubSub(b *testing.B) {\n\tctx := context.Background()\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\t// Connect.\n\tconn, cleanup, err := Dial(ctx, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Make topic.\n\tclient, err := Client(ctx, projectID, conn)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\ttopicName := fmt.Sprintf(\"%s-topic\", b.Name())\n\tdt, cleanup1, err := createTopic(ctx, client, topicName)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup1()\n\ttopic := pubsub.NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\n\t// Make subscription.\n\tsubName := fmt.Sprintf(\"%s-subscription\", b.Name())\n\tds, cleanup2, err := createSubscription(ctx, client, dt, subName)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup2()\n\tsub := pubsub.NewSubscription(ds, defaultRecvBatcherOpts, ackBatcherOpts)\n\tdefer sub.Shutdown(ctx)\n\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n\ntype gcpAsTest struct{}\n\nfunc (gcpAsTest) Name() string {\n\treturn \"gcp test\"\n}\n\nfunc (gcpAsTest) TopicCheck(topic *pubsub.Topic) error {\n\tvar c2 raw.Publisher\n\tif topic.As(&c2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &c2)\n\t}\n\tvar c3 *raw.Publisher\n\tif !topic.As(&c3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &c3)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar c2 raw.Subscriber\n\tif sub.As(&c2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &c2)\n\t}\n\tvar c3 *raw.Subscriber\n\tif !sub.As(&c3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &c3)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) TopicErrorCheck(t *pubsub.Topic, err error) error {\n\tvar s *status.Status\n\tif !t.ErrorAs(err, &s) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to a gRPC Status\", err, err)\n\t}\n\tif s.Code() != codes.NotFound {\n\t\treturn fmt.Errorf(\"got code %s, want NotFound\", s.Code())\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) SubscriptionErrorCheck(sub *pubsub.Subscription, err error) error {\n\tvar s *status.Status\n\tif !sub.ErrorAs(err, &s) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to a gRPC Status\", err, err)\n\t}\n\tif s.Code() != codes.NotFound {\n\t\treturn fmt.Errorf(\"got code %s, want NotFound\", s.Code())\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) MessageCheck(m *pubsub.Message) error {\n\tvar rm raw.Message\n\tif m.As(&rm) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &rm)\n\t}\n\tvar prm *raw.Message\n\tif !m.As(&prm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &prm)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) BeforeSend(as func(any) bool) error {\n\tvar prm *raw.Message\n\tif !as(&prm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &prm)\n\t}\n\treturn nil\n}\n\nfunc (gcpAsTest) AfterSend(as func(any) bool) error {\n\tvar msgId string\n\tif !as(&msgId) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &msgId)\n\t}\n\treturn nil\n}\n\nfunc sanitize(testName string) string {\n\treturn strings.Replace(testName, \"/\", \"_\", -1)\n}\n\nfunc TestOpenTopic(t *testing.T) {\n\tctx := context.Background()\n\tcreds, err := setup.FakeGCPCredentials(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tprojID, err := gcp.DefaultProjectID(creds)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tconn, cleanup, err := Dial(ctx, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\tclient, err := Client(ctx, projID, conn)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttopic := OpenTopic(client, \"my-topic\", nil)\n\tdefer topic.Shutdown(ctx)\n\terr = topic.Send(ctx, &pubsub.Message{Body: []byte(\"hello world\")})\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Repeat with OpenTopicByPath.\n\ttopic, err = OpenTopicByPath(client, path.Join(\"projects\", string(projID), \"topics\", \"my-topic\"), nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\terr = topic.Send(ctx, &pubsub.Message{Body: []byte(\"hello world\")})\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Try an invalid path.\n\t_, err = OpenTopicByPath(client, \"my-topic\", nil)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n}\n\nfunc TestOpenSubscription(t *testing.T) {\n\tctx := context.Background()\n\tcreds, err := setup.FakeGCPCredentials(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tprojID, err := gcp.DefaultProjectID(creds)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tconn, cleanup, err := Dial(ctx, gcp.CredentialsTokenSource(creds))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\tclient, err := Client(ctx, projID, conn)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tsub := OpenSubscription(client, \"my-subscription\", nil)\n\tdefer sub.Shutdown(ctx)\n\t_, err = sub.Receive(ctx)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Repeat with OpenSubscriptionByPath.\n\tsub, err = OpenSubscriptionByPath(client, path.Join(\"projects\", string(projID), \"subscriptions\", \"my-subscription\"), nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\t_, err = sub.Receive(ctx)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n\n\t// Try an invalid path.\n\t_, err = OpenSubscriptionByPath(client, \"my-subscription\", nil)\n\tif err == nil {\n\t\tt.Error(\"got nil, want error\")\n\t}\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK, short form.\n\t\t{\"gcppubsubv2://myproject/mytopic\", false},\n\t\t// OK, long form.\n\t\t{\"gcppubsubv2://projects/myproject/topic/mytopic\", false},\n\t\t// Invalid parameter.\n\t\t{\"gcppubsubv2://myproject/mytopic?param=value\", true},\n\t\t// Valid max_send_batch_size\n\t\t{\"gcppubsubv2://projects/mytopic?max_send_batch_size=1\", false},\n\t\t// Invalid max_send_batch_size\n\t\t{\"gcppubsubv2://projects/mytopic?max_send_batch_size=0\", true},\n\t\t// Invalid max_send_batch_size\n\t\t{\"gcppubsubv2://projects/mytopic?max_send_batch_size=1001\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK, short form.\n\t\t{\"gcppubsubv2://myproject/mysub\", false},\n\t\t// OK, long form.\n\t\t{\"gcppubsubv2://projects/myproject/subscriptions/mysub\", false},\n\t\t// Invalid parameter.\n\t\t{\"gcppubsubv2://myproject/mysub?param=value\", true},\n\t\t// Valid max_recv_batch_size\n\t\t{\"gcppubsubv2://projects/myproject/subscriptions/mysub?max_recv_batch_size=1\", false},\n\t\t// Invalid max_recv_batch_size\n\t\t{\"gcppubsubv2://projects/myproject/subscriptions/mysub?max_recv_batch_size=0\", true},\n\t\t// Invalid max_recv_batch_size\n\t\t{\"gcppubsubv2://projects/myproject/subscriptions/mysub?max_recv_batch_size=1001\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pubsub/kafkapubsub/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage kafkapubsub_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/kafkapubsub\"\n)\n\nfunc ExampleOpenTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// The set of brokers in the Kafka cluster.\n\taddrs := []string{\"1.2.3.4:9092\"}\n\t// The Kafka client configuration to use.\n\tconfig := kafkapubsub.MinimalConfig()\n\n\t// Construct a *pubsub.Topic.\n\ttopic, err := kafkapubsub.OpenTopic(addrs, config, \"my-topic\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// The set of brokers in the Kafka cluster.\n\taddrs := []string{\"1.2.3.4:9092\"}\n\t// The Kafka client configuration to use.\n\tconfig := kafkapubsub.MinimalConfig()\n\n\t// Construct a *pubsub.Subscription, joining the consumer group \"my-group\"\n\t// and receiving messages from \"my-topic\".\n\tsubscription, err := kafkapubsub.OpenSubscription(\n\t\taddrs, config, \"my-group\", []string{\"my-topic\"}, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/kafkapubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\n\t// The host + path are the topic name to send to.\n\t// The set of brokers must be in an environment variable KAFKA_BROKERS.\n\ttopic, err := pubsub.OpenTopic(ctx, \"kafka://my-topic?key_name=x-partition-key\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/kafkapubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// The host + path are used as the consumer group name.\n\t// The \"topic\" query parameter sets one or more topics to subscribe to.\n\t// The set of brokers must be in an environment variable KAFKA_BROKERS.\n\tsubscription, err := pubsub.OpenSubscription(ctx,\n\t\t\"kafka://my-group?topic=my-topic\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/kafkapubsub/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/pubsub/kafkapubsub\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/IBM/sarama v1.47.0\n\tgithub.com/google/go-cmp v0.7.0\n\tgocloud.dev v0.45.0\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/eapache/go-resiliency v1.7.0 // indirect\n\tgithub.com/eapache/queue v1.1.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang/snappy v1.0.0 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/google/wire v0.7.0 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/hashicorp/go-uuid v1.0.3 // indirect\n\tgithub.com/jcmturner/aescts/v2 v2.0.0 // indirect\n\tgithub.com/jcmturner/dnsutils/v2 v2.0.0 // indirect\n\tgithub.com/jcmturner/gofork v1.7.6 // indirect\n\tgithub.com/jcmturner/gokrb5/v8 v8.4.4 // indirect\n\tgithub.com/jcmturner/rpc/v2 v2.0.3 // indirect\n\tgithub.com/klauspost/compress v1.18.4 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.26 // indirect\n\tgithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "pubsub/kafkapubsub/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/pubsub v1.50.1 h1:fzbXpPyJnSGvWXF1jabhQeXyxdbCIkXTpjXHy7xviBM=\ncloud.google.com/go/pubsub v1.50.1/go.mod h1:6YVJv3MzWJUVdvQXG081sFvS0dWQOdnV+oTo++q/xFk=\ncloud.google.com/go/pubsub/v2 v2.4.0 h1:oMKNiBQpXImRWnHYla9uSU66ZzByZwBSCJOEs/pTKVg=\ncloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2ig3zqsGUx8=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/IBM/sarama v1.47.0 h1:GcQFEd12+KzfPYeLgN69Fh7vLCtYRhVIx0rO4TZO318=\ngithub.com/IBM/sarama v1.47.0/go.mod h1:7gLLIU97nznOmA6TX++Qds+DRxH89P2XICY2KAQUzAY=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/eapache/go-resiliency v1.7.0 h1:n3NRTnBn5N0Cbi/IeOHuQn9s2UwVUH7Ga0ZWcP+9JTA=\ngithub.com/eapache/go-resiliency v1.7.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho=\ngithub.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=\ngithub.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=\ngithub.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=\ngithub.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=\ngithub.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=\ngithub.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=\ngithub.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=\ngithub.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=\ngithub.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=\ngithub.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=\ngithub.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg=\ngithub.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo=\ngithub.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=\ngithub.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=\ngithub.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8=\ngithub.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=\ngithub.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=\ngithub.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=\ngithub.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/pierrec/lz4/v4 v4.1.26 h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY=\ngithub.com/pierrec/lz4/v4 v4.1.26/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg=\ngithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "pubsub/kafkapubsub/kafka.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package kafkapubsub provides an implementation of pubsub for Kafka.\n// It requires a minimum Kafka version of 0.11.x for Header support.\n// Some functionality may work with earlier versions of Kafka.\n//\n// See https://kafka.apache.org/documentation.html#semantics for a discussion\n// of message semantics in Kafka. sarama.Config exposes many knobs that\n// can affect performance and semantics, so review and set them carefully.\n//\n// kafkapubsub does not support Message.Nack; Message.Nackable will return\n// false, and Message.Nack will panic if called.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, kafkapubsub registers\n// for the scheme \"kafka\".\n// The default URL opener will connect to a default set of Kafka brokers based\n// on the environment variable \"KAFKA_BROKERS\", expected to be a comma-delimited\n// set of server addresses.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Escaping\n//\n// Go CDK supports all UTF-8 strings. No escaping is required for Kafka.\n// Message metadata is supported through Kafka Headers, which allow arbitrary\n// []byte for both key and value. These are converted to string for use in\n// Message.Metadata.\n//\n// # As\n//\n// kafkapubsub exposes the following types for As:\n//   - Topic: sarama.SyncProducer\n//   - Subscription: sarama.ConsumerGroup, sarama.ConsumerGroupSession (may be nil during session renegotiation, and session may go stale at any time)\n//   - Message: *sarama.ConsumerMessage\n//   - Message.BeforeSend: *sarama.ProducerMessage\n//   - Message.AfterSend: None\n//   - Error: sarama.ConsumerError, sarama.ConsumerErrors, sarama.ProducerError, sarama.ProducerErrors, sarama.ConfigurationError, sarama.PacketDecodingError, sarama.PacketEncodingError, sarama.KError\npackage kafkapubsub // import \"gocloud.dev/pubsub/kafkapubsub\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/IBM/sarama\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nvar sendBatcherOpts = &batcher.Options{\n\tMaxBatchSize: 100,\n\tMaxHandlers:  100, // max concurrency for sends\n}\n\nvar recvBatcherOpts = &batcher.Options{\n\t// Concurrency doesn't make sense here.\n\tMaxBatchSize: 1,\n\tMaxHandlers:  1,\n}\n\nfunc init() {\n\topener := new(defaultOpener)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, opener)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, opener)\n}\n\n// defaultOpener create a default opener.\ntype defaultOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *defaultOpener) defaultOpener() (*URLOpener, error) {\n\to.init.Do(func() {\n\t\tbrokerList := os.Getenv(\"KAFKA_BROKERS\")\n\t\tif brokerList == \"\" {\n\t\t\to.err = errors.New(\"KAFKA_BROKERS environment variable not set\")\n\t\t\treturn\n\t\t}\n\t\tbrokers := strings.Split(brokerList, \",\")\n\t\tfor i, b := range brokers {\n\t\t\tbrokers[i] = strings.TrimSpace(b)\n\t\t}\n\t\to.opener = &URLOpener{\n\t\t\tBrokers: brokers,\n\t\t\tConfig:  MinimalConfig(),\n\t\t}\n\t})\n\treturn o.opener, o.err\n}\n\nfunc (o *defaultOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topener, err := o.defaultOpener()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: %v\", u, err)\n\t}\n\treturn opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *defaultOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topener, err := o.defaultOpener()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: %v\", u, err)\n\t}\n\treturn opener.OpenSubscriptionURL(ctx, u)\n}\n\n// Scheme is the URL scheme that kafkapubsub registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"kafka\"\n\n// URLOpener opens Kafka URLs like \"kafka://mytopic\" for topics and\n// \"kafka://group?topic=mytopic\" for subscriptions.\n//\n// For topics, the URL's host+path is used as the topic name,\n// and the \"key_name\" query parameter is used to extract the routing key\n// from metadata.\n//\n// For subscriptions, the URL's host+path is used as the group name,\n// and the \"topic\" query parameter(s) are used as the set of topics to\n// subscribe to. The \"offset\" parameter is available to subscribers to set\n// the Kafka consumer's initial offset. Where \"oldest\" starts consuming from\n// the oldest offset of the consumer group and \"newest\" starts consuming from\n// the most recent offset on the topic.\ntype URLOpener struct {\n\t// Brokers is the slice of brokers in the Kafka cluster.\n\tBrokers []string\n\t// Config is the Sarama Config.\n\t// Config.Producer.Return.Success must be set to true.\n\tConfig *sarama.Config\n\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"key_name\":\n\t\t\tif len(value) != 1 || len(value[0]) == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t\t\t}\n\n\t\t\to.TopicOptions.KeyName = value[0]\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\n\ttopicName := path.Join(u.Host, u.Path)\n\treturn OpenTopic(o.Brokers, o.Config, topicName, &o.TopicOptions)\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\tvar topics []string\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"topic\":\n\t\t\ttopics = value\n\t\tcase \"offset\":\n\t\t\tif len(value) == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t\t\t}\n\n\t\t\toffset := value[0]\n\t\t\tswitch offset {\n\t\t\tcase \"oldest\":\n\t\t\t\to.Config.Consumer.Offsets.Initial = sarama.OffsetOldest\n\t\t\tcase \"newest\":\n\t\t\t\to.Config.Consumer.Offsets.Initial = sarama.OffsetNewest\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, offset)\n\t\t\t}\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\n\tgroup := path.Join(u.Host, u.Path)\n\treturn OpenSubscription(o.Brokers, o.Config, group, topics, &o.SubscriptionOptions)\n}\n\n// MinimalConfig returns a minimal sarama.Config.\nfunc MinimalConfig() *sarama.Config {\n\tconfig := sarama.NewConfig()\n\tconfig.Version = sarama.V0_11_0_0       // required for Headers\n\tconfig.Producer.Return.Successes = true // required for SyncProducer\n\treturn config\n}\n\ntype topic struct {\n\tproducer  sarama.SyncProducer\n\ttopicName string\n\topts      TopicOptions\n}\n\n// TopicOptions contains configuration options for topics.\ntype TopicOptions struct {\n\t// KeyName optionally sets the Message.Metadata key to use as the optional\n\t// Kafka message key. If set, and if a matching Message.Metadata key is found,\n\t// the value for that key will be used as the message key when sending to\n\t// Kafka, instead of being added to the message headers.\n\tKeyName string\n\n\t// BatcherOptions adds constraints to the default batching done for sends.\n\tBatcherOptions batcher.Options\n}\n\n// OpenTopic creates a pubsub.Topic that sends to a Kafka topic.\n//\n// It uses a sarama.SyncProducer to send messages. Producer options can\n// be configured in the Producer section of the sarama.Config:\n// https://godoc.org/github.com/IBM/sarama#Config.\n//\n// Config.Producer.Return.Success must be set to true.\nfunc OpenTopic(brokers []string, config *sarama.Config, topicName string, opts *TopicOptions) (*pubsub.Topic, error) {\n\tdt, err := openTopic(brokers, config, topicName, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tbo := sendBatcherOpts.NewMergedOptions(&dt.opts.BatcherOptions)\n\treturn pubsub.NewTopic(dt, bo), nil\n}\n\n// openTopic returns the driver for OpenTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openTopic(brokers []string, config *sarama.Config, topicName string, opts *TopicOptions) (*topic, error) {\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\tproducer, err := sarama.NewSyncProducer(brokers, config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &topic{producer: producer, topicName: topicName, opts: *opts}, nil\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *topic) SendBatch(ctx context.Context, dms []*driver.Message) error {\n\t// Convert the messages to a slice of sarama.ProducerMessage.\n\tms := make([]*sarama.ProducerMessage, 0, len(dms))\n\tfor _, dm := range dms {\n\t\tvar kafkaKey sarama.Encoder\n\t\tvar headers []sarama.RecordHeader\n\t\tfor k, v := range dm.Metadata {\n\t\t\tif k == t.opts.KeyName {\n\t\t\t\t// Use this key's value as the Kafka message key instead of adding it\n\t\t\t\t// to the headers.\n\t\t\t\tkafkaKey = sarama.ByteEncoder(v)\n\t\t\t} else {\n\t\t\t\theaders = append(headers, sarama.RecordHeader{Key: []byte(k), Value: []byte(v)})\n\t\t\t}\n\t\t}\n\t\tpm := &sarama.ProducerMessage{\n\t\t\tTopic:   t.topicName,\n\t\t\tKey:     kafkaKey,\n\t\t\tValue:   sarama.ByteEncoder(dm.Body),\n\t\t\tHeaders: headers,\n\t\t}\n\t\tif dm.BeforeSend != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**sarama.ProducerMessage); ok {\n\t\t\t\t\t*p = pm\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := dm.BeforeSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tms = append(ms, pm)\n\n\t}\n\terr := t.producer.SendMessages(ms)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfor _, dm := range dms {\n\t\tif dm.AfterSend != nil {\n\t\t\tasFunc := func(i any) bool { return false }\n\t\t\tif err := dm.AfterSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Close implements io.Closer.\nfunc (t *topic) Close() error {\n\treturn t.producer.Close()\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (t *topic) IsRetryable(error) bool {\n\treturn false\n}\n\n// As implements driver.Topic.As.\nfunc (t *topic) As(i any) bool {\n\tif p, ok := i.(*sarama.SyncProducer); ok {\n\t\t*p = t.producer\n\t\treturn true\n\t}\n\treturn false\n}\n\n// ErrorAs implements driver.Topic.ErrorAs.\nfunc (t *topic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\n// ErrorCode implements driver.Topic.ErrorCode.\nfunc (t *topic) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\nfunc errorCode(err error) gcerrors.ErrorCode {\n\tif pes, ok := err.(sarama.ProducerErrors); ok && len(pes) == 1 {\n\t\treturn errorCode(pes[0])\n\t}\n\tif pe, ok := err.(*sarama.ProducerError); ok {\n\t\treturn errorCode(pe.Err)\n\t}\n\tif err == sarama.ErrUnknownTopicOrPartition {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n\ntype subscription struct {\n\topts          SubscriptionOptions\n\tcloseCh       chan struct{} // closed when we've shut down\n\tjoinCh        chan struct{} // closed when we join for the first time\n\tcancel        func()        // cancels the background consumer\n\tcloseErr      error         // fatal error detected by the background consumer\n\tconsumerGroup sarama.ConsumerGroup\n\n\tmu             sync.Mutex\n\tunacked        []*ackInfo\n\tsess           sarama.ConsumerGroupSession // current session, if any, used for marking offset updates\n\texpectedClaims int                         // # of expected claims for the current session, they should be added via ConsumeClaim\n\tclaims         []sarama.ConsumerGroupClaim // claims in the current session\n}\n\n// ackInfo stores info about a message and whether it has been acked.\n// It is used as the driver.AckID.\ntype ackInfo struct {\n\tmsg   *sarama.ConsumerMessage\n\tacked bool\n}\n\n// SubscriptionOptions contains configuration for subscriptions.\ntype SubscriptionOptions struct {\n\t// KeyName optionally sets the Message.Metadata key in which to store the\n\t// Kafka message key. If set, and if the Kafka message key is non-empty,\n\t// the key value will be stored in Message.Metadata under KeyName.\n\tKeyName string\n\n\t// WaitForJoin causes OpenSubscription to wait for up to WaitForJoin\n\t// to allow the client to join the consumer group.\n\t// Messages sent to the topic before the client joins the group\n\t// may not be received by this subscription.\n\t// OpenSubscription will succeed even if WaitForJoin elapses and\n\t// the subscription still hasn't been joined successfully.\n\tWaitForJoin time.Duration\n}\n\n// OpenSubscription creates a pubsub.Subscription that joins group, receiving\n// messages from topics.\n//\n// It uses a sarama.ConsumerGroup to receive messages. Consumer options can\n// be configured in the Consumer section of the sarama.Config:\n// https://godoc.org/github.com/IBM/sarama#Config.\nfunc OpenSubscription(brokers []string, config *sarama.Config, group string, topics []string, opts *SubscriptionOptions) (*pubsub.Subscription, error) {\n\tds, err := openSubscription(brokers, config, group, topics, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pubsub.NewSubscription(ds, recvBatcherOpts, nil), nil\n}\n\n// openSubscription returns the driver for OpenSubscription. This function\n// exists so the test harness can get the driver interface implementation if it\n// needs to.\nfunc openSubscription(brokers []string, config *sarama.Config, group string, topics []string, opts *SubscriptionOptions) (driver.Subscription, error) {\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\tconsumerGroup, err := sarama.NewConsumerGroup(brokers, group, config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Create a cancelable context for the background goroutine that\n\t// consumes messages.\n\tctx, cancel := context.WithCancel(context.Background())\n\tjoinCh := make(chan struct{})\n\tds := &subscription{\n\t\topts:          *opts,\n\t\tconsumerGroup: consumerGroup,\n\t\tcloseCh:       make(chan struct{}),\n\t\tjoinCh:        joinCh,\n\t\tcancel:        cancel,\n\t}\n\t// Start a background consumer. It should run until ctx is cancelled\n\t// by Close, or until there's a fatal error (e.g., topic doesn't exist).\n\t// We're registering ds as our ConsumerGroupHandler, so sarama will\n\t// call [Setup, ConsumeClaim (possibly more than once), Cleanup]\n\t// repeatedly as the consumer group is rebalanced.\n\t// See https://godoc.org/github.com/IBM/sarama#ConsumerGroup.\n\tgo func() {\n\t\tfor {\n\t\t\tds.closeErr = consumerGroup.Consume(ctx, topics, ds)\n\t\t\tif ds.closeErr != nil || ctx.Err() != nil {\n\t\t\t\tconsumerGroup.Close()\n\t\t\t\tclose(ds.closeCh)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}()\n\tif opts.WaitForJoin > 0 {\n\t\t// Best effort wait for first consumer group session.\n\t\tselect {\n\t\tcase <-joinCh:\n\t\tcase <-ds.closeCh:\n\t\tcase <-time.After(opts.WaitForJoin):\n\t\t}\n\t}\n\treturn ds, nil\n}\n\n// Setup implements sarama.ConsumerGroupHandler.Setup. It is called whenever\n// a new session with the broker is starting.\nfunc (s *subscription) Setup(sess sarama.ConsumerGroupSession) error {\n\t// Record the current session.\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\ts.sess = sess\n\ts.expectedClaims = 0\n\tfor _, claims := range sess.Claims() {\n\t\ts.expectedClaims += len(claims)\n\t}\n\treturn nil\n}\n\n// Cleanup implements sarama.ConsumerGroupHandler.Cleanup.\nfunc (s *subscription) Cleanup(sarama.ConsumerGroupSession) error {\n\t// Clear the current session.\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\ts.sess = nil\n\ts.expectedClaims = 0\n\ts.claims = nil\n\treturn nil\n}\n\n// ConsumeClaim implements sarama.ConsumerGroupHandler.ConsumeClaim.\n// This is where messages are actually delivered, via a channel.\nfunc (s *subscription) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {\n\ts.mu.Lock()\n\ts.claims = append(s.claims, claim)\n\t// Once all of the expected claims have registered, close joinCh to (possibly) wake up OpenSubscription.\n\tif s.joinCh != nil && len(s.claims) == s.expectedClaims {\n\t\tclose(s.joinCh)\n\t\ts.joinCh = nil\n\t}\n\ts.mu.Unlock()\n\t<-sess.Context().Done()\n\treturn nil\n}\n\n// ReceiveBatch implements driver.Subscription.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\t// Try to read maxMessages for up to 100ms before giving up.\n\tmaxWaitCtx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)\n\tdefer cancel()\n\n\tfor {\n\t\t// We'll give up after maxWaitCtx is Done, or if s.closeCh is closed.\n\t\t// Otherwise, we want to pull a message from one of the channels in the\n\t\t// claim(s) we've been given.\n\t\t//\n\t\t// Note: we could multiplex this by ranging over each claim.Messages(),\n\t\t// writing the messages to a single ch, and then reading from that ch\n\t\t// here. However, this results in us reading messages from Kafka and\n\t\t// essentially queueing them here; when the session is closed for whatever\n\t\t// reason, those messages are lost, which may or may not be an issue\n\t\t// depending on the Kafka configuration being used.\n\t\t//\n\t\t// It seems safer to use reflect.Select to explicitly only get a single\n\t\t// message at a time, and hand it directly to the user.\n\t\t//\n\t\t// reflect.Select is essentially a \"select\" statement, but allows us to\n\t\t// build the cases dynamically. We need that because we need a case for\n\t\t// each of the claims in s.claims.\n\t\ts.mu.Lock()\n\t\tcases := make([]reflect.SelectCase, 0, len(s.claims)+2)\n\t\t// Add a case for s.closeCh being closed, at index = 0.\n\t\tcases = append(cases, reflect.SelectCase{\n\t\t\tDir:  reflect.SelectRecv,\n\t\t\tChan: reflect.ValueOf(s.closeCh),\n\t\t})\n\t\t// Add a case for maxWaitCtx being Done, at index = 1.\n\t\tcases = append(cases, reflect.SelectCase{\n\t\t\tDir:  reflect.SelectRecv,\n\t\t\tChan: reflect.ValueOf(maxWaitCtx.Done()),\n\t\t})\n\t\t// Add a case per claim, reading from the claim's Messages channel.\n\t\tfor _, claim := range s.claims {\n\t\t\tcases = append(cases, reflect.SelectCase{\n\t\t\t\tDir:  reflect.SelectRecv,\n\t\t\t\tChan: reflect.ValueOf(claim.Messages()),\n\t\t\t})\n\t\t}\n\t\ts.mu.Unlock()\n\t\ti, v, ok := reflect.Select(cases)\n\t\tif !ok {\n\t\t\t// The i'th channel was closed.\n\t\t\tswitch i {\n\t\t\tcase 0: // s.closeCh\n\t\t\t\treturn nil, s.closeErr\n\t\t\tcase 1: // maxWaitCtx\n\t\t\t\t// We've tried for a while to get a message, but didn't get any.\n\t\t\t\t// Return an empty slice; the portable type will call us back.\n\t\t\t\treturn nil, ctx.Err()\n\t\t\t}\n\t\t\t// Otherwise, if one of the claim channels closed, we're probably ending\n\t\t\t// a session. Just keep trying.\n\t\t\tcontinue\n\t\t}\n\t\tmsg := v.Interface().(*sarama.ConsumerMessage)\n\n\t\t// We've got a message! It should not be nil.\n\t\t// Read the metadata from msg.Headers.\n\t\tmd := map[string]string{}\n\t\tfor _, h := range msg.Headers {\n\t\t\tmd[string(h.Key)] = string(h.Value)\n\t\t}\n\t\t// Add a metadata entry for the message key if appropriate.\n\t\tif len(msg.Key) > 0 && s.opts.KeyName != \"\" {\n\t\t\tmd[s.opts.KeyName] = string(msg.Key)\n\t\t}\n\t\tack := &ackInfo{msg: msg}\n\t\tvar loggableID string\n\t\tif len(msg.Key) == 0 {\n\t\t\tloggableID = fmt.Sprintf(\"partition %d offset %d\", msg.Partition, msg.Offset)\n\t\t} else {\n\t\t\tloggableID = string(msg.Key)\n\t\t}\n\t\tdm := &driver.Message{\n\t\t\tLoggableID: loggableID,\n\t\t\tBody:       msg.Value,\n\t\t\tMetadata:   md,\n\t\t\tAckID:      ack,\n\t\t\tAsFunc: func(i any) bool {\n\t\t\t\tif p, ok := i.(**sarama.ConsumerMessage); ok {\n\t\t\t\t\t*p = msg\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t},\n\t\t}\n\t\ts.mu.Lock()\n\t\tdefer s.mu.Unlock()\n\t\ts.unacked = append(s.unacked, ack)\n\t\treturn []*driver.Message{dm}, nil\n\t}\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ids []driver.AckID) error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\t// Mark them all acked.\n\tfor _, id := range ids {\n\t\tid.(*ackInfo).acked = true\n\t}\n\tif s.sess == nil {\n\t\t// We don't have a current session, so we can't send offset updates.\n\t\t// We'll just wait until next time and retry.\n\t\treturn nil\n\t}\n\t// Mark all of the acked messages at the head of the slice. Since Kafka only\n\t// stores a single offset, we can't mark messages that aren't at the head; that\n\t// would move the offset past other as-yet-unacked messages.\n\tfor len(s.unacked) > 0 && s.unacked[0].acked {\n\t\ts.sess.MarkMessage(s.unacked[0].msg, \"\")\n\t\ts.unacked = s.unacked[1:]\n\t}\n\treturn nil\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool {\n\t// Nacking a single message doesn't make sense with the way Kafka maintains\n\t// offsets.\n\treturn false\n}\n\n// SendNacks implements driver.Subscription.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ids []driver.AckID) error {\n\tpanic(\"unreachable\")\n}\n\n// Close implements io.Closer.\nfunc (s *subscription) Close() error {\n\t// Cancel the ctx for the background goroutine and wait until it's done.\n\ts.cancel()\n\t<-s.closeCh\n\treturn nil\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (*subscription) IsRetryable(error) bool {\n\treturn false\n}\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tif p, ok := i.(*sarama.ConsumerGroup); ok {\n\t\t*p = s.consumerGroup\n\t\treturn true\n\t}\n\tif p, ok := i.(*sarama.ConsumerGroupSession); ok {\n\t\ts.mu.Lock()\n\t\tdefer s.mu.Unlock()\n\t\t*p = s.sess\n\t\treturn true\n\t}\n\treturn false\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs.\nfunc (s *subscription) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\n// ErrorCode implements driver.Subscription.ErrorCode.\nfunc (*subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\nfunc errorAs(err error, i any) bool {\n\tswitch terr := err.(type) {\n\tcase sarama.ConsumerError:\n\t\tif p, ok := i.(*sarama.ConsumerError); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.ConsumerErrors:\n\t\tif p, ok := i.(*sarama.ConsumerErrors); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.ProducerError:\n\t\tif p, ok := i.(*sarama.ProducerError); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.ProducerErrors:\n\t\tif p, ok := i.(*sarama.ProducerErrors); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.ConfigurationError:\n\t\tif p, ok := i.(*sarama.ConfigurationError); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.PacketDecodingError:\n\t\tif p, ok := i.(*sarama.PacketDecodingError); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.PacketEncodingError:\n\t\tif p, ok := i.(*sarama.PacketEncodingError); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\tcase sarama.KError:\n\t\tif p, ok := i.(*sarama.KError); ok {\n\t\t\t*p = terr\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "pubsub/kafkapubsub/kafka_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage kafkapubsub // import \"gocloud.dev/pubsub/kafkapubsub\"\n\n// To run these tests against a real Kafka server, run localkafka.sh.\n// See https://github.com/spotify/docker-kafka for more on the docker container\n// that the script runs.\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"os\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/IBM/sarama\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/google/go-cmp/cmp/cmpopts\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n)\n\nvar (\n\tlocalBrokerAddrs = []string{\"localhost:9092\"}\n\t// Makes OpenSubscription wait ~forever until the subscriber has joined the\n\t// ConsumerGroup. Messages sent to the topic before the subscriber has joined\n\t// won't be received.\n\tsubscriptionOptions = &SubscriptionOptions{WaitForJoin: 24 * time.Hour}\n)\n\ntype harness struct {\n\tuniqueID  int\n\tnumSubs   uint32\n\tnumTopics uint32\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping Kafka tests since the Kafka server is not available\")\n\t}\n\treturn &harness{uniqueID: rand.Int()}, nil\n}\n\nfunc createKafkaTopic(topicName string, partitions int32) (func(), error) {\n\t// Create the topic.\n\tconfig := MinimalConfig()\n\tadmin, err := sarama.NewClusterAdmin(localBrokerAddrs, config)\n\tif err != nil {\n\t\treturn func() {}, err\n\t}\n\tclose1 := func() { admin.Close() }\n\n\ttopicDetail := &sarama.TopicDetail{\n\t\tNumPartitions:     partitions,\n\t\tReplicationFactor: 1,\n\t}\n\tif err := admin.CreateTopic(topicName, topicDetail, false); err != nil {\n\t\treturn close1, err\n\t}\n\tclose2 := func() {\n\t\tadmin.DeleteTopic(topicName)\n\t\tclose1()\n\t}\n\treturn close2, nil\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (driver.Topic, func(), error) {\n\ttopicName := fmt.Sprintf(\"%s-topic-%d-%d\", sanitize(testName), h.uniqueID, atomic.AddUint32(&h.numTopics, 1))\n\tcleanup, err := createKafkaTopic(topicName, 1)\n\tif err != nil {\n\t\treturn nil, cleanup, err\n\t}\n\n\t// Open it.\n\tdt, err := openTopic(localBrokerAddrs, MinimalConfig(), topicName, nil)\n\tif err != nil {\n\t\treturn nil, cleanup, err\n\t}\n\treturn dt, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\treturn openTopic(localBrokerAddrs, MinimalConfig(), \"nonexistent-topic\", nil)\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (driver.Subscription, func(), error) {\n\tgroupID := fmt.Sprintf(\"%s-sub-%d-%d\", sanitize(testName), h.uniqueID, atomic.AddUint32(&h.numSubs, 1))\n\tds, err := openSubscription(localBrokerAddrs, MinimalConfig(), groupID, []string{dt.(*topic).topicName}, subscriptionOptions)\n\treturn ds, func() {}, err\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\tds, err := openSubscription(localBrokerAddrs, MinimalConfig(), \"unused-group\", []string{\"nonexistent-topic\"}, subscriptionOptions)\n\treturn ds, func() {}, err\n}\n\nfunc (h *harness) Close() {}\n\nfunc (h *harness) MaxBatchSizes() (int, int) { return sendBatcherOpts.MaxBatchSize, 0 }\n\nfunc (*harness) SupportsMultipleSubscriptions() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tasTests := []drivertest.AsTest{asTest{}}\n\tdrivertest.RunConformanceTests(t, newHarness, asTests)\n}\n\ntype asTest struct{}\n\nfunc (asTest) Name() string {\n\treturn \"kafka\"\n}\n\nfunc (asTest) TopicCheck(topic *pubsub.Topic) error {\n\tvar sp sarama.SyncProducer\n\tif !topic.As(&sp) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", sp)\n\t}\n\treturn nil\n}\n\nfunc (asTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar cg sarama.ConsumerGroup\n\tif !sub.As(&cg) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", cg)\n\t}\n\tvar cgs sarama.ConsumerGroupSession\n\tif !sub.As(&cgs) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", cgs)\n\t}\n\treturn nil\n}\n\nfunc (asTest) TopicErrorCheck(t *pubsub.Topic, err error) error {\n\tvar pe sarama.ProducerErrors\n\tif !t.ErrorAs(err, &pe) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T)\", err, err)\n\t}\n\treturn nil\n}\n\nfunc (asTest) SubscriptionErrorCheck(s *pubsub.Subscription, err error) error {\n\tvar ke sarama.KError\n\tif !s.ErrorAs(err, &ke) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T)\", err, err)\n\t}\n\treturn nil\n}\n\nfunc (asTest) MessageCheck(m *pubsub.Message) error {\n\tvar cm *sarama.ConsumerMessage\n\tif !m.As(&cm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", cm)\n\t}\n\treturn nil\n}\n\nfunc (asTest) BeforeSend(as func(any) bool) error {\n\tvar pm *sarama.ProducerMessage\n\tif !as(&pm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &pm)\n\t}\n\treturn nil\n}\n\nfunc (asTest) AfterSend(as func(any) bool) error {\n\treturn nil\n}\n\n// TestKafkaKey tests sending/receiving a message with the Kafka message key set.\nfunc TestKafkaKey(t *testing.T) {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping Kafka tests since the Kafka server is not available\")\n\t}\n\tconst (\n\t\tkeyName  = \"kafkakey\"\n\t\tkeyValue = \"kafkakeyvalue\"\n\t)\n\tuniqueID := rand.Int()\n\tctx := context.Background()\n\n\ttopicName := fmt.Sprintf(\"%s-topic-%d\", sanitize(t.Name()), uniqueID)\n\ttopicCleanup, err := createKafkaTopic(topicName, 1)\n\tdefer topicCleanup()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttopic, err := OpenTopic(localBrokerAddrs, MinimalConfig(), topicName, &TopicOptions{KeyName: keyName})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\tgroupID := fmt.Sprintf(\"%s-sub-%d\", sanitize(t.Name()), uniqueID)\n\tsubOpts := *subscriptionOptions\n\tsubOpts.KeyName = keyName\n\tsub, err := OpenSubscription(localBrokerAddrs, MinimalConfig(), groupID, []string{topicName}, &subOpts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := sub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\tm := &pubsub.Message{\n\t\tMetadata: map[string]string{\n\t\t\t\"foo\":   \"bar\",\n\t\t\tkeyName: keyValue,\n\t\t},\n\t\tBody: []byte(\"hello world\"),\n\t\tBeforeSend: func(as func(any) bool) error {\n\t\t\t// Verify that the Key field was set correctly on the outgoing Kafka\n\t\t\t// message.\n\t\t\tvar pm *sarama.ProducerMessage\n\t\t\tif !as(&pm) {\n\t\t\t\treturn errors.New(\"failed to convert to ProducerMessage\")\n\t\t\t}\n\t\t\tgotKeyBytes, err := pm.Key.Encode()\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"failed to Encode Kafka Key: %v\", err)\n\t\t\t}\n\t\t\tif gotKey := string(gotKeyBytes); gotKey != keyValue {\n\t\t\t\treturn errors.New(\"Kafka key wasn't set appropriately\")\n\t\t\t}\n\t\t\treturn nil\n\t\t},\n\t}\n\terr = topic.Send(ctx, m)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// The test will hang here if the message isn't available, so use a shorter timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\tgot, err := sub.Receive(ctx2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tgot.Ack()\n\n\tm.BeforeSend = nil // don't expect this in the received message\n\tm.LoggableID = keyValue\n\tif diff := cmp.Diff(got, m, cmpopts.IgnoreUnexported(pubsub.Message{})); diff != \"\" {\n\t\tt.Errorf(\"got\\n%v\\nwant\\n%v\\ndiff\\n%v\", got, m, diff)\n\t}\n\n\t// Verify that Key was set in the received Kafka message via As.\n\tvar cm *sarama.ConsumerMessage\n\tif !got.As(&cm) {\n\t\tt.Fatal(\"failed to get message As ConsumerMessage\")\n\t}\n\tif gotKey := string(cm.Key); gotKey != keyValue {\n\t\tt.Errorf(\"got key %q want %q\", gotKey, keyValue)\n\t}\n}\n\n// TestMultiplePartionsWithRebalancing tests use of a topic with multiple\n// partitions, including the rebalancing that happens when a new consumer\n// appears in the group.\nfunc TestMultiplePartionsWithRebalancing(t *testing.T) {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping Kafka tests since the Kafka server is not available\")\n\t}\n\tconst (\n\t\tkeyName   = \"kafkakey\"\n\t\tnMessages = 10\n\t)\n\tuniqueID := rand.Int()\n\tctx := context.Background()\n\n\t// Create a topic with 10 partitions. Using 10 instead of just 2 because\n\t// that also tests having multiple claims.\n\ttopicName := fmt.Sprintf(\"%s-topic-%d\", sanitize(t.Name()), uniqueID)\n\ttopicCleanup, err := createKafkaTopic(topicName, 10)\n\tdefer topicCleanup()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttopic, err := OpenTopic(localBrokerAddrs, MinimalConfig(), topicName, &TopicOptions{KeyName: keyName})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := topic.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t// Open a subscription.\n\tgroupID := fmt.Sprintf(\"%s-sub-%d\", sanitize(t.Name()), uniqueID)\n\tsubOpts := *subscriptionOptions\n\tsubOpts.KeyName = keyName\n\tsub, err := OpenSubscription(localBrokerAddrs, MinimalConfig(), groupID, []string{topicName}, &subOpts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := sub.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t// Send some messages.\n\tsend := func() {\n\t\tfor i := 0; i < nMessages; i++ {\n\t\t\tm := &pubsub.Message{\n\t\t\t\tMetadata: map[string]string{\n\t\t\t\t\tkeyName: fmt.Sprintf(\"key%d\", i),\n\t\t\t\t},\n\t\t\t\tBody: []byte(\"hello world\"),\n\t\t\t}\n\t\t\tif err := topic.Send(ctx, m); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}\n\t}\n\tsend()\n\n\t// Receive the messages via the subscription.\n\tgot := make(chan int)\n\tdone := make(chan error)\n\tread := func(ctx context.Context, subNum int, sub *pubsub.Subscription) {\n\t\tfor {\n\t\t\tm, err := sub.Receive(ctx)\n\t\t\tif err != nil {\n\t\t\t\tif err == context.Canceled {\n\t\t\t\t\t// Expected after all messages are received, no error.\n\t\t\t\t\tdone <- nil\n\t\t\t\t} else {\n\t\t\t\t\tdone <- err\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tm.Ack()\n\t\t\tgot <- subNum\n\t\t}\n\t}\n\t// The test will hang here if the messages aren't available, so use a shorter\n\t// timeout.\n\tctx2, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tgo read(ctx2, 0, sub)\n\tfor i := 0; i < nMessages; i++ {\n\t\tselect {\n\t\tcase <-got:\n\t\tcase err := <-done:\n\t\t\t// Premature error.\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}\n\t}\n\tcancel()\n\tif err := <-done; err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Add another subscription to the same group. Kafka will rebalance the\n\t// consumer group, causing the Cleanup/Setup/ConsumeClaim loop. Each of the\n\t// two subscriptions should get claims for 50% of the partitions.\n\tsub2, err := OpenSubscription(localBrokerAddrs, MinimalConfig(), groupID, []string{topicName}, &subOpts)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := sub2.Shutdown(ctx); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t// Send and receive some messages.\n\t// Now both subscriptions should get some messages.\n\tsend()\n\n\t// The test will hang here if the message isn't available, so use a shorter timeout.\n\tctx3, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tgo read(ctx3, 0, sub)\n\tgo read(ctx3, 1, sub2)\n\tcounts := []int{0, 0}\n\tfor i := 0; i < nMessages; i++ {\n\t\tselect {\n\t\tcase sub := <-got:\n\t\t\tcounts[sub]++\n\t\tcase err := <-done:\n\t\t\t// Premature error.\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}\n\t}\n\tcancel()\n\tfor i := 0; i < 2; i++ {\n\t\tif err := <-done; err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\tif counts[0] == 0 || counts[1] == 0 {\n\t\tt.Errorf(\"one of the partitioned subscriptions didn't get any messages: %v\", counts)\n\t}\n}\n\nfunc sanitize(testName string) string {\n\treturn strings.Replace(testName, \"/\", \"_\", -1)\n}\n\nfunc BenchmarkKafka(b *testing.B) {\n\tctx := context.Background()\n\tuniqueID := rand.Int()\n\n\t// Create the topic.\n\ttopicName := fmt.Sprintf(\"%s-topic-%d\", b.Name(), uniqueID)\n\tcleanup, err := createKafkaTopic(topicName, 1)\n\tdefer cleanup()\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\n\ttopic, err := OpenTopic(localBrokerAddrs, MinimalConfig(), topicName, nil)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\n\tgroupID := fmt.Sprintf(\"%s-subscription-%d\", b.Name(), uniqueID)\n\tsub, err := OpenSubscription(localBrokerAddrs, MinimalConfig(), groupID, []string{topicName}, subscriptionOptions)\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer sub.Shutdown(ctx)\n\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n\nfunc fakeConnectionStringInEnv() func() {\n\toldEnvVal := os.Getenv(\"KAFKA_BROKERS\")\n\tos.Setenv(\"KAFKA_BROKERS\", \"localhost:10000\")\n\treturn func() {\n\t\tos.Setenv(\"KAFKA_BROKERS\", oldEnvVal)\n\t}\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"kafka://mytopic\", false},\n\t\t// OK, specifying key_name.\n\t\t{\"kafka://mytopic?key_name=x-partition-key\", false},\n\t\t// Invalid key_name value.\n\t\t{\"kafka://mytopic?key_name=\", true},\n\t\t// Invalid parameter.\n\t\t{\"kafka://mytopic?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif err != nil && errors.Is(err, sarama.ErrOutOfBrokers) {\n\t\t\t// Since we don't have a real kafka broker to talk to, we will always get an error when\n\t\t\t// opening a topic. This test is checking specifically for query parameter usage, so\n\t\t\t// we treat the \"no brokers\" error message as a nil error.\n\t\t\terr = nil\n\t\t}\n\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"kafka://mygroup?topic=mytopic\", false},\n\t\t// OK, specifying initial offset.\n\t\t{\"kafka://mygroup?topic=mytopic&offset=oldest\", false},\n\t\t{\"kafka://mygroup?topic=mytopic&offset=newest\", false},\n\t\t// Invalid offset specified.\n\t\t{\"kafka://mygroup?topic=mytopic&offset=value\", true},\n\t\t// Invalid parameter.\n\t\t{\"kafka://mygroup?topic=mytopic&param=value\", true},\n\t}\n\n\tctx := context.Background()\n\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif err != nil && errors.Is(err, sarama.ErrOutOfBrokers) {\n\t\t\t// Since we don't have a real kafka broker to talk to, we will always get an error when\n\t\t\t// opening a subscription. This test is checking specifically for query parameter usage, so\n\t\t\t// we treat the \"no brokers\" error message as a nil error.\n\t\t\terr = nil\n\t\t}\n\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "pubsub/kafkapubsub/localkafka.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts a local Kafka instance (plus supporting Zookeeper) via Docker.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\n# Clean up and run Zookeeper.\necho \"Starting Zookeeper (for Kafka)...\"\ndocker rm -f zookeeper &> /dev/null || :\ndocker run -d --net=host --name=zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 confluentinc/cp-zookeeper:6.0.1 &> /dev/null\necho \"...done. Run \\\"docker rm -f zookeeper\\\" to clean up the container.\"\necho\n\n# Clean up and run Kafka.\necho \"Starting Kafka...\"\ndocker rm -f kafka &> /dev/null || :\ndocker run -d --net=host -p 9092:9092 --name=kafka -e KAFKA_ZOOKEEPER_CONNECT=localhost:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -e KAFKA_AUTO_CREATE_TOPICS_ENABLE=false -e KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=100 confluentinc/cp-kafka:6.0.1 &> /dev/null\necho \"...done. Run \\\"docker rm -f kafka\\\" to clean up the container.\"\necho\n"
  },
  {
    "path": "pubsub/mempubsub/conformance_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mempubsub\n\nimport (\n\t\"context\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n)\n\ntype harness struct{}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\treturn &harness{}, nil\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (dt driver.Topic, cleanup func(), err error) {\n\tcleanup = func() {}\n\treturn &topic{}, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\t// A nil *topic behaves like a nonexistent topic.\n\treturn (*topic)(nil), nil\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error) {\n\tds = newSubscription(dt.(*topic), time.Second)\n\tcleanup = func() {}\n\treturn ds, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\treturn newSubscription(nil, time.Second), func() {}, nil\n}\n\nfunc (h *harness) Close() {}\n\nfunc (h *harness) MaxBatchSizes() (int, int) { return 0, 0 }\n\nfunc (*harness) SupportsMultipleSubscriptions() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, nil)\n}\n\nfunc BenchmarkMemPubSub(b *testing.B) {\n\tctx := context.Background()\n\ttopic := NewTopic()\n\tdefer topic.Shutdown(ctx)\n\tsub := NewSubscription(topic, time.Second)\n\tdefer sub.Shutdown(ctx)\n\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n"
  },
  {
    "path": "pubsub/mempubsub/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mempubsub_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"time\"\n\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/mempubsub\"\n)\n\nfunc ExampleNewSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Construct a *pubsub.Topic.\n\ttopic := mempubsub.NewTopic()\n\tdefer topic.Shutdown(ctx)\n\n\t// Construct a *pubsub.Subscription for the topic.\n\tsubscription := mempubsub.NewSubscription(topic, 1*time.Minute /* ack deadline */)\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc ExampleNewTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\ttopic := mempubsub.NewTopic()\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/mempubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Create a topic.\n\ttopic, err := pubsub.OpenTopic(ctx, \"mem://topicA\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n\n\t// Create a subscription connected to that topic.\n\tsubscription, err := pubsub.OpenSubscription(ctx, \"mem://topicA\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/mempubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\ttopic, err := pubsub.OpenTopic(ctx, \"mem://topicA\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/mempubsub/mem.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package mempubsub provides an in-memory pubsub implementation.\n// Use NewTopic to construct a *pubsub.Topic, and/or NewSubscription\n// to construct a *pubsub.Subscription.\n//\n// mempubsub should not be used for production: it is intended for local\n// development and testing.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, mempubsub registers\n// for the scheme \"mem\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Message Delivery Semantics\n//\n// mempubsub supports at-least-once semantics; applications must\n// call Message.Ack after processing a message, or it will be redelivered.\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # As\n//\n// mempubsub does not support any types for As.\npackage mempubsub // import \"gocloud.dev/pubsub/mempubsub\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/url\"\n\t\"path\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nfunc init() {\n\to := new(URLOpener)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, o)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, o)\n}\n\n// Scheme is the URL scheme mempubsub registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"mem\"\n\n// URLOpener opens mempubsub URLs like \"mem://topic\".\n//\n// The URL's host+path is used as the topic to create or subscribe to.\n//\n// Query parameters:\n//   - ackdeadline: The ack deadline for OpenSubscription, in time.ParseDuration formats.\n//     Defaults to 1m.\ntype URLOpener struct {\n\tmu     sync.Mutex\n\ttopics map[string]*pubsub.Topic\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\tfor param := range u.Query() {\n\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t}\n\ttopicName := path.Join(u.Host, u.Path)\n\to.mu.Lock()\n\tdefer o.mu.Unlock()\n\tif o.topics == nil {\n\t\to.topics = map[string]*pubsub.Topic{}\n\t}\n\tt := o.topics[topicName]\n\tif t == nil {\n\t\tt = NewTopic()\n\t\to.topics[topicName] = t\n\t}\n\treturn t, nil\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\tq := u.Query()\n\n\tackDeadline := 1 * time.Minute\n\tif s := q.Get(\"ackdeadline\"); s != \"\" {\n\t\tvar err error\n\t\tackDeadline, err = time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid ackdeadline %q: %v\", u, s, err)\n\t\t}\n\t\tq.Del(\"ackdeadline\")\n\t}\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t}\n\ttopicName := path.Join(u.Host, u.Path)\n\to.mu.Lock()\n\tdefer o.mu.Unlock()\n\tif o.topics == nil {\n\t\to.topics = map[string]*pubsub.Topic{}\n\t}\n\tt := o.topics[topicName]\n\tif t == nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: no topic %q has been created\", u, topicName)\n\t}\n\treturn NewSubscription(t, ackDeadline), nil\n}\n\nvar errNotExist = errors.New(\"mempubsub: topic does not exist\")\n\ntype topic struct {\n\tmu        sync.Mutex\n\tsubs      []*subscription\n\tnextAckID int\n}\n\n// TopicOptions contains configuration options for topics.\ntype TopicOptions struct {\n\t// BatcherOptions adds constraints to the default batching done for sends.\n\tBatcherOptions batcher.Options\n}\n\n// NewTopic creates a new in-memory topic.\nfunc NewTopic() *pubsub.Topic {\n\treturn NewTopicWithOptions(nil)\n}\n\n// NewTopicWithOptions is similar to NewTopic, but supports TopicOptions.\nfunc NewTopicWithOptions(opts *TopicOptions) *pubsub.Topic {\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\treturn pubsub.NewTopic(&topic{}, &opts.BatcherOptions)\n}\n\n// SendBatch implements driver.Topic.SendBatch.\n// It is error if the topic is closed or has no subscriptions.\nfunc (t *topic) SendBatch(ctx context.Context, ms []*driver.Message) error {\n\tif err := ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\tif t == nil {\n\t\treturn errNotExist\n\t}\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\t// Log a warning if there are no subscribers.\n\tif len(t.subs) == 0 {\n\t\tlog.Print(\"warning: message sent to topic with no subscribers\")\n\t}\n\n\t// Associate ack IDs with messages here. It would be a bit better if each subscription's\n\t// messages had their own ack IDs, so we could catch one subscription using ack IDs from another,\n\t// but that would require copying all the messages.\n\tfor i, m := range ms {\n\t\tm.AckID = t.nextAckID + i\n\t\tm.LoggableID = fmt.Sprintf(\"msg #%d\", m.AckID)\n\t\tm.AsFunc = func(any) bool { return false }\n\n\t\tif m.BeforeSend != nil {\n\t\t\tif err := m.BeforeSend(func(any) bool { return false }); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif m.AfterSend != nil {\n\t\t\tif err := m.AfterSend(func(any) bool { return false }); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\tt.nextAckID += len(ms)\n\tfor _, s := range t.subs {\n\t\ts.add(ms)\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (*topic) IsRetryable(error) bool { return false }\n\n// As implements driver.Topic.As.\n// It supports *topic so that NewSubscription can recover a *topic\n// from the portable type (see below). External users won't be able\n// to use As because topic isn't exported.\nfunc (t *topic) As(i any) bool {\n\tx, ok := i.(**topic)\n\tif !ok {\n\t\treturn false\n\t}\n\t*x = t\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs\nfunc (*topic) ErrorAs(error, any) bool {\n\treturn false\n}\n\n// ErrorCode implements driver.Topic.ErrorCode\nfunc (*topic) ErrorCode(err error) gcerrors.ErrorCode {\n\tif err == errNotExist {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n\n// Close implements driver.Topic.Close.\nfunc (*topic) Close() error { return nil }\n\n// SubscriptionOptions will contain configuration for subscriptions.\ntype SubscriptionOptions struct {\n\t// ReceiveBatcherOptions adds constraints to the default batching done for receives.\n\tReceiveBatcherOptions batcher.Options\n\n\t// AckBatcherOptions adds constraints to the default batching done for acks.\n\tAckBatcherOptions batcher.Options\n}\n\ntype subscription struct {\n\tmu          sync.Mutex\n\ttopic       *topic\n\tackDeadline time.Duration\n\tmsgs        map[driver.AckID]*message // all unacknowledged messages\n}\n\n// NewSubscription creates a new subscription for the given topic.\n// It panics if the given topic did not come from mempubsub.\n// If a message is not acked within in the given ack deadline from when\n// it is received, then it will be redelivered.\nfunc NewSubscription(pstopic *pubsub.Topic, ackDeadline time.Duration) *pubsub.Subscription {\n\treturn NewSubscriptionWithOptions(pstopic, ackDeadline, nil)\n}\n\n// NewSubscriptionWithOptions is similar to NewSubscription, but supports SubscriptionOptions.\nfunc NewSubscriptionWithOptions(pstopic *pubsub.Topic, ackDeadline time.Duration, opts *SubscriptionOptions) *pubsub.Subscription {\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\tvar t *topic\n\tif !pstopic.As(&t) {\n\t\tpanic(\"mempubsub: NewSubscription passed a Topic not from mempubsub\")\n\t}\n\treturn pubsub.NewSubscription(newSubscription(t, ackDeadline), &opts.ReceiveBatcherOptions, &opts.AckBatcherOptions)\n}\n\nfunc newSubscription(topic *topic, ackDeadline time.Duration) *subscription {\n\ts := &subscription{\n\t\ttopic:       topic,\n\t\tackDeadline: ackDeadline,\n\t\tmsgs:        map[driver.AckID]*message{},\n\t}\n\tif topic != nil {\n\t\ttopic.mu.Lock()\n\t\tdefer topic.mu.Unlock()\n\t\ttopic.subs = append(topic.subs, s)\n\t}\n\treturn s\n}\n\ntype message struct {\n\tmsg        *driver.Message\n\texpiration time.Time\n}\n\nfunc (s *subscription) add(ms []*driver.Message) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor _, m := range ms {\n\t\t// The new message will expire at the zero time, which means it will be\n\t\t// immediately eligible for delivery.\n\t\ts.msgs[m.AckID] = &message{msg: m}\n\t}\n}\n\n// Collect some messages available for delivery. Since we're iterating over a map,\n// the order of the messages won't match the publish order, which mimics the actual\n// behavior of most pub/sub services.\nfunc (s *subscription) receiveNoWait(now time.Time, max int) []*driver.Message {\n\tvar msgs []*driver.Message\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor _, m := range s.msgs {\n\t\tif now.After(m.expiration) {\n\t\t\tmsgs = append(msgs, m.msg)\n\t\t\tm.expiration = now.Add(s.ackDeadline)\n\t\t\tif len(msgs) == max {\n\t\t\t\treturn msgs\n\t\t\t}\n\t\t}\n\t}\n\treturn msgs\n}\n\n// How long ReceiveBatch should wait if no messages are available, to avoid\n// spinning.\nconst pollDuration = 250 * time.Millisecond\n\n// ReceiveBatch implements driver.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\t// Check for closed or cancelled before doing any work.\n\tif err := s.wait(ctx, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tmsgs := s.receiveNoWait(time.Now(), maxMessages)\n\tif len(msgs) == 0 {\n\t\t// When we return no messages and no error, the portable type will call\n\t\t// ReceiveBatch again immediately. Sleep for a bit to avoid spinning.\n\t\ttime.Sleep(pollDuration)\n\t}\n\treturn msgs, nil\n}\n\nfunc (s *subscription) wait(ctx context.Context, dur time.Duration) error {\n\tif s.topic == nil {\n\t\treturn errNotExist\n\t}\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase <-time.After(dur):\n\t\treturn nil\n\t}\n}\n\n// SendAcks implements driver.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ackIDs []driver.AckID) error {\n\tif s.topic == nil {\n\t\treturn errNotExist\n\t}\n\t// Check for context done before doing any work.\n\tif err := ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\t// Acknowledge messages by removing them from the map.\n\t// Since there is a single map, this correctly handles the case where a message\n\t// is redelivered, but the first receiver acknowledges it.\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor _, id := range ackIDs {\n\t\t// It is OK if the message is not in the map; that just means it has been\n\t\t// previously acked.\n\t\tdelete(s.msgs, id)\n\t}\n\treturn nil\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool { return true }\n\n// SendNacks implements driver.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ackIDs []driver.AckID) error {\n\tif s.topic == nil {\n\t\treturn errNotExist\n\t}\n\t// Check for context done before doing any work.\n\tif err := ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\t// Nack messages by setting their expiration to the zero time.\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor _, id := range ackIDs {\n\t\tif m := s.msgs[id]; m != nil {\n\t\t\tm.expiration = time.Time{}\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (*subscription) IsRetryable(error) bool { return false }\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool { return false }\n\n// ErrorAs implements driver.Subscription.ErrorAs\nfunc (*subscription) ErrorAs(error, any) bool {\n\treturn false\n}\n\n// ErrorCode implements driver.Subscription.ErrorCode\nfunc (*subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\tif err == errNotExist {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n\n// Close implements driver.Subscription.Close.\nfunc (*subscription) Close() error { return nil }\n"
  },
  {
    "path": "pubsub/mempubsub/mem_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage mempubsub\n\nimport (\n\t\"context\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nfunc TestReceive(t *testing.T) {\n\tctx := context.Background()\n\ttopic := &topic{}\n\tsub := newSubscription(topic, 3*time.Second)\n\tif err := topic.SendBatch(ctx, []*driver.Message{\n\t\t{Body: []byte(\"a\")},\n\t\t{Body: []byte(\"b\")},\n\t\t{Body: []byte(\"c\")},\n\t}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tnow := time.Now()\n\t// We should get only two of the published messages.\n\tmsgs := sub.receiveNoWait(now, 2)\n\tif got, want := len(msgs), 2; got != want {\n\t\tt.Fatalf(\"got %d, want %d\", got, want)\n\t}\n\t// We should get the remaining message.\n\tmsgs = sub.receiveNoWait(now, 2)\n\tif got, want := len(msgs), 1; got != want {\n\t\tt.Fatalf(\"got %d, want %d\", got, want)\n\t}\n\t// Since all the messages are outstanding, we shouldn't get any.\n\tmsgs2 := sub.receiveNoWait(now, 10)\n\tif got, want := len(msgs2), 0; got != want {\n\t\tt.Fatalf(\"got %d, want %d\", got, want)\n\t}\n\t// Advance time past expiration, and we should get all the messages again,\n\t// since we didn't ack any.\n\tnow = now.Add(time.Hour)\n\tmsgs = sub.receiveNoWait(now, 10)\n\tif got, want := len(msgs), 3; got != want {\n\t\tt.Fatalf(\"got %d, want %d\", got, want)\n\t}\n\t// Again, since all the messages are outstanding, we shouldn't get any.\n\tmsgs2 = sub.receiveNoWait(now, 10)\n\tif got, want := len(msgs2), 0; got != want {\n\t\tt.Fatalf(\"got %d, want %d\", got, want)\n\t}\n\t// Now ack the messages.\n\tvar ackIDs []driver.AckID\n\tfor _, m := range msgs {\n\t\tackIDs = append(ackIDs, m.AckID)\n\t}\n\tsub.SendAcks(ctx, ackIDs)\n\t// They will never be delivered again, even if we wait past the ack deadline.\n\tnow = now.Add(time.Hour)\n\tmsgs = sub.receiveNoWait(now, 10)\n\tif got, want := len(msgs), 0; got != want {\n\t\tt.Fatalf(\"got %d, want %d\", got, want)\n\t}\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"mem://mytopic\", false},\n\t\t// Invalid parameter.\n\t\t{\"mem://mytopic?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"mem://mytopic\", false},\n\t\t// OK with ackdeadline\n\t\t{\"mem://mytopic?ackdeadline=30s\", false},\n\t\t// Invalid ackdeadline\n\t\t{\"mem://mytopic?ackdeadline=notaduration\", true},\n\t\t// Nonexistent topic.\n\t\t{\"mem://nonexistenttopic\", true},\n\t\t// Invalid parameter.\n\t\t{\"mem://myproject/mysub?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tpubsub.OpenTopic(ctx, \"mem://mytopic\")\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestSendNoSubs(t *testing.T) {\n\t// It's OK to send a message to a topic with no subscribers.\n\t// (But it will log a warning: that is untested.)\n\tctx := context.Background()\n\ttopic := NewTopic()\n\tdefer topic.Shutdown(ctx)\n\tif err := topic.Send(ctx, &pubsub.Message{Body: []byte(\"OK\")}); err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n\n/*\n// This test runs forever, so it's commented out. It's useful for playing\n// around with batching. Add a Printf in ../pubsub.go that prints the batch size.\nfunc TestReceiveBatching(t *testing.T) {\n\tctx := context.Background()\n\ttopic := NewTopic()\n\tdefer topic.Shutdown(ctx)\n\tsub := NewSubscriptionWithOptions(topic, 10*time.Second, &SubscriptionOptions{ReceiveBatcherOptions: batcher.Options{MaxBatchSize: 10, MaxHandlers: 100}})\n\tdefer sub.Shutdown(ctx)\n\n\t// Receive messages as quickly as possible.\n\tgo func() {\n\t\tfor {\n\t\t\tmsg, _ := sub.Receive(ctx)\n\t\t\tif msg != nil {\n\t\t\t\tmsg.Ack()\n\t\t\t}\n\t\t}\n\t}()\n\n\t// Send slightly slower than the 250ms Sleep.\n\tfor {\n\t\tif err := topic.Send(ctx, &pubsub.Message{Body: []byte(\"a\")}); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\ttime.Sleep(333 * time.Millisecond)\n\t}\n\t// With the above parameters, ideally the batch size would settle down to around 2.\n}\n*/\n"
  },
  {
    "path": "pubsub/natspubsub/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage natspubsub_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/nats-io/nats.go\"\n\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/natspubsub\"\n)\n\nfunc ExampleOpenTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tnatsConn, err := nats.Connect(\"nats://nats.example.com\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer natsConn.Close()\n\n\ttopic, err := natspubsub.OpenTopic(natsConn, \"example.mysubject\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tnatsConn, err := nats.Connect(\"nats://nats.example.com\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer natsConn.Close()\n\n\tsubscription, err := natspubsub.OpenSubscription(\n\t\tnatsConn,\n\t\t\"example.mysubject\",\n\t\tnil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription_queue() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tnatsConn, err := nats.Connect(\"nats://nats.example.com\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer natsConn.Close()\n\n\tsubscription, err := natspubsub.OpenSubscription(\n\t\tnatsConn,\n\t\t\"example.mysubject\",\n\t\t&natspubsub.SubscriptionOptions{Queue: \"queue1\"})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\n\t// This URL will Dial the NATS server at the URL in the environment variable\n\t// NATS_SERVER_URL and send messages with subject \"example.mysubject\".\n\ttopic, err := pubsub.OpenTopic(ctx, \"nats://example.mysubject\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// This URL will Dial the NATS server at the URL in the environment variable\n\t// NATS_SERVER_URL and receive messages with subject \"example.mysubject\".\n\tsubscription, err := pubsub.OpenSubscription(ctx, \"nats://example.mysubject\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openQueueSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// This URL will Dial the NATS server at the URL in the environment variable\n\t// NATS_SERVER_URL and receive messages with subject \"example.mysubject\"\n\t// This URL will be parsed and the queue attribute will be used as the Queue parameter when creating the NATS Subscription.\n\tsubscription, err := pubsub.OpenSubscription(ctx, \"nats://example.mysubject?queue=myqueue\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscriptionV2() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tnatsConn, err := nats.Connect(\"nats://nats.example.com\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer natsConn.Close()\n\n\tsubscription, err := natspubsub.OpenSubscriptionV2(\n\t\tnatsConn,\n\t\t\"example.mysubject\",\n\t\tnil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc ExampleOpenTopicV2() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tnatsConn, err := nats.Connect(\"nats://nats.example.com\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer natsConn.Close()\n\n\ttopic, err := natspubsub.OpenTopicV2(natsConn, \"example.mysubject\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openTopicV2FromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\n\t// This URL will Dial the NATS server at the URL in the environment variable\n\t// NATS_SERVER_URL and send messages with subject \"example.mysubject\".\n\t// This URL will be parsed and the natsv2 attribute will be used to\n\t// use NATS v2.2.0+ native message headers as the message metadata.\n\ttopic, err := pubsub.OpenTopic(ctx, \"nats://example.mysubject?natsv2\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionV2FromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/natspubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// This URL will Dial the NATS server at the URL in the environment variable\n\t// NATS_SERVER_URL and receive messages with subject \"example.mysubject\".\n\t// This URL will be parsed and the natsv2 attribute will be used to\n\t// use NATS v2.2.0+ native message headers as the message metadata.\n\tsubscription, err := pubsub.OpenSubscription(ctx, \"nats://example.mysubject?natsv2\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/natspubsub/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/pubsub/natspubsub\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/nats-io/nats-server/v2 v2.11.12\n\tgithub.com/nats-io/nats.go v1.49.0\n\tgocloud.dev v0.45.0\n)\n\nrequire (\n\tgithub.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/google/go-tpm v0.9.8 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/klauspost/compress v1.18.4 // indirect\n\tgithub.com/minio/highwayhash v1.0.4-0.20251030100505-070ab1a87a76 // indirect\n\tgithub.com/nats-io/jwt/v2 v2.8.0 // indirect\n\tgithub.com/nats-io/nkeys v0.4.15 // indirect\n\tgithub.com/nats-io/nuid v1.0.1 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/time v0.15.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "pubsub/natspubsub/go.sum",
    "content": "cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/pubsub v1.50.1 h1:fzbXpPyJnSGvWXF1jabhQeXyxdbCIkXTpjXHy7xviBM=\ncloud.google.com/go/pubsub v1.50.1/go.mod h1:6YVJv3MzWJUVdvQXG081sFvS0dWQOdnV+oTo++q/xFk=\ncloud.google.com/go/pubsub/v2 v2.4.0 h1:oMKNiBQpXImRWnHYla9uSU66ZzByZwBSCJOEs/pTKVg=\ncloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2ig3zqsGUx8=\ngithub.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op h1:Ucf+QxEKMbPogRO5guBNe5cgd9uZgfoJLOYs8WWhtjM=\ngithub.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo=\ngithub.com/google/go-tpm v0.9.8/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=\ngithub.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=\ngithub.com/minio/highwayhash v1.0.4-0.20251030100505-070ab1a87a76 h1:KGuD/pM2JpL9FAYvBrnBBeENKZNh6eNtjqytV6TYjnk=\ngithub.com/minio/highwayhash v1.0.4-0.20251030100505-070ab1a87a76/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=\ngithub.com/nats-io/jwt/v2 v2.8.0 h1:K7uzyz50+yGZDO5o772eRE7atlcSEENpL7P+b74JV1g=\ngithub.com/nats-io/jwt/v2 v2.8.0/go.mod h1:me11pOkwObtcBNR8AiMrUbtVOUGkqYjMQZ6jnSdVUIA=\ngithub.com/nats-io/nats-server/v2 v2.11.12 h1:jGDXTkcjqQ5fCRstwIxvv1K0RHfftFUoSCT/iIZcqOc=\ngithub.com/nats-io/nats-server/v2 v2.11.12/go.mod h1:5MCp/pqm5SEfsvVZ31ll1088ZTwEUdvRX1Hmh/mTTDg=\ngithub.com/nats-io/nats.go v1.49.0 h1:yh/WvY59gXqYpgl33ZI+XoVPKyut/IcEaqtsiuTJpoE=\ngithub.com/nats-io/nats.go v1.49.0/go.mod h1:fDCn3mN5cY8HooHwE2ukiLb4p4G4ImmzvXyJt+tGwdw=\ngithub.com/nats-io/nkeys v0.4.15 h1:JACV5jRVO9V856KOapQ7x+EY8Jo3qw1vJt/9Jpwzkk4=\ngithub.com/nats-io/nkeys v0.4.15/go.mod h1:CpMchTXC9fxA5zrMo4KpySxNjiDVvr8ANOSZdiNfUrs=\ngithub.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=\ngithub.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\n"
  },
  {
    "path": "pubsub/natspubsub/nats.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package natspubsub provides a pubsub implementation for NATS.io. Use OpenTopic to\n// construct a *pubsub.Topic, and/or OpenSubscription to construct a\n// *pubsub.Subscription. This package uses gob to encode and decode driver.Message to\n// []byte.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, natspubsub registers\n// for the scheme \"nats\".\n// The default URL opener will connect to a default server based on the\n// environment variable \"NATS_SERVER_URL\".\n//\n// For servers that support it (NATS Server 2.2.0 or later), messages can\n// be encoded using native NATS message headers, and native message content.\n// This provides full support for non-Go clients. Versions prior to 2.2.0\n// uses gob.Encoder to encode the message headers and content, which limits\n// the subscribers only to Go clients.\n// To use this feature, set the query parameter \"natsv2\" in the URL.\n// If no value is provided, it assumes the value is true. Otherwise, the value\n// needs to be parsable as a boolean. For example:\n//   - nats://mysubject?natsv2\n//   - nats://mysubject?natsv2=true\n//\n// This feature can also be enabled by setting the UseV2 field in the\n// URLOpener.\n// If the server does not support this feature, any attempt to use it will\n// result in an error.\n// Using native NATS message headers and content is more efficient than using\n// gob.Encoder, and allows non-Go clients to subscribe to the topic and\n// receive messages. It is recommended to use this feature if the server\n// supports it.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Message Delivery Semantics\n//\n// NATS supports at-most-semantics; applications need not call Message.Ack,\n// and must not call Message.Nack.\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # As\n//\n// natspubsub exposes the following types for As:\n//   - Topic: *nats.Conn\n//   - Subscription: *nats.Subscription\n//   - Message.BeforeSend: None for v1, *nats.Msg for v2.\n//   - Message.AfterSend: None.\n//   - Message: *nats.Msg\npackage natspubsub // import \"gocloud.dev/pubsub/natspubsub\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/gob\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/nats-io/nats.go\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nvar errNotInitialized = errors.New(\"natspubsub: topic not initialized\")\n\nvar recvBatcherOpts = &batcher.Options{\n\t// NATS has at-most-once semantics, meaning once it delivers a message, the\n\t// message won't be delivered again.\n\t// Therefore, we can't allow the portable type to read-ahead and queue any\n\t// messages; they might end up undelivered if the user never calls Receive\n\t// to get them. Setting both the MaxBatchSize and MaxHandlers to one means\n\t// that we'll only return a message at a time, which should be immediately\n\t// returned to the user.\n\t//\n\t// Note: there is a race condition where the original Receive that\n\t// triggered a call to ReceiveBatch ends up failing (e.g., due to a\n\t// Done context), and ReceiveBatch returns a message that ends up being\n\t// queued for the next Receive. That message is at risk of being dropped.\n\t// This seems OK.\n\tMaxBatchSize: 1,\n\tMaxHandlers:  1, // max concurrency for receives\n}\n\nfunc init() {\n\to := new(defaultDialer)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, o)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, o)\n}\n\n// defaultDialer dials a default NATS server based on the environment\n// variable \"NATS_SERVER_URL\".\ntype defaultDialer struct {\n\tinit sync.Once\n\terr  error\n\n\topener   URLOpener\n\topenerV2 URLOpener\n}\n\nfunc (o *defaultDialer) defaultConn(ctx context.Context) error {\n\to.init.Do(func() {\n\t\tserverURL := os.Getenv(\"NATS_SERVER_URL\")\n\t\tif serverURL == \"\" {\n\t\t\to.err = errors.New(\"NATS_SERVER_URL environment variable not set\")\n\t\t\treturn\n\t\t}\n\t\tconn, err := nats.Connect(serverURL)\n\t\tif err != nil {\n\t\t\to.err = fmt.Errorf(\"failed to dial NATS_SERVER_URL %q: %v\", serverURL, err)\n\t\t\treturn\n\t\t}\n\t\to.opener = URLOpener{Connection: conn}\n\t\to.openerV2 = URLOpener{Connection: conn, UseV2: true}\n\t})\n\treturn o.err\n}\n\ntype serverVersion struct {\n\tmajor, minor, patch int\n}\n\nfunc (o *defaultDialer) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\terr := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: failed to open default connection: %v\", u, err)\n\t}\n\tuseV2, err := queryUseV2(u.Query())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: %v\", u, err)\n\t}\n\tif useV2 {\n\t\treturn o.openerV2.OpenTopicURL(ctx, u)\n\t}\n\treturn o.opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *defaultDialer) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\terr := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: failed to open default connection: %v\", u, err)\n\t}\n\tuseV2, err := queryUseV2(u.Query())\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: %v\", u, err)\n\t}\n\tif useV2 {\n\t\treturn o.openerV2.OpenSubscriptionURL(ctx, u)\n\t}\n\treturn o.opener.OpenSubscriptionURL(ctx, u)\n}\n\nvar semVerRegexp = regexp.MustCompile(`\\Av?([0-9]+)\\.?([0-9]+)?\\.?([0-9]+)?`)\n\nfunc parseServerVersion(version string) (serverVersion, error) {\n\tm := semVerRegexp.FindStringSubmatch(version)\n\tif m == nil {\n\t\treturn serverVersion{}, errors.New(\"failed to parse server version\")\n\t}\n\tvar (\n\t\tmajor, minor, patch int\n\t\terr                 error\n\t)\n\tmajor, err = strconv.Atoi(m[1])\n\tif err != nil {\n\t\treturn serverVersion{}, fmt.Errorf(\"failed to parse server version major number %q: %v\", m[1], err)\n\t}\n\tminor, err = strconv.Atoi(m[2])\n\tif err != nil {\n\t\treturn serverVersion{}, fmt.Errorf(\"failed to parse server version minor number %q: %v\", m[2], err)\n\t}\n\tpatch, err = strconv.Atoi(m[3])\n\tif err != nil {\n\t\treturn serverVersion{}, fmt.Errorf(\"failed to parse server version patch number %q: %v\", m[3], err)\n\t}\n\treturn serverVersion{major: major, minor: minor, patch: patch}, nil\n}\n\n// Scheme is the URL scheme natspubsub registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"nats\"\n\n// URLOpener opens NATS URLs like \"nats://mysubject?natsv2=true\".\n//\n// The URL host+path is used as the subject.\n//\n// No query parameters are supported.\ntype URLOpener struct {\n\t// Connection to use for communication with the server.\n\tConnection *nats.Conn\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n\t// UseV2 indicates whether the NATS Server is at least version 2.2.0.\n\tUseV2 bool\n}\n\nconst natsV2QueryParameter = \"natsv2\"\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\tfor param := range u.Query() {\n\t\tif strings.ToLower(param) == natsV2QueryParameter {\n\t\t\tcontinue\n\t\t}\n\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %s\", u, param)\n\t}\n\tsubject := path.Join(u.Host, u.Path)\n\tif o.UseV2 {\n\t\treturn OpenTopicV2(o.Connection, subject, &o.TopicOptions)\n\t}\n\treturn OpenTopic(o.Connection, subject, &o.TopicOptions)\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topts := o.SubscriptionOptions\n\tfor param, values := range u.Query() {\n\t\tswitch strings.ToLower(param) {\n\t\tcase natsV2QueryParameter:\n\t\t\tcontinue\n\t\tcase \"queue\":\n\t\t\tif len(values) != 1 {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %s\", u, param)\n\t\t\t}\n\t\t\topts.Queue = values[0]\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %s\", u, param)\n\t\t}\n\t}\n\tsubject := path.Join(u.Host, u.Path)\n\tif o.UseV2 {\n\t\treturn OpenSubscriptionV2(o.Connection, subject, &opts)\n\t}\n\treturn OpenSubscription(o.Connection, subject, &opts)\n}\n\n// TopicOptions sets options for constructing a *pubsub.Topic backed by NATS.\ntype TopicOptions struct{}\n\n// SubscriptionOptions sets options for constructing a *pubsub.Subscription\n// backed by NATS.\ntype SubscriptionOptions struct {\n\t// Queue sets the subscription as a QueueSubcription.\n\t// For more info, see https://docs.nats.io/nats-concepts/queue.\n\tQueue string\n}\n\ntype topic struct {\n\tuseV2 bool\n\tnc    *nats.Conn\n\tsubj  string\n}\n\n// OpenTopic returns a *pubsub.Topic for use with NATS.\n// The subject is the NATS Subject; for more info, see\n// https://nats.io/documentation/writing_applications/subjects.\nfunc OpenTopic(nc *nats.Conn, subject string, _ *TopicOptions) (*pubsub.Topic, error) {\n\tdt, err := openTopic(nc, subject, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pubsub.NewTopic(dt, nil), nil\n}\n\n// OpenTopicV2 returns a *pubsub.Topic for use with NATS at least version 2.2.0.\n// This changes the encoding of the message as, starting with version 2.2.0, NATS supports message headers.\n// In previous versions the message headers were encoded along with the message content using gob.Encoder,\n// which limits the subscribers only to Go clients.\n// This implementation uses native NATS message headers, and native message content, which provides full support\n// for non-Go clients.\nfunc OpenTopicV2(nc *nats.Conn, subject string, _ *TopicOptions) (*pubsub.Topic, error) {\n\tdt, err := openTopic(nc, subject, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pubsub.NewTopic(dt, nil), nil\n}\n\n// openTopic returns the driver for OpenTopic. This function exists so the test\n// harness can get the driver interface implementation if it needs to.\nfunc openTopic(nc *nats.Conn, subject string, useV2 bool) (driver.Topic, error) {\n\tif nc == nil {\n\t\treturn nil, errors.New(\"natspubsub: nats.Conn is required\")\n\t}\n\tif useV2 {\n\t\tsv, err := parseServerVersion(nc.ConnectedServerVersion())\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse NATS server version %q: %v\", nc.ConnectedServerVersion(), err)\n\t\t}\n\t\t// Check if the server version is at least 2.2.0.\n\t\tif sv.major < 2 && sv.minor < 2 {\n\t\t\treturn nil, fmt.Errorf(\"natspubsub: NATS server version %q is not supported\", nc.ConnectedServerVersion())\n\t\t}\n\t}\n\treturn &topic{nc: nc, subj: subject, useV2: useV2}, nil\n}\n\n// SendBatch implements driver.Topic.SendBatch.\nfunc (t *topic) SendBatch(ctx context.Context, msgs []*driver.Message) error {\n\tif t == nil || t.nc == nil {\n\t\treturn errNotInitialized\n\t}\n\n\tfor _, m := range msgs {\n\t\terr := ctx.Err()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif t.useV2 {\n\t\t\terr = t.sendMessageV2(m)\n\t\t} else {\n\t\t\terr = t.sendMessage(m)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// Per specification this is supposed to only return after\n\t// a message has been sent. Normally NATS is very efficient\n\t// at sending messages in batches on its own and also handles\n\t// disconnected buffering during a reconnect event. We will\n\t// let NATS handle this for now. If needed we could add a\n\t// FlushWithContext() call which ensures the connected server\n\t// has processed all the messages.\n\treturn nil\n}\n\nfunc (t *topic) sendMessage(m *driver.Message) error {\n\t// TODO(jba): benchmark message encoding to see if it's\n\t// worth reusing a buffer.\n\tpayload, err := encodeMessage(m)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif m.BeforeSend != nil {\n\t\tasFunc := func(i any) bool { return false }\n\t\tif err := m.BeforeSend(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif err = t.nc.Publish(t.subj, payload); err != nil {\n\t\treturn err\n\t}\n\tif m.AfterSend != nil {\n\t\tasFunc := func(i any) bool { return false }\n\t\tif err := m.AfterSend(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *topic) sendMessageV2(m *driver.Message) error {\n\tmsg := encodeMessageV2(m, t.subj)\n\tif m.BeforeSend != nil {\n\t\tasFunc := func(i any) bool {\n\t\t\tif nm, ok := i.(**nats.Msg); ok {\n\t\t\t\t*nm = msg\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\tif err := m.BeforeSend(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := t.nc.PublishMsg(msg); err != nil {\n\t\treturn err\n\t}\n\n\tif m.AfterSend != nil {\n\t\tasFunc := func(i any) bool { return false }\n\t\tif err := m.AfterSend(asFunc); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (*topic) IsRetryable(error) bool { return false }\n\n// As implements driver.Topic.As.\nfunc (t *topic) As(i any) bool {\n\tc, ok := i.(**nats.Conn)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = t.nc\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs\nfunc (*topic) ErrorAs(error, any) bool {\n\treturn false\n}\n\n// ErrorCode implements driver.Topic.ErrorCode\nfunc (*topic) ErrorCode(err error) gcerrors.ErrorCode {\n\tswitch err {\n\tcase nil:\n\t\treturn gcerrors.OK\n\tcase context.Canceled:\n\t\treturn gcerrors.Canceled\n\tcase errNotInitialized:\n\t\treturn gcerrors.NotFound\n\tcase nats.ErrBadSubject:\n\t\treturn gcerrors.FailedPrecondition\n\tcase nats.ErrAuthorization:\n\t\treturn gcerrors.PermissionDenied\n\tcase nats.ErrMaxPayload, nats.ErrReconnectBufExceeded:\n\t\treturn gcerrors.ResourceExhausted\n\t}\n\treturn gcerrors.Unknown\n}\n\n// Close implements driver.Topic.Close.\nfunc (*topic) Close() error { return nil }\n\ntype subscription struct {\n\tuseV2  bool\n\tnc     *nats.Conn\n\tnsub   *nats.Subscription\n\tnextID int\n}\n\n// OpenSubscription returns a *pubsub.Subscription representing a NATS subscription or NATS queue subscription.\n// The subject is the NATS Subject to subscribe to;\n// for more info, see https://nats.io/documentation/writing_applications/subjects.\nfunc OpenSubscription(nc *nats.Conn, subject string, opts *SubscriptionOptions) (*pubsub.Subscription, error) {\n\tds, err := openSubscription(nc, subject, opts, false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pubsub.NewSubscription(ds, recvBatcherOpts, nil), nil\n}\n\n// OpenSubscriptionV2 returns a *pubsub.Subscription representing a NATS subscription or NATS queue subscription\n// for use with NATS at least version 2.2.0.\n// This changes the encoding of the message as, starting with version 2.2.0, NATS supports message headers.\n// In previous versions the message headers were encoded along with the message content using gob.Encoder,\n// which limits the subscribers only to Go clients.\n// This implementation uses native NATS message headers, and native message content, which provides full support\n// for non-Go clients.\nfunc OpenSubscriptionV2(nc *nats.Conn, subject string, opts *SubscriptionOptions) (*pubsub.Subscription, error) {\n\tds, err := openSubscription(nc, subject, opts, true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pubsub.NewSubscription(ds, recvBatcherOpts, nil), nil\n}\n\nfunc openSubscription(nc *nats.Conn, subject string, opts *SubscriptionOptions, useV2 bool) (driver.Subscription, error) {\n\tvar sub *nats.Subscription\n\tvar err error\n\tif opts != nil && opts.Queue != \"\" {\n\t\tsub, err = nc.QueueSubscribeSync(subject, opts.Queue)\n\t} else {\n\t\tsub, err = nc.SubscribeSync(subject)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &subscription{nc: nc, nsub: sub, nextID: 1, useV2: useV2}, nil\n}\n\n// ReceiveBatch implements driver.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, _ int) ([]*driver.Message, error) {\n\tif s == nil || s.nsub == nil {\n\t\treturn nil, nats.ErrBadSubscription\n\t}\n\n\tmsg, err := s.nsub.NextMsg(100 * time.Millisecond)\n\tif err != nil {\n\t\tif err == nats.ErrTimeout {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn nil, err\n\t}\n\n\tvar dm *driver.Message\n\tif s.useV2 {\n\t\tdm, err = decodeMessageV2(msg)\n\t} else {\n\t\tdm, err = decode(msg)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdm.LoggableID = fmt.Sprintf(\"msg #%d\", s.nextID)\n\ts.nextID++\n\treturn []*driver.Message{dm}, nil\n}\n\n// Convert NATS msgs to *driver.Message.\nfunc decode(msg *nats.Msg) (*driver.Message, error) {\n\tif msg == nil {\n\t\treturn nil, nats.ErrInvalidMsg\n\t}\n\tvar dm driver.Message\n\tif err := decodeMessage(msg.Data, &dm); err != nil {\n\t\treturn nil, err\n\t}\n\tdm.AckID = -1 // Not applicable to NATS\n\tdm.AsFunc = messageAsFunc(msg)\n\treturn &dm, nil\n}\n\nfunc messageAsFunc(msg *nats.Msg) func(any) bool {\n\treturn func(i any) bool {\n\t\tp, ok := i.(**nats.Msg)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\t*p = msg\n\t\treturn true\n\t}\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ids []driver.AckID) error {\n\t// Ack is a no-op.\n\treturn nil\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool { return false }\n\n// SendNacks implements driver.Subscription.SendNacks. It should never be called\n// because we return false for CanNack.\nfunc (s *subscription) SendNacks(ctx context.Context, ids []driver.AckID) error {\n\tpanic(\"unreachable\")\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (s *subscription) IsRetryable(error) bool { return false }\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tc, ok := i.(**nats.Subscription)\n\tif !ok {\n\t\treturn false\n\t}\n\t*c = s.nsub\n\treturn true\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs\nfunc (*subscription) ErrorAs(error, any) bool {\n\treturn false\n}\n\n// ErrorCode implements driver.Subscription.ErrorCode\nfunc (*subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\tswitch err {\n\tcase nil:\n\t\treturn gcerrors.OK\n\tcase context.Canceled:\n\t\treturn gcerrors.Canceled\n\tcase errNotInitialized, nats.ErrBadSubscription:\n\t\treturn gcerrors.NotFound\n\tcase nats.ErrBadSubject, nats.ErrTypeSubscription:\n\t\treturn gcerrors.FailedPrecondition\n\tcase nats.ErrAuthorization:\n\t\treturn gcerrors.PermissionDenied\n\tcase nats.ErrMaxMessages, nats.ErrSlowConsumer:\n\t\treturn gcerrors.ResourceExhausted\n\tcase nats.ErrTimeout:\n\t\treturn gcerrors.DeadlineExceeded\n\t}\n\treturn gcerrors.Unknown\n}\n\n// Close implements driver.Subscription.Close.\nfunc (*subscription) Close() error { return nil }\n\nfunc encodeMessage(dm *driver.Message) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := gob.NewEncoder(&buf)\n\tif len(dm.Metadata) == 0 {\n\t\treturn dm.Body, nil\n\t}\n\tif err := enc.Encode(dm.Metadata); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := enc.Encode(dm.Body); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\nfunc decodeMessage(data []byte, dm *driver.Message) error {\n\tbuf := bytes.NewBuffer(data)\n\tdec := gob.NewDecoder(buf)\n\tif err := dec.Decode(&dm.Metadata); err != nil {\n\t\t// This may indicate a normal NATS message, so just treat as the body.\n\t\tdm.Metadata = nil\n\t\tdm.Body = data\n\t\treturn nil\n\t}\n\treturn dec.Decode(&dm.Body)\n}\n\nfunc queryUseV2(q url.Values) (bool, error) {\n\tif len(q) == 0 {\n\t\treturn false, nil\n\t}\n\tv, ok := q[natsV2QueryParameter]\n\tif !ok {\n\t\treturn false, nil\n\t}\n\n\tif len(v) == 0 {\n\t\t// If the query parameter was provided without any value i.e. nats://mysubject?natsv2\n\t\t// it assumes the value is true.\n\t\treturn true, nil\n\t}\n\tif len(v) > 1 {\n\t\treturn false, fmt.Errorf(\"invalid query parameter %s - multiple values provided\", natsV2QueryParameter)\n\t}\n\tif v[0] == \"\" {\n\t\treturn true, nil\n\t}\n\tuseV2, err := strconv.ParseBool(v[0])\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"invalid query parameter %s - value either needs to be parsable as a boolean or empty\", natsV2QueryParameter)\n\t}\n\treturn useV2, nil\n}\n\nfunc encodeMessageV2(dm *driver.Message, sub string) *nats.Msg {\n\tvar header nats.Header\n\tif dm.Metadata != nil {\n\t\theader = nats.Header{}\n\t\tfor k, v := range dm.Metadata {\n\t\t\theader[url.QueryEscape(k)] = []string{url.QueryEscape(v)}\n\t\t}\n\t}\n\treturn &nats.Msg{\n\t\tSubject: sub,\n\t\tData:    dm.Body,\n\t\tHeader:  header,\n\t}\n}\n\nfunc decodeMessageV2(msg *nats.Msg) (*driver.Message, error) {\n\tif msg == nil {\n\t\treturn nil, nats.ErrInvalidMsg\n\t}\n\n\tdm := driver.Message{\n\t\tAsFunc: messageAsFunc(msg),\n\t\tBody:   msg.Data,\n\t}\n\n\tif msg.Header != nil {\n\t\tdm.Metadata = map[string]string{}\n\t\tfor k, v := range msg.Header {\n\t\t\tvar sv string\n\t\t\tif len(v) > 0 {\n\t\t\t\tsv = v[0]\n\t\t\t}\n\t\t\tkb, err := url.QueryUnescape(k)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tvb, err := url.QueryUnescape(sv)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tdm.Metadata[kb] = vb\n\t\t}\n\t}\n\treturn &dm, nil\n}\n"
  },
  {
    "path": "pubsub/natspubsub/nats_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage natspubsub\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/nats-io/nats-server/v2/server\"\n\tgnatsd \"github.com/nats-io/nats-server/v2/test\"\n\t\"github.com/nats-io/nats.go\"\n)\n\nconst (\n\ttestPort  = 11222\n\tbenchPort = 9222\n)\n\ntype harness struct {\n\ts     *server.Server\n\tnc    *nats.Conn\n\tuseV2 bool\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\topts := gnatsd.DefaultTestOptions\n\topts.Port = testPort\n\ts := gnatsd.RunServer(&opts)\n\tnc, err := nats.Connect(fmt.Sprintf(\"nats://127.0.0.1:%d\", testPort))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &harness{s: s, nc: nc, useV2: false}, nil\n}\n\nfunc newHarnessV2(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\topts := gnatsd.DefaultTestOptions\n\topts.Port = testPort\n\ts := gnatsd.RunServer(&opts)\n\tnc, err := nats.Connect(fmt.Sprintf(\"nats://127.0.0.1:%d\", testPort))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &harness{s: s, nc: nc, useV2: true}, nil\n}\n\nfunc (h *harness) CreateTopic(ctx context.Context, testName string) (driver.Topic, func(), error) {\n\tcleanup := func() {}\n\tdt, err := openTopic(h.nc, testName, h.useV2)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn dt, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentTopic(ctx context.Context) (driver.Topic, error) {\n\t// A nil *topic behaves like a nonexistent topic.\n\treturn (*topic)(nil), nil\n}\n\nfunc (h *harness) CreateSubscription(ctx context.Context, dt driver.Topic, testName string) (driver.Subscription, func(), error) {\n\tds, err := openSubscription(h.nc, testName, nil, h.useV2)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tcleanup := func() {\n\t\tvar sub *nats.Subscription\n\t\tif ds.As(&sub) {\n\t\t\tsub.Unsubscribe()\n\t\t}\n\t}\n\treturn ds, cleanup, nil\n}\n\nfunc (h *harness) CreateQueueSubscription(ctx context.Context, dt driver.Topic, testName string) (driver.Subscription, func(), error) {\n\tds, err := openSubscription(h.nc, testName, &SubscriptionOptions{Queue: testName}, h.useV2)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tcleanup := func() {\n\t\tvar sub *nats.Subscription\n\t\tif ds.As(&sub) {\n\t\t\tsub.Unsubscribe()\n\t\t}\n\t}\n\treturn ds, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentSubscription(ctx context.Context) (driver.Subscription, func(), error) {\n\treturn (*subscription)(nil), func() {}, nil\n}\n\nfunc (h *harness) Close() {\n\th.nc.Close()\n\th.s.Shutdown()\n}\n\nfunc (h *harness) MaxBatchSizes() (int, int) { return 0, 0 }\n\nfunc (*harness) SupportsMultipleSubscriptions() bool { return true }\n\ntype natsAsTest struct {\n\tuseV2 bool\n}\n\nfunc (natsAsTest) Name() string {\n\treturn \"nats test\"\n}\n\nfunc (natsAsTest) TopicCheck(topic *pubsub.Topic) error {\n\tvar c2 nats.Conn\n\tif topic.As(&c2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &c2)\n\t}\n\tvar c3 *nats.Conn\n\tif !topic.As(&c3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &c3)\n\t}\n\treturn nil\n}\n\nfunc (natsAsTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar c2 nats.Subscription\n\tif sub.As(&c2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &c2)\n\t}\n\tvar c3 *nats.Subscription\n\tif !sub.As(&c3) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &c3)\n\t}\n\treturn nil\n}\n\nfunc (natsAsTest) TopicErrorCheck(t *pubsub.Topic, err error) error {\n\tvar dummy string\n\tif t.ErrorAs(err, &dummy) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &dummy)\n\t}\n\treturn nil\n}\n\nfunc (natsAsTest) SubscriptionErrorCheck(s *pubsub.Subscription, err error) error {\n\tvar dummy string\n\tif s.ErrorAs(err, &dummy) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &dummy)\n\t}\n\treturn nil\n}\n\nfunc (natsAsTest) MessageCheck(m *pubsub.Message) error {\n\tvar pm nats.Msg\n\tif m.As(&pm) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &pm)\n\t}\n\tvar ppm *nats.Msg\n\tif !m.As(&ppm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &ppm)\n\t}\n\treturn nil\n}\n\nfunc (n natsAsTest) BeforeSend(as func(any) bool) error {\n\tif !n.useV2 {\n\t\treturn nil\n\t}\n\tvar pm nats.Msg\n\tif as(&pm) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &pm)\n\t}\n\n\tvar ppm *nats.Msg\n\tif !as(&ppm) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &ppm)\n\t}\n\treturn nil\n}\n\nfunc (natsAsTest) AfterSend(as func(any) bool) error {\n\treturn nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tasTests := []drivertest.AsTest{natsAsTest{}}\n\tdrivertest.RunConformanceTests(t, newHarness, asTests)\n}\n\nfunc TestConformanceV2(t *testing.T) {\n\tasTests := []drivertest.AsTest{natsAsTest{useV2: true}}\n\tdrivertest.RunConformanceTests(t, newHarnessV2, asTests)\n}\n\n// These are natspubsub specific to increase coverage.\n\n// If we only send a body we should be able to get that from a direct NATS subscriber.\nfunc TestInteropWithDirectNATS(t *testing.T) {\n\tctx := context.Background()\n\tdh, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer dh.Close()\n\tconn := dh.(*harness).nc\n\n\tconst topic = \"foo\"\n\tbody := []byte(\"hello\")\n\n\t// Send a message using Go CDK and receive it using NATS directly.\n\tpt, err := OpenTopic(conn, topic, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer pt.Shutdown(ctx)\n\tnsub, _ := conn.SubscribeSync(topic)\n\tif err = pt.Send(ctx, &pubsub.Message{Body: body}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm, err := nsub.NextMsgWithContext(ctx)\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\tif !bytes.Equal(m.Data, body) {\n\t\tt.Fatalf(\"Data did not match. %q vs %q\\n\", m.Data, body)\n\t}\n\n\t// Send a message using NATS directly and receive it using Go CDK.\n\tps, err := OpenSubscription(conn, topic, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer ps.Shutdown(ctx)\n\tif err := conn.Publish(topic, body); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmsg, err := ps.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer msg.Ack()\n\tif !bytes.Equal(msg.Body, body) {\n\t\tt.Fatalf(\"Data did not match. %q vs %q\\n\", m.Data, body)\n\t}\n}\n\n// These are natspubsub specific to increase coverage.\n\n// If we only send a body we should be able to get that from a direct NATS subscriber.\nfunc TestInteropWithDirectNATSV2(t *testing.T) {\n\tctx := context.Background()\n\tdh, err := newHarnessV2(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer dh.Close()\n\tconn := dh.(*harness).nc\n\n\tconst topic = \"foo\"\n\t// In version V2 we can use metadata which will be natively used in the nats message.\n\tmd := map[string]string{\"a\": \"1\", \"b\": \"2\", \"c\": \"3\"}\n\tbody := []byte(\"hello\")\n\n\t// Send a message using Go CDK and receive it using NATS directly.\n\tpt, err := OpenTopicV2(conn, topic, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer pt.Shutdown(ctx)\n\tnsub, _ := conn.SubscribeSync(topic)\n\tif err = pt.Send(ctx, &pubsub.Message{Body: body, Metadata: md}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm, err := nsub.NextMsgWithContext(ctx)\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\tif !bytes.Equal(m.Data, body) {\n\t\tt.Fatalf(\"Data did not match. %q vs %q\\n\", m.Data, body)\n\t}\n\tfor k, v := range md {\n\t\tif m.Header.Get(k) != v {\n\t\t\tt.Fatalf(\"Metadata %q did not match. %q vs %q\\n\", k, m.Header.Get(k), v)\n\t\t}\n\t}\n\n\t// Send a message using NATS directly and receive it using Go CDK.\n\tps, err := OpenSubscriptionV2(conn, topic, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer ps.Shutdown(ctx)\n\tif err := conn.Publish(topic, body); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmsg, err := ps.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer msg.Ack()\n\tif !bytes.Equal(msg.Body, body) {\n\t\tt.Fatalf(\"Data did not match. %q vs %q\\n\", m.Data, body)\n\t}\n}\n\nfunc TestErrorCode(t *testing.T) {\n\tctx := context.Background()\n\tdh, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer dh.Close()\n\th := dh.(*harness)\n\n\t// Topics\n\tdt, err := openTopic(h.nc, \"bar\", false)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif gce := dt.ErrorCode(nil); gce != gcerrors.OK {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.OK, gce)\n\t}\n\tif gce := dt.ErrorCode(context.Canceled); gce != gcerrors.Canceled {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.Canceled, gce)\n\t}\n\tif gce := dt.ErrorCode(nats.ErrBadSubject); gce != gcerrors.FailedPrecondition {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.FailedPrecondition, gce)\n\t}\n\tif gce := dt.ErrorCode(nats.ErrAuthorization); gce != gcerrors.PermissionDenied {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.PermissionDenied, gce)\n\t}\n\tif gce := dt.ErrorCode(nats.ErrMaxPayload); gce != gcerrors.ResourceExhausted {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.ResourceExhausted, gce)\n\t}\n\tif gce := dt.ErrorCode(nats.ErrReconnectBufExceeded); gce != gcerrors.ResourceExhausted {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.ResourceExhausted, gce)\n\t}\n\n\t// Subscriptions\n\tds, err := openSubscription(h.nc, \"bar\", nil, false)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gce := ds.ErrorCode(nil); gce != gcerrors.OK {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.OK, gce)\n\t}\n\tif gce := ds.ErrorCode(context.Canceled); gce != gcerrors.Canceled {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.Canceled, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrBadSubject); gce != gcerrors.FailedPrecondition {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.FailedPrecondition, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrBadSubscription); gce != gcerrors.NotFound {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.NotFound, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrTypeSubscription); gce != gcerrors.FailedPrecondition {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.FailedPrecondition, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrAuthorization); gce != gcerrors.PermissionDenied {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.PermissionDenied, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrMaxMessages); gce != gcerrors.ResourceExhausted {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.ResourceExhausted, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrSlowConsumer); gce != gcerrors.ResourceExhausted {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.ResourceExhausted, gce)\n\t}\n\tif gce := ds.ErrorCode(nats.ErrTimeout); gce != gcerrors.DeadlineExceeded {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.DeadlineExceeded, gce)\n\t}\n\n\t// Queue Subscription\n\tqs, err := openSubscription(h.nc, \"bar\", &SubscriptionOptions{Queue: t.Name()}, false)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gce := qs.ErrorCode(nil); gce != gcerrors.OK {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.OK, gce)\n\t}\n\tif gce := qs.ErrorCode(context.Canceled); gce != gcerrors.Canceled {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.Canceled, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrBadSubject); gce != gcerrors.FailedPrecondition {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.FailedPrecondition, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrBadSubscription); gce != gcerrors.NotFound {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.NotFound, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrTypeSubscription); gce != gcerrors.FailedPrecondition {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.FailedPrecondition, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrAuthorization); gce != gcerrors.PermissionDenied {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.PermissionDenied, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrMaxMessages); gce != gcerrors.ResourceExhausted {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.ResourceExhausted, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrSlowConsumer); gce != gcerrors.ResourceExhausted {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.ResourceExhausted, gce)\n\t}\n\tif gce := qs.ErrorCode(nats.ErrTimeout); gce != gcerrors.DeadlineExceeded {\n\t\tt.Fatalf(\"Expected %v, got %v\", gcerrors.DeadlineExceeded, gce)\n\t}\n}\n\nfunc BenchmarkNatsQueuePubSub(b *testing.B) {\n\tctx := context.Background()\n\n\topts := gnatsd.DefaultTestOptions\n\topts.Port = benchPort\n\ts := gnatsd.RunServer(&opts)\n\tdefer s.Shutdown()\n\n\tnc, err := nats.Connect(fmt.Sprintf(\"nats://127.0.0.1:%d\", benchPort))\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer nc.Close()\n\n\tfor _, tc := range []struct {\n\t\tname string\n\t\th    *harness\n\t}{\n\t\t{name: \"V1\", h: &harness{s: s, nc: nc, useV2: false}},\n\t\t{name: \"V2\", h: &harness{s: s, nc: nc, useV2: true}},\n\t} {\n\t\tb.Run(tc.name, func(b *testing.B) {\n\t\t\tdt, cleanup, err := tc.h.CreateTopic(ctx, b.Name())\n\t\t\tif err != nil {\n\t\t\t\tb.Fatal(err)\n\t\t\t}\n\t\t\tdefer cleanup()\n\n\t\t\tqs, cleanup, err := tc.h.CreateQueueSubscription(ctx, dt, b.Name())\n\t\t\tif err != nil {\n\t\t\t\tb.Fatal(err)\n\t\t\t}\n\t\t\tdefer cleanup()\n\n\t\t\ttopic := pubsub.NewTopic(dt, nil)\n\t\t\tdefer topic.Shutdown(ctx)\n\t\t\tqueueSub := pubsub.NewSubscription(qs, recvBatcherOpts, nil)\n\t\t\tdefer queueSub.Shutdown(ctx)\n\n\t\t\tdrivertest.RunBenchmarks(b, topic, queueSub)\n\t\t})\n\t}\n}\n\nfunc BenchmarkNatsPubSub(b *testing.B) {\n\tctx := context.Background()\n\n\topts := gnatsd.DefaultTestOptions\n\topts.Port = benchPort\n\ts := gnatsd.RunServer(&opts)\n\tdefer s.Shutdown()\n\n\tnc, err := nats.Connect(fmt.Sprintf(\"nats://127.0.0.1:%d\", benchPort))\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer nc.Close()\n\n\tfor _, tc := range []struct {\n\t\tname string\n\t\th    *harness\n\t}{\n\t\t{name: \"V1\", h: &harness{s: s, nc: nc, useV2: false}},\n\t\t{name: \"V2\", h: &harness{s: s, nc: nc, useV2: true}},\n\t} {\n\t\tb.Run(tc.name, func(b *testing.B) {\n\t\t\tdt, cleanup, err := tc.h.CreateTopic(ctx, b.Name())\n\t\t\tif err != nil {\n\t\t\t\tb.Fatal(err)\n\t\t\t}\n\t\t\tdefer cleanup()\n\t\t\tds, cleanup, err := tc.h.CreateSubscription(ctx, dt, b.Name())\n\t\t\tif err != nil {\n\t\t\t\tb.Fatal(err)\n\t\t\t}\n\t\t\tdefer cleanup()\n\n\t\t\ttopic := pubsub.NewTopic(dt, nil)\n\t\t\tdefer topic.Shutdown(ctx)\n\t\t\tsub := pubsub.NewSubscription(ds, recvBatcherOpts, nil)\n\t\t\tdefer sub.Shutdown(ctx)\n\n\t\t\tdrivertest.RunBenchmarks(b, topic, sub)\n\t\t})\n\t}\n}\n\nfunc fakeConnectionStringInEnv() func() {\n\toldEnvVal := os.Getenv(\"NATS_SERVER_URL\")\n\tos.Setenv(\"NATS_SERVER_URL\", fmt.Sprintf(\"nats://localhost:%d\", testPort))\n\treturn func() {\n\t\tos.Setenv(\"NATS_SERVER_URL\", oldEnvVal)\n\t}\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\tctx := context.Background()\n\tdh, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer dh.Close()\n\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"nats://mytopic\", false},\n\t\t// Invalid parameter.\n\t\t{\"nats://mytopic?param=value\", true},\n\t}\n\n\tfor _, test := range tests {\n\t\ttopic, err := pubsub.OpenTopic(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif topic != nil {\n\t\t\ttopic.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\tctx := context.Background()\n\tdh, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer dh.Close()\n\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"nats://mytopic\", false},\n\t\t// Invalid parameter.\n\t\t{\"nats://mytopic?param=value\", true},\n\t\t// Queue URL Parameter for QueueSubscription.\n\t\t{\"nats://mytopic?queue=queue1\", false},\n\t\t// Multiple values for Queue URL Parameter for QueueSubscription.\n\t\t{\"nats://mytopic?queue=queue1&queue=queue2\", true},\n\t\t// NATSV2 URL should be acceptable without values.\n\t\t{\"nats://mytopic?natsv2\", false},\n\t\t// NATSV2 URL should be acceptable with boolean parsable values.\n\t\t{\"nats://mytopic?natsv2=true\", false},\n\t\t{\"nats://mytopic?natsv2=false\", false},\n\t\t// NATSV2 URL should throw error with non-boolean parsable values.\n\t\t{\"nats://mytopic?natsv2=foo\", true},\n\t}\n\n\tfor _, test := range tests {\n\t\tsub, err := pubsub.OpenSubscription(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif sub != nil {\n\t\t\tsub.Shutdown(ctx)\n\t\t}\n\t}\n}\n\nfunc TestCodec(t *testing.T) {\n\tconst sub = \"foo\"\n\tfor _, dm := range []*driver.Message{\n\t\t{Metadata: nil, Body: nil},\n\t\t{Metadata: map[string]string{\"a\": \"1\"}, Body: nil},\n\t\t{Metadata: nil, Body: []byte(\"hello\")},\n\t\t{Metadata: map[string]string{\"a\": \"1\"}, Body: []byte(\"hello\")},\n\t\t{\n\t\t\tMetadata: map[string]string{\"a\": \"1\"}, Body: []byte(\"hello\"),\n\t\t\tAckID: \"foo\", AsFunc: func(any) bool { return true },\n\t\t},\n\t} {\n\t\tt.Run(\"V1\", func(t *testing.T) {\n\t\t\tbytes, err := encodeMessage(dm)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tvar got driver.Message\n\t\t\tif err := decodeMessage(bytes, &got); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\twant := *dm\n\t\t\twant.AckID = nil\n\t\t\twant.AsFunc = nil\n\t\t\tif diff := cmp.Diff(got, want); diff != \"\" {\n\t\t\t\tt.Errorf(\"%+v:\\n%s\", want, diff)\n\t\t\t}\n\t\t})\n\t\tt.Run(\"V2\", func(t *testing.T) {\n\t\t\tnm := encodeMessageV2(dm, sub)\n\t\t\tgot, err := decodeMessageV2(nm)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\n\t\t\twant := *dm\n\t\t\twant.AckID = nil\n\t\t\twant.AsFunc = nil\n\t\t\t// AsFunc needs to be cleared as it cannot be comparable using Diff.\n\t\t\tgot.AsFunc = nil\n\t\t\tif diff := cmp.Diff(*got, want); diff != \"\" {\n\t\t\t\tt.Errorf(\"%+v:\\n%s\", want, diff)\n\t\t\t}\n\t\t})\n\n\t}\n}\n"
  },
  {
    "path": "pubsub/pub_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage pubsub_test\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\ntype funcTopic struct {\n\tdriver.Topic\n\tsendBatch func(ctx context.Context, ms []*driver.Message) error\n\tclosed    bool\n}\n\nfunc (t *funcTopic) SendBatch(ctx context.Context, ms []*driver.Message) error {\n\treturn t.sendBatch(ctx, ms)\n}\n\nfunc (t *funcTopic) IsRetryable(error) bool { return false }\nfunc (t *funcTopic) Close() error {\n\tt.closed = true\n\treturn nil\n}\n\nfunc TestTopicShutdownCanBeCanceledEvenWithHangingSend(t *testing.T) {\n\tdt := &funcTopic{\n\t\tsendBatch: func(ctx context.Context, ms []*driver.Message) error {\n\t\t\t<-ctx.Done()\n\t\t\treturn ctx.Err()\n\t\t},\n\t}\n\ttopic := pubsub.NewTopic(dt, nil)\n\n\terrs := make(chan error, 1)\n\n\tgo func() {\n\t\tm := &pubsub.Message{}\n\t\tif err := topic.Send(context.Background(), m); err == nil {\n\t\t\terrs <- errors.New(\"nil err from Send, expected context cancellation error\")\n\t\t}\n\t}()\n\n\tdone := make(chan struct{})\n\tctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)\n\tdefer cancel()\n\tgo func() {\n\t\ttopic.Shutdown(ctx)\n\t\tclose(done)\n\t}()\n\n\t// Now cancel the context being used by topic.Shutdown.\n\tcancel()\n\n\t// It shouldn't take too long before topic.Shutdown stops.\n\ttooLong := 5 * time.Second\n\tselect {\n\tcase <-done:\n\tcase <-time.After(tooLong):\n\t\tt.Fatalf(\"waited too long(%v) for Shutdown(ctx) to run\", tooLong)\n\tcase err := <-errs:\n\t\tt.Fatalf(\"got error from goroutine: %v\", err)\n\t}\n}\n\nfunc TestTopicCloseIsCalled(t *testing.T) {\n\tctx := context.Background()\n\tdt := &funcTopic{}\n\ttopic := pubsub.NewTopic(dt, nil)\n\ttopic.Shutdown(ctx)\n\tif !dt.closed {\n\t\tt.Error(\"want Topic.Close to have been called\")\n\t}\n}\n"
  },
  {
    "path": "pubsub/pubsub.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package pubsub provides an easy and portable way to interact with\n// publish/subscribe systems. Subpackages contain driver implementations of\n// pubsub for supported services\n//\n// See https://gocloud.dev/howto/pubsub/ for a detailed how-to guide.\n//\n// # At-most-once and At-least-once Delivery\n//\n// The semantics of message delivery vary across PubSub services.\n// Some services guarantee that messages received by subscribers but not\n// acknowledged are delivered again (at-least-once semantics). In others,\n// a message will be delivered only once, if it is delivered at all\n// (at-most-once semantics). Some services support both modes via options.\n//\n// This package accommodates both kinds of systems, but application developers\n// should think carefully about which kind of semantics the application needs.\n// Even though the application code may look similar, system-level\n// characteristics are quite different. See the driver package\n// documentation for more information about message delivery semantics.\n//\n// After receiving a Message via Subscription.Receive:\n//   - Always call Message.Ack or Message.Nack after processing the message.\n//   - For some drivers, Ack will be a no-op.\n//   - For some drivers, Nack is not supported and will panic; you can call\n//     Message.Nackable to see.\n//\n// # OpenTelemetry Integration.\n//\n// OpenTelemetry supports tracing and metric collection for multiple languages and\n// backend providers. See https://opentelemetry.io.\n//\n// This API collects OpenTelemetry traces and metrics for the following methods:\n//   - Topic.Send\n//   - Topic.Shutdown\n//   - Subscription.Receive\n//   - Subscription.Shutdown\n//   - The internal driver methods SendBatch, SendAcks and ReceiveBatch.\n//\n// All trace and metric names begin with the package import path.\n// The traces add the method name.\n// For example, \"gocloud.dev/pubsub/Topic.Send\".\n// The metrics are \"completed_calls\", a count of completed method calls by driver,\n// method and status (error code); and \"latency\", a distribution of method latency\n// by driver and method.\n// For example, \"gocloud.dev/pubsub/latency\".\n//\n// To enable trace collection in your application, see \"Configure an Exporter\" at\n// https://opentelemetry.io/docs/languages/go/getting-started/.\n// To enable metric collection in your application, see \"Metrics\" at\n// https://opentelemetry.io/docs/languages/go/metrics/.\npackage pubsub // import \"gocloud.dev/pubsub\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"math\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode/utf8\"\n\n\t\"github.com/googleapis/gax-go/v2\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/openurl\"\n\tgcdkotel \"gocloud.dev/internal/otel\"\n\t\"gocloud.dev/internal/retry\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"golang.org/x/sync/errgroup\"\n)\n\n// Message contains data to be published.\ntype Message struct {\n\t// LoggableID will be set to an opaque message identifer for\n\t// received messages, useful for debug logging. No assumptions should\n\t// be made about the content.\n\tLoggableID string\n\n\t// Body contains the content of the message.\n\tBody []byte\n\n\t// Metadata has key/value metadata for the message.\n\t//\n\t// When sending a message, set any key/value pairs you want associated with\n\t// the message. It is acceptable for Metadata to be nil.\n\t// Note that some services limit the number of key/value pairs per message.\n\t//\n\t// When receiving a message, Metadata will be nil if the message has no\n\t// associated metadata.\n\tMetadata map[string]string\n\n\t// BeforeSend is a callback used when sending a message. It will always be\n\t// set to nil for received messages.\n\t//\n\t// The callback will be called exactly once, before the message is sent.\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tBeforeSend func(asFunc func(any) bool) error\n\n\t// AfterSend is a callback used when sending a message. It will always be\n\t// set to nil for received messages.\n\t//\n\t// The callback will be called at most once, after the message is sent.\n\t// If Send returns an error, AfterSend will not be called.\n\t//\n\t// asFunc converts its argument to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAfterSend func(asFunc func(any) bool) error\n\n\t// asFunc invokes driver.Message.AsFunc.\n\tasFunc func(any) bool\n\n\t// ack is a closure that queues this message for the action (ack or nack).\n\tack func(isAck bool)\n\n\t// nackable is true iff Nack can be called without panicking.\n\tnackable bool\n\n\t// mu guards isAcked in case Ack/Nack is called concurrently.\n\tmu sync.Mutex\n\n\t// isAcked tells whether this message has already had its Ack or Nack\n\t// method called.\n\tisAcked bool\n}\n\n// Ack acknowledges the message, telling the server that it does not need to be\n// sent again to the associated Subscription. It will be a no-op for some\n// drivers; see\n// https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more info.\n//\n// Ack returns immediately, but the actual ack is sent in the background, and\n// is not guaranteed to succeed. If background acks persistently fail, the error\n// will be returned from a subsequent Receive.\nfunc (m *Message) Ack() {\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\tif m.isAcked {\n\t\tpanic(fmt.Sprintf(\"Ack/Nack called twice on message: %+v\", m))\n\t}\n\tm.ack(true)\n\tm.isAcked = true\n}\n\n// Nackable returns true iff Nack can be called without panicking.\n//\n// Some services do not support Nack; for example, at-most-once services\n// can't redeliver a message. See\n// https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more info.\nfunc (m *Message) Nackable() bool {\n\treturn m.nackable\n}\n\n// Nack (short for negative acknowledgment) tells the server that this Message\n// was not processed and should be redelivered.\n//\n// Nack panics for some drivers, as Nack is meaningless when messages can't be\n// redelivered. You can call Nackable to determine if Nack is available. See\n// https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// fore more info.\n//\n// Nack returns immediately, but the actual nack is sent in the background,\n// and is not guaranteed to succeed.\n//\n// Nack is a performance optimization for retrying transient failures. It\n// must not be used for message parse errors or other messages that the\n// application will never be able to process: calling Nack will cause them to\n// be redelivered and overload the server. Instead, an application should call\n// Ack and log the failure in some monitored way.\nfunc (m *Message) Nack() {\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\tif m.isAcked {\n\t\tpanic(fmt.Sprintf(\"Ack/Nack called twice on message: %+v\", m))\n\t}\n\tif !m.nackable {\n\t\tpanic(\"Message.Nack is not supported by this driver\")\n\t}\n\tm.ack(false)\n\tm.isAcked = true\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\n// As panics unless it is called on a message obtained from Subscription.Receive.\nfunc (m *Message) As(i any) bool {\n\tif m.asFunc == nil {\n\t\tpanic(\"As called on a Message that was not obtained from Receive\")\n\t}\n\treturn m.asFunc(i)\n}\n\n// Topic publishes messages to all its subscribers.\ntype Topic struct {\n\tdriver  driver.Topic\n\tbatcher *batcher.Batcher\n\ttracer  *gcdkotel.Tracer\n\tmu      sync.Mutex\n\terr     error\n\n\t// cancel cancels all SendBatch calls.\n\tcancel func()\n}\n\n// Send publishes a message. It only returns after the message has been\n// sent, or failed to be sent. Send can be called from multiple goroutines\n// at once.\nfunc (t *Topic) Send(ctx context.Context, m *Message) (err error) {\n\tctx, span := t.tracer.Start(ctx, \"Topic.Send\")\n\tdefer func() { t.tracer.End(ctx, span, err) }()\n\n\t// Check for doneness before we do any work.\n\tif err := ctx.Err(); err != nil {\n\t\treturn err // Return context errors unwrapped.\n\t}\n\tt.mu.Lock()\n\terr = t.err\n\tt.mu.Unlock()\n\tif err != nil {\n\t\treturn err // t.err wrapped when set\n\t}\n\tif m.LoggableID != \"\" {\n\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"pubsub: Message.LoggableID should not be set when sending a message\")\n\t}\n\tfor k, v := range m.Metadata {\n\t\tif !utf8.ValidString(k) {\n\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"pubsub: Message.Metadata keys must be valid UTF-8 strings: %q\", k)\n\t\t}\n\t\tif !utf8.ValidString(v) {\n\t\t\treturn gcerr.Newf(gcerr.InvalidArgument, nil, \"pubsub: Message.Metadata values must be valid UTF-8 strings: %q\", v)\n\t\t}\n\t}\n\tdm := &driver.Message{\n\t\tBody:       m.Body,\n\t\tMetadata:   m.Metadata,\n\t\tBeforeSend: m.BeforeSend,\n\t\tAfterSend:  m.AfterSend,\n\t}\n\treturn t.batcher.Add(ctx, dm)\n}\n\nvar errTopicShutdown = gcerr.Newf(gcerr.FailedPrecondition, nil, \"pubsub: Topic has been Shutdown\")\n\n// Shutdown flushes pending message sends and disconnects the Topic.\n// It only returns after all pending messages have been sent.\nfunc (t *Topic) Shutdown(ctx context.Context) (err error) {\n\tctx, span := t.tracer.Start(ctx, \"Topic.Shutdown\")\n\tdefer func() { t.tracer.End(ctx, span, err) }()\n\n\tt.mu.Lock()\n\tif errors.Is(t.err, errTopicShutdown) {\n\t\tdefer t.mu.Unlock()\n\t\treturn t.err\n\t}\n\tt.err = errTopicShutdown\n\tt.mu.Unlock()\n\tc := make(chan struct{})\n\tgo func() {\n\t\tdefer close(c)\n\t\tt.batcher.Shutdown()\n\t}()\n\tselect {\n\tcase <-ctx.Done():\n\tcase <-c:\n\t}\n\tt.cancel()\n\tif err := t.driver.Close(); err != nil {\n\t\treturn wrapError(t.driver, err)\n\t}\n\treturn ctx.Err()\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (t *Topic) As(i any) bool {\n\treturn t.driver.As(i)\n}\n\n// ErrorAs converts err to driver-specific types.\n// ErrorAs panics if i is nil or not a pointer.\n// ErrorAs returns false if err == nil.\n// See https://gocloud.dev/concepts/as/ for background information.\nfunc (t *Topic) ErrorAs(err error, i any) bool {\n\treturn gcerr.ErrorAs(err, i, t.driver.ErrorAs)\n}\n\n// NewTopic is for use by drivers only. Do not use in application code.\nvar NewTopic = newTopic\n\n// newSendBatcher creates a batcher for topics, for use with NewTopic.\nfunc newSendBatcher(ctx context.Context, t *Topic, dt driver.Topic, opts *batcher.Options) *batcher.Batcher {\n\thandler := func(items any) error {\n\t\tdms := items.([]*driver.Message)\n\t\terr := retry.Call(ctx, gax.Backoff{}, dt.IsRetryable, func() (err error) {\n\t\t\tspanCtx, span := t.tracer.Start(ctx, \"driver.Topic.SendBatch\")\n\t\t\tdefer func() { t.tracer.End(spanCtx, span, err) }()\n\t\t\treturn dt.SendBatch(spanCtx, dms)\n\t\t})\n\t\tif err != nil {\n\t\t\treturn wrapError(dt, err)\n\t\t}\n\t\treturn nil\n\t}\n\treturn batcher.New(reflect.TypeFor[*driver.Message](), opts, handler)\n}\n\n// newTopic makes a pubsub.Topic from a driver.Topic.\n//\n// opts may be nil to accept defaults.\nfunc newTopic(d driver.Topic, opts *batcher.Options) *Topic {\n\tctx, cancel := context.WithCancel(context.Background())\n\tt := &Topic{\n\t\tdriver: d,\n\t\ttracer: gcdkotel.NewTracer(pkgName, gcdkotel.ProviderName(d)),\n\t\tcancel: cancel,\n\t}\n\tt.batcher = newSendBatcher(ctx, t, d, opts)\n\treturn t\n}\n\nconst pkgName = \"gocloud.dev/pubsub\"\n\nvar (\n\n\t// OpenTelemetryViews are predefined views for OpenTelemetry metrics.\n\t// The views include counts and latency distributions for API method calls.\n\t// See the explanations at https://opentelemetry.io/docs/specs/otel/metrics/data-model/ for usage.\n\tOpenTelemetryViews = gcdkotel.Views(pkgName)\n)\n\n// Subscription receives published messages.\ntype Subscription struct {\n\tdriver driver.Subscription\n\ttracer *gcdkotel.Tracer\n\t// ackBatcher makes batches of acks and nacks and sends them to the server.\n\tackBatcher    *batcher.Batcher\n\tcanNack       bool            // true iff the driver supports Nack\n\tbackgroundCtx context.Context // for background SendAcks and ReceiveBatch calls\n\tcancel        func()          // for canceling backgroundCtx\n\n\trecvBatchOpts *batcher.Options\n\n\tmu               sync.Mutex        // protects everything below\n\tq                []*driver.Message // local queue of messages downloaded from server\n\terr              error             // permanent error\n\tunreportedAckErr error             // permanent error from background SendAcks that hasn't been returned to the user yet\n\twaitc            chan struct{}     // for goroutines waiting on ReceiveBatch\n\trunningBatchSize float64           // running number of messages to request via ReceiveBatch\n\tthroughputStart  time.Time         // start time for throughput measurement\n\tthroughputCount  int               // number of msgs given out via Receive since throughputStart\n\n\t// Used in tests.\n\tpreReceiveBatchHook func(maxMessages int)\n}\n\nconst (\n\t// The desired duration of a subscription's queue of messages (the messages pulled\n\t// and waiting in memory to be doled out to Receive callers). This is how long\n\t// it would take to drain the queue at the current processing rate.\n\t// The relationship to queue length (number of messages) is\n\t//\n\t//      lengthInMessages = desiredQueueDuration / averageProcessTimePerMessage\n\t//\n\t// In other words, if it takes 100ms to process a message on average, and we want\n\t// 2s worth of queued messages, then we need 2/.1 = 20 messages in the queue.\n\t//\n\t// If desiredQueueDuration is too small, then there won't be a large enough buffer\n\t// of messages to handle fluctuations in processing time, and the queue is likely\n\t// to become empty, reducing throughput. If desiredQueueDuration is too large, then\n\t// messages will wait in memory for a long time, possibly timing out (that is,\n\t// their ack deadline will be exceeded). Those messages could have been handled\n\t// by another process receiving from the same subscription.\n\tdesiredQueueDuration = 2 * time.Second\n\n\t// Expected duration of calls to driver.ReceiveBatch, at some high percentile.\n\t// We'll try to fetch more messages when the current queue is predicted\n\t// to be used up in expectedReceiveBatchDuration.\n\texpectedReceiveBatchDuration = 1 * time.Second\n\n\t// s.runningBatchSize holds our current best guess for how many messages to\n\t// fetch in order to have a buffer of desiredQueueDuration. When we have\n\t// fewer than prefetchRatio * s.runningBatchSize messages left, that means\n\t// we expect to run out of messages in expectedReceiveBatchDuration, so we\n\t// should initiate another ReceiveBatch call.\n\tprefetchRatio = float64(expectedReceiveBatchDuration) / float64(desiredQueueDuration)\n\n\t// The initial # of messages to request via ReceiveBatch.\n\tinitialBatchSize = 1\n\n\t// The factor by which old batch sizes decay when a new value is added to the\n\t// running value. The larger this number, the more weight will be given to the\n\t// newest value in preference to older ones.\n\t//\n\t// The delta based on a single value is capped by the constants below.\n\tdecay = 0.5\n\n\t// The maximum growth factor in a single jump. Higher values mean that the\n\t// batch size can increase more aggressively. For example, 2.0 means that the\n\t// batch size will at most double from one ReceiveBatch call to the next.\n\tmaxGrowthFactor = 2.0\n\n\t// Similarly, the maximum shrink factor. Lower values mean that the batch size\n\t// can shrink more aggressively. For example; 0.75 means that the batch size\n\t// will at most shrink to 75% of what it was before. Note that values less\n\t// than (1-decay) will have no effect because the running value can't change\n\t// by more than that.\n\tmaxShrinkFactor = 0.75\n\n\t// The maximum batch size to request. Setting this too low doesn't allow\n\t// drivers to get lots of messages at once; setting it too small risks having\n\t// drivers spend a long time in ReceiveBatch trying to achieve it.\n\tmaxBatchSize = 3000\n)\n\n// updateBatchSize updates the number of messages to request in ReceiveBatch\n// based on the previous batch size and the rate of messages being pulled from\n// the queue, measured using s.throughput*.\n//\n// It returns the number of messages to request in this ReceiveBatch call.\n//\n// s.mu must be held.\nfunc (s *Subscription) updateBatchSize() int {\n\t// If we're always only doing one at a time, there's no point in this.\n\tif s.recvBatchOpts != nil && s.recvBatchOpts.MaxBatchSize == 1 && s.recvBatchOpts.MaxHandlers == 1 {\n\t\treturn 1\n\t}\n\tnow := time.Now()\n\tif s.throughputStart.IsZero() {\n\t\t// No throughput measurement; don't update s.runningBatchSize.\n\t} else {\n\t\t// Update s.runningBatchSize based on throughput since our last time here,\n\t\t// as measured by the ratio of the number of messages returned to elapsed\n\t\t// time.\n\t\telapsed := max(now.Sub(s.throughputStart),\n\t\t\t// Avoid divide-by-zero and huge numbers.\n\t\t\t100*time.Millisecond)\n\t\tmsgsPerSec := float64(s.throughputCount) / elapsed.Seconds()\n\n\t\t// The \"ideal\" batch size is how many messages we'd need in the queue to\n\t\t// support desiredQueueDuration at the msgsPerSec rate.\n\t\tidealBatchSize := desiredQueueDuration.Seconds() * msgsPerSec\n\n\t\t// Move s.runningBatchSize towards the ideal.\n\t\t// We first combine the previous value and the new value, with weighting\n\t\t// based on decay, and then cap the growth/shrinkage.\n\t\tnewBatchSize := s.runningBatchSize*(1-decay) + idealBatchSize*decay\n\t\tif maxSize := s.runningBatchSize * maxGrowthFactor; newBatchSize > maxSize {\n\t\t\ts.runningBatchSize = maxSize\n\t\t} else if minSize := s.runningBatchSize * maxShrinkFactor; newBatchSize < minSize {\n\t\t\ts.runningBatchSize = minSize\n\t\t} else {\n\t\t\ts.runningBatchSize = newBatchSize\n\t\t}\n\t}\n\n\t// Reset throughput measurement markers.\n\ts.throughputStart = now\n\ts.throughputCount = 0\n\n\t// Using Ceil guarantees at least one message.\n\treturn int(math.Ceil(math.Min(s.runningBatchSize, maxBatchSize)))\n}\n\n// Receive receives and returns the next message from the Subscription's queue,\n// blocking and polling if none are available. It can be called\n// concurrently from multiple goroutines.\n//\n// Receive retries retryable errors from the underlying driver forever.\n// Therefore, if Receive returns an error, either:\n// 1. It is a non-retryable error from the underlying driver, either from\n//\n//\tan attempt to fetch more messages or from an attempt to ack messages.\n//\tOperator intervention may be required (e.g., invalid resource, quota\n//\terror, etc.). Receive will return the same error from then on, so the\n//\tapplication should log the error and either recreate the Subscription,\n//\tor exit.\n//\n// 2. The provided ctx is Done. Error() on the returned error will include both\n//\n//\tthe ctx error and the underlying driver error, and ErrorAs on it\n//\tcan access the underlying driver error type if needed. Receive may\n//\tbe called again with a fresh ctx.\n//\n// Callers can distinguish between the two by checking if the ctx they passed\n// is Done, or via xerrors.Is(err, context.DeadlineExceeded or context.Canceled)\n// on the returned error.\n//\n// The Ack method of the returned Message must be called once the message has\n// been processed, to prevent it from being received again.\nfunc (s *Subscription) Receive(ctx context.Context) (_ *Message, err error) {\n\tctx, span := s.tracer.Start(ctx, \"Subscription.Receive\")\n\tdefer func() { s.tracer.End(ctx, span, err) }()\n\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tfor {\n\t\t// The lock is always held here, at the top of the loop.\n\t\tif s.err != nil {\n\t\t\t// The Subscription is in a permanent error state. Return the error.\n\t\t\ts.unreportedAckErr = nil\n\t\t\treturn nil, s.err // s.err wrapped when set\n\t\t}\n\n\t\t// Short circuit if ctx is Done.\n\t\t// Otherwise, we'll continue to return messages from the queue, and even\n\t\t// get new messages if driver.ReceiveBatch doesn't return an error when\n\t\t// ctx is done.\n\t\tif err := ctx.Err(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif s.waitc == nil && float64(len(s.q)) <= s.runningBatchSize*prefetchRatio {\n\t\t\t// We think we're going to run out of messages in expectedReceiveBatchDuration,\n\t\t\t// and there's no outstanding ReceiveBatch call, so initiate one in the\n\t\t\t// background.\n\t\t\t// Completion will be signalled to this goroutine, and to any other\n\t\t\t// waiting goroutines, by closing s.waitc.\n\t\t\ts.waitc = make(chan struct{})\n\t\t\tbatchSize := s.updateBatchSize()\n\t\t\t// log.Printf(\"BATCH SIZE %d\", batchSize)\n\n\t\t\tgo func() {\n\t\t\t\tif s.preReceiveBatchHook != nil {\n\t\t\t\t\ts.preReceiveBatchHook(batchSize)\n\t\t\t\t}\n\t\t\t\tresultChannel := s.getNextBatch(batchSize)\n\t\t\t\tfor msgsOrError := range resultChannel {\n\t\t\t\t\tif len(msgsOrError.msgs) > 0 {\n\t\t\t\t\t\t// messages received from channel\n\t\t\t\t\t\ts.mu.Lock()\n\t\t\t\t\t\ts.q = append(s.q, msgsOrError.msgs...)\n\t\t\t\t\t\ts.mu.Unlock()\n\t\t\t\t\t\t// notify that queue should now have messages\n\t\t\t\t\t\ts.waitc <- struct{}{}\n\t\t\t\t\t} else if msgsOrError.err != nil {\n\t\t\t\t\t\t// err can receive message only after batch group completes\n\t\t\t\t\t\t// Non-retryable error from ReceiveBatch -> permanent error\n\t\t\t\t\t\ts.mu.Lock()\n\t\t\t\t\t\ts.err = msgsOrError.err\n\t\t\t\t\t\ts.mu.Unlock()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// batch reception finished\n\t\t\t\ts.mu.Lock()\n\t\t\t\tclose(s.waitc)\n\t\t\t\ts.waitc = nil\n\t\t\t\ts.mu.Unlock()\n\t\t\t}()\n\t\t}\n\t\tif len(s.q) > 0 {\n\t\t\t// At least one message is available. Return it.\n\t\t\tm := s.q[0]\n\t\t\ts.q = s.q[1:]\n\t\t\ts.throughputCount++\n\n\t\t\t// Convert driver.Message to Message.\n\t\t\tid := m.AckID\n\t\t\tmd := m.Metadata\n\t\t\tif len(md) == 0 {\n\t\t\t\tmd = nil\n\t\t\t}\n\t\t\tloggableID := m.LoggableID\n\t\t\tif loggableID == \"\" {\n\t\t\t\t// This shouldn't happen, but just in case it's better to be explicit.\n\t\t\t\tloggableID = \"unknown\"\n\t\t\t}\n\t\t\tm2 := &Message{\n\t\t\t\tLoggableID: loggableID,\n\t\t\t\tBody:       m.Body,\n\t\t\t\tMetadata:   md,\n\t\t\t\tasFunc:     m.AsFunc,\n\t\t\t\tnackable:   s.canNack,\n\t\t\t}\n\t\t\tm2.ack = func(isAck bool) {\n\t\t\t\t// Ignore the error channel. Errors are dealt with\n\t\t\t\t// in the ackBatcher handler.\n\t\t\t\t_ = s.ackBatcher.AddNoWait(&driver.AckInfo{AckID: id, IsAck: isAck})\n\t\t\t}\n\t\t\t// Add a finalizer that complains if the Message we return isn't\n\t\t\t// acked or nacked.\n\t\t\t_, file, lineno, ok := runtime.Caller(1) // the caller of Receive\n\t\t\truntime.SetFinalizer(m2, func(m *Message) {\n\t\t\t\tm.mu.Lock()\n\t\t\t\tdefer m.mu.Unlock()\n\t\t\t\tif !m.isAcked {\n\t\t\t\t\tvar caller string\n\t\t\t\t\tif ok {\n\t\t\t\t\t\tcaller = fmt.Sprintf(\" (%s:%d)\", file, lineno)\n\t\t\t\t\t}\n\t\t\t\t\tlog.Printf(\"A pubsub.Message was never Acked or Nacked%s\", caller)\n\t\t\t\t}\n\t\t\t})\n\t\t\treturn m2, nil\n\t\t}\n\t\t// A call to ReceiveBatch must be in flight. Wait for it.\n\t\twaitc := s.waitc\n\t\ts.mu.Unlock() // unlock to allow message or error processing from background goroutine\n\t\tselect {\n\t\tcase <-waitc:\n\t\t\t// Continue to top of loop.\n\t\t\ts.mu.Lock()\n\t\tcase <-ctx.Done():\n\t\t\ts.mu.Lock()\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t}\n}\n\ntype msgsOrError struct {\n\tmsgs []*driver.Message\n\terr  error\n}\n\n// getNextBatch gets the next batch of messages from the server. It will return a channel that will itself return the\n// messages as they come from each independent batch, or an operation error\nfunc (s *Subscription) getNextBatch(nMessages int) chan msgsOrError {\n\t// Split nMessages into batches based on recvBatchOpts; we'll make a\n\t// separate ReceiveBatch call for each batch, and aggregate the results in\n\t// msgs.\n\tbatches := batcher.Split(nMessages, s.recvBatchOpts)\n\tresult := make(chan msgsOrError, len(batches))\n\tg, ctx := errgroup.WithContext(s.backgroundCtx)\n\tfor _, maxMessagesInBatch := range batches {\n\t\t// Make a copy of the loop variable since it will be used by a goroutine.\n\t\tcurMaxMessagesInBatch := maxMessagesInBatch\n\t\tg.Go(func() error {\n\t\t\tvar msgs []*driver.Message\n\t\t\terr := retry.Call(ctx, gax.Backoff{}, s.driver.IsRetryable, func() error {\n\t\t\t\tvar err error\n\t\t\t\tspanCtx, span := s.tracer.Start(ctx, \"driver.Subscription.ReceiveBatch\")\n\t\t\t\tdefer func() { s.tracer.End(spanCtx, span, err) }()\n\t\t\t\tmsgs, err = s.driver.ReceiveBatch(spanCtx, curMaxMessagesInBatch)\n\t\t\t\treturn err\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn wrapError(s.driver, err)\n\t\t\t}\n\t\t\tresult <- msgsOrError{msgs: msgs}\n\t\t\treturn nil\n\t\t})\n\t}\n\tgo func() {\n\t\t// wait on group completion on the background and proper channel closing\n\t\tif err := g.Wait(); err != nil {\n\t\t\tresult <- msgsOrError{err: err}\n\t\t}\n\t\tclose(result)\n\t}()\n\treturn result\n}\n\nvar errSubscriptionShutdown = gcerr.Newf(gcerr.FailedPrecondition, nil, \"pubsub: Subscription has been Shutdown\")\n\n// Shutdown flushes pending ack sends and disconnects the Subscription.\nfunc (s *Subscription) Shutdown(ctx context.Context) (err error) {\n\tctx, span := s.tracer.Start(ctx, \"Subscription.Shutdown\")\n\tdefer func() { s.tracer.End(ctx, span, err) }()\n\n\ts.mu.Lock()\n\tif errors.Is(s.err, errSubscriptionShutdown) {\n\t\t// Already Shutdown.\n\t\tdefer s.mu.Unlock()\n\t\treturn s.err\n\t}\n\ts.err = errSubscriptionShutdown\n\ts.mu.Unlock()\n\tc := make(chan struct{})\n\tgo func() {\n\t\tdefer close(c)\n\t\tif s.ackBatcher != nil {\n\t\t\ts.ackBatcher.Shutdown()\n\t\t}\n\t}()\n\tselect {\n\tcase <-ctx.Done():\n\tcase <-c:\n\t}\n\ts.cancel()\n\tif err := s.driver.Close(); err != nil {\n\t\treturn wrapError(s.driver, err)\n\t}\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\tif err := s.unreportedAckErr; err != nil {\n\t\ts.unreportedAckErr = nil\n\t\treturn err\n\t}\n\treturn ctx.Err()\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (s *Subscription) As(i any) bool {\n\treturn s.driver.As(i)\n}\n\n// ErrorAs converts err to driver-specific types.\n// ErrorAs panics if i is nil or not a pointer.\n// ErrorAs returns false if err == nil.\n// See Topic.As for more details.\nfunc (s *Subscription) ErrorAs(err error, i any) bool {\n\treturn gcerr.ErrorAs(err, i, s.driver.ErrorAs)\n}\n\n// NewSubscription is for use by drivers only. Do not use in application code.\nvar NewSubscription = newSubscription\n\n// newSubscription creates a Subscription from a driver.Subscription.\n//\n// recvBatchOpts sets options for Receive batching. May be nil to accept\n// defaults. The ideal number of messages to receive at a time is determined\n// dynamically, then split into multiple possibly concurrent calls to\n// driver.ReceiveBatch based on recvBatchOptions.\n//\n// ackBatcherOpts sets options for ack+nack batching. May be nil to accept\n// defaults.\nfunc newSubscription(ds driver.Subscription, recvBatchOpts, ackBatcherOpts *batcher.Options) *Subscription {\n\tctx, cancel := context.WithCancel(context.Background())\n\ts := &Subscription{\n\t\tdriver:           ds,\n\t\ttracer:           gcdkotel.NewTracer(pkgName, gcdkotel.ProviderName(ds)),\n\t\tcancel:           cancel,\n\t\tbackgroundCtx:    ctx,\n\t\trecvBatchOpts:    recvBatchOpts,\n\t\trunningBatchSize: initialBatchSize,\n\t\tcanNack:          ds.CanNack(),\n\t}\n\ts.ackBatcher = newAckBatcher(ctx, s, ds, ackBatcherOpts)\n\treturn s\n}\n\nfunc newAckBatcher(ctx context.Context, s *Subscription, ds driver.Subscription, opts *batcher.Options) *batcher.Batcher {\n\thandler := func(items any) error {\n\t\tvar acks, nacks []driver.AckID\n\t\tfor _, a := range items.([]*driver.AckInfo) {\n\t\t\tif a.IsAck {\n\t\t\t\tacks = append(acks, a.AckID)\n\t\t\t} else {\n\t\t\t\tnacks = append(nacks, a.AckID)\n\t\t\t}\n\t\t}\n\t\tg, ctx := errgroup.WithContext(ctx)\n\t\tif len(acks) > 0 {\n\t\t\tg.Go(func() error {\n\t\t\t\treturn retry.Call(ctx, gax.Backoff{}, ds.IsRetryable, func() (err error) {\n\t\t\t\t\tspanCtx, span := s.tracer.Start(ctx, \"driver.Subscription.SendAcks\")\n\t\t\t\t\tdefer func() { s.tracer.End(spanCtx, span, err) }()\n\t\t\t\t\treturn ds.SendAcks(spanCtx, acks)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tif len(nacks) > 0 {\n\t\t\tg.Go(func() error {\n\t\t\t\treturn retry.Call(ctx, gax.Backoff{}, ds.IsRetryable, func() (err error) {\n\t\t\t\t\tspanCtx, span := s.tracer.Start(ctx, \"driver.Subscription.SendNacks\")\n\t\t\t\t\tdefer func() { s.tracer.End(spanCtx, span, err) }()\n\t\t\t\t\treturn ds.SendNacks(spanCtx, nacks)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\terr := g.Wait()\n\t\t// Remember a non-retryable error from SendAcks/Nacks. It will be returned on the\n\t\t// next call to Receive.\n\t\tif err != nil {\n\t\t\terr = wrapError(s.driver, err)\n\t\t\ts.mu.Lock()\n\t\t\ts.err = err\n\t\t\ts.unreportedAckErr = err\n\t\t\ts.mu.Unlock()\n\t\t}\n\t\treturn err\n\t}\n\treturn batcher.New(reflect.TypeFor[[]*driver.AckInfo]().Elem(), opts, handler)\n}\n\ntype errorCoder interface {\n\tErrorCode(error) gcerrors.ErrorCode\n}\n\nfunc wrapError(ec errorCoder, err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif gcerr.DoNotWrap(err) {\n\t\treturn err\n\t}\n\treturn gcerr.New(ec.ErrorCode(err), err, 2, \"pubsub\")\n}\n\n// TopicURLOpener represents types than can open Topics based on a URL.\n// The opener must not modify the URL argument. OpenTopicURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype TopicURLOpener interface {\n\tOpenTopicURL(ctx context.Context, u *url.URL) (*Topic, error)\n}\n\n// SubscriptionURLOpener represents types than can open Subscriptions based on a URL.\n// The opener must not modify the URL argument. OpenSubscriptionURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype SubscriptionURLOpener interface {\n\tOpenSubscriptionURL(ctx context.Context, u *url.URL) (*Subscription, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n// See https://gocloud.dev/concepts/urls/ for more information.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n\tsubscriptionSchemes openurl.SchemeMap\n\ttopicSchemes        openurl.SchemeMap\n}\n\n// TopicSchemes returns a sorted slice of the registered Topic schemes.\nfunc (mux *URLMux) TopicSchemes() []string { return mux.topicSchemes.Schemes() }\n\n// ValidTopicScheme returns true iff scheme has been registered for Topics.\nfunc (mux *URLMux) ValidTopicScheme(scheme string) bool { return mux.topicSchemes.ValidScheme(scheme) }\n\n// SubscriptionSchemes returns a sorted slice of the registered Subscription schemes.\nfunc (mux *URLMux) SubscriptionSchemes() []string { return mux.subscriptionSchemes.Schemes() }\n\n// ValidSubscriptionScheme returns true iff scheme has been registered for Subscriptions.\nfunc (mux *URLMux) ValidSubscriptionScheme(scheme string) bool {\n\treturn mux.subscriptionSchemes.ValidScheme(scheme)\n}\n\n// RegisterTopic registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterTopic panics.\nfunc (mux *URLMux) RegisterTopic(scheme string, opener TopicURLOpener) {\n\tmux.topicSchemes.Register(\"pubsub\", \"Topic\", scheme, opener)\n}\n\n// RegisterSubscription registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterSubscription panics.\nfunc (mux *URLMux) RegisterSubscription(scheme string, opener SubscriptionURLOpener) {\n\tmux.subscriptionSchemes.Register(\"pubsub\", \"Subscription\", scheme, opener)\n}\n\n// OpenTopic calls OpenTopicURL with the URL parsed from urlstr.\n// OpenTopic is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenTopic(ctx context.Context, urlstr string) (*Topic, error) {\n\topener, u, err := mux.topicSchemes.FromString(\"Topic\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(TopicURLOpener).OpenTopicURL(ctx, u)\n}\n\n// OpenSubscription calls OpenSubscriptionURL with the URL parsed from urlstr.\n// OpenSubscription is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenSubscription(ctx context.Context, urlstr string) (*Subscription, error) {\n\topener, u, err := mux.subscriptionSchemes.FromString(\"Subscription\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(SubscriptionURLOpener).OpenSubscriptionURL(ctx, u)\n}\n\n// OpenTopicURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenTopicURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenTopicURL(ctx context.Context, u *url.URL) (*Topic, error) {\n\topener, err := mux.topicSchemes.FromURL(\"Topic\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(TopicURLOpener).OpenTopicURL(ctx, u)\n}\n\n// OpenSubscriptionURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenSubscriptionURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*Subscription, error) {\n\topener, err := mux.subscriptionSchemes.FromURL(\"Subscription\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(SubscriptionURLOpener).OpenSubscriptionURL(ctx, u)\n}\n\nvar defaultURLMux = &URLMux{}\n\n// DefaultURLMux returns the URLMux used by OpenTopic and OpenSubscription.\n//\n// Driver packages can use this to register their TopicURLOpener and/or\n// SubscriptionURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// OpenTopic opens the Topic identified by the URL given.\n// See the URLOpener documentation in driver subpackages for\n// details on supported URL formats, and https://gocloud.dev/concepts/urls\n// for more information.\nfunc OpenTopic(ctx context.Context, urlstr string) (*Topic, error) {\n\treturn defaultURLMux.OpenTopic(ctx, urlstr)\n}\n\n// OpenSubscription opens the Subscription identified by the URL given.\n// See the URLOpener documentation in driver subpackages for\n// details on supported URL formats, and https://gocloud.dev/concepts/urls\n// for more information.\nfunc OpenSubscription(ctx context.Context, urlstr string) (*Subscription, error) {\n\treturn defaultURLMux.OpenSubscription(ctx, urlstr)\n}\n"
  },
  {
    "path": "pubsub/pubsub_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//\thttps://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\npackage pubsub\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/testing/oteltest\"\n\t\"gocloud.dev/pubsub/batcher\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\ntype driverTopic struct {\n\tdriver.Topic\n\tsubs []*driverSub\n}\n\nfunc (t *driverTopic) SendBatch(ctx context.Context, ms []*driver.Message) error {\n\tfor _, s := range t.subs {\n\t\tselect {\n\t\tcase <-s.sem:\n\t\t\ts.q = append(s.q, ms...)\n\t\t\ts.sem <- struct{}{}\n\t\tcase <-ctx.Done():\n\t\t\treturn ctx.Err()\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (*driverTopic) IsRetryable(error) bool             { return false }\nfunc (*driverTopic) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Unknown }\nfunc (*driverTopic) Close() error                       { return nil }\n\ntype driverSub struct {\n\tdriver.Subscription\n\tsem chan struct{}\n\t// Normally this queue would live on a separate server in the cloud.\n\tq []*driver.Message\n}\n\nfunc NewDriverSub() *driverSub {\n\tds := &driverSub{\n\t\tsem: make(chan struct{}, 1),\n\t}\n\tds.sem <- struct{}{}\n\treturn ds\n}\n\nfunc (s *driverSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tfor {\n\t\tselect {\n\t\tcase <-s.sem:\n\t\t\tms := s.grabQueue(maxMessages)\n\t\t\tif len(ms) != 0 {\n\t\t\t\treturn ms, nil\n\t\t\t}\n\t\tcase <-ctx.Done():\n\t\t\treturn nil, ctx.Err()\n\t\t}\n\t}\n}\n\nfunc (s *driverSub) grabQueue(maxMessages int) []*driver.Message {\n\tdefer func() { s.sem <- struct{}{} }()\n\tif len(s.q) > 0 {\n\t\tif len(s.q) <= maxMessages {\n\t\t\tms := s.q\n\t\t\ts.q = nil\n\t\t\treturn ms\n\t\t}\n\t\tms := s.q[:maxMessages]\n\t\ts.q = s.q[maxMessages:]\n\t\treturn ms\n\t}\n\treturn nil\n}\n\nfunc (s *driverSub) SendAcks(ctx context.Context, ackIDs []driver.AckID) error {\n\treturn nil\n}\n\nfunc (*driverSub) IsRetryable(error) bool             { return false }\nfunc (*driverSub) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Internal }\nfunc (*driverSub) CanNack() bool                      { return false }\nfunc (*driverSub) Close() error                       { return nil }\n\nfunc TestSendReceive(t *testing.T) {\n\tctx := context.Background()\n\tds := NewDriverSub()\n\tdt := &driverTopic{\n\t\tsubs: []*driverSub{ds},\n\t}\n\ttopic := NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\tm := &Message{LoggableID: \"foo\", Body: []byte(\"user signed up\")}\n\tif err := topic.Send(ctx, m); err == nil {\n\t\tt.Fatalf(\"expected a Send with a non-empty LoggableID to fail\")\n\t}\n\tm.LoggableID = \"\"\n\tif err := topic.Send(ctx, m); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tsub := NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tm2, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif string(m2.Body) != string(m.Body) {\n\t\tt.Fatalf(\"received message has body %q, want %q\", m2.Body, m.Body)\n\t}\n\tm2.Ack()\n}\n\nfunc TestConcurrentReceivesGetAllTheMessages(t *testing.T) {\n\thowManyToSend := int(1e3)\n\tctx, cancel := context.WithCancel(context.Background())\n\tdt := &driverTopic{}\n\n\t// wg is used to wait until all messages are received.\n\tvar wg sync.WaitGroup\n\twg.Add(howManyToSend)\n\n\t// Make a subscription.\n\tds := NewDriverSub()\n\tdt.subs = append(dt.subs, ds)\n\ts := NewSubscription(ds, nil, nil)\n\tdefer s.Shutdown(ctx)\n\n\t// Start 10 goroutines to receive from it.\n\tvar mu sync.Mutex\n\treceivedMsgs := make(map[string]bool)\n\tfor range 10 {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tm, err := s.Receive(ctx)\n\t\t\t\tif err != nil {\n\t\t\t\t\t// Permanent error; ctx cancelled or subscription closed is\n\t\t\t\t\t// expected once we've received all the messages.\n\t\t\t\t\tmu.Lock()\n\t\t\t\t\tn := len(receivedMsgs)\n\t\t\t\t\tmu.Unlock()\n\t\t\t\t\tif n != howManyToSend {\n\t\t\t\t\t\tt.Errorf(\"Worker's Receive failed before all messages were received (%d)\", n)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tm.Ack()\n\t\t\t\tmu.Lock()\n\t\t\t\treceivedMsgs[string(m.Body)] = true\n\t\t\t\tmu.Unlock()\n\t\t\t\twg.Done()\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Send messages. Each message has a unique body used as a key to receivedMsgs.\n\ttopic := NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\tfor i := range howManyToSend {\n\t\tkey := fmt.Sprintf(\"message #%d\", i)\n\t\tm := &Message{Body: []byte(key)}\n\t\tif err := topic.Send(ctx, m); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}\n\n\t// Wait for the goroutines to receive all of the messages, then cancel the\n\t// ctx so they all exit.\n\twg.Wait()\n\tdefer cancel()\n\n\t// Check that all the messages were received.\n\tfor i := range howManyToSend {\n\t\tkey := fmt.Sprintf(\"message #%d\", i)\n\t\tif !receivedMsgs[key] {\n\t\t\tt.Errorf(\"message %q was not received\", key)\n\t\t}\n\t}\n}\n\nfunc TestCancelSend(t *testing.T) {\n\tctx, cancel := context.WithCancel(context.Background())\n\tds := NewDriverSub()\n\tdt := &driverTopic{\n\t\tsubs: []*driverSub{ds},\n\t}\n\ttopic := NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\tm := &Message{}\n\n\t// Intentionally break the driver subscription by acquiring its semaphore.\n\t// Now topic.Send will have to wait for cancellation.\n\t<-ds.sem\n\n\tcancel()\n\tif err := topic.Send(ctx, m); err == nil {\n\t\tt.Error(\"got nil, want cancellation error\")\n\t}\n}\n\nfunc TestCancelReceive(t *testing.T) {\n\tctx, cancel := context.WithCancel(context.Background())\n\tds := NewDriverSub()\n\ts := NewSubscription(ds, nil, nil)\n\tdefer s.Shutdown(ctx)\n\tcancel()\n\t// Without cancellation, this Receive would hang.\n\tif _, err := s.Receive(ctx); err == nil {\n\t\tt.Error(\"got nil, want cancellation error\")\n\t}\n}\n\ntype blockingDriverSub struct {\n\tdriver.Subscription\n\tinReceiveBatch chan struct{}\n}\n\nfunc (b blockingDriverSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tb.inReceiveBatch <- struct{}{}\n\t<-ctx.Done()\n\treturn nil, ctx.Err()\n}\nfunc (blockingDriverSub) CanNack() bool          { return false }\nfunc (blockingDriverSub) IsRetryable(error) bool { return false }\nfunc (blockingDriverSub) Close() error           { return nil }\n\nfunc TestCancelTwoReceives(t *testing.T) {\n\t// We want to create the following situation:\n\t// 1. Goroutine 1 calls Receive, obtains the lock (Subscription.mu),\n\t//    then releases the lock and calls driver.ReceiveBatch, which hangs.\n\t// 2. Goroutine 2 calls Receive.\n\t// 3. The context passed to the Goroutine 2 call is canceled.\n\t// We expect Goroutine 2's Receive to exit immediately. That won't\n\t// happen if Receive holds the lock during the call to ReceiveBatch.\n\tinReceiveBatch := make(chan struct{})\n\ts := NewSubscription(blockingDriverSub{inReceiveBatch: inReceiveBatch}, nil, nil)\n\tdefer s.Shutdown(context.Background())\n\tgo func() {\n\t\t_, err := s.Receive(context.Background())\n\t\t// This should happen at the very end of the test, during Shutdown.\n\t\tif err != context.Canceled {\n\t\t\tt.Errorf(\"got %v, want context.Canceled\", err)\n\t\t}\n\t}()\n\t<-inReceiveBatch\n\t// Give the Receive call time to block on the mutex before timing out.\n\tctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)\n\tdefer cancel()\n\terrc := make(chan error)\n\tgo func() {\n\t\t_, err := s.Receive(ctx)\n\t\terrc <- err\n\t}()\n\terr := <-errc\n\tif err != context.DeadlineExceeded {\n\t\tt.Errorf(\"got %v, want context.DeadlineExceeded\", err)\n\t}\n}\n\ntype secondReceiveBlockedDriverSub struct {\n\tdriver.Subscription\n\treceiveCounter atomic.Uint64\n}\n\nfunc (s *secondReceiveBlockedDriverSub) ReceiveBatch(ctx context.Context, _ int) ([]*driver.Message, error) {\n\t// The first request will return a message right away.\n\t// The second one will block ~forever.\n\tif n := s.receiveCounter.Add(1); n > 1 {\n\t\t<-ctx.Done()\n\t}\n\tmsg := &driver.Message{Body: fmt.Appendf(nil, \"message #%d\", s.receiveCounter.Load())}\n\treturn []*driver.Message{msg}, nil\n}\nfunc (*secondReceiveBlockedDriverSub) CanNack() bool                                      { return false }\nfunc (*secondReceiveBlockedDriverSub) SendAcks(_ context.Context, _ []driver.AckID) error { return nil }\nfunc (*secondReceiveBlockedDriverSub) IsRetryable(error) bool                             { return false }\nfunc (*secondReceiveBlockedDriverSub) Close() error                                       { return nil }\n\n// TestIndependentBatchReturn verifies that when multiple batch requests are sent,\n// as long as one of them succeeds it should not block Subscription.Receive.\nfunc TestIndependentBatchReturn(t *testing.T) {\n\ts := NewSubscription(\n\t\t&secondReceiveBlockedDriverSub{},\n\t\t&batcher.Options{MaxBatchSize: 1, MaxHandlers: 2}, // force 2 batches by allowing 2 handlers and 1 msg per batch\n\t\tnil,\n\t)\n\tctx := context.Background()\n\tdefer s.Shutdown(ctx)\n\n\t// Set the batch size to force 2 batches to be called.\n\ts.runningBatchSize = 2\n\tctxTimeout, cancel := context.WithTimeout(ctx, 10*time.Second)\n\tdefer cancel()\n\tm, err := s.Receive(ctxTimeout)\n\tif err != nil {\n\t\tt.Fatal(\"Receive should not fail\", err)\n\t\treturn\n\t}\n\tm.Ack()\n}\n\nfunc TestRetryTopic(t *testing.T) {\n\t// Test that Send is retried if the driver returns a retryable error.\n\tctx := context.Background()\n\tft := &failTopic{}\n\ttopic := NewTopic(ft, nil)\n\tdefer topic.Shutdown(ctx)\n\terr := topic.Send(ctx, &Message{})\n\tif err != nil {\n\t\tt.Errorf(\"Send: got %v, want nil\", err)\n\t}\n\tif got, want := ft.calls, nRetryCalls+1; got != want {\n\t\tt.Errorf(\"calls: got %d, want %d\", got, want)\n\t}\n}\n\nvar errRetry = errors.New(\"retry\")\n\nfunc isRetryable(err error) bool {\n\treturn err == errRetry\n}\n\nconst nRetryCalls = 2\n\n// failTopic helps test retries for SendBatch.\n//\n// SendBatch will fail nRetryCall times before succeeding.\ntype failTopic struct {\n\tdriver.Topic\n\tcalls int\n}\n\nfunc (t *failTopic) SendBatch(ctx context.Context, ms []*driver.Message) error {\n\tt.calls++\n\tif t.calls <= nRetryCalls {\n\t\treturn errRetry\n\t}\n\treturn nil\n}\n\nfunc (*failTopic) IsRetryable(err error) bool         { return isRetryable(err) }\nfunc (*failTopic) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Unknown }\nfunc (*failTopic) Close() error                       { return nil }\n\nfunc TestRetryReceive(t *testing.T) {\n\tctx := context.Background()\n\tfs := &failSub{fail: true}\n\tsub := NewSubscription(fs, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tm, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatalf(\"Receive: got %v, want nil\", err)\n\t}\n\tm.Ack()\n\tif got, want := fs.calls, nRetryCalls+1; got != want {\n\t\tt.Errorf(\"calls: got %d, want %d\", got, want)\n\t}\n}\n\n// TestBatchSizeDecay verifies that the batch size decays when no messages are available.\n// (see https://github.com/google/go-cloud/issues/2849).\nfunc TestBatchSizeDecays(t *testing.T) {\n\tctx := context.Background()\n\tfs := &failSub{}\n\t// Allow multiple handlers and cap max batch size to ensure we get concurrency.\n\tsub := NewSubscription(fs, &batcher.Options{MaxHandlers: 10, MaxBatchSize: 2}, nil)\n\tdefer sub.Shutdown(ctx)\n\n\t// Records the last batch size.\n\tvar mu sync.Mutex\n\tlastMaxMessages := 0\n\tsub.preReceiveBatchHook = func(maxMessages int) {\n\t\tmu.Lock()\n\t\tdefer mu.Unlock()\n\t\tlastMaxMessages = maxMessages\n\t}\n\n\t// Do some receives to allow the number of batches to increase past 1.\n\tfor range 100 {\n\t\tm, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Receive: got %v, want nil\", err)\n\t\t}\n\t\tm.Ack()\n\t}\n\n\t// Tell the failSub to start returning no messages.\n\tfs.mu.Lock()\n\tfs.empty = true\n\tfs.mu.Unlock()\n\n\tmu.Lock()\n\thighWaterMarkBatchSize := lastMaxMessages\n\tif lastMaxMessages <= 1 {\n\t\tt.Fatal(\"max messages wasn't greater than 1\")\n\t}\n\tmu.Unlock()\n\n\t// Make a bunch of calls to Receive to drain any outstanding\n\t// messages, and wait some extra time during which we should\n\t// continue polling, and the batch size should decay.\n\tfor {\n\t\tctx, cancel := context.WithTimeout(context.Background(), 1*time.Second)\n\t\tdefer cancel()\n\t\tm, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\t// Expected: no more messages, and timed out.\n\t\t\tbreak\n\t\t}\n\t\t// Drained a message.\n\t\tm.Ack()\n\t}\n\n\t// Verify that the batch size decayed.\n\tmu.Lock()\n\tif lastMaxMessages >= highWaterMarkBatchSize {\n\t\tt.Fatalf(\"wanted batch size to decay; high water mark was %d, now %d\", highWaterMarkBatchSize, lastMaxMessages)\n\t}\n\tmu.Unlock()\n}\n\n// TestRetryReceiveBatches verifies that batching and retries work without races\n// (see https://github.com/google/go-cloud/issues/2676).\nfunc TestRetryReceiveInBatchesDoesntRace(t *testing.T) {\n\tctx := context.Background()\n\tfs := &failSub{}\n\t// Allow multiple handlers and cap max batch size to ensure we get concurrency.\n\tsub := NewSubscription(fs, &batcher.Options{MaxHandlers: 10, MaxBatchSize: 2}, nil)\n\tdefer sub.Shutdown(ctx)\n\n\t// Do some receives to allow the number of batches to increase past 1.\n\tfor range 100 {\n\t\tm, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Receive: got %v, want nil\", err)\n\t\t}\n\t\tm.Ack()\n\t}\n\t// Tell the failSub to start failing.\n\tfs.mu.Lock()\n\tfs.fail = true\n\tfs.mu.Unlock()\n\n\t// This call to Receive should result in nRetryCalls+1 calls to ReceiveBatch for\n\t// each batch. In the issue noted above, this would cause a race.\n\tfor range 100 {\n\t\tm, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"Receive: got %v, want nil\", err)\n\t\t}\n\t\tm.Ack()\n\t}\n\t// Don't try to verify the exact number of calls, as it is unpredictable\n\t// based on the timing of the batching.\n}\n\n// failSub helps test retries for ReceiveBatch.\n//\n// Once start=true, ReceiveBatch will fail nRetryCalls times before succeeding.\ntype failSub struct {\n\tdriver.Subscription\n\tfail  bool\n\tempty bool\n\tcalls int\n\tmu    sync.Mutex\n}\n\nfunc (t *failSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.fail {\n\t\tt.calls++\n\t\tif t.calls <= nRetryCalls {\n\t\t\treturn nil, errRetry\n\t\t}\n\t}\n\tif t.empty {\n\t\tt.calls++\n\t\treturn nil, nil\n\t}\n\treturn []*driver.Message{{Body: []byte(\"\")}}, nil\n}\n\nfunc (*failSub) SendAcks(ctx context.Context, ackIDs []driver.AckID) error { return nil }\nfunc (*failSub) IsRetryable(err error) bool                                { return isRetryable(err) }\nfunc (*failSub) CanNack() bool                                             { return false }\nfunc (*failSub) Close() error                                              { return nil }\n\n// TODO(jba): add a test for retry of SendAcks.\n\nvar errDriver = errors.New(\"driver error\")\n\ntype erroringTopic struct {\n\tdriver.Topic\n}\n\nfunc (erroringTopic) SendBatch(context.Context, []*driver.Message) error { return errDriver }\nfunc (erroringTopic) IsRetryable(err error) bool                         { return isRetryable(err) }\nfunc (erroringTopic) ErrorCode(error) gcerrors.ErrorCode                 { return gcerrors.AlreadyExists }\nfunc (erroringTopic) Close() error                                       { return errDriver }\n\ntype erroringSubscription struct {\n\tdriver.Subscription\n}\n\nfunc (erroringSubscription) ReceiveBatch(context.Context, int) ([]*driver.Message, error) {\n\treturn nil, errDriver\n}\n\nfunc (erroringSubscription) SendAcks(context.Context, []driver.AckID) error { return errDriver }\nfunc (erroringSubscription) IsRetryable(err error) bool                     { return isRetryable(err) }\nfunc (erroringSubscription) ErrorCode(error) gcerrors.ErrorCode             { return gcerrors.AlreadyExists }\nfunc (erroringSubscription) CanNack() bool                                  { return false }\nfunc (erroringSubscription) Close() error                                   { return errDriver }\n\n// TestErrorsAreWrapped tests that all errors returned from the driver are\n// wrapped exactly once by the portable type.\nfunc TestErrorsAreWrapped(t *testing.T) {\n\tctx := context.Background()\n\n\tverify := func(err error) {\n\t\tt.Helper()\n\t\tif err == nil {\n\t\t\tt.Errorf(\"got nil error, wanted non-nil\")\n\t\t\treturn\n\t\t}\n\t\tif e, ok := err.(*gcerr.Error); !ok {\n\t\t\tt.Errorf(\"not wrapped: %v\", err)\n\t\t} else if got := e.Unwrap(); got != errDriver {\n\t\t\tt.Errorf(\"got %v for wrapped error, not errDriver\", got)\n\t\t}\n\t\tif s := err.Error(); !strings.HasPrefix(s, \"pubsub \") {\n\t\t\tt.Errorf(\"Error() for wrapped error doesn't start with 'pubsub': prefix: %s\", s)\n\t\t}\n\t}\n\n\ttopic := NewTopic(erroringTopic{}, nil)\n\tverify(topic.Send(ctx, &Message{}))\n\terr := topic.Shutdown(ctx)\n\tverify(err)\n\n\tsub := NewSubscription(erroringSubscription{}, nil, nil)\n\t_, err = sub.Receive(ctx)\n\tverify(err)\n\terr = sub.Shutdown(ctx)\n\tverify(err)\n}\n\n// TestOpenTelemetry tests that OpenTelemetry tracing is working correctly.\nfunc TestOpenTelemetry(t *testing.T) {\n\tctx := context.Background()\n\n\tte := oteltest.NewTestExporter(t, OpenTelemetryViews)\n\tdefer func() {\n\t\terr := te.Shutdown(ctx)\n\t\tif err != nil {\n\t\t\tt.Logf(\"Error shutting down test exporter: %v\", err)\n\t\t}\n\t}()\n\n\tds := NewDriverSub()\n\tdt := &driverTopic{\n\t\tsubs: []*driverSub{ds},\n\t}\n\ttopic := NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\tsub := NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tif err := topic.Send(ctx, &Message{Body: []byte(\"x\")}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := topic.Shutdown(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmsg, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmsg.Ack()\n\terr = sub.Shutdown(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t_, _ = sub.Receive(ctx)\n\n\tspans := te.GetSpans()\n\tmetrics := te.GetMetrics(ctx)\n\n\tdiff := oteltest.Diff(spans.Snapshots(), metrics, pkgName, \"gocloud.dev/pubsub\", []oteltest.Call{\n\t\t{Method: \"driver.Topic.SendBatch\", Code: gcerrors.OK},\n\t\t{Method: \"Topic.Send\", Code: gcerrors.OK},\n\t\t{Method: \"Topic.Shutdown\", Code: gcerrors.OK},\n\t\t{Method: \"driver.Subscription.ReceiveBatch\", Code: gcerrors.OK},\n\t\t{Method: \"Subscription.Receive\", Code: gcerrors.OK},\n\t\t{Method: \"driver.Subscription.SendAcks\", Code: gcerrors.OK},\n\t\t{Method: \"Subscription.Shutdown\", Code: gcerrors.OK},\n\t\t{Method: \"Subscription.Receive\", Code: gcerrors.FailedPrecondition},\n\t})\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n\nfunc TestURLMux(t *testing.T) {\n\tctx := context.Background()\n\n\tmux := new(URLMux)\n\tfake := &fakeOpener{}\n\tmux.RegisterTopic(\"foo\", fake)\n\tmux.RegisterTopic(\"err\", fake)\n\tmux.RegisterSubscription(\"foo\", fake)\n\tmux.RegisterSubscription(\"err\", fake)\n\n\tif diff := cmp.Diff(mux.TopicSchemes(), []string{\"err\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !mux.ValidTopicScheme(\"foo\") || !mux.ValidTopicScheme(\"err\") {\n\t\tt.Errorf(\"ValidTopicScheme didn't return true for valid scheme\")\n\t}\n\tif mux.ValidTopicScheme(\"foo2\") || mux.ValidTopicScheme(\"http\") {\n\t\tt.Errorf(\"ValidTopicScheme didn't return false for invalid scheme\")\n\t}\n\n\tif diff := cmp.Diff(mux.SubscriptionSchemes(), []string{\"err\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !mux.ValidSubscriptionScheme(\"foo\") || !mux.ValidSubscriptionScheme(\"err\") {\n\t\tt.Errorf(\"ValidSubscriptionScheme didn't return true for valid scheme\")\n\t}\n\tif mux.ValidSubscriptionScheme(\"foo2\") || mux.ValidSubscriptionScheme(\"http\") {\n\t\tt.Errorf(\"ValidSubscriptionScheme didn't return false for invalid scheme\")\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\turl     string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:    \"empty URL\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL\",\n\t\t\turl:     \":foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL no scheme\",\n\t\t\turl:     \"foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"unregistered scheme\",\n\t\t\turl:     \"bar://myps\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"func returns error\",\n\t\t\turl:     \"err://myps\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"no query options\",\n\t\t\turl:  \"foo://myps\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty query options\",\n\t\t\turl:  \"foo://myps?\",\n\t\t},\n\t\t{\n\t\t\tname: \"query options\",\n\t\t\turl:  \"foo://myps?aAa=bBb&cCc=dDd\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple query options\",\n\t\t\turl:  \"foo://myps?x=a&x=b&x=c\",\n\t\t},\n\t\t{\n\t\t\tname: \"fancy ps name\",\n\t\t\turl:  \"foo:///foo/bar/baz\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api schema prefix\",\n\t\t\turl:  \"pubsub+foo://foo\",\n\t\t},\n\t} {\n\t\tt.Run(\"topic: \"+tc.name, func(t *testing.T) {\n\t\t\t_, gotErr := mux.OpenTopic(ctx, tc.url)\n\t\t\tif (gotErr != nil) != tc.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error %v\", gotErr, tc.wantErr)\n\t\t\t}\n\t\t\tif gotErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t\t// Repeat with OpenTopicURL.\n\t\t\tparsed, err := url.Parse(tc.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t_, gotErr = mux.OpenTopicURL(ctx, parsed)\n\t\t\tif gotErr != nil {\n\t\t\t\tt.Fatalf(\"got err %v, want nil\", gotErr)\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t})\n\t\tt.Run(\"subscription: \"+tc.name, func(t *testing.T) {\n\t\t\t_, gotErr := mux.OpenSubscription(ctx, tc.url)\n\t\t\tif (gotErr != nil) != tc.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error %v\", gotErr, tc.wantErr)\n\t\t\t}\n\t\t\tif gotErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t\t// Repeat with OpenSubscriptionURL.\n\t\t\tparsed, err := url.Parse(tc.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t_, gotErr = mux.OpenSubscriptionURL(ctx, parsed)\n\t\t\tif gotErr != nil {\n\t\t\t\tt.Fatalf(\"got err %v, want nil\", gotErr)\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype fakeOpener struct {\n\tu *url.URL // last url passed to OpenTopicURL/OpenSubscriptionURL\n}\n\nfunc (o *fakeOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*Topic, error) {\n\tif u.Scheme == \"err\" {\n\t\treturn nil, errors.New(\"fail\")\n\t}\n\to.u = u\n\treturn nil, nil\n}\n\nfunc (o *fakeOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*Subscription, error) {\n\tif u.Scheme == \"err\" {\n\t\treturn nil, errors.New(\"fail\")\n\t}\n\to.u = u\n\treturn nil, nil\n}\n"
  },
  {
    "path": "pubsub/rabbitpubsub/amqp.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rabbitpubsub\n\n// Interfaces for the AMQP protocol, and adapters for the real amqp client.\n// Fake implementations of the interfaces are in fake_test.go\n\nimport (\n\t\"context\"\n\n\tamqp \"github.com/rabbitmq/amqp091-go\"\n)\n\n// Values we use for the amqp client.\n// See https://www.rabbitmq.com/amqp-0-9-1-reference.html.\nconst (\n\t// Many methods of the amqp client take a \"no-wait\" parameter, which\n\t// if true causes the client to return without waiting for a server\n\t// response. We always want to wait.\n\twait = false\n\n\t// If the message can't be enqueued, return it to the sender rather than silently\n\t// dropping it.\n\tmandatory = true\n\n\t// If there are no waiting consumers, enqueue the message instead of dropping it.\n\timmediate = false\n)\n\n// See https://pkg.go.dev/github.com/rabbitmq/amqp091-go#Connection for the documentation of these methods.\ntype amqpConnection interface {\n\tChannel() (amqpChannel, error)\n\tClose() error\n}\n\n// See https://pkg.go.dev/github.com/rabbitmq/amqp091-go#Channel for the documentation of these methods.\ntype amqpChannel interface {\n\tPublish(exchange, routingKey string, msg amqp.Publishing) error\n\tPublishWithContext(ctx context.Context, exchange, routingKey string, msg amqp.Publishing) error\n\tConsume(queue, consumer string) (<-chan amqp.Delivery, error)\n\tAck(tag uint64) error\n\tNack(tag uint64) error\n\tCancel(consumer string) error\n\tClose() error\n\tNotifyPublish(chan amqp.Confirmation) chan amqp.Confirmation\n\tNotifyReturn(chan amqp.Return) chan amqp.Return\n\tNotifyClose(chan *amqp.Error) chan *amqp.Error\n\tExchangeDeclare(string) error\n\tQueueDeclareAndBind(qname, ename string) error\n\tExchangeDelete(string) error\n\tQueueDelete(qname string) error\n\tQos(prefetchCount, prefetchSize int, global bool) error\n}\n\n// connection adapts an *amqp.Connection to the amqpConnection interface.\ntype connection struct {\n\tconn *amqp.Connection\n}\n\n// Channel creates a new channel. We always want the channel in confirm mode (where\n// confirmations are delivered for each publish), so we do that here as well.\nfunc (c *connection) Channel() (amqpChannel, error) {\n\tch, err := c.conn.Channel()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := ch.Confirm(wait); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &channel{ch}, nil\n}\n\nfunc (c *connection) Close() error {\n\treturn c.conn.Close()\n}\n\n// channel adapts an *amqp.Channel to the amqpChannel interface.\ntype channel struct {\n\tch *amqp.Channel\n}\n\nfunc (ch *channel) Publish(exchange, routingKey string, msg amqp.Publishing) error {\n\treturn ch.PublishWithContext(context.Background(), exchange, routingKey, msg)\n}\n\nfunc (ch *channel) PublishWithContext(ctx context.Context, exchange, routingKey string, msg amqp.Publishing) error {\n\treturn ch.ch.PublishWithContext(ctx, exchange, routingKey, mandatory, immediate, msg)\n}\n\nfunc (ch *channel) Consume(queue, consumer string) (<-chan amqp.Delivery, error) {\n\treturn ch.ch.Consume(queue, consumer,\n\t\tfalse, // autoAck\n\t\tfalse, // exclusive\n\t\tfalse, // noLocal\n\t\twait,\n\t\tnil) // args\n}\n\nfunc (ch *channel) Ack(tag uint64) error {\n\treturn ch.ch.Ack(tag, false) // multiple=false: acking only this ID\n}\n\nfunc (ch *channel) Nack(tag uint64) error {\n\treturn ch.ch.Nack(tag, false, true) // multiple=false: acking only this ID, requeue: true to redeliver\n}\n\nfunc (ch *channel) Confirm() error {\n\treturn ch.ch.Confirm(wait)\n}\n\nfunc (ch *channel) Cancel(consumer string) error {\n\treturn ch.ch.Cancel(consumer, wait)\n}\n\nfunc (ch *channel) Close() error {\n\treturn ch.ch.Close()\n}\n\nfunc (ch *channel) NotifyPublish(c chan amqp.Confirmation) chan amqp.Confirmation {\n\treturn ch.ch.NotifyPublish(c)\n}\n\nfunc (ch *channel) NotifyReturn(c chan amqp.Return) chan amqp.Return {\n\treturn ch.ch.NotifyReturn(c)\n}\n\nfunc (ch *channel) NotifyClose(c chan *amqp.Error) chan *amqp.Error {\n\treturn ch.ch.NotifyClose(c)\n}\n\nfunc (ch *channel) ExchangeDeclare(name string) error {\n\treturn ch.ch.ExchangeDeclare(name,\n\t\tamqp.ExchangeFanout, // kind\n\t\tfalse,               // durable\n\t\tfalse,               // delete when unused\n\t\tfalse,               // internal\n\t\twait,\n\t\tnil) // args\n}\n\n// QueueDeclareAndBind declares a queue and binds it to an exchange.\nfunc (ch *channel) QueueDeclareAndBind(queueName, exchangeName string) error {\n\tq, err := ch.ch.QueueDeclare(queueName,\n\t\tfalse, // durable\n\t\tfalse, // delete when unused\n\t\tfalse, // exclusive\n\t\twait,\n\t\tnil) // args\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn ch.ch.QueueBind(q.Name, q.Name, exchangeName, wait, nil)\n}\n\nfunc (ch *channel) ExchangeDelete(name string) error {\n\treturn ch.ch.ExchangeDelete(name, false, false)\n}\n\nfunc (ch *channel) QueueDelete(qname string) error {\n\t_, err := ch.ch.QueueDelete(qname, false, false, false)\n\treturn err\n}\n\nfunc (ch *channel) Qos(prefetchCount, prefetchSize int, global bool) error {\n\treturn ch.ch.Qos(prefetchCount, prefetchSize, global)\n}\n"
  },
  {
    "path": "pubsub/rabbitpubsub/doc.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package rabbitpubsub provides an pubsub implementation for RabbitMQ.\n// Use OpenTopic to construct a *pubsub.Topic, and/or OpenSubscription\n// to construct a *pubsub.Subscription.\n//\n// RabbitMQ follows the AMQP specification, which uses different terminology\n// than the Go CDK Pub/Sub.\n//\n// A Pub/Sub topic is an AMQP exchange. The exchange kind should be \"fanout\" to match\n// the Pub/Sub model, although publishing will work with any kind of exchange.\n//\n// A Pub/Sub subscription is an AMQP queue. The queue should be bound to the exchange\n// that is the topic of the subscription. See the package example for details.\n//\n// # URLs\n//\n// For pubsub.OpenTopic and pubsub.OpenSubscription, rabbitpubsub registers\n// for the scheme \"rabbit\".\n// The default URL opener will connect to a default server based on the\n// environment variable \"RABBIT_SERVER_URL\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # Message Delivery Semantics\n//\n// RabbitMQ supports at-least-once semantics; applications must\n// call Message.Ack after processing a message, or it will be redelivered.\n// See https://godoc.org/gocloud.dev/pubsub#hdr-At_most_once_and_At_least_once_Delivery\n// for more background.\n//\n// # As\n//\n// rabbitpubsub exposes the following types for As:\n//   - Topic: *amqp.Connection\n//   - Subscription: *amqp.Connection\n//   - Message.BeforeSend: *amqp.Publishing\n//   - Message.AfterSend: None\n//   - Message: amqp.Delivery\n//   - Error: *amqp.Error and MultiError\npackage rabbitpubsub // import \"gocloud.dev/pubsub/rabbitpubsub\"\n"
  },
  {
    "path": "pubsub/rabbitpubsub/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rabbitpubsub_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\tamqp \"github.com/rabbitmq/amqp091-go\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/rabbitpubsub\"\n)\n\nfunc ExampleOpenTopic() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\trabbitConn, err := amqp.Dial(\"amqp://guest:guest@localhost:5672/\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer rabbitConn.Close()\n\ttopic := rabbitpubsub.OpenTopic(rabbitConn, \"myexchange\", nil)\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc ExampleOpenSubscription() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\trabbitConn, err := amqp.Dial(\"amqp://guest:guest@localhost:5672/\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer rabbitConn.Close()\n\tsubscription := rabbitpubsub.OpenSubscription(rabbitConn, \"myqueue\", nil)\n\tdefer subscription.Shutdown(ctx)\n}\n\nfunc Example_openTopicFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/rabbitpubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenTopic creates a *pubsub.Topic from a URL.\n\t// This URL will Dial the RabbitMQ server at the URL in the environment\n\t// variable RABBIT_SERVER_URL and open the exchange \"myexchange\".\n\ttopic, err := pubsub.OpenTopic(ctx, \"rabbit://myexchange\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer topic.Shutdown(ctx)\n}\n\nfunc Example_openSubscriptionFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/pubsub/rabbitpubsub\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// pubsub.OpenSubscription creates a *pubsub.Subscription from a URL.\n\t// This URL will Dial the RabbitMQ server at the URL in the environment\n\t// variable RABBIT_SERVER_URL and open the queue \"myqueue\".\n\tsubscription, err := pubsub.OpenSubscription(ctx, \"rabbit://myqueue\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer subscription.Shutdown(ctx)\n}\n"
  },
  {
    "path": "pubsub/rabbitpubsub/fake_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rabbitpubsub\n\n// This file implements a fake for the parts of the AMQP protocol used by our RabbitMQ\n// implementation.\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\tamqp \"github.com/rabbitmq/amqp091-go\"\n)\n\n// fakeConnection implements the amqpConnection interface.\n// It also doubles as the state of the fake server.\ntype fakeConnection struct {\n\tmu        sync.Mutex\n\tclosed    chan struct{}\n\texchanges map[string]*exchange // exchange names are server-scoped\n\tqueues    map[string]*queue    // queue names are server-scoped\n}\n\n// fakeChannel implements the amqpChannel interface.\ntype fakeChannel struct {\n\tconn *fakeConnection\n\t// The following fields are protected by conn.mu.\n\tdeliveryTag     uint64 // counter; used to distinguish published messages\n\tpubChans        []chan<- amqp.Confirmation\n\treturnChans     []chan<- amqp.Return\n\tcloseChans      []chan<- *amqp.Error\n\tconsumerCancels map[string]func() // from consumer name to cancel func for the context\n\n\tcloseMu sync.Mutex\n\tclosed  chan struct{}\n}\n\n// An exchange is a collection of queues.\n// Every queue is also in the fakeConnection.queues map, so they can be looked up\n// by name. An exchange needs a list of its own queues (the ones bound to it) so\n// it can deliver incoming messages to them.\ntype exchange struct {\n\tqueues []*queue\n}\n\n// A queue holds a set of messages to be delivered.\ntype queue struct {\n\tmessages   []amqp.Delivery\n\tpendingAck map[uint64]amqp.Delivery\n}\n\nfunc newFakeConnection() *fakeConnection {\n\treturn &fakeConnection{\n\t\texchanges: map[string]*exchange{},\n\t\tqueues:    map[string]*queue{},\n\t\tclosed:    make(chan struct{}),\n\t}\n}\n\n// Channel creates a new AMQP fake channel.\nfunc (c *fakeConnection) Channel() (amqpChannel, error) {\n\tif chanIsClosed(c.closed) {\n\t\treturn nil, amqp.ErrClosed\n\t}\n\treturn &fakeChannel{\n\t\tconn:            c,\n\t\tconsumerCancels: map[string]func(){},\n\t\tclosed:          make(chan struct{}),\n\t}, nil\n}\n\nfunc (c *fakeConnection) Close() error {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tcloseChan(c.closed)\n\treturn nil\n}\n\n// getExchange returns the named exchange, or error if it doesn't exist.\n// It closes the channel on error.\n// It must be called with the lock held.\nfunc (ch *fakeChannel) getExchange(name string) (*exchange, error) {\n\tif ex := ch.conn.exchanges[name]; ex != nil {\n\t\treturn ex, nil\n\t}\n\treturn nil, ch.errorf(amqp.NotFound, \"exchange %q not found\", name)\n}\n\n// errorf returns an amqp.Error and closes the channel. (In the AMQP protocol, any channel error\n// closes the channel and makes it unusable.)\n// It must be called with ch.conn.mu held.\nfunc (ch *fakeChannel) errorf(code int, reasonFormat string, args ...any) error {\n\t_ = ch.Close()\n\treturn &amqp.Error{Code: code, Reason: fmt.Sprintf(reasonFormat, args...)}\n}\n\n// Report whether the channel or its connection is closed. Does not require the lock.\nfunc (ch *fakeChannel) isClosed() bool {\n\treturn chanIsClosed(ch.closed) || chanIsClosed(ch.conn.closed)\n}\n\n// ExchangeDeclare creates a new exchange with the given name if one doesn't already\n// exist.\nfunc (ch *fakeChannel) ExchangeDeclare(name string) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tif _, ok := ch.conn.exchanges[name]; !ok {\n\t\tch.conn.exchanges[name] = &exchange{}\n\t}\n\treturn nil\n}\n\n// QueueDeclareAndBind binds a queue to the given exchange.\n// The exchange must exist.\n// If the queue doesn't exist, it's created.\nfunc (ch *fakeChannel) QueueDeclareAndBind(queueName, exchangeName string) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tex, err := ch.getExchange(exchangeName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, ok := ch.conn.queues[queueName]; ok {\n\t\treturn nil\n\t}\n\tq := &queue{pendingAck: map[uint64]amqp.Delivery{}}\n\tch.conn.queues[queueName] = q\n\tex.queues = append(ex.queues, q)\n\treturn nil\n}\n\nfunc (ch *fakeChannel) Publish(exchangeName, routingKey string, pub amqp.Publishing) error {\n\treturn ch.PublishWithContext(context.Background(), exchangeName, routingKey, pub)\n}\n\nfunc (ch *fakeChannel) PublishWithContext(ctx context.Context,\n\texchangeName, routingKey string,\n\tpub amqp.Publishing,\n) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tex, err := ch.getExchange(exchangeName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(ex.queues) == 0 {\n\t\t// The message is unroutable. Send a Return to all channels registered with\n\t\t// NotifyReturn.\n\t\tret := amqp.Return{\n\t\t\tExchange:   exchangeName,\n\t\t\tReplyCode:  amqp.NoRoute,\n\t\t\tReplyText:  \"NO_ROUTE: no queues bound to exchange\",\n\t\t\tRoutingKey: routingKey,\n\t\t}\n\t\tfor _, c := range ch.returnChans {\n\t\t\tselect {\n\t\t\tcase c <- ret:\n\t\t\tcase <-ch.closed:\n\t\t\t\treturn amqp.ErrClosed\n\t\t\tcase <-ch.conn.closed:\n\t\t\t\treturn amqp.ErrClosed\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Each published message in the channel gets a new delivery tag, starting at 1.\n\t\tch.deliveryTag++\n\t\t// Convert the Publishing into a Delivery.\n\t\tdel := amqp.Delivery{\n\t\t\tHeaders:     pub.Headers,\n\t\t\tBody:        pub.Body,\n\t\t\tDeliveryTag: ch.deliveryTag,\n\t\t\t// We don't care about the other fields.\n\t\t}\n\t\t// All exchanges are \"fanout\" exchanges, so the message is sent to all queues.\n\t\tfor _, q := range ex.queues {\n\t\t\tq.messages = append(q.messages, del)\n\t\t}\n\t}\n\t// Every Go channel registered with NotifyPublish gets a confirmation message.\n\t// Ack is true even if the message was unroutable.\n\tfor _, c := range ch.pubChans {\n\t\tselect {\n\t\tcase c <- amqp.Confirmation{DeliveryTag: ch.deliveryTag, Ack: true}:\n\t\tcase <-ch.closed:\n\t\t\treturn amqp.ErrClosed\n\t\tcase <-ch.conn.closed:\n\t\t\treturn amqp.ErrClosed\n\t\t}\n\t}\n\treturn nil\n}\n\n// Consume starts a consumer that reads from the given queue.\n// The consumerName can be used in a Cancel call to stop the consumer.\nfunc (ch *fakeChannel) Consume(queueName, consumerName string) (<-chan amqp.Delivery, error) {\n\tif ch.isClosed() {\n\t\treturn nil, amqp.ErrClosed\n\t}\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tq, ok := ch.conn.queues[queueName]\n\tif !ok {\n\t\treturn nil, ch.errorf(amqp.NotFound, \"queue %q not found\", queueName)\n\t}\n\tif _, ok := ch.consumerCancels[consumerName]; ok {\n\t\treturn nil, ch.errorf(amqp.PreconditionFailed, \"consumer %q already exists\", consumerName)\n\t}\n\tctx, cancel := context.WithCancel(context.Background())\n\tch.consumerCancels[consumerName] = cancel // used by fakeChannel.Cancel\n\tdelc := make(chan amqp.Delivery)\n\tgo func() {\n\t\t// For this simple fake, just deliver one message every once in a while if\n\t\t// any are available, until the consumer is canceled.\n\t\tfor {\n\t\t\tm, ok := ch.takeOneMessage(q)\n\t\t\tif ok {\n\t\t\t\tselect {\n\t\t\t\tcase delc <- m:\n\t\t\t\tcase <-ctx.Done():\n\t\t\t\t\t// ignore errors here and below\n\t\t\t\t\treturn\n\t\t\t\tcase <-ch.closed:\n\t\t\t\t\treturn\n\t\t\t\tcase <-ch.conn.closed:\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\tselect {\n\t\t\tcase <-time.After(10 * time.Millisecond):\n\t\t\tcase <-ctx.Done():\n\t\t\t\t// ignore error\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\treturn delc, nil\n}\n\n// Take a message from q, if one is available. We just remove\n// the message from the queue permanently. In a more sophisticated implementation\n// we'd mark it as outstanding and keep it around until it got acked, but we don't\n// need acks for this fake.\nfunc (ch *fakeChannel) takeOneMessage(q *queue) (amqp.Delivery, bool) {\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\tif len(q.messages) == 0 {\n\t\treturn amqp.Delivery{}, false\n\t}\n\tm := q.messages[0]\n\tq.messages = q.messages[1:]\n\tq.pendingAck[m.DeliveryTag] = m\n\treturn m, true\n}\n\n// Ack removes the message from q.pendingAck.\nfunc (ch *fakeChannel) Ack(tag uint64) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\tfor _, q := range ch.conn.queues {\n\t\tif _, ok := q.pendingAck[tag]; ok {\n\t\t\tdelete(q.pendingAck, tag)\n\t\t\treturn nil\n\t\t}\n\t}\n\t// No error if we couldn't find it to ack it.\n\treturn nil\n}\n\n// Nack moves the message from q.pendingAck back to q.messages\n// to be redelivered.\nfunc (ch *fakeChannel) Nack(tag uint64) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\tfor _, q := range ch.conn.queues {\n\t\tif m, ok := q.pendingAck[tag]; ok {\n\t\t\tdelete(q.pendingAck, tag)\n\t\t\tq.messages = append(q.messages, m)\n\t\t\treturn nil\n\t\t}\n\t}\n\t// No error if we couldn't find it to nack it.\n\treturn nil\n}\n\n// Cancel stops the consumer's goroutine.\nfunc (ch *fakeChannel) Cancel(consumerName string) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tcancel, ok := ch.consumerCancels[consumerName]\n\tif !ok {\n\t\treturn ch.errorf(amqp.NotFound, \"consumer %q not found\", consumerName)\n\t}\n\tcancel()\n\tdelete(ch.consumerCancels, consumerName)\n\treturn nil\n}\n\n// NotifyPublish remembers its argument channel so it can be notified for every\n// published message. It returns its argument.\nfunc (ch *fakeChannel) NotifyPublish(c chan amqp.Confirmation) chan amqp.Confirmation {\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\tch.pubChans = append(ch.pubChans, c)\n\treturn c\n}\n\n// NotifyReturn remembers its argument channel so it can be notified for every\n// published message that's returned due to being unroutable.\nfunc (ch *fakeChannel) NotifyReturn(c chan amqp.Return) chan amqp.Return {\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\tch.returnChans = append(ch.returnChans, c)\n\treturn c\n}\n\n// NotifyClose remembers its argument channel so it can be notified when\n// the channel is closed.\nfunc (ch *fakeChannel) NotifyClose(c chan *amqp.Error) chan *amqp.Error {\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\tch.closeChans = append(ch.closeChans, c)\n\treturn c\n}\n\n// Close marks the fakeChannel as closed and sends an error to all channels\n// registered with NotifyClose.\nfunc (ch *fakeChannel) Close() error {\n\tif chanIsClosed(ch.conn.closed) {\n\t\treturn amqp.ErrClosed\n\t}\n\tch.closeMu.Lock()\n\tcloseChans := ch.closeChans\n\tcloseChan(ch.closed)\n\tch.closeMu.Unlock()\n\tfor _, c := range closeChans {\n\t\t// Don't block on notifying.\n\t\tselect {\n\t\tcase c <- amqp.ErrClosed:\n\t\tdefault:\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (ch *fakeChannel) ExchangeDelete(name string) error {\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tdelete(ch.conn.exchanges, name)\n\treturn nil\n}\n\nfunc (ch *fakeChannel) QueueDelete(name string) error {\n\tch.conn.mu.Lock()\n\tdefer ch.conn.mu.Unlock()\n\n\tdelete(ch.conn.queues, name)\n\treturn nil\n}\n\nfunc (ch *fakeChannel) Qos(_, _ int, _ bool) error {\n\tif ch.isClosed() {\n\t\treturn amqp.ErrClosed\n\t}\n\n\treturn nil\n}\n\n// Assumes nothing is ever written to the channel.\nfunc chanIsClosed(ch chan struct{}) bool {\n\tselect {\n\tcase <-ch:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Avoid panic when closing a closed channel.\n// Must be called with the lock held.\nfunc closeChan(ch chan struct{}) {\n\tselect {\n\tcase <-ch:\n\tdefault:\n\t\tclose(ch)\n\t}\n}\n"
  },
  {
    "path": "pubsub/rabbitpubsub/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/pubsub/rabbitpubsub\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/rabbitmq/amqp091-go v1.10.0\n\tgocloud.dev v0.45.0\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/google/go-cmp v0.7.0 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/google/wire v0.7.0 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "pubsub/rabbitpubsub/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/pubsub v1.50.1 h1:fzbXpPyJnSGvWXF1jabhQeXyxdbCIkXTpjXHy7xviBM=\ncloud.google.com/go/pubsub v1.50.1/go.mod h1:6YVJv3MzWJUVdvQXG081sFvS0dWQOdnV+oTo++q/xFk=\ncloud.google.com/go/pubsub/v2 v2.4.0 h1:oMKNiBQpXImRWnHYla9uSU66ZzByZwBSCJOEs/pTKVg=\ncloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2ig3zqsGUx8=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw=\ngithub.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "pubsub/rabbitpubsub/localrabbit.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts a local RabbitMQ instance via Docker.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\necho \"Starting RabbitMQ...\"\ndocker rm -f rabbit &> /dev/null || :\ndocker run -d --name rabbit -p 5672:5672 rabbitmq:3.10.17 &> /dev/null\necho Sleeping to give RabbitMQ some time to come up....\nsleep 60\necho \"...done. Run \\\"docker rm -f rabbit\\\" to clean up the container.\"\necho\n"
  },
  {
    "path": "pubsub/rabbitpubsub/rabbit.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rabbitpubsub\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\tamqp \"github.com/rabbitmq/amqp091-go\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\nfunc init() {\n\to := new(defaultDialer)\n\tpubsub.DefaultURLMux().RegisterTopic(Scheme, o)\n\tpubsub.DefaultURLMux().RegisterSubscription(Scheme, o)\n}\n\n// defaultDialer dials a default Rabbit server based on the environment\n// variable \"RABBIT_SERVER_URL\".\ntype defaultDialer struct {\n\tmu     sync.Mutex\n\tconn   *amqp.Connection\n\topener *URLOpener\n}\n\nfunc (o *defaultDialer) defaultConn(ctx context.Context) (*URLOpener, error) {\n\to.mu.Lock()\n\tdefer o.mu.Unlock()\n\n\t// Re-use the connection if possible.\n\tif o.opener != nil && o.conn != nil && !o.conn.IsClosed() {\n\t\treturn o.opener, nil\n\t}\n\n\t// First time through, or last time resulted in an error, or connection\n\t// was closed. Initialize the connection.\n\tserverURL := os.Getenv(\"RABBIT_SERVER_URL\")\n\tif serverURL == \"\" {\n\t\treturn nil, errors.New(\"RABBIT_SERVER_URL environment variable not set\")\n\t}\n\tconn, err := amqp.Dial(serverURL)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to dial RABBIT_SERVER_URL %q: %w\", serverURL, err)\n\t}\n\to.conn = conn\n\to.opener = &URLOpener{Connection: conn}\n\treturn o.opener, nil\n}\n\nfunc (o *defaultDialer) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topener, err := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open topic %v: failed to open default connection: %w\", u, err)\n\t}\n\treturn opener.OpenTopicURL(ctx, u)\n}\n\nfunc (o *defaultDialer) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topener, err := o.defaultConn(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open subscription %v: failed to open default connection: %w\", u, err)\n\t}\n\treturn opener.OpenSubscriptionURL(ctx, u)\n}\n\n// Scheme is the URL scheme rabbitpubsub registers its URLOpeners under on pubsub.DefaultMux.\nconst Scheme = \"rabbit\"\n\n// URLOpener opens RabbitMQ URLs like \"rabbit://myexchange\" for\n// topics or \"rabbit://myqueue\" for subscriptions.\n//\n// For topics, the URL's host+path is used as the exchange name.\n//\n// For subscriptions, the URL's host+path is used as the queue name.\n//\n// An optional query string can be used to set the Qos consumer prefetch on subscriptions\n// like \"rabbit://myqueue?prefetch_count=1000\" to set the consumer prefetch count to 1000\n// see also https://www.rabbitmq.com/docs/consumer-prefetch\ntype URLOpener struct {\n\t// Connection to use for communication with the server.\n\tConnection *amqp.Connection\n\n\t// TopicOptions specifies the options to pass to OpenTopic.\n\tTopicOptions TopicOptions\n\t// SubscriptionOptions specifies the options to pass to OpenSubscription.\n\tSubscriptionOptions SubscriptionOptions\n}\n\n// OpenTopicURL opens a pubsub.Topic based on u.\nfunc (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) {\n\topts := o.TopicOptions\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"key_name\":\n\t\t\tif len(value) != 1 || len(value[0]) == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t\t\t}\n\n\t\t\topts.KeyName = value[0]\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open topic %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\n\texchangeName := path.Join(u.Host, u.Path)\n\treturn OpenTopic(o.Connection, exchangeName, &opts), nil\n}\n\n// OpenSubscriptionURL opens a pubsub.Subscription based on u.\nfunc (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) {\n\topts := o.SubscriptionOptions\n\tfor param, value := range u.Query() {\n\t\tswitch param {\n\t\tcase \"prefetch_count\":\n\t\t\tif len(value) != 1 || len(value[0]) == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t\t\t}\n\n\t\t\tprefetchCount, err := strconv.Atoi(value[0])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q: %w\", u, param, err)\n\t\t\t}\n\n\t\t\topts.PrefetchCount = &prefetchCount\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open subscription %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\n\tqueueName := path.Join(u.Host, u.Path)\n\treturn OpenSubscription(o.Connection, queueName, &opts), nil\n}\n\ntype topic struct {\n\texchange string // the AMQP exchange\n\tconn     amqpConnection\n\topts     *TopicOptions\n\n\tmu     sync.Mutex\n\tch     amqpChannel              // AMQP channel used for all communication.\n\tpubc   <-chan amqp.Confirmation // Go channel for server acks of publishes\n\tretc   <-chan amqp.Return       // Go channel for \"returned\" undeliverable messages\n\tclosec <-chan *amqp.Error       // Go channel for AMQP channel close notifications\n}\n\n// TopicOptions sets options for constructing a *pubsub.Topic backed by\n// RabbitMQ.\ntype TopicOptions struct {\n\t// KeyName optionally sets the Message.Metadata key to use as the optional\n\t// RabbitMQ message key. If set, and if a matching Message.Metadata key is found,\n\t// the value for that key will be used as the routing key when sending to\n\t// RabbitMQ, instead of being added to the message headers.\n\tKeyName string\n}\n\n// SubscriptionOptions sets options for constructing a *pubsub.Subscription\n// backed by RabbitMQ.\ntype SubscriptionOptions struct {\n\t// KeyName optionally sets the Message.Metadata key in which to store the\n\t// RabbitMQ message key. If set, and if the RabbitMQ message key is non-empty,\n\t// the key value will be stored in Message.Metadata under KeyName.\n\tKeyName string\n\n\t// Qos property prefetch count. Optional.\n\tPrefetchCount *int\n}\n\n// OpenTopic returns a *pubsub.Topic corresponding to the named exchange.\n// See the package documentation for an example.\n//\n// The exchange should already exist (for instance, by using\n// amqp.Channel.ExchangeDeclare), although this won't be checked until the first call\n// to SendBatch. For the Go CDK Pub/Sub model to make sense, the exchange should\n// be a fanout exchange, although nothing in this package enforces that.\n//\n// OpenTopic uses the supplied amqp.Connection for all communication. It is the\n// caller's responsibility to establish this connection before calling OpenTopic, and\n// to close it when Close has been called on all Topics opened with it.\n//\n// The documentation of the amqp package recommends using separate connections for\n// publishing and subscribing.\nfunc OpenTopic(conn *amqp.Connection, name string, opts *TopicOptions) *pubsub.Topic {\n\treturn pubsub.NewTopic(newTopic(&connection{conn}, name, opts), nil)\n}\n\nfunc newTopic(conn amqpConnection, name string, opts *TopicOptions) *topic {\n\tif opts == nil {\n\t\topts = &TopicOptions{}\n\t}\n\n\treturn &topic{\n\t\tconn:     conn,\n\t\texchange: name,\n\t\topts:     opts,\n\t}\n}\n\n// establishChannel creates an AMQP channel if necessary. According to the amqp\n// package docs, once an error is returned from the channel, it must be discarded and\n// a new one created.\n//\n// Must be called with t.mu held.\nfunc (t *topic) establishChannel(ctx context.Context) error {\n\tif t.ch != nil { // We already have a channel.\n\t\tselect {\n\t\t// If it was closed, open a new one.\n\t\t// (Ignore the error, if any.)\n\t\tcase <-t.closec:\n\n\t\t// If it isn't closed, nothing to do.\n\t\tdefault:\n\t\t\treturn nil\n\t\t}\n\t}\n\tvar ch amqpChannel\n\terr := runWithContext(ctx, func() error {\n\t\t// Create a new channel in confirm mode.\n\t\tvar err error\n\t\tch, err = t.conn.Channel()\n\t\treturn err\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tt.ch = ch\n\t// Get Go channels which will hold acks and returns from the server. The server\n\t// will send an ack for each published message to confirm that it was received.\n\t// It will return undeliverable messages.\n\t// All the Notify methods return their arg.\n\tt.pubc = ch.NotifyPublish(make(chan amqp.Confirmation))\n\tt.retc = ch.NotifyReturn(make(chan amqp.Return))\n\tt.closec = ch.NotifyClose(make(chan *amqp.Error, 1)) // closec will get at most one element\n\treturn nil\n}\n\n// Run f while checking to see if ctx is done.\n// Return the error from f if it completes, or ctx.Err() if ctx is done.\nfunc runWithContext(ctx context.Context, f func() error) error {\n\tc := make(chan error, 1) // buffer so the goroutine can finish even if ctx is done\n\tgo func() { c <- f() }()\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn ctx.Err()\n\tcase err := <-c:\n\t\treturn err\n\t}\n}\n\n// SendBatch implements driver.SendBatch.\nfunc (t *topic) SendBatch(ctx context.Context, ms []*driver.Message) error {\n\t// It is simplest to allow only one SendBatch at a time. Allowing concurrent\n\t// calls to SendBatch would complicate the logic of receiving publish\n\t// confirmations and returns. We can go that route if performance warrants it.\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\n\tif err := t.establishChannel(ctx); err != nil {\n\t\treturn err\n\t}\n\n\t// Receive from Go channels concurrently or we will deadlock with the Publish\n\t// RPC. (The amqp package docs recommend setting the capacity of the Go channel\n\t// to the number of messages to be published, but we can't do that because we\n\t// want to reuse the channel for all calls to SendBatch--it takes two RPCs to set\n\t// up.)\n\terrc := make(chan error, 1)\n\tcctx, cancel := context.WithCancel(ctx)\n\tdefer cancel()\n\tch := t.ch // Avoid touching t.ch while goroutine is running.\n\tgo func() {\n\t\t// This goroutine runs with t.mu held because its lifetime is within the\n\t\t// lifetime of the t.mu.Lock call at the start of SendBatch.\n\t\terrc <- t.receiveFromPublishChannels(cctx, len(ms))\n\t}()\n\n\tvar perr error\n\tfor _, m := range ms {\n\t\troutingKey, pub := toRoutingKeyAndAMQPPublishing(m, t.opts)\n\t\tif m.BeforeSend != nil {\n\t\t\tasFunc := func(i any) bool {\n\t\t\t\tif p, ok := i.(**amqp.Publishing); ok {\n\t\t\t\t\t*p = &pub\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif err := m.BeforeSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif perr = ch.Publish(t.exchange, routingKey, pub); perr != nil {\n\t\t\tcancel()\n\t\t\tbreak\n\t\t}\n\t\tif m.AfterSend != nil {\n\t\t\tasFunc := func(i any) bool { return false }\n\t\t\tif err := m.AfterSend(asFunc); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\t// Wait for the goroutine to finish.\n\terr := <-errc\n\t// If we got an error from Publish, prefer that.\n\tif perr != nil {\n\t\t// Set t.ch to nil because an AMQP channel is broken after error.\n\t\t// Do this here, after the goroutine has finished, rather than in the Publish loop\n\t\t// above, to avoid a race condition.\n\t\tt.ch = nil\n\t\terr = perr\n\t}\n\t// If there is only one error, return it rather than a MultiError. That\n\t// will work better with ErrorCode and ErrorAs.\n\tvar merr MultiError\n\tif errors.As(err, &merr) && len(merr) == 1 {\n\t\treturn merr[0]\n\t}\n\treturn err\n}\n\n// Read from the channels established with NotifyPublish and NotifyReturn.\n// Must be called with t.mu held.\nfunc (t *topic) receiveFromPublishChannels(ctx context.Context, nMessages int) error {\n\t// Consume all the acknowledgments for the messages we are publishing, and also\n\t// get returned messages. The server will send exactly one ack for each published\n\t// message (successful or not), and one return for each undeliverable message.\n\t// Since SendBatch (the only caller of this method) holds the lock, we expect\n\t// exactly as many acks as messages.\n\tvar merr MultiError\n\tnAcks := 0\n\tfor nAcks < nMessages {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\tif t.ch != nil {\n\t\t\t\t// Channel will be in a weird state (not all publish acks consumed, perhaps)\n\t\t\t\t// so re-create it next time.\n\t\t\t\tt.ch.Close()\n\t\t\t\tt.ch = nil\n\t\t\t}\n\t\t\treturn ctx.Err()\n\n\t\tcase ret, ok := <-t.retc:\n\t\t\tif !ok {\n\t\t\t\t// Channel closed. Handled in the pubc case below. But set\n\t\t\t\t// the channel to nil to prevent it from being selected again.\n\t\t\t\tt.retc = nil\n\t\t\t} else {\n\t\t\t\t// The message was returned from the server because it is unroutable.\n\t\t\t\t// Record the error and continue so we drain all\n\t\t\t\t// items from pubc. We don't need to re-establish the channel on this\n\t\t\t\t// error.\n\t\t\t\tmerr = append(merr, fmt.Errorf(\"rabbitpubsub: message returned from %s: %s (code %d)\",\n\t\t\t\t\tret.Exchange, ret.ReplyText, ret.ReplyCode))\n\t\t\t}\n\n\t\tcase conf, ok := <-t.pubc:\n\t\t\tif !ok {\n\t\t\t\t// t.pubc was closed unexpectedly.\n\t\t\t\tt.ch = nil // re-create the channel on next use\n\t\t\t\tif merr != nil {\n\t\t\t\t\treturn merr\n\t\t\t\t}\n\t\t\t\t// t.closec must be closed too. See if it has an error.\n\t\t\t\tif err := closeErr(t.closec); err != nil {\n\t\t\t\t\tmerr = append(merr, err)\n\t\t\t\t\treturn merr\n\t\t\t\t}\n\t\t\t\t// We shouldn't be here, but if we are, we still want to return an\n\t\t\t\t// error.\n\t\t\t\tmerr = append(merr, errors.New(\"rabbitpubsub: publish listener closed unexpectedly\"))\n\t\t\t\treturn merr\n\t\t\t}\n\t\t\tnAcks++\n\t\t\tif !conf.Ack {\n\t\t\t\tmerr = append(merr, errors.New(\"rabbitpubsub: ack failed on publish\"))\n\t\t\t}\n\t\t}\n\t}\n\tif merr != nil {\n\t\treturn merr\n\t}\n\t// Returning a nil merr would mean the returned error interface value is non-nil, so return nil explicitly.\n\treturn nil\n}\n\n// A MultiError is an error that contains multiple errors.\ntype MultiError []error\n\nfunc (m MultiError) Error() string {\n\tvar s []string\n\tfor _, e := range m {\n\t\ts = append(s, e.Error())\n\t}\n\treturn strings.Join(s, \"; \")\n}\n\n// Return the error from a Go channel monitoring the closing of an AMQP channel.\n// closec must have been registered via Channel.NotifyClose.\n// When closeErr is called, we expect closec to be closed. If it isn't, we also\n// consider that an error.\nfunc closeErr(closec <-chan *amqp.Error) error {\n\tselect {\n\tcase aerr := <-closec:\n\t\t// This nil check is necessary. aerr is of type *amqp.Error. If we\n\t\t// returned it directly (effectively assigning it to a variable of\n\t\t// type error), then the return value would not be a nil interface\n\t\t// value even if aerr was a nil pointer, and that would break tests\n\t\t// like \"if err == nil ...\".\n\t\tif aerr == nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn aerr\n\tdefault:\n\t\treturn errors.New(\"rabbitpubsub: NotifyClose Go channel is unexpectedly open\")\n\t}\n}\n\n// toRoutingKeyAndAMQPPublishing converts a driver.Message to a pair routingKey + amqp.Publishing.\nfunc toRoutingKeyAndAMQPPublishing(m *driver.Message, opts *TopicOptions) (routingKey string, msg amqp.Publishing) {\n\th := amqp.Table{}\n\tfor k, v := range m.Metadata {\n\t\tif opts.KeyName == k {\n\t\t\troutingKey = v\n\t\t} else {\n\t\t\th[k] = v\n\t\t}\n\t}\n\n\tmsg = amqp.Publishing{\n\t\tHeaders: h,\n\t\tBody:    m.Body,\n\t}\n\n\treturn routingKey, msg\n}\n\n// IsRetryable implements driver.Topic.IsRetryable.\nfunc (*topic) IsRetryable(err error) bool {\n\treturn isRetryable(err)\n}\n\nfunc (*topic) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\nvar errorCodes = map[int]gcerrors.ErrorCode{\n\tamqp.NotFound:           gcerrors.NotFound,\n\tamqp.PreconditionFailed: gcerrors.FailedPrecondition,\n\t// These next indicate a bug in our driver, not the user's code.\n\tamqp.SyntaxError:    gcerrors.Internal,\n\tamqp.CommandInvalid: gcerrors.Internal,\n\tamqp.InternalError:  gcerrors.Internal,\n\tamqp.NotImplemented: gcerrors.Unimplemented,\n\tamqp.ChannelError:   gcerrors.FailedPrecondition, // typically channel closed\n}\n\nfunc errorCode(err error) gcerrors.ErrorCode {\n\tvar aerr *amqp.Error\n\tif !errors.As(err, &aerr) {\n\t\treturn gcerrors.Unknown\n\t}\n\tif ec, ok := errorCodes[aerr.Code]; ok {\n\t\treturn ec\n\t}\n\treturn gcerrors.Unknown\n}\n\nfunc isRetryable(err error) bool {\n\tvar aerr *amqp.Error\n\tif !errors.As(err, &aerr) {\n\t\treturn false\n\t}\n\t// amqp.Error has a Recover field which sounds like it should mean \"retryable\".\n\t// But it actually means \"can be recovered by retrying later or with different\n\t// parameters,\" which is not what we want. The error codes for which Recover is\n\t// true, defined in the isSoftExceptionCode function of\n\t// https://github.com/rabbitmq/amqp091-go/blob/main/spec091.go, including things\n\t// like NotFound and AccessRefused, which require outside action.\n\t//\n\t// The following are the codes which might be resolved by retry without external\n\t// action, according to the AMQP 0.91 spec\n\t// (https://www.rabbitmq.com/amqp-0-9-1-reference.html#constants). The quotations\n\t// are from that page.\n\tswitch aerr.Code {\n\tcase amqp.ContentTooLarge:\n\t\t// \"The client attempted to transfer content larger than the server could\n\t\t// accept at the present time. The client may retry at a later time.\"\n\t\treturn true\n\n\tcase amqp.ConnectionForced:\n\t\t// \"An operator intervened to close the connection for some reason. The\n\t\t// client may retry at some later date.\"\n\t\treturn true\n\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// As implements driver.Topic.As.\nfunc (t *topic) As(i any) bool {\n\tc, ok := i.(**amqp.Connection)\n\tif !ok {\n\t\treturn false\n\t}\n\tconn, ok := t.conn.(*connection)\n\tif !ok { // running against the fake\n\t\treturn false\n\t}\n\t*c = conn.conn\n\treturn true\n}\n\n// ErrorAs implements driver.Topic.ErrorAs\nfunc (*topic) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\nfunc errorAs(err error, i any) bool {\n\tvar aerr *amqp.Error\n\tif errors.As(err, &aerr) {\n\t\tif p, ok := i.(**amqp.Error); ok {\n\t\t\t*p = aerr\n\t\t\treturn true\n\t\t}\n\t}\n\n\tvar merr MultiError\n\tif errors.As(err, &merr) {\n\t\tif p, ok := i.(*MultiError); ok {\n\t\t\t*p = merr\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// Close implements driver.Topic.Close.\nfunc (*topic) Close() error { return nil }\n\n// OpenSubscription returns a *pubsub.Subscription corresponding to the named queue.\n// See the package documentation for an example.\n//\n// The queue must have been previously created (for instance, by using\n// amqp.Channel.QueueDeclare) and bound to an exchange.\n//\n// OpenSubscription uses the supplied amqp.Connection for all communication. It is\n// the caller's responsibility to establish this connection before calling\n// OpenSubscription and to close it when Close has been called on all Subscriptions\n// opened with it.\n//\n// The documentation of the amqp package recommends using separate connections for\n// publishing and subscribing.\nfunc OpenSubscription(conn *amqp.Connection, name string, opts *SubscriptionOptions) *pubsub.Subscription {\n\treturn pubsub.NewSubscription(newSubscription(&connection{conn}, name, opts), nil, nil)\n}\n\ntype subscription struct {\n\tconn     amqpConnection\n\tqueue    string // the AMQP queue name\n\tconsumer string // the client-generated name for this particular subscriber\n\n\topts *SubscriptionOptions\n\n\tmu     sync.Mutex\n\tch     amqpChannel // AMQP channel used for all communication.\n\tdelc   <-chan amqp.Delivery\n\tclosec <-chan *amqp.Error\n\n\treceiveBatchHook func() // for testing\n}\n\nvar nextConsumer int64 // atomic\n\nfunc newSubscription(conn amqpConnection, name string, opts *SubscriptionOptions) *subscription {\n\tif opts == nil {\n\t\topts = &SubscriptionOptions{}\n\t}\n\n\treturn &subscription{\n\t\tconn:             conn,\n\t\tqueue:            name,\n\t\tconsumer:         fmt.Sprintf(\"c%d\", atomic.AddInt64(&nextConsumer, 1)),\n\t\topts:             opts,\n\t\treceiveBatchHook: func() {},\n\t}\n}\n\n// Must be called with s.mu held.\nfunc (s *subscription) establishChannel(ctx context.Context) error {\n\tif s.ch != nil { // We already have a channel.\n\t\tselect {\n\t\t// If it was closed, open a new one.\n\t\t// (Ignore the error, if any.)\n\t\tcase <-s.closec:\n\n\t\t// If it isn't closed, nothing to do.\n\t\tdefault:\n\t\t\treturn nil\n\t\t}\n\t}\n\tvar ch amqpChannel\n\terr := runWithContext(ctx, func() error {\n\t\t// Create a new channel.\n\t\tvar err error\n\t\tch, err = s.conn.Channel()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Apply subscription options to channel.\n\t\terr = applyOptionsToChannel(s.opts, ch)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Subscribe to messages from the queue.\n\t\ts.delc, err = ch.Consume(s.queue, s.consumer)\n\t\treturn err\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ts.ch = ch\n\ts.closec = ch.NotifyClose(make(chan *amqp.Error, 1)) // closec will get at most one element\n\n\treturn nil\n}\n\nfunc applyOptionsToChannel(opts *SubscriptionOptions, ch amqpChannel) error {\n\tif opts.PrefetchCount == nil {\n\t\treturn nil\n\t}\n\n\tif err := ch.Qos(*opts.PrefetchCount, 0, false); err != nil {\n\t\treturn fmt.Errorf(\"unable to set channel Qos: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// ReceiveBatch implements driver.Subscription.ReceiveBatch.\nfunc (s *subscription) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tif err := s.establishChannel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\n\ts.receiveBatchHook()\n\n\t// Get up to maxMessages waiting messages, but don't take too long.\n\tvar ms []*driver.Message\n\tmaxTime := time.NewTimer(50 * time.Millisecond)\n\tfor {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\t// Cancel the Consume.\n\t\t\t_ = s.ch.Cancel(s.consumer) // ignore the error\n\t\t\ts.ch = nil\n\t\t\treturn nil, ctx.Err()\n\n\t\tcase d, ok := <-s.delc:\n\t\t\tif !ok { // channel closed\n\t\t\t\ts.ch = nil // re-establish the channel next time\n\t\t\t\tif len(ms) > 0 {\n\t\t\t\t\treturn ms, nil\n\t\t\t\t}\n\t\t\t\t// s.closec must be closed too. See if it has an error.\n\t\t\t\tif err := closeErr(s.closec); err != nil {\n\t\t\t\t\t// PreconditionFailed can happen if we send an Ack or Nack for a\n\t\t\t\t\t// message that has already been acked/nacked. Ignore those errors.\n\t\t\t\t\tvar aerr *amqp.Error\n\t\t\t\t\tif errors.As(err, &aerr) && aerr.Code == amqp.PreconditionFailed {\n\t\t\t\t\t\treturn nil, nil\n\t\t\t\t\t}\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\t// We shouldn't be here, but if we are, we still want to return an\n\t\t\t\t// error.\n\t\t\t\treturn nil, errors.New(\"rabbitpubsub: delivery channel closed unexpectedly\")\n\t\t\t}\n\t\t\tms = append(ms, toDriverMessage(d, s.opts))\n\t\t\tif len(ms) >= maxMessages {\n\t\t\t\treturn ms, nil\n\t\t\t}\n\n\t\tcase <-maxTime.C:\n\t\t\t// Timed out. Return whatever we have. If we have nothing, we'll get\n\t\t\t// called again soon, but returning allows us to give up the lock in\n\t\t\t// case there are acks/nacks to be sent.\n\t\t\treturn ms, nil\n\t\t}\n\t}\n}\n\n// toDriverMessage converts an amqp.Delivery (a received message) to a driver.Message.\nfunc toDriverMessage(d amqp.Delivery, opts *SubscriptionOptions) *driver.Message {\n\t// Delivery.Headers is a map[string]any, so we have to\n\t// convert each value to a string.\n\tmd := map[string]string{}\n\tfor k, v := range d.Headers {\n\t\tmd[k] = fmt.Sprint(v)\n\t}\n\t// Add a metadata entry for the message routing key if appropriate.\n\tif d.RoutingKey != \"\" && opts.KeyName != \"\" {\n\t\tmd[opts.KeyName] = d.RoutingKey\n\t}\n\tloggableID := d.MessageId\n\tif loggableID == \"\" {\n\t\tloggableID = d.CorrelationId\n\t}\n\tif loggableID == \"\" {\n\t\tloggableID = fmt.Sprintf(\"DeliveryTag %d\", d.DeliveryTag)\n\t}\n\treturn &driver.Message{\n\t\tLoggableID: loggableID,\n\t\tBody:       d.Body,\n\t\tAckID:      d.DeliveryTag,\n\t\tMetadata:   md,\n\t\tAsFunc: func(i any) bool {\n\t\t\tp, ok := i.(*amqp.Delivery)\n\t\t\tif !ok {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t*p = d\n\t\t\treturn true\n\t\t},\n\t}\n}\n\n// SendAcks implements driver.Subscription.SendAcks.\nfunc (s *subscription) SendAcks(ctx context.Context, ackIDs []driver.AckID) error {\n\treturn s.sendAcksOrNacks(ctx, ackIDs, true)\n}\n\n// CanNack implements driver.CanNack.\nfunc (s *subscription) CanNack() bool { return true }\n\n// SendNacks implements driver.Subscription.SendNacks.\nfunc (s *subscription) SendNacks(ctx context.Context, ackIDs []driver.AckID) error {\n\treturn s.sendAcksOrNacks(ctx, ackIDs, false)\n}\n\nfunc (s *subscription) sendAcksOrNacks(ctx context.Context, ackIDs []driver.AckID, ack bool) error {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\tif err := s.establishChannel(ctx); err != nil {\n\t\treturn err\n\t}\n\n\t// Ack/Nack calls don't wait for a response, so this loop should execute relatively\n\t// quickly.\n\t// It wouldn't help to make it concurrent, because Channel.Ack/Nack grabs a\n\t// channel-wide mutex. (We could consider using multiple channels if performance\n\t// becomes an issue.)\n\tfor _, id := range ackIDs {\n\t\tif ctx.Err() != nil {\n\t\t\treturn ctx.Err()\n\t\t}\n\t\tvar err error\n\t\tif ack {\n\t\t\terr = s.ch.Ack(id.(uint64))\n\t\t} else {\n\t\t\terr = s.ch.Nack(id.(uint64))\n\t\t}\n\t\tif err != nil {\n\t\t\ts.ch = nil // re-establish channel after an error\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// IsRetryable implements driver.Subscription.IsRetryable.\nfunc (*subscription) IsRetryable(err error) bool {\n\treturn isRetryable(err)\n}\n\nfunc (*subscription) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn errorCode(err)\n}\n\n// As implements driver.Subscription.As.\nfunc (s *subscription) As(i any) bool {\n\tc, ok := i.(**amqp.Connection)\n\tif !ok {\n\t\treturn false\n\t}\n\tconn, ok := s.conn.(*connection)\n\tif !ok { // running against the fake\n\t\treturn false\n\t}\n\t*c = conn.conn\n\treturn true\n}\n\n// ErrorAs implements driver.Subscription.ErrorAs\nfunc (*subscription) ErrorAs(err error, i any) bool {\n\treturn errorAs(err, i)\n}\n\n// Close implements driver.Subscription.Close.\nfunc (*subscription) Close() error { return nil }\n"
  },
  {
    "path": "pubsub/rabbitpubsub/rabbit_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage rabbitpubsub\n\n// To run these tests against a real RabbitMQ server, first run localrabbit.sh.\n// Then wait a few seconds for the server to be ready.\n// If no server is running, the tests will use a fake (see fake_test.go).\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"testing\"\n\t\"time\"\n\n\tamqp \"github.com/rabbitmq/amqp091-go\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n\t\"gocloud.dev/pubsub/drivertest\"\n)\n\nconst rabbitURL = \"amqp://guest:guest@localhost:5672/\"\n\nvar logOnce sync.Once\n\nfunc mustDialRabbit(t testing.TB) amqpConnection {\n\tt.Helper()\n\n\tif !setup.HasDockerTestEnvironment() {\n\t\tlogOnce.Do(func() {\n\t\t\tt.Log(\"using the fake because the RabbitMQ server is not available\")\n\t\t})\n\t\treturn newFakeConnection()\n\t}\n\tconn, err := amqp.Dial(rabbitURL)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tlogOnce.Do(func() {\n\t\tt.Logf(\"using the RabbitMQ server at %s\", rabbitURL)\n\t})\n\treturn &connection{conn}\n}\n\nfunc TestConformance(t *testing.T) {\n\tharnessMaker := func(_ context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn &harness{conn: mustDialRabbit(t)}, nil\n\t}\n\t_, isFake := mustDialRabbit(t).(*fakeConnection)\n\tasTests := []drivertest.AsTest{rabbitAsTest{isFake}}\n\tdrivertest.RunConformanceTests(t, harnessMaker, asTests)\n\n\t// Run the conformance tests with the fake if we haven't.\n\tif isFake {\n\t\treturn\n\t}\n\tt.Logf(\"now running tests with the fake\")\n\tharnessMaker = func(_ context.Context, t *testing.T) (drivertest.Harness, error) {\n\t\tt.Helper()\n\n\t\treturn &harness{conn: newFakeConnection()}, nil\n\t}\n\tasTests = []drivertest.AsTest{rabbitAsTest{true}}\n\tdrivertest.RunConformanceTests(t, harnessMaker, asTests)\n}\n\nfunc BenchmarkRabbit(b *testing.B) {\n\tctx := context.Background()\n\th := &harness{conn: mustDialRabbit(b)}\n\tdt, cleanup, err := h.CreateTopic(ctx, b.Name())\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup()\n\tds, cleanup, err := h.CreateSubscription(ctx, dt, b.Name())\n\tif err != nil {\n\t\tb.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\ttopic := pubsub.NewTopic(dt, nil)\n\tdefer topic.Shutdown(ctx)\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\n\tdrivertest.RunBenchmarks(b, topic, sub)\n}\n\ntype harness struct {\n\tconn      amqpConnection\n\tnumTopics uint32\n\tnumSubs   uint32\n}\n\nfunc (h *harness) CreateTopic(_ context.Context, testName string) (dt driver.Topic, cleanup func(), err error) {\n\texchange := fmt.Sprintf(\"%s-topic-%d\", testName, atomic.AddUint32(&h.numTopics, 1))\n\tif err := declareExchange(h.conn, exchange); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tcleanup = func() {\n\t\tch, err := h.conn.Channel()\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tch.ExchangeDelete(exchange)\n\t}\n\treturn newTopic(h.conn, exchange, nil), cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentTopic(context.Context) (driver.Topic, error) {\n\treturn newTopic(h.conn, \"nonexistent-topic\", nil), nil\n}\n\nfunc (h *harness) CreateSubscription(_ context.Context, dt driver.Topic, testName string) (ds driver.Subscription, cleanup func(), err error) {\n\tqueue := fmt.Sprintf(\"%s-subscription-%d\", testName, atomic.AddUint32(&h.numSubs, 1))\n\tif err := bindQueue(h.conn, queue, dt.(*topic).exchange); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tcleanup = func() {\n\t\tch, err := h.conn.Channel()\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tch.QueueDelete(queue)\n\t}\n\tds = newSubscription(h.conn, queue, nil)\n\treturn ds, cleanup, nil\n}\n\nfunc (h *harness) MakeNonexistentSubscription(_ context.Context) (driver.Subscription, func(), error) {\n\treturn newSubscription(h.conn, \"nonexistent-subscription\", nil), func() {}, nil\n}\n\nfunc (h *harness) Close() {\n\th.conn.Close()\n}\n\nfunc (h *harness) MaxBatchSizes() (int, int) { return 0, 0 }\n\nfunc (*harness) SupportsMultipleSubscriptions() bool { return true }\n\nfunc TestUnroutable(t *testing.T) {\n\t// Expect that we get an error on publish if the exchange has no queue bound to it.\n\t// The error should be a MultiError containing one error per message.\n\tctx := context.Background()\n\tconn := mustDialRabbit(t)\n\tdefer conn.Close()\n\n\tif err := declareExchange(conn, \"u\"); err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttopic := newTopic(conn, \"u\", nil)\n\tmsgs := []*driver.Message{\n\t\t{Body: []byte(\"\")},\n\t\t{Body: []byte(\"\")},\n\t}\n\terr := topic.SendBatch(ctx, msgs)\n\tvar merr MultiError\n\tif !topic.ErrorAs(err, &merr) {\n\t\tt.Fatalf(\"got error of type %T, want MultiError\", err)\n\t}\n\tif got, want := len(merr), len(msgs); got != want {\n\t\tt.Fatalf(\"got %d errors, want %d\", got, want)\n\t}\n\t// Test MultiError.Error.\n\tif got, want := strings.Count(merr.Error(), \";\")+1, len(merr); got != want {\n\t\tt.Errorf(\"got %d semicolon-separated messages, want %d\", got, want)\n\t}\n\t// Test each individual error.\n\tfor i, err := range merr {\n\t\tif !strings.Contains(err.Error(), \"NO_ROUTE\") {\n\t\t\tt.Errorf(\"%d: got %v, want an error with 'NO_ROUTE'\", i, err)\n\t\t}\n\t}\n}\n\nfunc TestErrorCode(t *testing.T) {\n\tfor _, test := range []struct {\n\t\tin   error\n\t\twant gcerrors.ErrorCode\n\t}{\n\t\t{nil, gcerrors.Unknown},\n\t\t{&os.PathError{}, gcerrors.Unknown},\n\t\t{&amqp.Error{Code: amqp.SyntaxError}, gcerrors.Internal},\n\t\t{&amqp.Error{Code: amqp.NotImplemented}, gcerrors.Unimplemented},\n\t\t{&amqp.Error{Code: amqp.ContentTooLarge}, gcerrors.Unknown},\n\t} {\n\t\tif got := errorCode(test.in); got != test.want {\n\t\t\tt.Errorf(\"%v: got %s, want %s\", test.in, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestOpens(t *testing.T) {\n\tctx := context.Background()\n\tif got := OpenTopic(nil, \"t\", nil); got == nil {\n\t\tt.Error(\"got nil, want non-nil\")\n\t} else {\n\t\tgot.Shutdown(ctx)\n\t}\n\tif got := OpenSubscription(nil, \"s\", nil); got == nil {\n\t\tt.Error(\"got nil, want non-nil\")\n\t} else {\n\t\tgot.Shutdown(ctx)\n\t}\n}\n\nfunc TestIsRetryable(t *testing.T) {\n\tfor _, test := range []struct {\n\t\terr  error\n\t\twant bool\n\t}{\n\t\t{errors.New(\"xyz\"), false},\n\t\t{io.ErrUnexpectedEOF, false},\n\t\t{&amqp.Error{Code: amqp.AccessRefused}, false},\n\t\t{&amqp.Error{Code: amqp.ContentTooLarge}, true},\n\t\t{&amqp.Error{Code: amqp.ConnectionForced}, true},\n\t} {\n\t\tgot := isRetryable(test.err)\n\t\tif got != test.want {\n\t\t\tt.Errorf(\"%+v: got %t, want %t\", test.err, got, test.want)\n\t\t}\n\t}\n}\n\nfunc TestRunWithContext(t *testing.T) {\n\t// runWithContext will run its argument to completion if the context isn't done.\n\te := errors.New(\"\")\n\t// f sleeps for a bit just to give the scheduler a chance to run.\n\tf := func() error { time.Sleep(100 * time.Millisecond); return e }\n\tgot := runWithContext(context.Background(), f)\n\tif want := e; got != want {\n\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t}\n\n\t// runWithContext will return ctx.Err if context is done.\n\tctx, cancel := context.WithCancel(context.Background())\n\tcancel()\n\tgot = runWithContext(ctx, f)\n\tif want := context.Canceled; got != want {\n\t\tt.Errorf(\"got %v, want %v\", got, want)\n\t}\n}\n\nfunc declareExchange(conn amqpConnection, name string) error {\n\tch, err := conn.Channel()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer ch.Close()\n\treturn ch.ExchangeDeclare(name)\n}\n\nfunc bindQueue(conn amqpConnection, queueName, exchangeName string) error {\n\tch, err := conn.Channel()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer ch.Close()\n\treturn ch.QueueDeclareAndBind(queueName, exchangeName)\n}\n\ntype rabbitAsTest struct {\n\tusingFake bool\n}\n\nfunc (rabbitAsTest) Name() string {\n\treturn \"rabbit test\"\n}\n\nfunc (r rabbitAsTest) TopicCheck(topic *pubsub.Topic) error {\n\tvar conn2 amqp.Connection\n\tif topic.As(&conn2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &conn2)\n\t}\n\tif !r.usingFake {\n\t\tvar conn3 *amqp.Connection\n\t\tif !topic.As(&conn3) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &conn3)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (r rabbitAsTest) SubscriptionCheck(sub *pubsub.Subscription) error {\n\tvar conn2 amqp.Connection\n\tif sub.As(&conn2) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &conn2)\n\t}\n\tif !r.usingFake {\n\t\tvar conn3 *amqp.Connection\n\t\tif !sub.As(&conn3) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &conn3)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (rabbitAsTest) TopicErrorCheck(t *pubsub.Topic, err error) error {\n\tvar aerr *amqp.Error\n\tif !t.ErrorAs(err, &aerr) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to an amqp.Error\", err, err)\n\t}\n\tif aerr.Code != amqp.NotFound {\n\t\treturn fmt.Errorf(\"got code %v, want NotFound\", aerr.Code)\n\t}\n\n\terr = MultiError{err}\n\tvar merr MultiError\n\tif !t.ErrorAs(err, &merr) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to a MultiError\", err, err)\n\t}\n\tvar perr *os.PathError\n\tif t.ErrorAs(err, &perr) {\n\t\treturn errors.New(\"got true for PathError, want false\")\n\t}\n\treturn nil\n}\n\nfunc (rabbitAsTest) SubscriptionErrorCheck(s *pubsub.Subscription, err error) error {\n\tvar aerr *amqp.Error\n\tif !s.ErrorAs(err, &aerr) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to an amqp.Error\", err, err)\n\t}\n\tif aerr.Code != amqp.NotFound {\n\t\treturn fmt.Errorf(\"got code %v, want NotFound\", aerr.Code)\n\t}\n\n\terr = MultiError{err}\n\tvar merr MultiError\n\tif !s.ErrorAs(err, &merr) {\n\t\treturn fmt.Errorf(\"failed to convert %v (%T) to a MultiError\", err, err)\n\t}\n\tvar perr *os.PathError\n\tif s.ErrorAs(err, &perr) {\n\t\treturn errors.New(\"got true for PathError, want false\")\n\t}\n\treturn nil\n}\n\nfunc (r rabbitAsTest) MessageCheck(m *pubsub.Message) error {\n\tvar pd *amqp.Delivery\n\tif m.As(&pd) {\n\t\treturn fmt.Errorf(\"cast succeeded for %T, want failure\", &pd)\n\t}\n\tif !r.usingFake {\n\t\tvar d amqp.Delivery\n\t\tif !m.As(&d) {\n\t\t\treturn fmt.Errorf(\"cast failed for %T\", &d)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (rabbitAsTest) BeforeSend(as func(any) bool) error {\n\tvar pub *amqp.Publishing\n\tif !as(&pub) {\n\t\treturn fmt.Errorf(\"cast failed for %T\", &pub)\n\t}\n\treturn nil\n}\n\nfunc (rabbitAsTest) AfterSend(as func(any) bool) error {\n\treturn nil\n}\n\nfunc TestOpenTopicFromURL(t *testing.T) {\n\tt.Setenv(\"RABBIT_SERVER_URL\", rabbitURL)\n\n\ttests := []struct {\n\t\tlabel       string\n\t\tURLTemplate string\n\t\tWantErr     bool\n\t}{\n\t\t{\"valid url\", \"rabbit://%s\", false},\n\t\t{\"valid url with key name parameter\", \"rabbit://%s?key_name=foo\", false},\n\t\t{\"invalid url with parameters\", \"rabbit://%s?param=value\", true},\n\t\t{\"invalid url with key name parameter\", \"rabbit://%s?key_name=\", true},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.label, func(t *testing.T) {\n\t\t\tconn := mustDialRabbit(t)\n\t\t\t_, isFake := conn.(*fakeConnection)\n\t\t\tif isFake {\n\t\t\t\tt.Skip(\"test requires real rabbitmq\")\n\t\t\t}\n\n\t\t\th := &harness{conn: conn}\n\n\t\t\tctx := context.Background()\n\n\t\t\tdt, cleanupTopic, err := h.CreateTopic(ctx, t.Name())\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to create topic: %v\", err)\n\t\t\t}\n\n\t\t\tt.Cleanup(cleanupTopic)\n\n\t\t\texchange := dt.(*topic).exchange\n\t\t\turl := fmt.Sprintf(test.URLTemplate, exchange)\n\n\t\t\ttopic, err := pubsub.OpenTopic(ctx, url)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URLTemplate, err, test.WantErr)\n\t\t\t}\n\t\t\tif topic != nil {\n\t\t\t\ttopic.Shutdown(ctx)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenSubscriptionFromURL(t *testing.T) {\n\tt.Setenv(\"RABBIT_SERVER_URL\", rabbitURL)\n\n\ttests := []struct {\n\t\tlabel       string\n\t\tURLTemplate string\n\t\tWantErr     bool\n\t}{\n\t\t{\"url with no QoS prefetch count\", \"rabbit://%s\", false},\n\t\t{\"invalid parameters\", \"rabbit://%s?param=value\", true},\n\t\t{\"valid url with QoS prefetch count\", \"rabbit://%s?prefetch_count=1024\", false},\n\t\t{\"invalid url with QoS prefetch count\", \"rabbit://%s?prefetch_count=value\", true},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.label, func(t *testing.T) {\n\t\t\tconn := mustDialRabbit(t)\n\t\t\t_, isFake := conn.(*fakeConnection)\n\t\t\tif isFake {\n\t\t\t\tt.Skip(\"test requires real rabbitmq\")\n\t\t\t}\n\n\t\t\th := &harness{conn: conn}\n\n\t\t\tctx := context.Background()\n\n\t\t\tdt, cleanupTopic, err := h.CreateTopic(ctx, t.Name())\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to create topic: %v\", err)\n\t\t\t}\n\n\t\t\tt.Cleanup(cleanupTopic)\n\n\t\t\tds, cleanupSubscription, err := h.CreateSubscription(ctx, dt, t.Name())\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"unable to create subscription: %v\", err)\n\t\t\t}\n\n\t\t\tt.Cleanup(cleanupSubscription)\n\n\t\t\tqueue := ds.(*subscription).queue\n\t\t\turl := fmt.Sprintf(test.URLTemplate, queue)\n\n\t\t\tsub, err := pubsub.OpenSubscription(ctx, url)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URLTemplate, err, test.WantErr)\n\t\t\t}\n\n\t\t\tif sub != nil {\n\t\t\t\tsub.Shutdown(ctx)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "pubsub/sub_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//\thttps://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\npackage pubsub_test\n\nimport (\n\t\"context\"\n\t\"testing\"\n\n\t\"gocloud.dev/pubsub\"\n\t\"gocloud.dev/pubsub/driver\"\n)\n\n// scriptedSub returns batches of messages in a predefined order from\n// ReceiveBatch.\ntype scriptedSub struct {\n\tdriver.Subscription\n\t// batches contains slices of messages to return from ReceiveBatch, one\n\t// after the other.\n\tbatches [][]*driver.Message\n\n\t// calls counts how many times ReceiveBatch has been called.\n\tcalls int\n\n\t// closed records if Close was called.\n\tclosed bool\n}\n\nfunc (s *scriptedSub) ReceiveBatch(ctx context.Context, maxMessages int) ([]*driver.Message, error) {\n\tb := s.batches[s.calls]\n\ts.calls++\n\treturn b, nil\n}\n\nfunc (s *scriptedSub) SendAcks(ctx context.Context, ackIDs []driver.AckID) error {\n\treturn nil\n}\n\nfunc (*scriptedSub) CanNack() bool { return false }\nfunc (s *scriptedSub) Close() error {\n\ts.closed = true\n\treturn nil\n}\n\nfunc TestReceiveWithEmptyBatchReturnedFromDriver(t *testing.T) {\n\tctx := context.Background()\n\tds := &scriptedSub{\n\t\tbatches: [][]*driver.Message{\n\t\t\t// First call gets an empty batch.\n\t\t\t{},\n\t\t\t// Second call gets a non-empty batch.\n\t\t\t{&driver.Message{}},\n\t\t},\n\t}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tdefer sub.Shutdown(ctx)\n\tm, err := sub.Receive(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tm.Ack()\n}\n\nfunc TestSubscriptionCloseIsCalled(t *testing.T) {\n\tctx := context.Background()\n\tds := &scriptedSub{}\n\tsub := pubsub.NewSubscription(ds, nil, nil)\n\tsub.Shutdown(ctx)\n\tif !ds.closed {\n\t\tt.Error(\"want Subscription.Close to have been called\")\n\t}\n}\n"
  },
  {
    "path": "runtimevar/awsparamstore/awsparamstore.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awsparamstore provides a runtimevar implementation with variables\n// read from AWS Systems Manager Parameter Store\n// (https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html)\n// Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, awsparamstore registers for the scheme \"awsparamstore\".\n// The default URL opener will use an AWS session with the default credentials\n// and configuration.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// awsparamstore exposes the following types for As:\n//   - Snapshot: *ssm.GetParameterOutput\n//   - Error: any error type returned by the service, notably smithy.APIError\npackage awsparamstore // import \"gocloud.dev/runtimevar/awsparamstore\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/ssm\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/wire\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, new(lazySessionOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n)\n\n// Dial gets an AWS SSM service client using the AWS SDK V2.\nfunc Dial(cfg aws.Config) *ssm.Client {\n\treturn ssm.NewFromConfig(cfg)\n}\n\n// URLOpener opens AWS Paramstore URLs like \"awsparamstore://myvar\".\n//\n// See https://pkg.go.dev/gocloud.dev/aws#V2ConfigFromURLParams.\n//\n// In addition, the following URL parameters are supported:\n//   - decoder: The decoder to use. Defaults to URLOpener.Decoder, or\n//     runtimevar.BytesDecoder if URLOpener.Decoder is nil.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to New.\n\tOptions Options\n}\n\n// lazySessionOpener obtains the AWS session from the environment on the first\n// call to OpenVariableURL.\ntype lazySessionOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazySessionOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\topener := &URLOpener{}\n\treturn opener.OpenVariableURL(ctx, u)\n}\n\n// Scheme is the URL scheme awsparamstore registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"awsparamstore\"\n\n// OpenVariableURL opens the variable at the URL's path. See the package doc\n// for more details.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\n\tcfg, err := gcaws.V2ConfigFromURLParams(ctx, q)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, err)\n\t}\n\treturn OpenVariable(ssm.NewFromConfig(cfg), path.Join(u.Host, u.Path), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the rate at which Parameter Store is polled.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable backed by the variable name in\n// AWS Systems Manager Parameter Store, using AWS SDK V2.\n// Parameter Store returns raw bytes; provide a decoder to decode the raw bytes\n// into the appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(client *ssm.Client, name string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\treturn runtimevar.New(newWatcher(client, name, decoder, opts)), nil\n}\n\nvar OpenVariableV2 = OpenVariable\n\nfunc newWatcher(client *ssm.Client, name string, decoder *runtimevar.Decoder, opts *Options) *watcher {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\treturn &watcher{\n\t\tclient:  client,\n\t\tname:    name,\n\t\twait:    driver.WaitDuration(opts.WaitDuration),\n\t\tdecoder: decoder,\n\t}\n}\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\trawGet     *ssm.GetParameterOutput\n\tupdateTime time.Time\n\tversion    int64\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tswitch p := i.(type) {\n\tcase **ssm.GetParameterOutput:\n\t\t*p = s.rawGet\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// errorState returns a new State with err, unless prevS also represents\n// the same error, in which case it returns nil.\nfunc errorState(err error, prevS driver.State) driver.State {\n\t// Map aws.RequestCanceled to the more standard context package errors.\n\tif getErrorCode(err) == \"CancelledError\" {\n\t\tmsg := err.Error()\n\t\tif strings.Contains(msg, \"context deadline exceeded\") {\n\t\t\terr = context.DeadlineExceeded\n\t\t} else {\n\t\t\terr = context.Canceled\n\t\t}\n\t}\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\t// New error.\n\t\treturn s\n\t}\n\tif equivalentError(err, prev.err) {\n\t\t// Same error, return nil to indicate no change.\n\t\treturn nil\n\t}\n\treturn s\n}\n\n// equivalentError returns true iff err1 and err2 represent an equivalent error;\n// i.e., we don't want to return it to the user as a different error.\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tcode1 := getErrorCode(err1)\n\tcode2 := getErrorCode(err2)\n\treturn code1 != \"\" && code1 == code2\n}\n\ntype watcher struct {\n\t// client is the client to use.\n\tclient *ssm.Client\n\t// name is the parameter to retrieve.\n\tname string\n\t// wait is the amount of time to wait between querying AWS.\n\twait time.Duration\n\t// decoder is the decoder that unmarshals the value in the param.\n\tdecoder *runtimevar.Decoder\n}\n\nfunc getParameter(ctx context.Context, client *ssm.Client, name string) (int64, []byte, time.Time, *ssm.GetParameterOutput, error) {\n\tgetResp, err := client.GetParameter(ctx, &ssm.GetParameterInput{\n\t\tName: aws.String(name),\n\t\t// Ignored if the parameter is not encrypted.\n\t\tWithDecryption: aws.Bool(true),\n\t})\n\tif err != nil {\n\t\treturn 0, nil, time.Time{}, nil, err\n\t}\n\tif getResp.Parameter == nil {\n\t\treturn 0, nil, time.Time{}, getResp, fmt.Errorf(\"unable to get %q parameter\", name)\n\t}\n\treturn getResp.Parameter.Version, []byte(aws.ToString(getResp.Parameter.Value)), aws.ToTime(getResp.Parameter.LastModifiedDate), getResp, nil\n}\n\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\tlastVersion := int64(-1)\n\tif prev != nil {\n\t\tlastVersion = prev.(*state).version\n\t}\n\n\t// GetParameter from S3 to get the current value and version.\n\tnewVersion, newVal, newLastModified, rawGet, err := getParameter(ctx, w.client, w.name)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\tif newVersion == lastVersion {\n\t\t// Version hasn't changed, so no change; return nil.\n\t\treturn nil, w.wait\n\t}\n\n\t// New value (or at least, new version). Decode it.\n\tval, err := w.decoder.Decode(ctx, newVal)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\treturn &state{\n\t\tval:        val,\n\t\trawGet:     rawGet,\n\t\tupdateTime: newLastModified,\n\t\tversion:    newVersion,\n\t}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\treturn errors.As(err, i)\n}\n\nfunc getErrorCode(err error) string {\n\tvar ae smithy.APIError\n\tif errors.As(err, &ae) {\n\t\treturn ae.ErrorCode()\n\t}\n\treturn \"\"\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (w *watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tcode := getErrorCode(err)\n\tif code == \"ParameterNotFound\" {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n"
  },
  {
    "path": "runtimevar/awsparamstore/awsparamstore_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsparamstore\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/ssm\"\n\t\"github.com/aws/smithy-go\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\n// This constant records the region used for the last --record.\n// If you want to use --record mode,\n// 1. Update this constant to your AWS region.\n// TODO(issue #300): Use Terraform to get this.\nconst region = \"us-east-2\"\n\ntype harness struct {\n\tclient *ssm.Client\n\tcloser func()\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tcfg, _, done, _ := setup.NewAWSv2Config(context.Background(), t, region, false)\n\treturn &harness{client: ssm.NewFromConfig(cfg), closer: done}, nil\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.client, name, decoder, nil), nil\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\t_, err := h.client.PutParameter(ctx, &ssm.PutParameterInput{\n\t\tName:      aws.String(name),\n\t\tType:      \"String\",\n\t\tValue:     aws.String(string(val)),\n\t\tOverwrite: aws.Bool(true),\n\t})\n\treturn err\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\treturn h.CreateVariable(ctx, name, val)\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\t_, err := h.client.DeleteParameter(ctx, &ssm.DeleteParameterInput{Name: aws.String(name)})\n\treturn err\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct {\n}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (v verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar getParam *ssm.GetParameterOutput\n\tif !s.As(&getParam) {\n\t\treturn errors.New(\"Snapshot.As failed for GetParameterOutput\")\n\t}\n\treturn nil\n}\n\nfunc (va verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar e smithy.APIError\n\tif !v.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Keeper.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\n// Paramstore-specific tests.\n\nfunc TestOpenVariable(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"awsparamstore://myvar\", false},\n\t\t// OK, setting region.\n\t\t{\"awsparamstore://myvar?region=us-west-1\", false},\n\t\t// OK, setting decoder.\n\t\t{\"awsparamstore://myvar?decoder=string\", false},\n\t\t// Invalid decoder.\n\t\t{\"awsparamstore://myvar?decoder=notadecoder\", true},\n\t\t// OK, setting wait.\n\t\t{\"awsparamstore://myvar?wait=2m\", false},\n\t\t// Invalid wait.\n\t\t{\"awsparamstore://myvar?wait=x\", true},\n\t\t// Invalid parameter.\n\t\t{\"awsparamstore://myvar?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tv.Close()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "runtimevar/awsparamstore/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awsparamstore_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/ssm\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/awsparamstore\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Establish a AWS V2 Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tctx := context.Background()\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *runtimevar.Variable that watches the variable.\n\tclient := ssm.NewFromConfig(cfg)\n\tv, err := awsparamstore.OpenVariable(client, \"cfg-variable-name\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/awsparamstore\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\tv, err := runtimevar.OpenVariable(ctx, \"awsparamstore://myvar?region=us-west-1&decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestAs/verify_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3hIHztaQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d9c13e06bae9af47\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiV2l0aERlY3J5cHRpb24iOnRydWV9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"50\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5e0e26dd-76d3-48f9-8c5e-ea2aa843ffa0\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWio8vqSxIVbJSCkgsSsxNLUkt8ssvccsvzUtRqgUAF48DRR4AAAA=\"\n      }\n    },\n    {\n      \"ID\": \"0a30adab85c7b754\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiT3ZlcndyaXRlIjp0cnVlLCJUeXBlIjoiU3RyaW5nIiwiVmFsdWUiOiJoZWxsbyB3b3JsZCJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"62eb8453-0c83-4b2e-91a8-e5eae748c479\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"c3dfd4e5b8205809\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiV2l0aERlY3J5cHRpb24iOnRydWV9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"179\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0c64933d-8e54-46ba-b3c8-527fb7742f61\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/2XMzQqCQBRA4VeJu9bKn3Hy7gLblURF+xtea2B0ZGbMQnz3EGrV9sB3RjiSpYY9W8ARtqcSEMi2SIND5xrsXcjkfBhjKjIp4iwTQmbY/dTqSVbRTXNYGxuSgwAK8nR5dwwInl8eAtiT8wdTqVpxVZBnwGgpZZInabIWGyl3eQAlNbP4331XZ29Ve4cArqT7OTxYa7MYjNXVXNk6ZVrAaJo+3RYui9UAAAA=\"\n      }\n    },\n    {\n      \"ID\": \"5cfdf10e970dbed6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"26\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"896490ea-b669-4ab5-9581-29ec821f0b59\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3iB7py5wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"95810ddf5e793153\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiV2l0aERlY3J5cHRpb24iOnRydWV9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"50\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d6bd41ec-476b-4922-96c2-b22b8c261764\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWio8vqSxIVbJSCkgsSsxNLUkt8ssvccsvzUtRqgUAF48DRR4AAAA=\"\n      }\n    },\n    {\n      \"ID\": \"3da904bb4d554de4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"81\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiT3ZlcndyaXRlIjp0cnVlLCJUeXBlIjoiU3RyaW5nIiwiVmFsdWUiOiJoZWxsbyB3b3JsZCJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3b9d5a6c-1fdc-4919-947b-c069fae9ea54\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"ba005cdafc09f396\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"48\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiV2l0aERlY3J5cHRpb24iOnRydWV9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"180\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bc5434be-9335-400c-a91b-f9dc9b596209\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/2XMzQqCQBRA4VeJu9bKnxnz7gLblURF+xtea2B0ZGbMQnz3EGrV9sB3RjiSpYY9W8ARtqcSEMi2SIND5xrsXcjkfBhjKmQmYimFyCR2P7V6klV00xzWxobkIICCPF3eHQOC55eHAPbk/MFUqlZcFeQZMFpmWZInabKWqdjs8gBKambxv/uuzt6q9g4BXEn3c3iw1mYxGKurubJ1yrSA0TR9AAF5OIHVAAAA\"\n      }\n    },\n    {\n      \"ID\": \"3c4c4e7e76baa82c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"26\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidmFyaWFibGUtZm9yLWFzIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:46 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"484a3033-6e72-4a33-981a-3d776819d32b\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3fMZOKCgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"5ad9e70f6cf54b0d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6ImhlbGxvIHdvcmxkIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7a2458d2-71cc-41b0-8ee5-3af895606987\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"99b51afa2d55822b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d54ab45e-304c-46f3-98df-f4ddeaa32116\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MywrCMBBA0V+RWTe+2jR0doLuVETF/WinNZA2kowvpP8uRd25vXDuCzYUqGHhAPiC2XYNCBRapHvEGBu8RsUURU0x07nR0zzX2uR4+amRcBR18m1la3WjYOnoGBKYk9D+eWFAEH4IJLCkKCtf2spyOSdhwMnQmLRIs3ScjU2xKBJYU/MRf5/f306CbWtI4EDu2oczO+cHdx9c2VcO0foWcNJ1b6sETzbfAAAA\"\n      }\n    },\n    {\n      \"ID\": \"8c41721fc2fa67ae\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"381a0459-b537-4071-96fb-aa265ab183b0\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    },\n    {\n      \"ID\": \"420f28b6b2eb6878\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"50\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ad93b93a-1f5d-436e-a7f3-d45bcf8669ef\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWio8vqSxIVbJSCkgsSsxNLUkt8ssvccsvzUtRqgUAF48DRR4AAAA=\"\n      }\n    },\n    {\n      \"ID\": \"75171cf00ce36fc0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"88\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6Imdvb2RieWUgd29ybGQifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8eafb31f-dcbd-49fc-9a7e-33ba2c2b3569\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"45a809650a474000\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"185\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"08f0f361-744b-46d1-8718-01b1aefc818a\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MywrCMBBA0V+RWTe+mrQ4O0F3WkTF/WinJdAmkkytRfx3EXXn9sK5D9hRoJaFA+ADlvsCECg4pD5ijC12UTFFUXPUJsvNPMuMyTO8/tREOIq6eFfZWt0oWDo3DAmsSOg4XBkQhO8CCWwoytaXtrJcrkgYcDbO83SR6nSqtUnXiwQKaj/i7/P7O0iwroYETtR071B7X54HHvU+NOW7c4jWO8DZ8/kCESNT3+EAAAA=\"\n      }\n    },\n    {\n      \"ID\": \"1fd480fc1d575e5c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5566240a-2e78-4393-8d4d-e5de5217151c\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestInvalidJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3eIkBuNAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"47294058ce228e0c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"83\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6Im5vdC1qc29uIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3bd48c3c-492b-4faa-b61c-3f05d6e4ef68\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"6f482a67e21625ba\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"180\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"63c28b71-1381-4ab3-8b36-af5934129de4\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MuwrCQBBA0X+ZOusjTzOdoJ0GUbEfzSgrZjfsTHwQ/HcRtbO9cG4PKwrUsHIA7GG6rgCBgkO6CYo02IlhEjUxplleZHGeZ1mRY/tTQ2VRc/DuaE/mSsHS/sIQwYyUto+WAUH5rhDBgkSXvrZHy/WMlAHHg6JIyiRNRvEkTudlBBU1H/H3+f1tNFh3ggh2dOnewXk1Z/HunTiI9Q5w/Hy+AMAm4NLcAAAA\"\n      }\n    },\n    {\n      \"ID\": \"101cea1a10a5e61d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e9fe0bb9-95d3-47dd-9f9f-e62a250b8169\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3eBDN3qgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d02dbca91a73d036\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"177\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6IltcbntcIk5hbWVcIjogXCJFZFwiLCBcIlRleHRcIjogXCJLbm9jayBrbm9jay5cIn0sXG57XCJOYW1lXCI6IFwiU2FtXCIsIFwiVGV4dFwiOiBcIldobydzIHRoZXJlP1wifVxuXSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fb757156-2b17-4135-94e4-76644f0fa40b\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"3ed336535af13b9f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"235\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"95e9973d-bbef-4e1d-ba3e-46560a9b6da0\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23NQU/CQBQE4L/SzMXLFqWlbdiLMYGTSowQPbAenvQBG+gu2X0opul/NxW9EC9zmOSbafFEgRoWDtAt7p5n0KDgNH1GHWOjjzFlipJmelSUVZGVZVFUpT78qWvhKOnKu7XdpB8ULL3vGQoTElp8HRgawieBwgNFefS1XVuuJyQMPRxUVT7OR/lNlufZdKwwo+Ys/t383ZtLsG4DhRfaH/tiaVxrfqyBTgymtYFKDBZ8knNz7/xql+z6HBh06gLMqbkUr1t/FRPZcuBbg864t/6QQ7TeQQ+77huKxps0OgEAAA==\"\n      }\n    },\n    {\n      \"ID\": \"7041ecd1f2e5c70d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f9090f76-2c16-4d68-9cf4-69687e7aa95f\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestNonExistentVariable.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3YAK7f3QAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2f615ac921111966\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"47\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoiZG9lcy1ub3QtZXhpc3QiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"50\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9c820ef3-64bb-4996-a1ca-fcffe9b7027f\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWio8vqSxIVbJSCkgsSsxNLUkt8ssvccsvzUtRqgUAF48DRR4AAAA=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestString.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3YIE2nDgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d0bc84aad41e97a4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6ImhlbGxvIHdvcmxkIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"23c493ff-3e01-4dee-9447-cf6e35d6ea9f\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"44464232858665ab\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:36 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5f809082-f5ca-4ecb-a37d-557ea728ab3f\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MTQ/BQBCA4b8ic27RZbc6N0ndEEHch05rk21XdsdXxH8Xwc31TZ73ASsK1LJwAHzAdL0EBAod0jVijC2eY8oUJVU41ibXyhitc4OnnxoIR0kPvqttk14oWNo7hgRKEtreTwwIwjeBBOYUZeErW1uuShIGzPp5PipGY1WYyVDNigSW1H7E3+f3t5FguwYS2JE7v8ORnfO9qw+uelcO0foOMHs+X9RMI9XfAAAA\"\n      }\n    },\n    {\n      \"ID\": \"c3e4b16b517ea35c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:42 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5f039f9a-e750-49bf-9847-4d92f50fb4b9\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestUpdate.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3fBHklAwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"356d1aed695b7d89\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"86\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6ImhlbGxvIHdvcmxkIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c9802027-7c85-43bf-ac4a-3bbafddaea7c\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"620b8173980162b1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4396d460-9704-4b59-94d0-0dea24df1222\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MTQuCQBCA4b8Sc9ZK1w+aW2C3kqjoPuVUC6sru2MW4n+PqG5dX3jeAbbkqGZhBzjAclcCArkGqffofY2dD5m8hDEmaZancZalaZ5h+1MzYS/h2TYXfQ3v5DSdDEMABQkdni0DgvBDIIA1ednYSl80VwUJA0bTPFcLlai5UnG0WgRQUv0Rf5/f316cbq4QwJFM9w43NsZOeutM9a7svLYNYDSOL3Gt66bfAAAA\"\n      }\n    },\n    {\n      \"ID\": \"1fd780b5fddb43cb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"183\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"87ca58fe-9c85-42ab-9fb0-f608e2343923\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MTQuCQBCA4b8Sc9ZK1w+aW2C3kqjoPuVUC6sru2MW4n+PqG5dX3jeAbbkqGZhBzjAclcCArkGqffofY2dD5m8hDEmaZancZalaZ5h+1MzYS/h2TYXfQ3v5DSdDEMABQkdni0DgvBDIIA1ednYSl80VwUJA0bTPFcLlai5UnG0WgRQUv0Rf5/f316cbq4QwJFM9w43NsZOeutM9a7svLYNYDSOL3Gt66bfAAAA\"\n      }\n    },\n    {\n      \"ID\": \"15dc22451b7b1ee5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"88\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJPdmVyd3JpdGUiOnRydWUsIlR5cGUiOiJTdHJpbmciLCJWYWx1ZSI6Imdvb2RieWUgd29ybGQifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fa5219d4-11aa-4e58-adda-56c829b1fdbf\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqoFAJMtxfQfAAAA\"\n      }\n    },\n    {\n      \"ID\": \"f9200aff7a213110\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJXaXRoRGVjcnlwdGlvbiI6dHJ1ZX0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"185\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f631e22c-5e35-43ad-a5e2-30824033e61d\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/23MywrCMBBA0V+RWbc+2qaxsxN0pyIq7kczlkCbSDK+kP67FHXn9sK5L9hQoJaFA+ALZts1IFBwSPeIMbZ4jSlTlDTDQpVaZWWplC7x8lMj4SjpybuzrdMbBUvHhiGBOQntnxcGBOGHQAJLirLyxp4tmzkJA06GWudVXuTjXE2LRZXAmtqP+Pv8/nYSrKshgQM11z7U3pvjkwd3HxrTdw7RegeYdd0bh+OmiuEAAAA=\"\n      }\n    },\n    {\n      \"ID\": \"16bb2a39c28e133c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"31\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:43 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ae7acf20-e89d-45e4-90bf-5f7f79f5054f\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awsparamstore/testdata/TestConformance/TestUpdateWithErrors.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3gKT4J9wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9d6fc729a7e41e42\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"126\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIk92ZXJ3cml0ZSI6dHJ1ZSwiVHlwZSI6IlN0cmluZyIsIlZhbHVlIjoiW3tcIk5hbWVcIjogXCJGb29cIiwgXCJUZXh0XCI6IFwiQmFyXCJ9XSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:44 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c3e72635-350d-4b90-b6a7-15d063e0143b\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqwFAFB+6N8fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"ea526badd6c01db8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIldpdGhEZWNyeXB0aW9uIjp0cnVlfQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"211\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"baa86db5-cd30-4c42-a863-c0b720883dbf\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/4XMwUrDQBRG4Vcp/3pGbZNJyN0p1ZUW0eLG6eJKrmWgyYSZG62EvLvU6trtge9MeOTEnagk0ITrpw0InHriz0w5dzRmK5zVrqh0Ve1WVeVcXdHwpy5VstpxaFlDv7cfnAK/HcRqtJJSTDBYs/L2axAQVI4Kg3vO+hDb8B6kXbMKaHlR10VTlMVV2RTutjHYcHcW/+1/18+aQr+HwQsfxlN4nfzPxIMWHncxepiFx1aOek43nDzm3YlIyiH2oOU8fwP0yWXeEgEAAA==\"\n      }\n    },\n    {\n      \"ID\": \"6fc3c68440efd192\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"98\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIk92ZXJ3cml0ZSI6dHJ1ZSwiVHlwZSI6IlN0cmluZyIsIlZhbHVlIjoiaW52YWxpZC1qc29uIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3a3aaae3-ec18-4c96-973d-619243b6da4e\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMqoFAJMtxfQfAAAA\"\n      }\n    },\n    {\n      \"ID\": \"997c161fba912829\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIldpdGhEZWNyeXB0aW9uIjp0cnVlfQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"191\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0483e0c5-eadc-4dbc-8a76-f3d00e901a25\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/4XMTWvCQBCA4f8y56yaxN3g3AR7UxEtvU/JVLYku2Fm4gfify+iPXt94XlvsCOhno0F8AbL/RYQSBLSWVG1x1Edk5qrcO5D46sQvG8CDv9qaqzmxqEli+noTiSRvjt2lh2LZIECVmT0eR0YEIwvBgWsSW2T2/gTuV2RMWA5aZp6Uc/rmS/L8LEoYEv9U7zbv9YHk5iOUMAXdeMjxHSiLrbuV3N6ZBaNOQFW9/sflwn4QfYAAAA=\"\n      }\n    },\n    {\n      \"ID\": \"47ec2ac7a1e49888\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.PutParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIk92ZXJ3cml0ZSI6dHJ1ZSwiVHlwZSI6IlN0cmluZyIsIlZhbHVlIjoiaW52YWxpZC1qc29uMiJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"51\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bd5088ef-8903-4623-a759-60712821025c\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6tWCslMLVKyUgouScxLSSxKUdJRCkstKs7Mz1OyMq4FANIc3u0fAAAA\"\n      }\n    },\n    {\n      \"ID\": \"f0c975de37417413\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.GetParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIldpdGhEZWNyeXB0aW9uIjp0cnVlfQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"191\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"86147139-5cad-4217-8d59-b89ba7d6c056\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/4XMwU6DQBCA4XeZM6sVWAhza1JvSow23qdhbLaBXTIzYBvCuxtSPXv9k+9f4I2EBjYWwAX27y0gkESkb0XVASd1TGoux9JXtc+ryvu6wvFPPRqruWnsyEI8u5kk0KlnZ8mxSBLI4EBGx9vIgGB8NcjghdReUxe+AncHMgZ8eqjroinKYufz5rnJoKXhDv67/54/TEI8Qwaf1E9bCHGmPnTuoinmW2fRkCJgsa4/cndOePYAAAA=\"\n      }\n    },\n    {\n      \"ID\": \"57e39d5e6487683d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://ssm.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"42\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"AmazonSSM.DeleteParameter\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-store\"\n          ],\n          \"Content-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"22\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:45 GMT\"\n          ],\n          \"Server\": [\n            \"Server\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2ebae488-97a7-49bb-bc87-57d3e70fdc8e\"\n          ]\n        },\n        \"Body\": \"H4sIAAAAAAAA/6uuBQBDv6ajAgAAAA==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/awssecretsmanager.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awssecretsmanager provides a runtimevar implementation with variables\n// read from AWS Secrets Manager (https://aws.amazon.com/secrets-manager)\n// Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, awssecretsmanager registers for the scheme \"awssecretsmanager\".\n// The default URL opener will use an AWS session with the default credentials\n// and configuration.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// awssecretsmanager exposes the following types for As:\n//   - Snapshot: *secretsmanager.GetSecretValueOutput, *secretsmanager.DescribeSecretOutput\n//   - Error: any error type returned by the service, notably smithy.APIError\npackage awssecretsmanager // import \"gocloud.dev/runtimevar/awssecretsmanager\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/secretsmanager\"\n\t\"github.com/aws/aws-sdk-go-v2/service/secretsmanager/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/wire\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, new(lazySessionOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n)\n\n// Dial gets an AWS secretsmanager service client using the AWS SDK V2.\nfunc Dial(cfg aws.Config) *secretsmanager.Client {\n\treturn secretsmanager.NewFromConfig(cfg)\n}\n\n// URLOpener opens AWS Secrets Manager URLs like \"awssecretsmanager://my-secret-var-name\".\n// A friendly name of the secret must be specified. You can NOT specify the Amazon Resource Name (ARN).\n//\n// See https://pkg.go.dev/gocloud.dev/aws#V2ConfigFromURLParams.\n//\n// In addition, the following URL parameters are supported:\n//   - decoder: The decoder to use. Defaults to URLOpener.Decoder, or\n//     runtimevar.BytesDecoder if URLOpener.Decoder is nil.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to New.\n\tOptions Options\n}\n\n// lazySessionOpener obtains the AWS session from the environment on the first\n// call to OpenVariableURL.\ntype lazySessionOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazySessionOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\topener := &URLOpener{}\n\treturn opener.OpenVariableURL(ctx, u)\n}\n\n// Scheme is the URL scheme awssecretsmanager registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"awssecretsmanager\"\n\n// OpenVariableURL opens the variable at the URL's path. See the package doc\n// for more details.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\tcfg, err := gcaws.V2ConfigFromURLParams(ctx, q)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, err)\n\t}\n\treturn OpenVariable(secretsmanager.NewFromConfig(cfg), path.Join(u.Host, u.Path), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the rate at which AWS Secrets Manager is polled.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable backed by the variable name in AWS Secrets Manager,\n// using AWS SDK V2.\n// A friendly name of the secret must be specified. You can NOT specify the Amazon Resource Name (ARN).\n// Secrets Manager returns raw bytes; provide a decoder to decode the raw bytes\n// into the appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(client *secretsmanager.Client, name string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\treturn runtimevar.New(newWatcher(client, name, decoder, opts)), nil\n}\n\nvar OpenVariableV2 = OpenVariable\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\trawGet     *secretsmanager.GetSecretValueOutput\n\trawDesc    *secretsmanager.DescribeSecretOutput\n\tupdateTime time.Time\n\tversionID  string\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tswitch p := i.(type) {\n\tcase **secretsmanager.GetSecretValueOutput:\n\t\t*p = s.rawGet\n\tcase **secretsmanager.DescribeSecretOutput:\n\t\t*p = s.rawDesc\n\tdefault:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// errorState returns a new State with err, unless prevS also represents\n// the same error, in which case it returns nil.\nfunc errorState(err error, prevS driver.State) driver.State {\n\t// Map to the more standard context package error.\n\tif strings.Contains(err.Error(), \"context deadline exceeded\") {\n\t\terr = context.DeadlineExceeded\n\t} else if getErrorCode(err) == \"CancelledError\" {\n\t\terr = context.Canceled\n\t}\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\t// New error.\n\t\treturn s\n\t}\n\tif equivalentError(err, prev.err) {\n\t\t// Same error, return nil to indicate no change.\n\t\treturn nil\n\t}\n\treturn s\n}\n\n// equivalentError returns true iff err1 and err2 represent an equivalent error;\n// i.e., we don't want to return it to the user as a different error.\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tcode1 := getErrorCode(err1)\n\tcode2 := getErrorCode(err2)\n\treturn code1 != \"\" && code1 == code2\n}\n\ntype watcher struct {\n\t// client is the client to use.\n\tclient *secretsmanager.Client\n\t// name is an ID of a secret to retrieve.\n\tname string\n\t// wait is the amount of time to wait between querying AWS.\n\twait time.Duration\n\t// decoder is the decoder that unmarshalls the value in the param.\n\tdecoder *runtimevar.Decoder\n}\n\nfunc newWatcher(client *secretsmanager.Client, name string, decoder *runtimevar.Decoder, opts *Options) *watcher {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\treturn &watcher{\n\t\tclient:  client,\n\t\tname:    name,\n\t\twait:    driver.WaitDuration(opts.WaitDuration),\n\t\tdecoder: decoder,\n\t}\n}\n\nfunc getSecretValue(ctx context.Context, client *secretsmanager.Client, secretID string) (string, []byte, string, *secretsmanager.GetSecretValueOutput, error) {\n\tgetResp, err := client.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{\n\t\tSecretId: aws.String(secretID),\n\t})\n\tif err != nil {\n\t\treturn \"\", nil, \"\", nil, err\n\t}\n\treturn aws.ToString(getResp.VersionId), getResp.SecretBinary, aws.ToString(getResp.SecretString), getResp, nil\n}\n\nfunc describeSecret(ctx context.Context, client *secretsmanager.Client, secretID string) (time.Time, *secretsmanager.DescribeSecretOutput, error) {\n\tdescResp, err := client.DescribeSecret(ctx, &secretsmanager.DescribeSecretInput{\n\t\tSecretId: aws.String(secretID),\n\t})\n\tif err != nil {\n\t\treturn time.Time{}, nil, err\n\t}\n\treturn aws.ToTime(descResp.LastChangedDate), descResp, nil\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\tvar lastVersionID string\n\tif prev != nil {\n\t\tlastVersionID = prev.(*state).versionID\n\t}\n\n\t// GetParameter from S3 to get the current value and version.\n\tnewVersionID, newValBinary, newValString, rawGet, err := getSecretValue(ctx, w.client, w.name)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\tif newVersionID == lastVersionID {\n\t\t// Version hasn't changed, so no change; return nil.\n\t\treturn nil, w.wait\n\t}\n\t// Both SecretBinary and SecretString fields are not empty\n\t// which could indicate some internal Secrets Manager issues.\n\t// Hence, return explicit error instead of choosing one field over another.\n\tif len(newValBinary) > 0 && newValString != \"\" {\n\t\terr = fmt.Errorf(\"invalid %q response: both SecretBinary and SecretString are not empty\", w.name)\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\tdata := newValBinary\n\tif len(data) == 0 {\n\t\tif newValString == \"\" {\n\t\t\terr = fmt.Errorf(\"invalid %q response: both SecretBinary and SecretString are empty\", w.name)\n\t\t\treturn errorState(err, prev), w.wait\n\t\t}\n\t\t// SecretBinary is empty so use SecretString\n\t\tdata = []byte(newValString)\n\t}\n\n\t// DescribeParameters from S3 to get the LastModified date.\n\tnewLastModified, rawDesc, err := describeSecret(ctx, w.client, w.name)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\t// New value (or at least, new version). Decode it.\n\tval, err := w.decoder.Decode(ctx, data)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\treturn &state{\n\t\tval:        val,\n\t\trawGet:     rawGet,\n\t\trawDesc:    rawDesc,\n\t\tupdateTime: newLastModified,\n\t\tversionID:  newVersionID,\n\t}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\treturn errors.As(err, i)\n}\n\nfunc getErrorCode(err error) string {\n\tvar ae smithy.APIError\n\tif errors.As(err, &ae) {\n\t\treturn ae.ErrorCode()\n\t}\n\treturn \"\"\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (w *watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tcode := getErrorCode(err)\n\tec, ok := errorCodeMap[code]\n\tif !ok {\n\t\treturn gcerrors.Unknown\n\t}\n\treturn ec\n}\n\nvar errorCodeMap = map[string]gcerrors.ErrorCode{\n\t(&types.ResourceNotFoundException{}).ErrorCode():        gcerrors.NotFound,\n\t(&types.InvalidParameterException{}).ErrorCode():        gcerrors.InvalidArgument,\n\t(&types.InvalidRequestException{}).ErrorCode():          gcerrors.InvalidArgument,\n\t(&types.InvalidNextTokenException{}).ErrorCode():        gcerrors.InvalidArgument,\n\t(&types.EncryptionFailure{}).ErrorCode():                gcerrors.Internal,\n\t(&types.DecryptionFailure{}).ErrorCode():                gcerrors.Internal,\n\t(&types.InternalServiceError{}).ErrorCode():             gcerrors.Internal,\n\t(&types.ResourceExistsException{}).ErrorCode():          gcerrors.AlreadyExists,\n\t(&types.PreconditionNotMetException{}).ErrorCode():      gcerrors.FailedPrecondition,\n\t(&types.MalformedPolicyDocumentException{}).ErrorCode(): gcerrors.FailedPrecondition,\n\t(&types.LimitExceededException{}).ErrorCode():           gcerrors.ResourceExhausted,\n}\n"
  },
  {
    "path": "runtimevar/awssecretsmanager/awssecretsmanager_test.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awssecretsmanager\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/sha1\"\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/secretsmanager\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/googleapis/gax-go/v2\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/retry\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\n// This constant records the region used for the last --record.\n// If you want to use --record mode,\n// 1. Update this constant to your AWS region.\n// TODO(issue #300): Use Terraform to get this.\nconst region = \"us-east-2\"\n\ntype harness struct {\n\tclient *secretsmanager.Client\n\tcloser func()\n}\n\n// waitForMutation uses check to wait until a mutation has taken effect.\n// The check function should return nil to indicate success (the mutation has\n// taken effect), an error with gcerrors.ErrorCode == NotFound to trigger\n// a retry, or any other error to signal permanent failure.\nfunc waitForMutation(ctx context.Context, check func() error) error {\n\tbackoff := gax.Backoff{Multiplier: 1.0}\n\tvar initial time.Duration\n\tif *setup.Record {\n\t\t// When recording, wait 3 seconds and then poll every 2s.\n\t\tinitial = 3 * time.Second\n\t\tbackoff.Initial = 2 * time.Second\n\t} else {\n\t\t// During replay, we don't wait at all.\n\t\t// The recorded file may have retries, but we don't need to actually wait between them.\n\t\tbackoff.Initial = 1 * time.Millisecond\n\t}\n\tbackoff.Max = backoff.Initial\n\n\t// Sleep before the check, since we know it doesn't take effect right away.\n\ttime.Sleep(initial)\n\n\t// retryIfNotFound returns true if err is NotFound.\n\tretryIfNotFound := func(err error) bool { return gcerrors.Code(err) == gcerrors.NotFound }\n\n\t// Poll until the mtuation is seen.\n\treturn retry.Call(ctx, backoff, retryIfNotFound, check)\n}\n\n// AWS Secrets Manager requires unique token for Create and Update requests to ensure idempotency.\n// From the other side, request data must be deterministic in order to make tests reproducible.\n// generateClientRequestToken generates token which is unique per test session but deterministic.\nfunc generateClientRequestToken(name string, data []byte) string {\n\tconst maxClientRequestTokenLen = 64\n\th := sha1.New()\n\t_, _ = h.Write(data)\n\n\ttoken := fmt.Sprintf(\"%s-%x\", name, h.Sum(nil))\n\n\t// Token must have length less than or equal to 64\n\tif len(token) > maxClientRequestTokenLen {\n\t\ttoken = token[:maxClientRequestTokenLen]\n\t}\n\n\treturn token\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tcfg, _, done, _ := setup.NewAWSv2Config(context.Background(), t, region, false)\n\treturn &harness{\n\t\tclient: secretsmanager.NewFromConfig(cfg),\n\t\tcloser: done,\n\t}, nil\n}\n\nfunc (h *harness) MakeWatcher(_ context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.client, name, decoder, nil), nil\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\tif _, err := h.client.CreateSecret(ctx, &secretsmanager.CreateSecretInput{\n\t\tName:               aws.String(name),\n\t\tClientRequestToken: aws.String(generateClientRequestToken(name, val)),\n\t\tSecretBinary:       val,\n\t}); err != nil {\n\t\treturn err\n\t}\n\t// Secret Manager is only eventually consistent, so we retry until we've\n\t// verified that the mutation was applied. This is still not a guarantee\n\t// but in practice seems to work well enough to make tests repeatable.\n\treturn waitForMutation(ctx, func() error {\n\t\t_, err := h.client.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{SecretId: aws.String(name)})\n\t\tif err == nil {\n\t\t\t// Create was seen.\n\t\t\treturn nil\n\t\t}\n\t\t// Failure; we'll retry if it's a NotFound.\n\t\tw := &watcher{}\n\t\treturn gcerr.New(w.ErrorCode(err), err, 1, \"runtimevar\")\n\t})\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\tif _, err := h.client.PutSecretValue(ctx, &secretsmanager.PutSecretValueInput{\n\t\tClientRequestToken: aws.String(generateClientRequestToken(name, val)),\n\t\tSecretBinary:       val,\n\t\tSecretId:           aws.String(name),\n\t}); err != nil {\n\t\treturn err\n\t}\n\t// Secret Manager is only eventually consistent, so we retry until we've\n\t// verified that the mutation was applied. This is still not a guarantee\n\t// but in practice seems to work well enough to make tests repeatable.\n\treturn waitForMutation(ctx, func() error {\n\t\tvar err error\n\t\tvar bb []byte\n\t\tvar getResp *secretsmanager.GetSecretValueOutput\n\t\tgetResp, err = h.client.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{SecretId: aws.String(name)})\n\t\tif err == nil {\n\t\t\tbb = getResp.SecretBinary\n\t\t}\n\t\tif err != nil {\n\t\t\t// Failure; we'll retry if it's a NotFound, but that's not\n\t\t\t// really expected for an Update.\n\t\t\tw := &watcher{}\n\t\t\treturn gcerr.New(w.ErrorCode(err), err, 1, \"runtimevar\")\n\t\t}\n\t\tif !bytes.Equal(bb, val) {\n\t\t\t// Value hasn't been updated yet, return a NotFound to\n\t\t\t// trigger retry.\n\t\t\treturn gcerr.Newf(gcerr.NotFound, nil, \"updated value not seen yet\")\n\t\t}\n\t\t// Update was seen.\n\t\treturn nil\n\t})\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\tif _, err := h.client.DeleteSecret(ctx, &secretsmanager.DeleteSecretInput{\n\t\tForceDeleteWithoutRecovery: aws.Bool(true),\n\t\tSecretId:                   aws.String(name),\n\t}); err != nil {\n\t\treturn err\n\t}\n\t// Secret Manager is only eventually consistent, so we retry until we've\n\t// verified that the mutation was applied. This is still not a guarantee\n\t// but in practice seems to work well enough to make tests repeatable.\n\t// Note that \"success\" after a delete is a NotFound error, so we massage\n\t// the err returned from DescribeSecret to reflect that.\n\treturn waitForMutation(ctx, func() error {\n\t\t_, err := h.client.DescribeSecret(ctx, &secretsmanager.DescribeSecretInput{SecretId: aws.String(name)})\n\t\tif err == nil {\n\t\t\t// Secret still exists, return a NotFound to trigger a retry.\n\t\t\treturn gcerr.Newf(gcerr.NotFound, nil, \"delete not seen yet\")\n\t\t}\n\t\tw := &watcher{}\n\t\tif w.ErrorCode(err) == gcerrors.NotFound {\n\t\t\t// Delete was seen.\n\t\t\treturn nil\n\t\t}\n\t\t// Other errors are not retryable.\n\t\treturn gcerr.New(w.ErrorCode(err), err, 1, \"runtimevar\")\n\t})\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct {\n}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (v verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar getParam *secretsmanager.GetSecretValueOutput\n\tif !s.As(&getParam) {\n\t\treturn errors.New(\"Snapshot.As failed for GetSecretValueOutput\")\n\t}\n\tvar descParam *secretsmanager.DescribeSecretOutput\n\tif !s.As(&descParam) {\n\t\treturn errors.New(\"Snapshot.As failed for DescribeSecretOutput\")\n\t}\n\treturn nil\n}\n\nfunc (va verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar e smithy.APIError\n\tif !v.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Keeper.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\n// Secrets Manager-specific tests.\n\nfunc TestOpenVariable(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"awssecretsmanager://myvar\", false},\n\t\t// OK, setting region.\n\t\t{\"awssecretsmanager://myvar?region=us-west-1\", false},\n\t\t// OK, setting decoder.\n\t\t{\"awssecretsmanager://myvar?decoder=string\", false},\n\t\t// Invalid decoder.\n\t\t{\"awssecretsmanager://myvar?decoder=notadecoder\", true},\n\t\t// OK, setting wait.\n\t\t{\"awssecretsmanager://myvar?wait=5m\", false},\n\t\t// Invalid wait.\n\t\t{\"awssecretsmanager://myvar?wait=xx\", true},\n\t\t// Invalid parameter.\n\t\t{\"awssecretsmanager://myvar?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tv.Close()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "runtimevar/awssecretsmanager/example_test.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awssecretsmanager_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/secretsmanager\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/awssecretsmanager\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Establish a AWS V2 Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tctx := context.Background()\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *runtimevar.Variable that watches the variable.\n\t// `secret-variable-name` must be a friendly name of the secret, NOT the Amazon Resource Name (ARN).\n\tclient := secretsmanager.NewFromConfig(cfg)\n\tv, err := awssecretsmanager.OpenVariable(client, \"secret-variable-name\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/awssecretsmanager\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// `secret-variable-name` must be a friendly name of the secret, NOT the Amazon Resource Name (ARN).\n\tv, err := runtimevar.OpenVariable(ctx, \"awssecretsmanager://secret-variable-name?region=us-east-2&decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestAs/verify_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg42Dc4DEAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"38827ed1bfd1a813\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"90ecc1ad-8bed-44f3-bd72-44dc2ac5757d\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"32e9bb8b57a693ba\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"181\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2d580836-5d04-4bf1-a4f8-5499aa4317e2\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1tNnRadzgiLCJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiVmVyc2lvbklkIjoidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"4692a867750fd5e6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"843409b5-2323-4a60-9832-d437403819af\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1tNnRadzgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTA2OTJFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ad9968f0d4068e04\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c3ea72ec-11dc-420a-ac5d-54d5537bb161\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1tNnRadzgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTA2OTJFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"e1adc7aef61c09bd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"304\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:13 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"67aee586-92b7-4a11-a3d7-0d1fb8f9daf5\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1tNnRadzgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTA2NjRFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzOTA2OTVFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"dc9041aa6d711935\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"142\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:14 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0c888e84-d408-4d8f-b9af-46c4f5917fb3\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1tNnRadzgiLCJEZWxldGlvbkRhdGUiOjEuNzczOTM0Mzk0MDQyRTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n      }\n    },\n    {\n      \"ID\": \"a9fe07fbae592d17\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b5d13935-4833-4550-8e6f-56c0c908bd90\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1tNnRadzgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTA2NjRFOSwiRGVsZXRlZERhdGUiOjEuNzczOTM0Mzk0MDUxRTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzczODc4NEU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzczOTM0Mzk0MDU3RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"461ea396cf093101\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ded353e8-edc6-45c2-afa7-760f44f543ce\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg4+Fw/2LQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9807eea9d820fa92\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3a7282d1-5cdd-41a0-8af3-58d5fab4385b\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"4f2c0003d0c07162\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"181\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:18 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"18d0853a-b064-47a3-9565-9585a08e21dc\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy10QXF1ZVgiLCJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiVmVyc2lvbklkIjoidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"465e651b8987d237\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:21 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b608a6b6-f65a-41f2-ac99-e3a0c9f700fe\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy10QXF1ZVgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTg4NTFFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"308e29cd3c14aa66\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ff3eace2-7154-4d3e-8b71-fe349eb0a04a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy10QXF1ZVgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTg4NTFFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"6deca769420eefb0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"304\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"927a46c7-4f77-46a9-88c6-beaf7c66d289\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy10QXF1ZVgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTg4MjNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzOTg4NTZFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"298c67b9a4e746ca\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"142\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"40c01bd6-d097-4650-9457-0cfdeb32f644\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy10QXF1ZVgiLCJEZWxldGlvbkRhdGUiOjEuNzczOTM0NDAyMjA2RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n      }\n    },\n    {\n      \"ID\": \"c9753806727a18f0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1abfce70-3d9a-460a-b632-8e5730fe1bdc\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy10QXF1ZVgiLCJDcmVhdGVkRGF0ZSI6MS43NzM5MzQzOTg4MjNFOSwiRGVsZXRlZERhdGUiOjEuNzczOTM0NDAyMjE2RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzczODc4NEU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzczOTM0NDAyMjIzRTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"7fd07c0734b62aa4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:26 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b618ddb5-e776-4a9c-bb9a-2aad56c547a7\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestAs/verify_As.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgZADTGztAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e5e75378dd81adcf\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"740ca705-83b1-4de2-a8de-9e1cbcb18d9e\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"255d4e41eb662826\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"181\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c83f75c6-dc60-494e-8e76-21c3e938d368\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiVmVyc2lvbklkIjoidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"430f308ce3dc00d6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6deb5986-63c0-4cd1-9569-82b8e736ad43\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MTY1ODhFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"bb7f433a694039b4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f7e82c25-7644-4da3-b51a-41d42a37c65b\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MTY1ODhFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4a8c21bcb877e3a1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"304\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4d48501d-d804-4fc6-933f-697f4a1c4156\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MTY1NjNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43MjMwNzUyRTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43MjMwNzY0MTY1OTFFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"0f6e251daeb0bd33\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"142\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:19 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f86fdfd9-54a3-4e99-883a-988fb512ff8b\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJEZWxldGlvbkRhdGUiOjEuNzIzMDc2NDE5ODgzRTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n      }\n    },\n    {\n      \"ID\": \"a1eb7d42b6d189e9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3a79c38e-3e97-4348-92d6-b2333547ab54\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MTY1NjNFOSwiRGVsZXRlZERhdGUiOjEuNzIzMDc2NDE5ODkxRTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDE5ODk4RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"7ce9c22fe4f51b84\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:22 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3519c295-fc5e-46d8-8d8c-0f2b3b76909c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1lOWFpcU8iLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MTY1NjNFOSwiRGVsZXRlZERhdGUiOjEuNzIzMDc2NDE5ODkxRTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDE5ODk4RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"31d4610ea61de62b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2e5cbca3-f4a6-4a7d-b2dc-0314d62db163\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgZIIhB0tgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"a62ed477b68f177d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"20ceff74-442f-4e53-9d89-d952143cdf17\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"449d4b9a6a9586d0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"140\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"181\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"13b90041-9671-41f2-a664-fc67e2355f53\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJOYW1lIjoidmFyaWFibGUtZm9yLWFzIiwiVmVyc2lvbklkIjoidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"186ab8551c0c9f45\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8f2a56f0-d2a9-4906-930e-2c4bc6db205d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MjQ5MzZFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"17f4dcfccb03ca53\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"24cb0ed3-2337-4a2e-8613-8497ccb3ec7d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MjQ5MzZFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlNlY3JldEJpbmFyeSI6ImFHVnNiRzhnZDI5eWJHUT0iLCJWZXJzaW9uSWQiOiJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4d4e5cfc23d4f317\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"304\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:27 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fba00c12-a669-46d6-a848-c71f572f19ac\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MjQ5MTNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43MjMwNzUyRTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43MjMwNzY0MjQ5MzlFOSwiTmFtZSI6InZhcmlhYmxlLWZvci1hcyIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ2YXJpYWJsZS1mb3ItYXMtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"2d047a833716d6c1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"64\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"142\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b1236672-db0f-4f74-9a16-2fd1828d4cbb\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJEZWxldGlvbkRhdGUiOjEuNzIzMDc2NDI4MjQ1RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMifQ==\"\n      }\n    },\n    {\n      \"ID\": \"82406e28e8e978d8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:31 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8739d5c3-8885-4a78-bdec-164f53f34786\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MjQ5MTNFOSwiRGVsZXRlZERhdGUiOjEuNzIzMDc2NDI4MjU1RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDI4MjU5RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"326e9cea4dd29eb1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"335\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:31 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"01d03688-7f89-451d-be30-1305610693fb\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnZhcmlhYmxlLWZvci1hcy1RZFJ5OVUiLCJDcmVhdGVkRGF0ZSI6MS43MjMwNzY0MjQ5MTNFOSwiRGVsZXRlZERhdGUiOjEuNzIzMDc2NDI4MjU1RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDI4MjU5RTksIk5hbWUiOiJ2YXJpYWJsZS1mb3ItYXMiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidmFyaWFibGUtZm9yLWFzLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"dd189d54850cb546\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"30\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InZhcmlhYmxlLWZvci1hcyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4011360a-5822-431c-aaaa-4b0f0b768ab1\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgYhGbnqcAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"f2ac250745a0990b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYUdWc2JHOGdkMjl5YkdRPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"60122a5b-f5f7-47f5-af37-90749dc17538\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUdvRVdZTSIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"b31bf99e99b7d17b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6dcf1fbf-f8c5-4516-bda1-be7d8c9dd29c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUdvRVdZTSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM4NTYwNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d7a9f3537b0e924b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9cb14934-b470-48c0-be13-eb69c169fc1f\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUdvRVdZTSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM4NTYwNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4dfd588a9b2fa91e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ca7efaa2-c282-41c6-9c79-a0362d3f0a72\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUdvRVdZTSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM4NTU3OUU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM4NTYwOEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"f49f49e5209786ce\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:48 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d8e5f89d-acce-495e-bc36-366a15d9edc3\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUdvRVdZTSIsIkRlbGV0aW9uRGF0ZSI6MS43MjMwNzYzODg5MjZFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"99d9f33220a95db1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:51 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b00cde68-c76b-4b85-8308-6ef0433b08e1\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUdvRVdZTSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM4NTU3OUU5LCJEZWxldGVkRGF0ZSI6MS43MjMwNzYzODg5MzZFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43MjMwNzUyRTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43MjMwNzYzODg5NDNFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"e479ed0443641926\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:52 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fe012b83-45ef-4387-b9ca-9f4c6d001fad\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"4a14de3cb4d3fba7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1ed85d0e-131c-4d0f-b553-2d9c8a9c7cd5\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"bd3c8115e73f615b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"154\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wMDc4YmI4ZTVjOWQ4YWJmN2YxZTRlMTRjODdkOTAyMzIzNWI2MjMwIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiWjI5dlpHSjVaU0IzYjNKc1pBPT0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f233906f-0911-4cee-8712-52e1678637aa\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVdKaE5oWiIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAifQ==\"\n      }\n    },\n    {\n      \"ID\": \"1180009a2e2f0e71\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2370f2bb-21fe-41b1-87cd-a3fefdd34d7e\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVdKaE5oWiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM5MzYwNEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"f65fa5627768c742\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"842cee5e-984d-4ebe-8680-198a556bf477\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVdKaE5oWiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM5MzYwNEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"c2d329784dd5534b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e6e301a0-ed9d-44b2-8324-01811679c2d6\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVdKaE5oWiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM5MzU3OEU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM5MzYwOEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"7d3fd817f5976256\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:56 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2646eec1-6cbc-4ada-bcda-f0038a19260a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVdKaE5oWiIsIkRlbGV0aW9uRGF0ZSI6MS43MjMwNzYzOTY5MjJFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"3f9cb44ad6cf985f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"349\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:59 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b5389401-1eaa-4df0-9970-fdb59e0250c2\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVdKaE5oWiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM5MzU3OEU5LCJEZWxldGVkRGF0ZSI6MS43MjMwNzYzOTY5M0U5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM5NjkzNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"9423b8d9d0db3816\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ddcb5774-c1cd-409b-bc6f-9b6fd6ef46cf\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestInvalidJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgYNAGuaKgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"1632d340f34be0c5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"146\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYm05MExXcHpiMjQ9In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8647c373-62c3-4824-81ae-b88639f7bcdd\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLTRZYW1FbSIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTMzMzNjNTk2MTc5MWMyODcwMjgzNjY1ODFhZDc2ZDkyMWNhNjFjYWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"b7267c607fe6e7a0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"288\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"79f71d9d-3b01-43b9-9aa0-3fb51e62cfb0\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLTRZYW1FbSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM2NTE5MUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJibTkwTFdwemIyND0iLCJWZXJzaW9uSWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"3c870cbe9270f7ec\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"288\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"20ee862a-2d7c-4f69-a816-8775efb6767d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLTRZYW1FbSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM2NTE5MUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJibTkwTFdwemIyND0iLCJWZXJzaW9uSWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"d24675827a024aff\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1aaaeff1-13a4-409d-a3d3-a05ebea036a2\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLTRZYW1FbSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM2NTE2OEU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM2NTE5NUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMzMzM2M1OTYxNzkxYzI4NzAyODM2NjU4MWFkNzZkOTIxY2E2MWNhZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"459cb68bc950a8f1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ac1b5590-671e-4295-b424-7af58786e152\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLTRZYW1FbSIsIkRlbGV0aW9uRGF0ZSI6MS43MjMwNzYzNjg0OTdFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"f529fb8e9d859f1f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:31 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"47073e41-d4b0-40ae-b683-f58ddb2219f5\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLTRZYW1FbSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM2NTE2OEU5LCJEZWxldGVkRGF0ZSI6MS43MjMwNzYzNjg1MDdFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43MjMwNzUyRTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43MjMwNzYzNjg1MTFFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTMzMzNjNTk2MTc5MWMyODcwMjgzNjY1ODFhZDc2ZDkyMWNhNjFjYWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"12854ed0aae16e73\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d69a6ed5-31e8-4227-8134-7b5fe02436e4\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgYFFABmpgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fdf4ab7f4cf9e2c7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wNjllMGIzNTU3ZDExZjNiNTg5OGE3YmI3ZTE4Mzg0ZTMxMjVjYWJjIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiV3dwN0lrNWhiV1VpT2lBaVJXUWlMQ0FpVkdWNGRDSTZJQ0pMYm05amF5QnJibTlqYXk0aWZTd0tleUpPWVcxbElqb2dJbE5oYlNJc0lDSlVaWGgwSWpvZ0lsZG9ieWR6SUhSb1pYSmxQeUo5Q2wwPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:17 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2e37cabe-e1b5-42d8-b91f-96b49c5699be\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVphdXJWbiIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTA2OWUwYjM1NTdkMTFmM2I1ODk4YTdiYjdlMTgzODRlMzEyNWNhYmMifQ==\"\n      }\n    },\n    {\n      \"ID\": \"00be7a10a5540ade\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"388\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"90ce6f29-9e1c-4d13-8f70-c1a2eb8db279\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVphdXJWbiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM1NzUwNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJXd3A3SWs1aGJXVWlPaUFpUldRaUxDQWlWR1Y0ZENJNklDSkxibTlqYXlCcmJtOWpheTRpZlN3S2V5Sk9ZVzFsSWpvZ0lsTmhiU0lzSUNKVVpYaDBJam9nSWxkb2J5ZHpJSFJvWlhKbFB5SjlDbDA9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMDY5ZTBiMzU1N2QxMWYzYjU4OThhN2JiN2UxODM4NGUzMTI1Y2FiYyIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"6589f5d0c8f2d34c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"388\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2808a418-be9f-4af7-aa9b-146b64cd7069\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVphdXJWbiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM1NzUwNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJXd3A3SWs1aGJXVWlPaUFpUldRaUxDQWlWR1Y0ZENJNklDSkxibTlqYXlCcmJtOWpheTRpZlN3S2V5Sk9ZVzFsSWpvZ0lsTmhiU0lzSUNKVVpYaDBJam9nSWxkb2J5ZHpJSFJvWlhKbFB5SjlDbDA9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMDY5ZTBiMzU1N2QxMWYzYjU4OThhN2JiN2UxODM4NGUzMTI1Y2FiYyIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7ce70562c939f4ea\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"42381e06-43ad-4f5e-b382-b931cafdba0a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVphdXJWbiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM1NzQ4MUU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM1NzUwOUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDY5ZTBiMzU1N2QxMWYzYjU4OThhN2JiN2UxODM4NGUzMTI1Y2FiYyI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"610a9e56a5f677cc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"98a1e763-eef7-4d30-93e6-85b544672c66\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVphdXJWbiIsIkRlbGV0aW9uRGF0ZSI6MS43MjMwNzYzNjA4MjJFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"005a8ce48c10f21b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b0393fb6-c7ae-4fff-b934-2600ea2a5501\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVphdXJWbiIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM1NzQ4MUU5LCJEZWxldGVkRGF0ZSI6MS43MjMwNzYzNjA4MzNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43MjMwNzUyRTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43MjMwNzYzNjA4MzhFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTA2OWUwYjM1NTdkMTFmM2I1ODk4YTdiYjdlMTgzODRlMzEyNWNhYmMiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"589c46e1191f01e5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:24 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bc55a142-e457-4bdc-9ef9-0fd377ba9242\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestNonExistentVariable.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgX4DSuMEwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"92b8718d3a30881a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"29\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6ImRvZXMtbm90LWV4aXN0In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d0c55a01-c8de-44b6-bbef-7c6ca6c36c6b\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestString.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgX4F/72ewAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"ae512b51a0ffd19c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYUdWc2JHOGdkMjl5YkdRPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"62c3905e-6889-46d1-9646-ee6b6c9a4f97\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUVmQXNtdCIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"9409eaf7eb9007aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"820dc6f9-70be-4dd1-8e64-870156ab6297\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUVmQXNtdCIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM0NDU5NUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"549f7b61918fe9f8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c8533964-10aa-4441-9efe-05e3cf416e29\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUVmQXNtdCIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM0NDU5NUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"0adba87ca6ab2203\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"318\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7cdcb0f5-dc93-415c-a3d1-ec23248a6743\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUVmQXNtdCIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM0NDU3RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2MzQ0NTk4RTksIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIjpbIkFXU0NVUlJFTlQiXX19\"\n      }\n    },\n    {\n      \"ID\": \"ca97901e7ea923b0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ef2b3795-bf8b-4d0a-9418-e079463b1968\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUVmQXNtdCIsIkRlbGV0aW9uRGF0ZSI6MS43MjMwNzYzNTI5MTNFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"e3c16638f79cddc8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"349\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"11e6a1ba-abfd-4ddf-ba9c-7b99c54a189b\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLUVmQXNtdCIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM0NDU3RTksIkRlbGV0ZWREYXRlIjoxLjcyMzA3NjM1MjkyMkU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM1MjkyOUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"500e47bb5fea4287\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1ad09c40-0d8a-409b-beef-6e630642823a\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestUpdate.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgYVETQGPQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"82b5beeb65529c07\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYUdWc2JHOGdkMjl5YkdRPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:33 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6cad8177-f705-4ec1-919d-fef97c3270b1\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"bbbf9d1d7cb49b56\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cd3d9c03-a1f2-4d69-b7b9-30864c5a64dd\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ2N0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"6af6d348ab564892\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0d88c9df-2f6a-4015-a91e-7009314e6c13\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ2N0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"f3901b9ecb9b6c74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"318\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9bef7fe0-f482-4cfc-8789-dc9289909868\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ0RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2MzczNDcxRTksIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIjpbIkFXU0NVUlJFTlQiXX19\"\n      }\n    },\n    {\n      \"ID\": \"0886e0d21c0529e8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c2947dd8-09c0-4eda-a293-b401642669bc\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ2N0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"862ec5d58dde5330\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"158\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.PutSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wMDc4YmI4ZTVjOWQ4YWJmN2YxZTRlMTRjODdkOTAyMzIzNWI2MjMwIiwiU2VjcmV0QmluYXJ5IjoiWjI5dlpHSjVaU0IzYjNKc1pBPT0iLCJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"227\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2763739a-3d1f-4adc-b8e4-c6b5cf774e95\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"ce4fc3ae4b671afd\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1743d11a-92a2-4b9c-811d-e6320919ddc6\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3Njg2NUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"54b7a0e05bddbeb8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8f59a286-050f-4a72-9500-26f411b1dca4\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3Njg2NUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"9ae67fd4811cdf07\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"398\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"7a91123a-9da8-4523-8130-ae6bb58040e6\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ0RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2Mzc2ODY5RTksIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wMDc4YmI4ZTVjOWQ4YWJmN2YxZTRlMTRjODdkOTAyMzIzNWI2MjMwIjpbIkFXU0NVUlJFTlQiXSwidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NQUkVWSU9VUyJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"fefd523fe4544af9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:39 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2811a048-57b1-4659-ab45-f1d60f76adf9\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkRlbGV0aW9uRGF0ZSI6MS43MjMwNzYzODAxMzVFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"af2ae070e049791d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"429\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:42 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9e2f8432-6004-436c-8870-890cf5f07bb4\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ0RTksIkRlbGV0ZWREYXRlIjoxLjcyMzA3NjM4MDE0OEU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM4MDE1NEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl0sInRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTUFJFVklPVVMiXX19\"\n      }\n    },\n    {\n      \"ID\": \"827844f6a7fc44b6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"429\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:43 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9c143a37-8a91-4942-b335-c0c7810bea4c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXIzSHdVWSIsIkNyZWF0ZWREYXRlIjoxLjcyMzA3NjM3MzQ0RTksIkRlbGV0ZWREYXRlIjoxLjcyMzA3NjM4MDE0OEU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjcyMzA3NTJFOSwiTGFzdENoYW5nZWREYXRlIjoxLjcyMzA3NjM4MDE1NEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl0sInRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTUFJFVklPVVMiXX19\"\n      }\n    },\n    {\n      \"ID\": \"73c29d8c1ab6674c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:19:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4b838475-9906-4c92-9d1d-120898381351\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestConformanceV2/TestUpdateWithErrors.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7eRgYxM3lkAgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"e7378230dd7a0fd9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJTZWNyZXRCaW5hcnkiOiJXM3NpVG1GdFpTSTZJQ0pHYjI4aUxDQWlWR1Y0ZENJNklDSkNZWElpZlYwPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"221\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:02 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ca78b1b8-1a5a-45c6-849d-b2e8d86cbed0\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIn0=\"\n      }\n    },\n    {\n      \"ID\": \"d0fd50ad8a23e23e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6ea93183-3dbf-4019-81ca-256d7b45e562\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDAyMDU4RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiVzNzaVRtRnRaU0k2SUNKR2IyOGlMQ0FpVkdWNGRDSTZJQ0pDWVhJaWZWMD0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"4e31626782f9baa1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b9c130e3-0b1d-4aad-b2f5-6b42f044bb2d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDAyMDU4RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiVzNzaVRtRnRaU0k2SUNKR2IyOGlMQ0FpVkdWNGRDSTZJQ0pDWVhJaWZWMD0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"91b451a2f6cb7da1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"344\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4015d3f5-d355-472f-9614-29b985de30e4\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDAyMDM0RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDAyMDYyRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNDcyYWJkMjJkNzlkMDYyMDNlZDcxYjg5Nzk5YmU2YzMiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"a82ea2278ba525f1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.PutSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dSIsIlNlY3JldElkIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:05 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"92b8b569-5e1e-47c6-a00b-b59fb5a1d224\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"12414765af83e798\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"317\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ac830d92-14b5-41be-8fa7-0670f74050c9\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDA1MzkyRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dSIsIlZlcnNpb25JZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNzA1ZDExNjEwOGM2YmZjOWQxOGUyNTI2ZDA4OWQ2YzEiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"877d3a3eda335390\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"317\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"39166b95-606e-4fb5-933e-a13815b0224a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDA1MzkyRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dSIsIlZlcnNpb25JZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNzA1ZDExNjEwOGM2YmZjOWQxOGUyNTI2ZDA4OWQ2YzEiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"d977128844c6e41c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"427\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f325093b-5711-42b2-a8c6-f94e5b8ec41f\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDAyMDM0RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDA1Mzk3RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNDcyYWJkMjJkNzlkMDYyMDNlZDcxYjg5Nzk5YmU2YzMiOlsiQVdTUFJFVklPVVMiXSwidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvci03MDVkMTE2MTA4YzZiZmM5ZDE4ZTI1MjZkMDg5ZDZjMSI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"5c56ceda4b302ba8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"172\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.PutSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dU1nPT0iLCJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"36576310-8e5c-4918-ac84-2a2ccd823c1d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"94010ae5fa45f87b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"663ae774-965d-4d82-9a1d-e986b438f731\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDA4NjgyRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dU1nPT0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"d0785179280f168b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"88f1dbef-11a0-4989-8566-36e5eaf76a5c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDA4NjgyRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dU1nPT0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"6464d4fef7c1337c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"427\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"de015a36-debf-402b-bb54-5155ba0d9671\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDAyMDM0RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDA4Njg2RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNjQ1NWE3Mjg5ZDg2NjQ0ZTc5MGJhNTk2MmI0MTYxMTAiOlsiQVdTQ1VSUkVOVCJdLCJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIjpbIkFXU1BSRVZJT1VTIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"6a15da7b83185ceb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"80\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8b6cfcc2-3bd2-4eed-a418-ce7e606352c1\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiRGVsZXRpb25EYXRlIjoxLjcyMzA3NjQxMTk2MUU5LCJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciJ9\"\n      }\n    },\n    {\n      \"ID\": \"2b580935647b5985\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"457\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6233b4aa-cc9c-495f-9f02-b1db1a4a498c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NjIzODAyMjU3MjI6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3Ita3VrTHJZIiwiQ3JlYXRlZERhdGUiOjEuNzIzMDc2NDAyMDM0RTksIkRlbGV0ZWREYXRlIjoxLjcyMzA3NjQxMTk3RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzIzMDc1MkU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzIzMDc2NDExOTc1RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNjQ1NWE3Mjg5ZDg2NjQ0ZTc5MGJhNTk2MmI0MTYxMTAiOlsiQVdTQ1VSUkVOVCJdLCJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIjpbIkFXU1BSRVZJT1VTIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"5657bca3256a2c5d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 08 Aug 2024 00:20:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d7ef5491-2eb0-4c5a-badb-f7e0f4edc3f1\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestDelete.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg4VGvfXdQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"cf6e5738ba47b739\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYUdWc2JHOGdkMjl5YkdRPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1d27f6cf-71c9-4916-bb8c-9cb6571a35d5\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"d7f5e20c20a5c2fc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"19bf46da-e111-4d5a-afd0-1cd41c8bb8dc\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM1NzY5NEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"ee098634af09c922\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"75de0cdb-7c41-441d-ba0d-01b690a414e5\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM1NzY5NEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"d04f5e0d3e8abc91\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:40 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"651941a3-1c77-488c-8dc9-b39fb7c87037\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM1NzY1NkU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDM1NzY5OUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"50c88dfb31ce7041\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:41 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4fb8fd70-0d28-4464-8358-2eddae7b307d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkRlbGV0aW9uRGF0ZSI6MS43NzM5MzQzNjEwNTRFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"059eb4d04eb32803\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fb798e8d-3ecf-41de-82ef-0197cff5aed6\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM1NzY1NkU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNjEwNjNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNjEwNzJFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"4b4844f635ea9d44\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:44 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"38349852-ff64-4e74-a32c-ba18cb6a9216\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM1NzY1NkU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNjEwNjNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNjEwNzJFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"69f588b9aedf1b21\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:45 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cd49127d-9335-4df7-b093-3129c3acab40\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLVAyMXNaaiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM1NzY1NkU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNjEwNjNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNjEwNzJFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"fb50dd29ca4be664\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f8667cbe-009b-4bd4-8680-89e5dbe333ed\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"aecab3d83642d098\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e6bbbf08-be9b-42a6-bbbb-272f97a91abd\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    },\n    {\n      \"ID\": \"7a66d30b43f1a8d7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"154\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wMDc4YmI4ZTVjOWQ4YWJmN2YxZTRlMTRjODdkOTAyMzIzNWI2MjMwIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiWjI5dlpHSjVaU0IzYjNKc1pBPT0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:46 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f8205c4f-1e0e-4502-b1a3-5c9feb68528f\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRKVm5uSSIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAifQ==\"\n      }\n    },\n    {\n      \"ID\": \"eeb8327b15d537d4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6b1c3359-da4b-458f-9e4a-9273965ed475\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRKVm5uSSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM2NjYwOUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"b2ded1b913c5e146\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"848b1e4c-d667-45ee-99a9-f1cb67a836d2\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRKVm5uSSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM2NjYwOUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"a64f8ed6cf6329d1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:49 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"658440f4-7780-4337-98d8-edb1114ae914\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRKVm5uSSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM2NjU3OEU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDM2NjYxMkU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"1c45d2b618dc5b1e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:50 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"60de5b45-0c56-4c91-a33f-e87ee7eb8590\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRKVm5uSSIsIkRlbGV0aW9uRGF0ZSI6MS43NzM5MzQzNjk5NTlFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"a1fc7acfb87b752b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:53 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f291be83-eb2c-4eca-8a8c-e0200eb139ff\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRKVm5uSSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM2NjU3OEU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNjk5NjVFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNjk5NzFFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"401bb215c5847f8c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2ef60675-f3bd-4a7b-804d-8867e3c5ab60\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestInvalidJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg4AJpa6pgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"dfce9de0ca459e82\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"146\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYm05MExXcHpiMjQ9In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0985f9bd-259c-4246-b7ae-5a65c8effee5\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXdKSDdmbCIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTMzMzNjNTk2MTc5MWMyODcwMjgzNjY1ODFhZDc2ZDkyMWNhNjFjYWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"58c150b476a8b8c9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"288\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"d3049823-ecc9-47bf-ad95-1100f1e502cb\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXdKSDdmbCIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMzNjg4NkU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJibTkwTFdwemIyND0iLCJWZXJzaW9uSWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"c0eb27a971d8eacc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"288\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6498080d-5700-4f50-b08b-6c6171733bf7\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXdKSDdmbCIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMzNjg4NkU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJibTkwTFdwemIyND0iLCJWZXJzaW9uSWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"5b692f2f6b14765b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"318\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5f79649e-b989-4dce-bee9-91a0509d9491\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXdKSDdmbCIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMzNjg1MUU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDMzNjg5RTksIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0zMzMzYzU5NjE3OTFjMjg3MDI4MzY2NTgxYWQ3NmQ5MjFjYTYxY2FkIjpbIkFXU0NVUlJFTlQiXX19\"\n      }\n    },\n    {\n      \"ID\": \"655d61f9f21e45f1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:20 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6d00ec79-aa99-4473-8177-adb6bcb977b0\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXdKSDdmbCIsIkRlbGV0aW9uRGF0ZSI6MS43NzM5MzQzNDAyNDdFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"280532ba45fea71c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:23 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"bac67e08-879c-478a-817e-9ab95b7384d2\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXdKSDdmbCIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMzNjg1MUU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNDAyNTdFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNDAyNjNFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTMzMzNjNTk2MTc5MWMyODcwMjgzNjY1ODFhZDc2ZDkyMWNhNjFjYWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"a2cac6a0c7470cc8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"efce6cab-b470-44e8-90e1-228ff1f81408\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestJSON.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg34IRiV4gAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"3b6c77f89b32e88e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"246\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wNjllMGIzNTU3ZDExZjNiNTg5OGE3YmI3ZTE4Mzg0ZTMxMjVjYWJjIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiV3dwN0lrNWhiV1VpT2lBaVJXUWlMQ0FpVkdWNGRDSTZJQ0pMYm05amF5QnJibTlqYXk0aWZTd0tleUpPWVcxbElqb2dJbE5oYlNJc0lDSlVaWGgwSWpvZ0lsZG9ieWR6SUhSb1pYSmxQeUo5Q2wwPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"82537010-d847-4818-8a11-c55b36ab07e5\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTA2OWUwYjM1NTdkMTFmM2I1ODk4YTdiYjdlMTgzODRlMzEyNWNhYmMifQ==\"\n      }\n    },\n    {\n      \"ID\": \"da577f238a3745ce\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"388\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:11 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2b397555-d0ee-45a2-b32b-c8a763c9aaa6\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMyODc5OEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJXd3A3SWs1aGJXVWlPaUFpUldRaUxDQWlWR1Y0ZENJNklDSkxibTlqYXlCcmJtOWpheTRpZlN3S2V5Sk9ZVzFsSWpvZ0lsTmhiU0lzSUNKVVpYaDBJam9nSWxkb2J5ZHpJSFJvWlhKbFB5SjlDbDA9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMDY5ZTBiMzU1N2QxMWYzYjU4OThhN2JiN2UxODM4NGUzMTI1Y2FiYyIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"da37a5f2c9cba0ac\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"388\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b6f9f405-ddb7-4072-9405-3626e2ec983e\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMyODc5OEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJXd3A3SWs1aGJXVWlPaUFpUldRaUxDQWlWR1Y0ZENJNklDSkxibTlqYXlCcmJtOWpheTRpZlN3S2V5Sk9ZVzFsSWpvZ0lsTmhiU0lzSUNKVVpYaDBJam9nSWxkb2J5ZHpJSFJvWlhKbFB5SjlDbDA9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMDY5ZTBiMzU1N2QxMWYzYjU4OThhN2JiN2UxODM4NGUzMTI1Y2FiYyIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"f6029e8027e9650f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"867f5d37-4246-4a63-bba5-5c30fdad2f1c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMyODc1OEU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDMyODgwM0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDY5ZTBiMzU1N2QxMWYzYjU4OThhN2JiN2UxODM4NGUzMTI1Y2FiYyI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"d194a85fc33b6c9b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:12 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6bcaae57-512d-4e28-bc31-99044ebfc308\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIkRlbGV0aW9uRGF0ZSI6MS43NzM5MzQzMzIxNTZFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"aec138f3bad09125\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4c9cfb15-9448-4dfe-a6ed-ae67d1a6971a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMyODc1OEU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzMzIxNjRFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzMzIxNjlFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTA2OWUwYjM1NTdkMTFmM2I1ODk4YTdiYjdlMTgzODRlMzEyNWNhYmMiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"9af7bd7df4ff11a2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:15 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"951f398b-b0d8-43f1-ac8b-f5c8a464b472\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLU5YY05RbyIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMyODc1OEU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzMzIxNjRFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzMzIxNjlFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTA2OWUwYjM1NTdkMTFmM2I1ODk4YTdiYjdlMTgzODRlMzEyNWNhYmMiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"19ed5ddb8e89f712\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:16 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"79c82300-caf5-45c6-8cff-1370c40e1dc8\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestNonExistentVariable.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3qJKY/FQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"9c689d04aa605e98\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"29\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6ImRvZXMtbm90LWV4aXN0In0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"17978698-fdf8-4543-9270-6a3ae5008f1a\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestString.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3rClTPkAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4a583881ebe0ba11\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYUdWc2JHOGdkMjl5YkdRPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:55 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b898947d-e86f-4556-a632-e65a18e30472\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLWp3RGZxZSIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"61bc36195df4756a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"23564970-228d-4634-83a6-8c5a926c452e\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLWp3RGZxZSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMxNTQwM0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"eb2c3934364a51ac\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"fe81d395-7cd1-45c3-a888-92a7cbc034c7\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLWp3RGZxZSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMxNTQwM0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"7eab00f9c2138253\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1a5183b3-67ef-46cd-863e-d16a70baab47\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLWp3RGZxZSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMxNTM3MkU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDMxNTQwN0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"c2d62c662e77b1b2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:03 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"471bddc8-e0d4-43c8-a36f-7030d94a81b3\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLWp3RGZxZSIsIkRlbGV0aW9uRGF0ZSI6MS43NzM5MzQzMjM3NjFFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"f95522284aaa8017\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"350\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:06 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0df94c27-331b-4381-979e-b0a57b2ab00d\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLWp3RGZxZSIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDMxNTM3MkU5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzMjM3NjlFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzMjM3NzRFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"ee405e37b5ba9a58\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cc08d9bb-bc98-4d43-9105-2f59c98d62fd\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestUpdate.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg4JEZVaAAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"211e30c752a113cb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"150\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0yYWFlNmMzNWM5NGZjZmI0MTVkYmU5NWY0MDhiOWNlOTFlZTg0NmVkIiwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIiwiU2VjcmV0QmluYXJ5IjoiYUdWc2JHOGdkMjl5YkdRPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"196\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:25 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5079ca96-d777-4c8f-9d21-28331be54afe\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQifQ==\"\n      }\n    },\n    {\n      \"ID\": \"f1d70ba6ac5b80e2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"591187ad-7f66-41a8-a060-329d42a61f3e\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTUyNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"14ee2780c063b86f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f86eafc4-e153-4848-bacf-010b7c7c5d79\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTUyNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"4b9520303d9a6c6b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"319\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4bcf6e7a-3101-4270-a1df-05cfb9461516\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTQ5N0U5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDM0NTUyOUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"2427f684d29cdef5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"292\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:28 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"01b033de-43a0-42c9-b5e4-29392f45a71c\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTUyNUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJhR1ZzYkc4Z2QyOXliR1E9IiwiVmVyc2lvbklkIjoidGVzdC1jb25maWctdmFyaWFibGUtMmFhZTZjMzVjOTRmY2ZiNDE1ZGJlOTVmNDA4YjljZTkxZWU4NDZlZCIsIlZlcnNpb25TdGFnZXMiOlsiQVdTQ1VSUkVOVCJdfQ==\"\n      }\n    },\n    {\n      \"ID\": \"c88a51cc1d82f776\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"158\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.PutSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZS0wMDc4YmI4ZTVjOWQ4YWJmN2YxZTRlMTRjODdkOTAyMzIzNWI2MjMwIiwiU2VjcmV0QmluYXJ5IjoiWjI5dlpHSjVaU0IzYjNKc1pBPT0iLCJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"227\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:29 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6068d38b-5583-46ee-bbaa-47ce6b43815a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIk5hbWUiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"49602d4f96cc3476\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"22301a5f-ba15-4f32-b542-d3c1a978ed42\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0ODk5N0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"ca446bbe7e6a5f01\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"296\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"aa0ec954-d7dc-496d-a043-34751a023bba\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0ODk5N0U5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJTZWNyZXRCaW5hcnkiOiJaMjl2WkdKNVpTQjNiM0pzWkE9PSIsIlZlcnNpb25JZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlLTAwNzhiYjhlNWM5ZDhhYmY3ZjFlNGUxNGM4N2Q5MDIzMjM1YjYyMzAiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"de203f7b48b9f0bb\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"399\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4913de66-87e6-4c84-ad74-2519783387c2\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTQ5N0U5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDM0OTAwMUU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl0sInRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTUFJFVklPVVMiXX19\"\n      }\n    },\n    {\n      \"ID\": \"f17fff068220745f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"69\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LWNvbmZpZy12YXJpYWJsZSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"152\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:32 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"6feb271b-acf3-4d2e-9b19-483f64698730\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkRlbGV0aW9uRGF0ZSI6MS43NzM5MzQzNTIzMjRFOSwiTmFtZSI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n      }\n    },\n    {\n      \"ID\": \"9ac022f809011e93\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"429\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:35 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"841b36e7-7ad6-450c-9ba4-d56589812894\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTQ5N0U5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNTIzMzNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNTIzNEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl0sInRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTUFJFVklPVVMiXX19\"\n      }\n    },\n    {\n      \"ID\": \"9fc4080489636df8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"429\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:36 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"200f0050-5e4e-4781-a4b0-3762f19e017e\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtY29uZmlnLXZhcmlhYmxlLXRUSTRiWiIsIkNyZWF0ZWREYXRlIjoxLjc3MzkzNDM0NTQ5N0U5LCJEZWxldGVkRGF0ZSI6MS43NzM5MzQzNTIzMzNFOSwiTGFzdEFjY2Vzc2VkRGF0ZSI6MS43NzM4Nzg0RTksIkxhc3RDaGFuZ2VkRGF0ZSI6MS43NzM5MzQzNTIzNEU5LCJOYW1lIjoidGVzdC1jb25maWctdmFyaWFibGUiLCJWZXJzaW9uSWRzVG9TdGFnZXMiOnsidGVzdC1jb25maWctdmFyaWFibGUtMDA3OGJiOGU1YzlkOGFiZjdmMWU0ZTE0Yzg3ZDkwMjMyMzViNjIzMCI6WyJBV1NDVVJSRU5UIl0sInRlc3QtY29uZmlnLXZhcmlhYmxlLTJhYWU2YzM1Yzk0ZmNmYjQxNWRiZTk1ZjQwOGI5Y2U5MWVlODQ2ZWQiOlsiQVdTUFJFVklPVVMiXX19\"\n      }\n    },\n    {\n      \"ID\": \"d2d3b118c7045da7\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"35\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtY29uZmlnLXZhcmlhYmxlIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:37 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"cd7d0319-c1de-476b-8db3-c487ba0363aa\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/awssecretsmanager/testdata/TestConformance/TestUpdateWithErrors.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg4mD3KcdwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"bda06799903f3216\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"192\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.CreateSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJTZWNyZXRCaW5hcnkiOiJXM3NpVG1GdFpTSTZJQ0pHYjI4aUxDQWlWR1Y0ZENJNklDSkNZWElpZlYwPSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"221\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:54 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"81ea6c28-dc05-4786-972b-b3fe54794db0\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIn0=\"\n      }\n    },\n    {\n      \"ID\": \"17f852a2266f5035\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ed7272c2-1f95-406a-9342-c89b19eb6fc1\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjUxRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiVzNzaVRtRnRaU0k2SUNKR2IyOGlMQ0FpVkdWNGRDSTZJQ0pDWVhJaWZWMD0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"9e82fd64c7c11961\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"345\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"95d6883d-4121-48e1-8a0c-92a81a918993\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjUxRTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiVzNzaVRtRnRaU0k2SUNKR2IyOGlMQ0FpVkdWNGRDSTZJQ0pDWVhJaWZWMD0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTQ3MmFiZDIyZDc5ZDA2MjAzZWQ3MWI4OTc5OWJlNmMzIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"ce1b0c2d738b2197\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"344\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:57 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ce90e07b-052a-4fa2-9419-057ff5f8370b\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjA4RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzczODc4NEU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzczOTM0Mzc0NjU2RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNDcyYWJkMjJkNzlkMDYyMDNlZDcxYjg5Nzk5YmU2YzMiOlsiQVdTQ1VSUkVOVCJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"09e1df355c7e9d5f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"168\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.PutSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dSIsIlNlY3JldElkIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:32:58 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"8f63dc6c-59cb-41c0-a979-1dca11c14585\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"310d95223beceb61\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"317\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"348f91ae-5ebd-431a-989e-9e8d239428c3\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc4MDI0RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dSIsIlZlcnNpb25JZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNzA1ZDExNjEwOGM2YmZjOWQxOGUyNTI2ZDA4OWQ2YzEiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"5319b0126b1a34d5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"317\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b5e0b207-e2b2-438a-8b8e-04a8b4374f9a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc4MDI0RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dSIsIlZlcnNpb25JZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNzA1ZDExNjEwOGM2YmZjOWQxOGUyNTI2ZDA4OWQ2YzEiLCJWZXJzaW9uU3RhZ2VzIjpbIkFXU0NVUlJFTlQiXX0=\"\n      }\n    },\n    {\n      \"ID\": \"d8f8db49ac6ae992\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"427\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c92cc9d2-6ad3-42e0-8010-b1290f0204b6\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjA4RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzczODc4NEU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzczOTM0Mzc4MDI3RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNDcyYWJkMjJkNzlkMDYyMDNlZDcxYjg5Nzk5YmU2YzMiOlsiQVdTUFJFVklPVVMiXSwidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvci03MDVkMTE2MTA4YzZiZmM5ZDE4ZTI1MjZkMDg5ZDZjMSI6WyJBV1NDVVJSRU5UIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"030000b3320e856c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"172\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.PutSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDbGllbnRSZXF1ZXN0VG9rZW4iOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dU1nPT0iLCJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"252\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:01 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"ce72a5b0-82d7-4e22-ac8c-0ea7a14025a1\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiTmFtZSI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IiLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"b917eba74d01f9af\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"293f6b52-59c6-4cfd-8ea0-7acd5e8e57f3\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0MzgxMzY1RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dU1nPT0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"c0e00f937042f9cc\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.GetSecretValue\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"321\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c24d95ad-2ea1-4305-bebf-d1c3f27e0436\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0MzgxMzY1RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiU2VjcmV0QmluYXJ5IjoiYVc1MllXeHBaQzFxYzI5dU1nPT0iLCJWZXJzaW9uSWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIiwiVmVyc2lvblN0YWdlcyI6WyJBV1NDVVJSRU5UIl19\"\n      }\n    },\n    {\n      \"ID\": \"1c55521d99f52d36\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"427\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"5874805d-fd08-4f00-8934-6970d5e25423\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjA4RTksIkxhc3RBY2Nlc3NlZERhdGUiOjEuNzczODc4NEU5LCJMYXN0Q2hhbmdlZERhdGUiOjEuNzczOTM0MzgxMzY5RTksIk5hbWUiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIiwiVmVyc2lvbklkc1RvU3RhZ2VzIjp7InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItNjQ1NWE3Mjg5ZDg2NjQ0ZTc5MGJhNTk2MmI0MTYxMTAiOlsiQVdTQ1VSUkVOVCJdLCJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTcwNWQxMTYxMDhjNmJmYzlkMThlMjUyNmQwODlkNmMxIjpbIkFXU1BSRVZJT1VTIl19fQ==\"\n      }\n    },\n    {\n      \"ID\": \"adf549df46106020\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"80\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DeleteSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJGb3JjZURlbGV0ZVdpdGhvdXRSZWNvdmVyeSI6dHJ1ZSwiU2VjcmV0SWQiOiJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"174\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:04 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2ccb90bf-d766-42de-b76a-64b77a27c766\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiRGVsZXRpb25EYXRlIjoxLjc3MzkzNDM4NDY5MUU5LCJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciJ9\"\n      }\n    },\n    {\n      \"ID\": \"bcb036d7b0acf478\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"458\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:07 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e87fcd08-d869-4840-a7db-6df48e19700a\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjA4RTksIkRlbGV0ZWREYXRlIjoxLjc3MzkzNDM4NDY5OUU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDM4NDcwM0U5LCJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIjpbIkFXU0NVUlJFTlQiXSwidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvci03MDVkMTE2MTA4YzZiZmM5ZDE4ZTI1MjZkMDg5ZDZjMSI6WyJBV1NQUkVWSU9VUyJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"29bd93a055f6e950\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"458\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:08 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"0450ca0a-9a92-45cf-88c6-3b711536a0bd\"\n          ]\n        },\n        \"Body\": \"eyJBUk4iOiJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6c2VjcmV0OnRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3ItUzdudkNYIiwiQ3JlYXRlZERhdGUiOjEuNzczOTM0Mzc0NjA4RTksIkRlbGV0ZWREYXRlIjoxLjc3MzkzNDM4NDY5OUU5LCJMYXN0QWNjZXNzZWREYXRlIjoxLjc3Mzg3ODRFOSwiTGFzdENoYW5nZWREYXRlIjoxLjc3MzkzNDM4NDcwM0U5LCJOYW1lIjoidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvciIsIlZlcnNpb25JZHNUb1N0YWdlcyI6eyJ0ZXN0LXVwZGF0aW5nLXZhcmlhYmxlLXRvLWVycm9yLTY0NTVhNzI4OWQ4NjY0NGU3OTBiYTU5NjJiNDE2MTEwIjpbIkFXU0NVUlJFTlQiXSwidGVzdC11cGRhdGluZy12YXJpYWJsZS10by1lcnJvci03MDVkMTE2MTA4YzZiZmM5ZDE4ZTI1MjZkMDg5ZDZjMSI6WyJBV1NQUkVWSU9VUyJdfX0=\"\n      }\n    },\n    {\n      \"ID\": \"17a156184804c8b1\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://secretsmanager.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"46\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"secretsmanager.DescribeSecret\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJTZWNyZXRJZCI6InRlc3QtdXBkYXRpbmctdmFyaWFibGUtdG8tZXJyb3IifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Content-Length\": [\n            \"99\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:33:10 GMT\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"89a2be67-bd49-44d1-bb1a-dd69ca09c281\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uIiwiTWVzc2FnZSI6IlNlY3JldHMgTWFuYWdlciBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgc2VjcmV0LiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "runtimevar/blobvar/blobvar.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package blobvar provides a runtimevar implementation with\n// variables read from a blob.Bucket.\n// Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, blobvar registers for the scheme \"blob\".\n// The default URL opener will open a blob.Bucket based on the environment\n// variable \"BLOBVAR_BUCKET_URL\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// blobvar exposes the following types for As:\n//   - Snapshot: Not supported.\n//   - Error: error, which can be passed to blob.ErrorAs.\npackage blobvar // import \"gocloud.dev/runtimevar/blobvar\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, &defaultOpener{})\n}\n\ntype defaultOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *defaultOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\to.init.Do(func() {\n\t\tbucketURL := os.Getenv(\"BLOBVAR_BUCKET_URL\")\n\t\tif bucketURL == \"\" {\n\t\t\to.err = errors.New(\"BLOBVAR_BUCKET_URL environment variable is not set\")\n\t\t\treturn\n\t\t}\n\t\tbucket, err := blob.OpenBucket(ctx, bucketURL)\n\t\tif err != nil {\n\t\t\to.err = fmt.Errorf(\"failed to open default bucket %q: %v\", bucketURL, err)\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Bucket: bucket}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenVariableURL(ctx, u)\n}\n\n// Scheme is the URL scheme blobvar registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"blob\"\n\n// URLOpener opens blob-backed URLs like \"blob://myblobkey?decoder=string\".\n// It supports the following URL parameters:\n//   - decoder: The decoder to use. Defaults to URLOpener.Decoder, or\n//     runtimevar.BytesDecoder if URLOpener.Decoder is nil.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// Bucket is required.\n\tBucket *blob.Bucket\n\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the Options for OpenVariable.\n\tOptions Options\n}\n\n// OpenVariableURL opens the variable at the URL's path. See the package doc\n// for more details.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tif o.Bucket == nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: bucket is required\", u)\n\t}\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\treturn OpenVariable(o.Bucket, path.Join(u.Host, u.Path), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the rate at which the blob is polled.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable backed by the referenced blob.\n// Reads of the blob return raw bytes; provide a decoder to decode the raw bytes\n// into the appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(bucket *blob.Bucket, key string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\treturn runtimevar.New(newWatcher(bucket, key, decoder, nil, opts)), nil\n}\n\nfunc newWatcher(bucket *blob.Bucket, key string, decoder *runtimevar.Decoder, opener *URLOpener, opts *Options) driver.Watcher {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\treturn &watcher{\n\t\tbucket:  bucket,\n\t\topener:  opener,\n\t\tkey:     key,\n\t\twait:    driver.WaitDuration(opts.WaitDuration),\n\t\tdecoder: decoder,\n\t}\n}\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\tupdateTime time.Time\n\trawBytes   []byte\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\treturn false\n}\n\n// errorState returns a new State with err, unless prevS also represents\n// the same error, in which case it returns nil.\nfunc errorState(err error, prevS driver.State) driver.State {\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\t// New error.\n\t\treturn s\n\t}\n\tif err == prev.err || err.Error() == prev.err.Error() {\n\t\t// Same error, return nil to indicate no change.\n\t\treturn nil\n\t}\n\treturn s\n}\n\n// watcher implements driver.Watcher for configurations provided by the Runtime Configurator\n// service.\ntype watcher struct {\n\tbucket  *blob.Bucket\n\topener  *URLOpener\n\tkey     string\n\twait    time.Duration\n\tdecoder *runtimevar.Decoder\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\t// Read the blob.\n\tb, err := w.bucket.ReadAll(ctx, w.key)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\t// See if it's the same raw bytes as before.\n\tif prev != nil && bytes.Equal(b, prev.(*state).rawBytes) {\n\t\t// No change!\n\t\treturn nil, w.wait\n\t}\n\n\t// Decode the value.\n\tval, err := w.decoder.Decode(ctx, b)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\treturn &state{val: val, updateTime: time.Now(), rawBytes: b}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\n// Since blobvar uses the blob package, ErrorAs delegates\n// to the bucket's ErrorAs method.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\treturn w.bucket.ErrorAs(err, i)\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\t// err might have come from blob, in which case use its code.\n\treturn gcerrors.Code(err)\n}\n"
  },
  {
    "path": "runtimevar/blobvar/blobvar_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blobvar\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/fileblob\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\ntype harness struct {\n\tdir    string\n\tbucket *blob.Bucket\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tdir := t.TempDir()\n\n\tb, err := fileblob.OpenBucket(dir, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &harness{dir: dir, bucket: b}, nil\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.bucket, name, decoder, nil, nil), nil\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\treturn h.bucket.WriteAll(ctx, name, val, nil)\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\treturn h.bucket.WriteAll(ctx, name, val, nil)\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\treturn h.bucket.Delete(ctx, name)\n}\n\nfunc (h *harness) Close() {\n\th.bucket.Close()\n\t_ = os.RemoveAll(h.dir)\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar perr *os.PathError\n\tif !v.ErrorAs(err, &perr) {\n\t\treturn errors.New(\"runtimevar.ErrorAs failed with *os.PathError\")\n\t}\n\treturn nil\n}\n\nfunc TestOpenVariable(t *testing.T) {\n\tdir := t.TempDir()\n\n\tif err := os.WriteFile(filepath.Join(dir, \"myvar.json\"), []byte(`{\"Foo\": \"Bar\"}`), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := os.WriteFile(filepath.Join(dir, \"myvar.txt\"), []byte(\"hello world!\"), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Convert dir to a URL path, adding a leading \"/\" if needed on Windows\n\t// (on Unix, dirpath already has a leading \"/\").\n\tdirpath := filepath.ToSlash(dir)\n\tif os.PathSeparator != '/' && !strings.HasPrefix(dirpath, \"/\") {\n\t\tdirpath = \"/\" + dirpath\n\t}\n\tbucketURL := \"file://\" + dirpath\n\n\ttests := []struct {\n\t\tBucketURL    string\n\t\tURL          string\n\t\tWantErr      bool\n\t\tWantWatchErr bool\n\t\tWant         any\n\t}{\n\t\t// myvar does not exist.\n\t\t{\"mem://\", \"blob://myvar\", false, true, nil},\n\t\t// badscheme does not exist.\n\t\t{\"badscheme://\", \"blob://myvar\", true, false, nil},\n\t\t// directory dirnotfound does not exist, so Bucket creation fails.\n\t\t{\"file:///dirnotfound\", \"blob://myvar.txt\", true, false, nil},\n\t\t// filenotfound does not exist so Watch returns an error.\n\t\t{bucketURL, \"blob://filenotfound\", false, true, nil},\n\t\t// Missing bucket env variable.\n\t\t{\"\", \"blob://myvar.txt\", true, false, nil},\n\t\t// Invalid decoder.\n\t\t{bucketURL, \"blob://myvar.txt?decoder=notadecoder\", true, false, nil},\n\t\t// Invalid arg.\n\t\t{bucketURL, \"blob://myvar.txt?param=value\", true, false, nil},\n\t\t// Working example with default decoder.\n\t\t{bucketURL, \"blob://myvar.txt\", false, false, []byte(\"hello world!\")},\n\t\t// Working example with string decoder.\n\t\t{bucketURL, \"blob://myvar.txt?decoder=string\", false, false, \"hello world!\"},\n\t\t// Working example with JSON decoder.\n\t\t{bucketURL, \"blob://myvar.json?decoder=jsonmap\", false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t\t// Setting wait.\n\t\t{bucketURL, \"blob://myvar.txt?wait=2m\", false, false, []byte(\"hello world!\")},\n\t\t// Invalid wait.\n\t\t{bucketURL, \"blob://myvar.txt?wait=x\", true, false, nil},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.BucketURL, func(t *testing.T) {\n\t\t\tt.Setenv(\"BLOBVAR_BUCKET_URL\", test.BucketURL)\n\n\t\t\topener := &defaultOpener{}\n\t\t\tdefer func() {\n\t\t\t\tif opener.opener != nil && opener.opener.Bucket != nil {\n\t\t\t\t\topener.opener.Bucket.Close()\n\t\t\t\t}\n\t\t\t}()\n\t\t\tu, err := url.Parse(test.URL)\n\t\t\tif err != nil {\n\t\t\t\tt.Error(err)\n\t\t\t}\n\t\t\tv, err := opener.OpenVariableURL(ctx, u)\n\t\t\tif v != nil {\n\t\t\t\tdefer v.Close()\n\t\t\t}\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"BucketURL %s URL %s: got error %v, want error %v\", test.BucketURL, test.URL, err, test.WantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer v.Close()\n\t\t\tsnapshot, err := v.Watch(ctx)\n\t\t\tif (err != nil) != test.WantWatchErr {\n\t\t\t\tt.Errorf(\"BucketURL %s URL %s: got Watch error %v, want error %v\", test.BucketURL, test.URL, err, test.WantWatchErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !cmp.Equal(snapshot.Value, test.Want) {\n\t\t\t\tt.Errorf(\"BucketURL %s URL %s: got snapshot value\\n%v\\n  want\\n%v\", test.BucketURL, test.URL, snapshot.Value, test.Want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "runtimevar/blobvar/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage blobvar_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/blob/memblob\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/blobvar\"\n)\n\nfunc ExampleOpenVariable() {\n\t// Create a *blob.Bucket.\n\t// Here, we use an in-memory implementation and write a sample value.\n\tbucket := memblob.OpenBucket(nil)\n\tdefer bucket.Close()\n\tctx := context.Background()\n\terr := bucket.WriteAll(ctx, \"cfg-variable-name\", []byte(\"hello world\"), nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *runtimevar.Variable that watches the blob.\n\tv, err := blobvar.OpenVariable(bucket, \"cfg-variable-name\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n\n\t// We can now read the current value of the variable from v.\n\tsnapshot, err := v.Latest(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// runtimevar.Snapshot.Value is decoded to a string.\n\tfmt.Println(snapshot.Value.(string))\n\n\t// Output:\n\t// hello world\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/blobvar\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The default opener opens a blob.Bucket via a URL, based on the environment\n\t// variable BLOBVAR_BUCKET_URL.\n\n\tv, err := runtimevar.OpenVariable(ctx, \"blob://myvar.txt?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/constantvar/constantvar.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package constantvar provides a runtimevar implementation with Variables\n// that never change. Use New, NewBytes, NewFromEnv, or NewError to construct a\n// *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, constantvar registers for the scheme \"constant\".\n// For more details on the URL format, see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// constantvar does not support any types for As.\npackage constantvar // import \"gocloud.dev/runtimevar/constantvar\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, &URLOpener{})\n}\n\n// Scheme is the URL scheme constantvar registers its URLOpener under on blob.DefaultMux.\nconst Scheme = \"constant\"\n\n// URLOpener opens constantvar URLs like \"constant://?val=foo&decoder=string\".\n//\n// The host and path are ignored.\n//\n// The following URL parameters are supported:\n//   - val: The value to use for the constant Variable. The bytes from val\n//     are passed to NewBytes.\n//   - envvar: The name of an environment variable to read the value from.\n//   - err: The error to use for the constant Variable. A new error is created\n//     using errors.New and passed to NewError.\n//   - decoder: The decoder to use. Defaults to runtimevar.BytesDecoder.\n//     See runtimevar.DecoderByName for supported values.\n//\n// If multiple of \"val\", \"envvar\", or \"err\" are provided, \"err\" wins, then \"envvar\",\n// then \"val\".\ntype URLOpener struct {\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n}\n\n// OpenVariableURL opens the variable at the URL's path. See the package doc\n// for more details.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tval := q.Get(\"val\")\n\tq.Del(\"val\")\n\n\tenvvar := q.Get(\"envvar\")\n\tq.Del(\"envvar\")\n\n\terrVal := q.Get(\"err\")\n\tq.Del(\"err\")\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\tif errVal != \"\" {\n\t\treturn NewError(errors.New(errVal)), nil\n\t}\n\tif envvar != \"\" {\n\t\treturn NewFromEnv(envvar, decoder), nil\n\t}\n\treturn NewBytes([]byte(val), decoder), nil\n}\n\nvar errNotExist = errors.New(\"variable does not exist\")\n\n// New constructs a *runtimevar.Variable holding value.\nfunc New(value any) *runtimevar.Variable {\n\treturn runtimevar.New(&watcher{value: value, t: time.Now()})\n}\n\n// NewBytes uses decoder to decode b. If the decode succeeds, it constructs\n// a *runtimevar.Variable holding the decoded value. If the decode fails, it\n// constructs a runtimevar.Variable that always fails with the error.\nfunc NewBytes(b []byte, decoder *runtimevar.Decoder) *runtimevar.Variable {\n\tvalue, err := decoder.Decode(context.Background(), b)\n\tif err != nil {\n\t\treturn NewError(err)\n\t}\n\treturn New(value)\n}\n\n// NewFromEnv reads an environment variable and uses decoder to decode it.\n// If the decode succeeds, it constructs a *runtimevar.Variable holding the\n// decoded value. If the decode fails, it constructs a runtimevar.Variable\n// that always fails with the error.\n// Note that the value of the constantvar is frozen at initialization time;\n// it does not get a new value if the underlying environment variable value\n// changes.\nfunc NewFromEnv(envVarName string, decoder *runtimevar.Decoder) *runtimevar.Variable {\n\tval := os.Getenv(envVarName)\n\tvalue, err := decoder.Decode(context.Background(), []byte(val))\n\tif err != nil {\n\t\treturn NewError(err)\n\t}\n\treturn New(value)\n}\n\n// NewError constructs a *runtimevar.Variable that always fails. Runtimevar\n// wraps errors returned by drivers, so the error returned\n// by runtimevar will not equal err.\nfunc NewError(err error) *runtimevar.Variable {\n\treturn runtimevar.New(&watcher{err: err})\n}\n\n// watcher implements driver.Watcher and driver.State.\ntype watcher struct {\n\tvalue any\n\terr   error\n\tt     time.Time\n}\n\n// Value implements driver.State.Value.\nfunc (w *watcher) Value() (any, error) {\n\treturn w.value, w.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (w *watcher) UpdateTime() time.Time {\n\treturn w.t\n}\n\n// As implements driver.State.As.\nfunc (w *watcher) As(i any) bool {\n\treturn false\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\t// The first time this is called, return the constant value.\n\tif prev == nil {\n\t\treturn w, 0\n\t}\n\t// On subsequent calls, block forever as the value will never change.\n\t<-ctx.Done()\n\tw.err = ctx.Err()\n\treturn w, 0\n}\n\n// Close implements driver.Close.\nfunc (*watcher) Close() error { return nil }\n\n// ErrorAs implements driver.ErrorAs.\nfunc (*watcher) ErrorAs(err error, i any) bool { return false }\n\n// ErrorCode implements driver.ErrorCode\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tif err == errNotExist {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n"
  },
  {
    "path": "runtimevar/constantvar/constantvar_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage constantvar\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\ntype harness struct {\n\t// vars stores the variable value(s) that have been set using CreateVariable.\n\tvars map[string][]byte\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\treturn &harness{vars: map[string][]byte{}}, nil\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\trawVal, found := h.vars[name]\n\tif !found {\n\t\t// The variable isn't set. Create a Variable that always returns an error.\n\t\treturn &watcher{err: errNotExist}, nil\n\t}\n\tval, err := decoder.Decode(ctx, rawVal)\n\tif err != nil {\n\t\t// The variable didn't decode.\n\t\treturn &watcher{err: err}, nil\n\t}\n\treturn &watcher{value: val, t: time.Now()}, nil\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\th.vars[name] = val\n\treturn nil\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\treturn errors.New(\"not supported\")\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\treturn errors.New(\"not supported\")\n}\n\nfunc (h *harness) Close() {}\n\nfunc (h *harness) Mutable() bool { return false }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar ss string\n\tif s.As(&ss) {\n\t\treturn errors.New(\"Snapshot.As expected to fail\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar ss string\n\tif v.ErrorAs(err, &ss) {\n\t\treturn errors.New(\"runtimevar.ErrorAs expected to fail\")\n\t}\n\treturn nil\n}\n\nfunc TestNew(t *testing.T) {\n\tctx := context.Background()\n\n\t// Use New with an error value; it should be plumbed through as a Value.\n\terrFail := errors.New(\"fail\")\n\tv := New(errFail)\n\tdefer v.Close()\n\tval, err := v.Watch(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif val.Value != errFail {\n\t\tt.Errorf(\"got %v want %v\", val.Value, errFail)\n\t}\n}\n\nfunc TestNewBytes(t *testing.T) {\n\tctx := context.Background()\n\tcontent := \"hello world\"\n\n\t// Decode succeeds.\n\tv := NewBytes([]byte(content), runtimevar.StringDecoder)\n\tdefer v.Close()\n\tval, err := v.Watch(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif val.Value != content {\n\t\tt.Errorf(\"got %v want %v\", val.Value, content)\n\t}\n\n\t// Decode fails.\n\tvar jsonData []string\n\tv = NewBytes([]byte(content), runtimevar.NewDecoder(jsonData, runtimevar.JSONDecode))\n\tdefer v.Close()\n\tval, err = v.Watch(ctx)\n\tif err == nil {\n\t\tt.Errorf(\"got nil error and %v, want error\", val)\n\t}\n}\n\nfunc TestNewFromEnv(t *testing.T) {\n\tctx := context.Background()\n\tconst (\n\t\tcontent = \"hello world\"\n\t\tname    = \"RUNTIMEVAR_CONST_TEST\"\n\t)\n\tt.Setenv(name, content)\n\n\t// Decode succeeds.\n\tv := NewFromEnv(name, runtimevar.StringDecoder)\n\tdefer v.Close()\n\tval, err := v.Watch(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif val.Value != content {\n\t\tt.Errorf(\"got %v want %v\", val.Value, content)\n\t}\n\n\t// Decode fails.\n\tvar jsonData []string\n\tv = NewFromEnv(name, runtimevar.NewDecoder(jsonData, runtimevar.JSONDecode))\n\tdefer v.Close()\n\tval, err = v.Watch(ctx)\n\tif err == nil {\n\t\tt.Errorf(\"got nil error and %v, want error\", val)\n\t}\n}\n\nfunc TestNewError(t *testing.T) {\n\tctx := context.Background()\n\n\tv := NewError(errors.New(\"fail\"))\n\tdefer v.Close()\n\t_, err := v.Watch(ctx)\n\tif err == nil {\n\t\tt.Errorf(\"got nil err want fail err\")\n\t}\n}\n\nfunc TestOpenVariable(t *testing.T) {\n\tt.Setenv(\"RUNTIMEVAR_CONST_TEST\", \"hello world\")\n\ttests := []struct {\n\t\tURL          string\n\t\tWantErr      bool\n\t\tWantWatchErr bool\n\t\tWant         any\n\t}{\n\t\t// Empty URL results in empty byte slice.\n\t\t{\"constant://\", false, false, []byte(\"\")},\n\t\t// Invalid query param.\n\t\t{\"constant://?param=value\", true, false, nil},\n\t\t// String value.\n\t\t{\"constant://?val=hello+world&decoder=string\", false, false, \"hello world\"},\n\t\t// JSON value; val parameter is {\"Foo\": \"Bar\"}, URL-encoded.\n\t\t{\"constant://?val=%7B%22Foo%22%3A%22Bar%22%7d&decoder=jsonmap\", false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t\t// Environment variable value.\n\t\t{\"constant://?envvar=RUNTIMEVAR_CONST_TEST&decoder=string\", false, false, \"hello world\"},\n\t\t// Error.\n\t\t{\"constant://?err=fail\", false, true, nil},\n\t\t// Invalid decoder.\n\t\t{\"constant://?decoder=notadecoder\", true, false, nil},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.URL, func(t *testing.T) {\n\t\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer v.Close()\n\t\t\tsnapshot, err := v.Watch(ctx)\n\t\t\tif (err != nil) != test.WantWatchErr {\n\t\t\t\tt.Errorf(\"%s: got Watch error %v, want error %v\", test.URL, err, test.WantWatchErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !cmp.Equal(snapshot.Value, test.Want) {\n\t\t\t\tt.Errorf(\"%s: got snapshot value\\n%v\\n  want\\n%v\", test.URL, snapshot.Value, test.Want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDecryptWithNoURLEnv(t *testing.T) {\n\tif _, err := runtimevar.OpenVariable(context.Background(), \"constant://?decoder=decrypt\"); err == nil {\n\t\tt.Error(\"got nil error, want environment variable not set\")\n\t}\n}\n"
  },
  {
    "path": "runtimevar/constantvar/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage constantvar_test\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/constantvar\"\n)\n\nfunc ExampleNew() {\n\t// Construct a *runtimevar.Variable that always returns \"hello world\".\n\tv := constantvar.New(\"hello world\")\n\tdefer v.Close()\n\n\t// We can now read the current value of the variable from v.\n\tsnapshot, err := v.Latest(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(snapshot.Value.(string))\n\n\t// Output:\n\t// hello world\n}\n\nfunc ExampleNewBytes() {\n\t// Construct a *runtimevar.Variable with a []byte.\n\tv := constantvar.NewBytes([]byte(`hello world`), runtimevar.BytesDecoder)\n\tdefer v.Close()\n\n\t// We can now read the current value of the variable from v.\n\tsnapshot, err := v.Latest(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"byte slice of length %d\\n\", len(snapshot.Value.([]byte)))\n\n\t// Output:\n\t// byte slice of length 11\n}\n\nfunc ExampleNewFromEnv() {\n\t// Construct a *runtimevar.Variable with an environment variable name.\n\tos.Setenv(\"MY_ENVIRONMENT_VARIABLE\", \"hello world\")\n\tv := constantvar.NewFromEnv(\"MY_ENVIRONMENT_VARIABLE\", runtimevar.BytesDecoder)\n\tdefer v.Close()\n\n\t// We can now read the value from v.\n\tsnapshot, err := v.Latest(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"byte slice of length %d\\n\", len(snapshot.Value.([]byte)))\n\n\t// Output:\n\t// byte slice of length 11\n}\n\nfunc ExampleNewError() {\n\t// Construct a runtimevar.Variable that always returns errFake.\n\terrFake := errors.New(\"my error\")\n\tv := constantvar.NewError(errFake)\n\tdefer v.Close()\n\n\t// We can now use Watch to read the current value of the variable\n\t// from v. Note that Latest would block here since it waits for\n\t// a \"good\" value, and v will never get one.\n\t_, err := v.Watch(context.Background())\n\tif err == nil {\n\t\tlog.Fatal(\"Expected an error!\")\n\t}\n\tfmt.Println(err)\n\n\t// Output:\n\t// runtimevar (code=Unknown): my error\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/constantvar\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The constant value is in the URL param \"val\".\n\tv, err := runtimevar.OpenVariable(ctx, \"constant://?val=hello+world&decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n\n\t// The constant value is read from an environment variable specified in \"envvar\".\n\tv2, err := runtimevar.OpenVariable(ctx, \"constant://?envvar=MY_ENVIRONMENT_VARIABLE&decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v2.Close()\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\tsnapshot, err := v.Latest(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(snapshot.Value.(string))\n\n\t// Output\n\t// hello world\n}\n"
  },
  {
    "path": "runtimevar/driver/driver.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package driver defines interfaces to be implemented by runtimevar drivers, which\n// will be used by the runtimevar package to interact with the underlying services.\n// Application code should use package runtimevar.\npackage driver // import \"gocloud.dev/runtimevar/driver\"\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n)\n\n// DefaultWaitDuration is the default value for WaitDuration.\nconst DefaultWaitDuration = 30 * time.Second\n\n// WaitDuration returns DefaultWaitDuration if d is <= 0, otherwise it returns d.\nfunc WaitDuration(d time.Duration) time.Duration {\n\tif d <= 0 {\n\t\treturn DefaultWaitDuration\n\t}\n\treturn d\n}\n\n// State represents the current state of a variable.\ntype State interface {\n\t// Value returns the current variable value.\n\tValue() (any, error)\n\t// UpdateTime returns the update time for the variable.\n\tUpdateTime() time.Time\n\n\t// As converts i to driver-specific types.\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tAs(any) bool\n}\n\n// Watcher watches for updates on a variable and returns an updated Variable object if\n// there are changes.  A Watcher object is associated with a variable upon construction.\n//\n// An application can have more than one Watcher, one for each variable.  It is typical\n// to only have one Watcher per variable.\n//\n// Many services store their configuration data as raw bytes; drivers for such\n// services should include a runtimevar.Decoder in their constructor to allow\n// users to decode the raw bytes into a particular format (e.g., parsing a\n// JSON string).\n//\n// Drivers for services that don't have raw bytes may dictate the type of the exposed\n// Snapshot.Value, or expose custom decoding logic.\ntype Watcher interface {\n\t// WatchVariable returns the current State of the variable.\n\t// If the State has not changed, it returns nil.\n\t//\n\t// If WatchVariable returns a wait time > 0, the portable type uses\n\t// it as a hint to not call WatchVariable again for the wait time.\n\t//\n\t// Implementations *may* block, but must return if ctx is Done. If the\n\t// variable has changed, then implementations *must* eventually return\n\t// it.\n\t//\n\t// A polling implementation should return (State, <poll interval>) for\n\t// a new State, or (nil, <poll interval>) if State hasn't changed.\n\t//\n\t// An implementation that receives notifications from an external source\n\t// about changes to the underlying variable should:\n\t// 1. If prev != nil, subscribe to change notifications.\n\t// 2. Fetch the current State.\n\t// 3. If prev == nil or if the State has changed, return (State, 0).\n\t//    A non-zero wait should be returned if State holds an error, to avoid\n\t//    spinning.\n\t// 4. Block until it detects a change or ctx is Done, then fetch and return\n\t//    (State, 0).\n\t// Note that the subscription in 1 must occur before 2 to avoid race conditions.\n\tWatchVariable(ctx context.Context, prev State) (state State, wait time.Duration)\n\n\t// Close cleans up any resources used by the Watcher object.\n\tClose() error\n\n\t// ErrorAs allows drivers to expose driver-specific types for returned\n\t// errors; see State.As for more details.\n\tErrorAs(error, any) bool\n\n\t// ErrorCode should return a code that describes the error, which was returned by\n\t// one of the other methods in this interface.\n\tErrorCode(error) gcerrors.ErrorCode\n}\n"
  },
  {
    "path": "runtimevar/drivertest/drivertest.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package drivertest provides a conformance test for implementations of\n// runtimevar.\npackage drivertest // import \"gocloud.dev/runtimevar/drivertest\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\n// Harness describes the functionality test harnesses must provide to run conformance tests.\ntype Harness interface {\n\t// MakeWatcher creates a driver.Watcher to watch the given variable.\n\tMakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error)\n\t// CreateVariable creates the variable with the given contents.\n\tCreateVariable(ctx context.Context, name string, val []byte) error\n\t// UpdateVariable updates an existing variable to have the given contents.\n\tUpdateVariable(ctx context.Context, name string, val []byte) error\n\t// DeleteVariable deletes an existing variable.\n\tDeleteVariable(ctx context.Context, name string) error\n\t// Close is called when the test is complete.\n\tClose()\n\t// Mutable returns true iff the driver supports UpdateVariable/DeleteVariable.\n\t// If false, those functions should return errors, and the conformance tests\n\t// will skip and/or ignore errors for tests that require them.\n\tMutable() bool\n}\n\n// HarnessMaker describes functions that construct a harness for running tests.\n// It is called exactly once per test; Harness.Close() will be called when the test is complete.\ntype HarnessMaker func(t *testing.T) (Harness, error)\n\n// AsTest represents a test of As functionality.\n// The conformance test:\n// 1. Reads a Snapshot of the variable before it exists.\n// 2. Calls ErrorCheck.\n// 3. Creates the variable and reads a Snapshot of it.\n// 4. Calls SnapshotCheck.\ntype AsTest interface {\n\t// Name should return a descriptive name for the test.\n\tName() string\n\t// SnapshotCheck will be called to allow verification of Snapshot.As.\n\tSnapshotCheck(s *runtimevar.Snapshot) error\n\t// ErrorCheck will be called to allow verification of Variable.ErrorAs.\n\t// driver is provided so that errors other than err can be checked;\n\t// Variable.ErrorAs won't work since it expects driver errors to be wrapped.\n\tErrorCheck(v *runtimevar.Variable, err error) error\n}\n\ntype verifyAsFailsOnNil struct{}\n\nfunc (verifyAsFailsOnNil) Name() string {\n\treturn \"verify As returns false when passed nil\"\n}\n\nfunc (verifyAsFailsOnNil) SnapshotCheck(v *runtimevar.Snapshot) error {\n\tif v.As(nil) {\n\t\treturn errors.New(\"want Snapshot.As to return false when passed nil\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAsFailsOnNil) ErrorCheck(v *runtimevar.Variable, err error) (ret error) {\n\tdefer func() {\n\t\tif recover() == nil {\n\t\t\tret = errors.New(\"want ErrorAs to panic when passed nil\")\n\t\t}\n\t}()\n\tv.ErrorAs(err, nil)\n\treturn nil\n}\n\n// RunConformanceTests runs conformance tests for driver implementations\n// of runtimevar.\nfunc RunConformanceTests(t *testing.T, newHarness HarnessMaker, asTests []AsTest) {\n\tt.Helper()\n\n\tt.Run(\"TestNonExistentVariable\", func(t *testing.T) {\n\t\ttestNonExistentVariable(t, newHarness)\n\t})\n\tt.Run(\"TestString\", func(t *testing.T) {\n\t\ttestString(t, newHarness)\n\t})\n\tt.Run(\"TestJSON\", func(t *testing.T) {\n\t\ttestJSON(t, newHarness)\n\t})\n\tt.Run(\"TestInvalidJSON\", func(t *testing.T) {\n\t\ttestInvalidJSON(t, newHarness)\n\t})\n\tt.Run(\"TestUpdate\", func(t *testing.T) {\n\t\ttestUpdate(t, newHarness)\n\t})\n\tt.Run(\"TestDelete\", func(t *testing.T) {\n\t\ttestDelete(t, newHarness)\n\t})\n\tt.Run(\"TestUpdateWithErrors\", func(t *testing.T) {\n\t\ttestUpdateWithErrors(t, newHarness)\n\t})\n\tasTests = append(asTests, verifyAsFailsOnNil{})\n\tt.Run(\"TestAs\", func(t *testing.T) {\n\t\tfor _, st := range asTests {\n\t\t\tif st.Name() == \"\" {\n\t\t\t\tt.Fatalf(\"AsTest.Name is required\")\n\t\t\t}\n\t\t\tt.Run(st.Name(), func(t *testing.T) {\n\t\t\t\ttestAs(t, newHarness, st)\n\t\t\t})\n\t\t}\n\t})\n}\n\n// waitTimeForBlockingCheck returns a duration to wait when verifying that a\n// call blocks. When in replay mode, it can be quite short to make tests run\n// quickly. When in record mode, it has to be long enough that RPCs can\n// consistently finish.\nfunc waitTimeForBlockingCheck() time.Duration {\n\tif *setup.Record {\n\t\treturn 5 * time.Second\n\t}\n\treturn 10 * time.Millisecond\n}\n\nfunc testNonExistentVariable(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tctx := context.Background()\n\n\tdrv, err := h.MakeWatcher(ctx, \"does-not-exist\", runtimevar.StringDecoder)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv := runtimevar.New(drv)\n\tdefer func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tgot, err := v.Watch(ctx)\n\tif err == nil {\n\t\tt.Errorf(\"got %v expected not-found error\", got.Value)\n\t} else if gcerrors.Code(err) != gcerrors.NotFound {\n\t\tt.Error(\"got IsNotExist false, expected true\")\n\t}\n}\n\nfunc testString(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tname    = \"test-config-variable\"\n\t\tcontent = \"hello world\"\n\t)\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tctx := context.Background()\n\n\tif err := h.CreateVariable(ctx, name, []byte(content)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif h.Mutable() {\n\t\tdefer func() {\n\t\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}()\n\t}\n\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.StringDecoder)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv := runtimevar.New(drv)\n\tdefer func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tgot, err := v.Watch(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// The variable is decoded to a string and matches the expected content.\n\tif gotS, ok := got.Value.(string); !ok {\n\t\tt.Fatalf(\"got value of type %T expected string\", got.Value)\n\t} else if gotS != content {\n\t\tt.Errorf(\"got %q want %q\", got.Value, content)\n\t}\n\n\t// A second watch should block forever since the value hasn't changed.\n\t// A short wait here doesn't guarantee that this is working, but will catch\n\t// most problems.\n\ttCtx, cancel := context.WithTimeout(ctx, waitTimeForBlockingCheck())\n\tdefer cancel()\n\tgot, err = v.Watch(tCtx)\n\tif err == nil {\n\t\tt.Errorf(\"got %v want error\", got)\n\t}\n\t// tCtx should be cancelled. However, tests using record/replay mode can\n\t// be in the middle of an RPC when that happens, and save the resulting\n\t// RPC error during record. During replay, that error can be returned\n\t// immediately (before tCtx is cancelled). So, we accept deadline exceeded\n\t// errors as well.\n\tif tCtx.Err() == nil && gcerrors.Code(err) != gcerrors.DeadlineExceeded {\n\t\tt.Errorf(\"got err %v/%v; want Watch to have blocked until context was Done, or for the error to be deadline exceeded\", err, gcerrors.Code(err))\n\t}\n}\n\n// Message is used as a target for JSON decoding.\ntype Message struct {\n\tName, Text string\n}\n\nfunc testJSON(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tname        = \"test-config-variable\"\n\t\tjsonContent = `[\n{\"Name\": \"Ed\", \"Text\": \"Knock knock.\"},\n{\"Name\": \"Sam\", \"Text\": \"Who's there?\"}\n]`\n\t)\n\twant := []*Message{{Name: \"Ed\", Text: \"Knock knock.\"}, {Name: \"Sam\", Text: \"Who's there?\"}}\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tctx := context.Background()\n\n\tif err := h.CreateVariable(ctx, name, []byte(jsonContent)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif h.Mutable() {\n\t\tdefer func() {\n\t\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}()\n\t}\n\n\tvar jsonData []*Message\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.NewDecoder(jsonData, runtimevar.JSONDecode))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv := runtimevar.New(drv)\n\tdefer func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tgot, err := v.Watch(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// The variable is decoded to a []*Message and matches the expected content.\n\tif gotSlice, ok := got.Value.([]*Message); !ok {\n\t\tt.Fatalf(\"got value of type %T expected []*Message\", got.Value)\n\t} else if !cmp.Equal(gotSlice, want) {\n\t\tt.Errorf(\"got %v want %v\", gotSlice, want)\n\t}\n}\n\nfunc testInvalidJSON(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tname    = \"test-config-variable\"\n\t\tcontent = \"not-json\"\n\t)\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tctx := context.Background()\n\n\tif err := h.CreateVariable(ctx, name, []byte(content)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif h.Mutable() {\n\t\tdefer func() {\n\t\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}()\n\t}\n\n\tvar jsonData []*Message\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.NewDecoder(jsonData, runtimevar.JSONDecode))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv := runtimevar.New(drv)\n\tdefer func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tgot, err := v.Watch(ctx)\n\tif err == nil {\n\t\tt.Errorf(\"got %v wanted invalid-json error\", got.Value)\n\t}\n}\n\nfunc testUpdate(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tname     = \"test-config-variable\"\n\t\tcontent1 = \"hello world\"\n\t\tcontent2 = \"goodbye world\"\n\t)\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tif !h.Mutable() {\n\t\treturn\n\t}\n\tctx := context.Background()\n\n\t// Create the variable and verify WatchVariable sees the value.\n\tif err := h.CreateVariable(ctx, name, []byte(content1)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}()\n\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.StringDecoder)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := drv.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tstate, _ := drv.WatchVariable(ctx, nil)\n\tif state == nil {\n\t\tt.Fatalf(\"got nil state, want a non-nil state with a value\")\n\t}\n\tgot, err := state.Value()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gotS, ok := got.(string); !ok {\n\t\tt.Fatalf(\"got value of type %T expected string\", got)\n\t} else if gotS != content1 {\n\t\tt.Errorf(\"got %q want %q\", got, content1)\n\t}\n\n\t// The variable hasn't changed, so drv.WatchVariable should either\n\t// return nil or block.\n\tcancelCtx, cancel := context.WithTimeout(ctx, waitTimeForBlockingCheck())\n\tdefer cancel()\n\tunchangedState, _ := drv.WatchVariable(cancelCtx, state)\n\tif unchangedState == nil {\n\t\t// OK\n\t} else {\n\t\tgot, err = unchangedState.Value()\n\t\tif gcerrors.Code(err) != gcerrors.DeadlineExceeded {\n\t\t\tt.Fatalf(\"got state %v/%v/%v, wanted nil or nil/DeadlineExceeded after no change\", got, err, gcerrors.Code(err))\n\t\t}\n\t}\n\n\t// Update the variable and verify WatchVariable sees the updated value.\n\tif err := h.UpdateVariable(ctx, name, []byte(content2)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tstate, _ = drv.WatchVariable(ctx, state)\n\t// In rare race conditions during replay, if the earlier WatchVariable\n\t// was cancelled/timed out before actually calling an RPC, this one\n\t// might have returned the old/unchanged value. This only happens during\n\t// replay mode. Just try again, the next RPC should get the updated value.\n\t// BTW this is easy to reproduce by setting the timeout in\n\t// waitForBlockingCheck to 1 nanosecond.\n\tif state == nil && !*setup.Record {\n\t\tstate, _ = drv.WatchVariable(ctx, state)\n\t}\n\tif state == nil {\n\t\tt.Fatalf(\"got nil state, want a non-nil state with a value\")\n\t}\n\tgot, err = state.Value()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gotS, ok := got.(string); !ok {\n\t\tt.Fatalf(\"got value of type %T expected string\", got)\n\t} else if gotS != content2 {\n\t\tt.Errorf(\"got %q want %q\", got, content2)\n\t}\n}\n\nfunc testDelete(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tname     = \"test-config-variable\"\n\t\tcontent1 = \"hello world\"\n\t\tcontent2 = \"goodbye world\"\n\t)\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tif !h.Mutable() {\n\t\treturn\n\t}\n\tctx := context.Background()\n\n\t// Create the variable and verify WatchVariable sees the value.\n\tif err := h.CreateVariable(ctx, name, []byte(content1)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tneedToDelete := true\n\tdefer func() {\n\t\tif needToDelete {\n\t\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}\n\t}()\n\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.StringDecoder)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := drv.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tstate, _ := drv.WatchVariable(ctx, nil)\n\tif state == nil {\n\t\tt.Fatalf(\"got nil state, want a non-nil state with a value\")\n\t}\n\tgot, err := state.Value()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gotS, ok := got.(string); !ok {\n\t\tt.Fatalf(\"got value of type %T expected string\", got)\n\t} else if gotS != content1 {\n\t\tt.Errorf(\"got %q want %q\", got, content1)\n\t}\n\tprev := state\n\n\t// Delete the variable.\n\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tneedToDelete = false\n\n\t// WatchVariable should return a state with an error now.\n\tstate, _ = drv.WatchVariable(ctx, state)\n\tif state == nil {\n\t\tt.Fatalf(\"got nil state, want a non-nil state with an error\")\n\t}\n\tgot, err = state.Value()\n\tif err == nil {\n\t\tt.Fatalf(\"got %v want error because variable is deleted\", got)\n\t}\n\n\t// Reset the variable with new content and verify via WatchVariable.\n\tif err := h.CreateVariable(ctx, name, []byte(content2)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tneedToDelete = true\n\tstate, _ = drv.WatchVariable(ctx, state)\n\tif state == nil {\n\t\tt.Fatalf(\"got nil state, want a non-nil state with a value\")\n\t}\n\tgot, err = state.Value()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gotS, ok := got.(string); !ok {\n\t\tt.Fatalf(\"got value of type %T expected string\", got)\n\t} else if gotS != content2 {\n\t\tt.Errorf(\"got %q want %q\", got, content2)\n\t}\n\tif state.UpdateTime().Before(prev.UpdateTime()) {\n\t\tt.Errorf(\"got UpdateTime %v < previous %v, want >=\", state.UpdateTime(), prev.UpdateTime())\n\t}\n}\n\nfunc testUpdateWithErrors(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tconst (\n\t\tname     = \"test-updating-variable-to-error\"\n\t\tcontent1 = `[{\"Name\": \"Foo\", \"Text\": \"Bar\"}]`\n\t\tcontent2 = \"invalid-json\"\n\t\tcontent3 = \"invalid-json2\"\n\t)\n\twant := []*Message{{Name: \"Foo\", Text: \"Bar\"}}\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tif !h.Mutable() {\n\t\treturn\n\t}\n\tctx := context.Background()\n\n\t// Create the variable and verify WatchVariable sees the value.\n\tif err := h.CreateVariable(ctx, name, []byte(content1)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t}()\n\n\tvar jsonData []*Message\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.NewDecoder(jsonData, runtimevar.JSONDecode))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := drv.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\tstate, _ := drv.WatchVariable(ctx, nil)\n\tif state == nil {\n\t\tt.Fatal(\"got nil state, want a non-nil state with a value\")\n\t}\n\tgot, err := state.Value()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif gotSlice, ok := got.([]*Message); !ok {\n\t\tt.Fatalf(\"got value of type %T expected []*Message\", got)\n\t} else if !cmp.Equal(gotSlice, want) {\n\t\tt.Errorf(\"got %v want %v\", gotSlice, want)\n\t}\n\n\t// Update the variable to invalid JSON and verify WatchVariable returns an error.\n\tif err := h.UpdateVariable(ctx, name, []byte(content2)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tstate, _ = drv.WatchVariable(ctx, state)\n\tif state == nil {\n\t\tt.Fatal(\"got nil state, want a non-nil state with an error\")\n\t}\n\t_, err = state.Value()\n\tif err == nil {\n\t\tt.Fatal(\"got nil err want invalid JSON error\")\n\t}\n\n\t// Update the variable again, with different invalid JSON.\n\t// WatchVariable should block or return nil since it's the same error as before.\n\tif err := h.UpdateVariable(ctx, name, []byte(content3)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttCtx, cancel := context.WithTimeout(ctx, waitTimeForBlockingCheck())\n\tdefer cancel()\n\tstate, _ = drv.WatchVariable(tCtx, state)\n\tif state == nil {\n\t\t// OK: nil indicates no change.\n\t} else {\n\t\t// WatchVariable should have blocked until tCtx was cancelled, and we\n\t\t// should have gotten that error back.\n\t\tgot, err := state.Value()\n\t\tif err == nil {\n\t\t\tt.Fatalf(\"got %v and nil error, want non-nil error\", got)\n\t\t}\n\t\t// tCtx should be cancelled. However, tests using record/replay mode can\n\t\t// be in the middle of an RPC when that happens, and save the resulting\n\t\t// RPC error during record. During replay, that error can be returned\n\t\t// immediately (before tCtx is cancelled). So, we accept deadline exceeded\n\t\t// errors as well.\n\t\tif tCtx.Err() == nil && gcerrors.Code(err) != gcerrors.DeadlineExceeded {\n\t\t\tt.Errorf(\"got err %v/%v; want Watch to have blocked until context was Done, or for the error to be deadline exceeded\", err, gcerrors.Code(err))\n\t\t}\n\t}\n}\n\n// testAs tests the various As functions, using AsTest.\nfunc testAs(t *testing.T, newHarness HarnessMaker, st AsTest) {\n\tt.Helper()\n\n\tconst (\n\t\tname    = \"variable-for-as\"\n\t\tcontent = \"hello world\"\n\t)\n\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tctx := context.Background()\n\n\t// Try to read the variable before it exists.\n\tdrv, err := h.MakeWatcher(ctx, name, runtimevar.StringDecoder)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv := runtimevar.New(drv)\n\ts, gotErr := v.Watch(ctx)\n\tif gotErr == nil {\n\t\tt.Fatalf(\"got nil error and %v, expected non-nil error\", v)\n\t}\n\tif err := st.ErrorCheck(v, gotErr); err != nil {\n\t\tt.Error(err)\n\t}\n\tvar dummy string\n\tif s.As(&dummy) {\n\t\tt.Error(errors.New(\"want Snapshot.As to return false when Snapshot is zero value\"))\n\t}\n\tif err := v.Close(); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Create the variable and verify WatchVariable sees the value.\n\tif err := h.CreateVariable(ctx, name, []byte(content)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif h.Mutable() {\n\t\tdefer func() {\n\t\t\tif err := h.DeleteVariable(ctx, name); err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t}()\n\t}\n\n\tdrv, err = h.MakeWatcher(ctx, name, runtimevar.StringDecoder)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv = runtimevar.New(drv)\n\tdefer func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\ts, err = v.Watch(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := st.SnapshotCheck(&s); err != nil {\n\t\tt.Error(err)\n\t}\n}\n"
  },
  {
    "path": "runtimevar/etcdvar/etcdvar.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package etcdvar provides a runtimevar implementation with variables\n// backed by etcd. Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, etcdvar registers for the scheme \"etcd\".\n// The default URL opener will dial an etcd server based on the environment\n// variable \"ETCD_SERVER_URL\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// etcdvar exposes the following types for As:\n//   - Snapshot: *clientv3.GetResponse\n//   - Error: rpctypes.EtcdError\npackage etcdvar // import \"gocloud.dev/runtimevar/etcdvar\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"sync\"\n\t\"time\"\n\n\t\"go.etcd.io/etcd/client/v3\"\n\t\"go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"google.golang.org/grpc/codes\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, &defaultDialer{})\n}\n\n// Scheme is the URL scheme etcdvar registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"etcd\"\n\ntype defaultDialer struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *defaultDialer) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\to.init.Do(func() {\n\t\tserverURL := os.Getenv(\"ETCD_SERVER_URL\")\n\t\tif serverURL == \"\" {\n\t\t\to.err = errors.New(\"ETCD_SERVER_URL environment variable is not set\")\n\t\t\treturn\n\t\t}\n\t\tclient, err := clientv3.NewFromURL(serverURL)\n\t\tif err != nil {\n\t\t\to.err = fmt.Errorf(\"failed to connect to default client %q: %v\", serverURL, err)\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenVariableURL(ctx, u)\n}\n\n// URLOpener opens etcd URLs like \"etcd://mykey?decoder=string\".\n//\n// The host+path is used as the variable name.\n//\n// The following URL parameters are supported:\n//   - decoder: The decoder to use. Defaults to runtimevar.BytesDecoder.\n//     See runtimevar.DecoderByName for supported values.\ntype URLOpener struct {\n\t// The Client to use; required.\n\tClient *clientv3.Client\n\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to OpenVariable.\n\tOptions Options\n}\n\n// OpenVariableURL opens a etcdvar Variable for u.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\treturn OpenVariable(o.Client, path.Join(u.Host, u.Path), decoder, &o.Options)\n}\n\n// Options sets options.\ntype Options struct {\n\t// Timeout controls the timeout on RPCs to etcd; timeouts will result in\n\t// errors being returned from Watch. Defaults to 30 seconds.\n\tTimeout time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable that uses client to watch the variable\n// name on an etcd server.\n// etcd returns raw bytes; provide a decoder to decode the raw bytes into the\n// appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(cli *clientv3.Client, name string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\treturn runtimevar.New(newWatcher(cli, name, decoder, opts)), nil\n}\n\nfunc newWatcher(cli *clientv3.Client, name string, decoder *runtimevar.Decoder, opts *Options) *watcher {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\t// Create a ctx for the background goroutine that does all of the reading.\n\t// The cancel function will be used to shut it down during Close.\n\tctx, cancel := context.WithCancel(context.Background())\n\tw := &watcher{\n\t\t// See struct comments for why it's buffered.\n\t\tch:       make(chan *state, 1),\n\t\tshutdown: cancel,\n\t}\n\tgo w.watch(ctx, cli, name, decoder, driver.WaitDuration(opts.Timeout))\n\treturn w\n}\n\n// errNotExist is a sentinel error for nonexistent variables.\nvar errNotExist = errors.New(\"variable does not exist\")\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\traw        *clientv3.GetResponse\n\tupdateTime time.Time\n\tversion    int64\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tif s.raw == nil {\n\t\treturn false\n\t}\n\tp, ok := i.(**clientv3.GetResponse)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s.raw\n\treturn true\n}\n\n// watcher implements driver.Watcher.\ntype watcher struct {\n\t// The background goroutine writes new *state values to ch.\n\t// It is buffered so that the background goroutine can write without\n\t// blocking; it always drains the buffer before writing so that the latest\n\t// write is buffered. If writes could block, the background goroutine could be\n\t// blocked indefinitely from reading etcd's Watch events.\n\t// The background goroutine closes ch during shutdown.\n\tch chan *state\n\t// shutdown tells the background goroutine to exit.\n\tshutdown func()\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, _ driver.State) (driver.State, time.Duration) {\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn &state{err: ctx.Err()}, 0\n\tcase cur := <-w.ch:\n\t\treturn cur, 0\n\t}\n}\n\n// updateState checks to see if s and prev both represent the same error.\n// If not, it drains any previous state buffered in w.ch, then writes s to it.\n// It always return s.\nfunc (w *watcher) updateState(s, prev *state) *state {\n\tif s.err != nil && prev != nil && prev.err != nil {\n\t\tif equivalentError(s.err, prev.err) {\n\t\t\t// s represents the same error as prev.\n\t\t\treturn s\n\t\t}\n\t}\n\t// Drain any buffered value on ch; it is now stale.\n\tselect {\n\tcase <-w.ch:\n\tdefault:\n\t}\n\t// This write can't block, since we're the only writer, ch has a buffer\n\t// size of 1, and we just read anything that was buffered.\n\tw.ch <- s\n\treturn s\n}\n\n// equivalentError returns true iff err1 and err2 represent an equivalent error;\n// i.e., we don't want to return it to the user as a different error.\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tvar code1, code2 codes.Code\n\tif etcdErr, ok := err1.(rpctypes.EtcdError); ok {\n\t\tcode1 = etcdErr.Code()\n\t}\n\tif etcdErr, ok := err2.(rpctypes.EtcdError); ok {\n\t\tcode2 = etcdErr.Code()\n\t}\n\treturn code1 != codes.OK && code1 == code2\n}\n\n// watch is run by a background goroutine.\n// It watches file using cli.Watch, and writes new states to w.ch.\n// It exits when ctx is canceled, and closes w.ch.\nfunc (w *watcher) watch(ctx context.Context, cli *clientv3.Client, name string, decoder *runtimevar.Decoder, timeout time.Duration) {\n\tvar cur *state\n\tdefer close(w.ch)\n\n\tvar watchCh clientv3.WatchChan\n\tfor {\n\t\tif watchCh == nil {\n\t\t\tctxWithTimeout, cancel := context.WithTimeout(ctx, timeout)\n\t\t\twatchCh = cli.Watch(ctxWithTimeout, name)\n\t\t\tcancel()\n\t\t}\n\n\t\tctxWithTimeout, cancel := context.WithTimeout(ctx, timeout)\n\t\tresp, err := cli.Get(ctxWithTimeout, name)\n\t\tcancel()\n\t\tif err != nil {\n\t\t\tcur = w.updateState(&state{err: err}, cur)\n\t\t} else if len(resp.Kvs) == 0 {\n\t\t\tcur = w.updateState(&state{err: errNotExist}, cur)\n\t\t} else if len(resp.Kvs) > 1 {\n\t\t\tcur = w.updateState(&state{err: fmt.Errorf(\"%q has multiple values\", name)}, cur)\n\t\t} else {\n\t\t\tkv := resp.Kvs[0]\n\t\t\tif cur == nil || cur.err != nil || kv.Version != cur.version {\n\t\t\t\tval, err := decoder.Decode(ctx, kv.Value)\n\t\t\t\tif err != nil {\n\t\t\t\t\tcur = w.updateState(&state{err: err}, cur)\n\t\t\t\t} else {\n\t\t\t\t\tcur = w.updateState(&state{val: val, raw: resp, updateTime: time.Now(), version: kv.Version}, cur)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Value hasn't changed. Wait for change events.\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\treturn\n\t\tcase _, ok := <-watchCh:\n\t\t\tif !ok {\n\t\t\t\t// watchCh has closed; retry in next loop iteration.\n\t\t\t\twatchCh = nil\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\t// Tell the background goroutine to shut down by canceling its ctx.\n\tw.shutdown()\n\t// Wait for it to exit.\n\tfor range w.ch {\n\t}\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\tswitch v := err.(type) {\n\tcase rpctypes.EtcdError:\n\t\tif p, ok := i.(*rpctypes.EtcdError); ok {\n\t\t\t*p = v\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tif err == errNotExist {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n"
  },
  {
    "path": "runtimevar/etcdvar/etcdvar_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage etcdvar\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"go.etcd.io/etcd/client/v3\"\n\t\"go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\n// To run these tests against a local etcd server, first run ./localetcd.sh.\n// Then wait a few seconds for the server to be ready.\n\ntype harness struct {\n\tclient *clientv3.Client\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping etcd tests since the etcd server is not available\")\n\t}\n\tc, err := clientv3.NewFromURL(\"http://localhost:2379\")\n\tif err != nil {\n\t\tt.Fatalf(\"No local etcd server running: %v; see runtimevar/etcdvar/localetcd.sh\", err)\n\t}\n\treturn &harness{client: c}, nil\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.client, name, decoder, nil), nil\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\t_, err := h.client.Put(ctx, name, string(val))\n\treturn err\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\treturn h.CreateVariable(ctx, name, val)\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\t_, err := h.client.Delete(ctx, name)\n\treturn err\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc (h *harness) Close() {}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar resp *clientv3.GetResponse\n\tif !s.As(&resp) {\n\t\treturn errors.New(\"Snapshot.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\t// etcdvar returns a fmt.Errorf error for \"not found\", so this is expected\n\t// to fail.\n\tvar to rpctypes.EtcdError\n\tif v.ErrorAs(err, &to) {\n\t\treturn errors.New(\"ErrorAs expected to fail\")\n\t}\n\t// Try with a real etcd error.\n\tif !v.ErrorAs(rpctypes.ErrUnhealthy, &to) {\n\t\treturn errors.New(\"ErrorAs expected to succeed with real etcd error\")\n\t}\n\treturn nil\n}\n\n// Etcd-specific tests.\n\nfunc TestEquivalentError(t *testing.T) {\n\ttests := []struct {\n\t\tErr1, Err2 error\n\t\tWant       bool\n\t}{\n\t\t{Err1: errors.New(\"not etcd\"), Err2: errors.New(\"not etcd\"), Want: true},\n\t\t{Err1: errors.New(\"not etcd\"), Err2: errors.New(\"not etcd but different\")},\n\t\t{Err1: errors.New(\"not etcd\"), Err2: rpctypes.ErrUnhealthy},\n\t\t{Err1: rpctypes.ErrUnhealthy, Err2: rpctypes.ErrRequestTooLarge},\n\t\t{Err1: rpctypes.ErrUnhealthy, Err2: rpctypes.ErrUnhealthy, Want: true},\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := equivalentError(test.Err1, test.Err2)\n\t\tif got != test.Want {\n\t\t\tt.Errorf(\"%v vs %v: got %v want %v\", test.Err1, test.Err2, got, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestNoConnectionError(t *testing.T) {\n\tcli, err := clientv3.NewFromURL(\"http://no.server.here:999\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tv, err := OpenVariable(cli, \"variable-name\", nil, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer v.Close()\n\t// Watch will block for quite a while trying to connect,\n\t// so use a short timeout.\n\tctx, cancel := context.WithTimeout(context.Background(), 1*time.Millisecond)\n\tdefer cancel()\n\t_, err = v.Watch(ctx)\n\tif err == nil {\n\t\tt.Error(\"got nil want error\")\n\t}\n}\n\nfunc TestOpenVariable(t *testing.T) {\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tos.Setenv(\"ETCD_SERVER_URL\", \"http://localhost:2379\")\n\n\tctx := context.Background()\n\tif err := h.CreateVariable(ctx, \"string-var\", []byte(\"hello world\")); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := h.CreateVariable(ctx, \"json-var\", []byte(`{\"Foo\": \"Bar\"}`)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tURL          string\n\t\tWantErr      bool\n\t\tWantWatchErr bool\n\t\tWant         any\n\t}{\n\t\t// Nonexistentvar does not exist, so we get an error from Watch.\n\t\t{\"etcd://nonexistentvar\", false, true, nil},\n\t\t// Invalid decoder arg.\n\t\t{\"etcd://string-var?decoder=notadecoder\", true, false, nil},\n\t\t// Invalid parameter.\n\t\t{\"etcd://string-var?param=value\", true, false, nil},\n\t\t// Working example with string decoder.\n\t\t{\"etcd://string-var?decoder=string\", false, false, \"hello world\"},\n\t\t// Working example with default decoder.\n\t\t{\"etcd://string-var\", false, false, []byte(\"hello world\")},\n\t\t// Working example with JSON decoder.\n\t\t{\"etcd://json-var?decoder=jsonmap\", false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.URL, func(t *testing.T) {\n\t\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer v.Close()\n\t\t\tsnapshot, err := v.Watch(ctx)\n\t\t\tif (err != nil) != test.WantWatchErr {\n\t\t\t\tt.Errorf(\"%s: got Watch error %v, want error %v\", test.URL, err, test.WantWatchErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !cmp.Equal(snapshot.Value, test.Want) {\n\t\t\t\tt.Errorf(\"%s: got snapshot value\\n%v\\n  want\\n%v\", test.URL, snapshot.Value, test.Want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "runtimevar/etcdvar/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage etcdvar_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"go.etcd.io/etcd/client/v3\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/etcdvar\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Connect to the etcd server.\n\tclient, err := clientv3.NewFromURL(\"http://your.etcd.server:9999\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *runtimevar.Variable that watches the variable.\n\tv, err := etcdvar.OpenVariable(client, \"cfg-variable-name\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/etcdvar\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The default opener connects to an etcd server based on the environment\n\t// variable ETCD_SERVER_URL.\n\n\tv, err := runtimevar.OpenVariable(ctx, \"etcd://myvarname?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/etcdvar/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/runtimevar/etcdvar\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/google/go-cmp v0.7.0\n\tgo.etcd.io/etcd v3.3.27+incompatible\n\tgo.etcd.io/etcd/client/v3 v3.6.8\n\tgocloud.dev v0.45.0\n\tgoogle.golang.org/grpc v1.79.3\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/coreos/go-semver v0.3.1 // indirect\n\tgithub.com/coreos/go-systemd/v22 v22.7.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/gogo/protobuf v1.3.2 // indirect\n\tgithub.com/golang/protobuf v1.5.4 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/google/wire v0.7.0 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect\n\tgo.etcd.io/etcd/api/v3 v3.6.8 // indirect\n\tgo.etcd.io/etcd/client/pkg/v3 v3.6.8 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgo.uber.org/zap v1.27.1 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "runtimevar/etcdvar/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/kms v1.26.0 h1:cK9mN2cf+9V63D3H1f6koxTatWy39aTI/hCjz1I+adU=\ncloud.google.com/go/kms v1.26.0/go.mod h1:pHKOdFJm63hxBsiPkYtowZPltu9dW0MWvBa6IA4HM58=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=\ngithub.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=\ngithub.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA=\ngithub.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=\ngithub.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.etcd.io/etcd v3.3.27+incompatible h1:5hMrpf6REqTHV2LW2OclNpRtxI0k9ZplMemJsMSWju0=\ngo.etcd.io/etcd v3.3.27+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI=\ngo.etcd.io/etcd/api/v3 v3.6.8 h1:gqb1VN92TAI6G2FiBvWcqKtHiIjr4SU2GdXxTwyexbM=\ngo.etcd.io/etcd/api/v3 v3.6.8/go.mod h1:qyQj1HZPUV3B5cbAL8scG62+fyz5dSxxu0w8pn28N6Q=\ngo.etcd.io/etcd/client/pkg/v3 v3.6.8 h1:Qs/5C0LNFiqXxYf2GU8MVjYUEXJ6sZaYOz0zEqQgy50=\ngo.etcd.io/etcd/client/pkg/v3 v3.6.8/go.mod h1:GsiTRUZE2318PggZkAo6sWb6l8JLVrnckTNfbG8PWtw=\ngo.etcd.io/etcd/client/v3 v3.6.8 h1:B3G76t1UykqAOrbio7s/EPatixQDkQBevN8/mwiplrY=\ngo.etcd.io/etcd/client/v3 v3.6.8/go.mod h1:MVG4BpSIuumPi+ELF7wYtySETmoTWBHVcDoHdVupwt8=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=\ngo.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=\ngo.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "runtimevar/etcdvar/localetcd.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts a local etcd instance via Docker.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\n# Clean up and run etcd.\necho \"Starting etcd...\"\ndocker rm -f etcd &> /dev/null || :\ndocker run -d -p 2379:2379 -p 4001:4001 --name etcd quay.io/coreos/etcd:v3.5.4 /usr/local/bin/etcd --advertise-client-urls http://0.0.0.0:2379 --listen-client-urls http://0.0.0.0:2379 &> /dev/null\necho \"...done. Run \\\"docker rm -f etcd\\\" to clean up the container.\"\necho\n"
  },
  {
    "path": "runtimevar/example_openvariable_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage runtimevar_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/runtimevar\"\n\t_ \"gocloud.dev/runtimevar/constantvar\"\n)\n\nfunc Example_openVariableFromURL() {\n\t// Connect to a Variable using a URL.\n\t// This example uses \"constantvar\", an in-memory implementation.\n\t// We need to add a blank import line to register the constantvar driver's\n\t// URLOpener, which implements runtimevar.VariableURLOpener:\n\t// import _ \"gocloud.dev/runtimevar/constantvar\"\n\t// constantvar registers for the \"constant\" scheme.\n\t// All runtimevar.OpenVariable URLs also work with \"runtimevar+\" or \"runtimevar+variable+\" prefixes,\n\t// e.g., \"runtimevar+constant://...\" or \"runtimevar+variable+constant://...\".\n\tctx := context.Background()\n\tv, err := runtimevar.OpenVariable(ctx, \"constant://?val=hello+world&decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n\n\t// Now we can use the Variable as normal.\n\tsnapshot, err := v.Latest(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// It's safe to cast the Value to string since we used the string decoder.\n\tfmt.Printf(\"%s\\n\", snapshot.Value.(string))\n\n\t// Output:\n\t// hello world\n}\n"
  },
  {
    "path": "runtimevar/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage runtimevar_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/constantvar\"\n\t\"gocloud.dev/secrets\"\n\n\t_ \"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\truntimeconfig \"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc Example_jsonDecoder() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Config is the sample config struct we're going to parse our JSON into.\n\ttype Config struct {\n\t\tHost string\n\t\tPort int\n\t}\n\n\t// A sample JSON config that will decode into Config.\n\tconst jsonConfig = `{\"Host\": \"gocloud.dev\", \"Port\": 8080}`\n\n\t// Construct a Decoder that decodes raw bytes into our config.\n\tdecoder := runtimevar.NewDecoder(Config{}, runtimevar.JSONDecode)\n\n\t// Next, a construct a *Variable using a constructor or URL opener.\n\t// This example uses constantvar.\n\t// If you're using a URL opener, you can't decode JSON into a struct, but\n\t// you can use the query parameter \"decoder=jsonmap\" to decode into a map.\n\tv := constantvar.NewBytes([]byte(jsonConfig), decoder)\n\tdefer v.Close()\n\t// snapshot.Value will be of type Config.\n\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\tsnapshot, err := v.Latest(ctx)\n\tif err != nil {\n\t\tlog.Fatalf(\"Error in retrieving variable: %v\", err)\n\t}\n\tfmt.Printf(\"Config: %+v\\n\", snapshot.Value.(Config))\n\n\t// Output:\n\t// Config: {Host:gocloud.dev Port:8080}\n}\n\nfunc Example_stringDecoder() {\n\t// Construct a *Variable using a constructor from one of the\n\t// runtimevar subpackages. This example uses constantvar.\n\t// The variable value is of type string, so we use StringDecoder.\n\tv := constantvar.NewBytes([]byte(\"hello world\"), runtimevar.StringDecoder)\n\tdefer v.Close()\n\n\t// Call Latest to retrieve the value.\n\tsnapshot, err := v.Latest(context.Background())\n\tif err != nil {\n\t\tlog.Fatalf(\"Error in retrieving variable: %v\", err)\n\t}\n\t// snapshot.Value will be of type string.\n\tfmt.Printf(\"%q\\n\", snapshot.Value.(string))\n\n\t// Output:\n\t// \"hello world\"\n}\n\nfunc ExampleVariable_Latest() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tvar v *runtimevar.Variable\n\n\tsnapshot, err := v.Latest(context.Background())\n\tif err != nil {\n\t\tlog.Fatalf(\"Error in retrieving variable: %v\", err)\n\t}\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\t_ = snapshot\n}\n\nfunc ExampleSnapshot_As() {\n\t// This example is specific to the gcpruntimeconfig implementation; it\n\t// demonstrates access to the underlying\n\t// google.golang.org/genproto/googleapis/cloud/runtimeconfig.Variable type.\n\t// The types exposed for As by gcpruntimeconfig are documented in\n\t// https://godoc.org/gocloud.dev/runtimevar/gcpruntimeconfig#hdr-As\n\tctx := context.Background()\n\n\tconst url = \"gcpruntimeconfig://proj/config/key\"\n\tv, err := runtimevar.OpenVariable(ctx, url)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\ts, err := v.Latest(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tvar rcv *runtimeconfig.Variable\n\tif s.As(&rcv) {\n\t\tfmt.Println(rcv.UpdateTime)\n\t}\n}\n\nfunc ExampleVariable_ErrorAs() {\n\t// This example is specific to the gcpruntimeconfig implementation; it\n\t// demonstrates access to the underlying google.golang.org/grpc/status.Status\n\t// type.\n\t// The types exposed for As by gcpruntimeconfig are documented in\n\t// https://godoc.org/gocloud.dev/runtimevar/gcpruntimeconfig#hdr-As\n\tctx := context.Background()\n\n\tconst url = \"gcpruntimeconfig://proj/wrongconfig/key\"\n\tv, err := runtimevar.OpenVariable(ctx, url)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t_, err = v.Watch(ctx)\n\tif err != nil {\n\t\tvar s *status.Status\n\t\tif v.ErrorAs(err, &s) {\n\t\t\tfmt.Println(s.Code())\n\t\t}\n\t}\n}\n\nfunc ExampleVariable_Watch() {\n\t// Construct a *Variable using a constructor from one of the\n\t// runtimevar subpackages. This example uses constantvar.\n\t// The variable value is of type string, so we use StringDecoder.\n\tv := constantvar.NewBytes([]byte(\"hello world\"), runtimevar.StringDecoder)\n\tdefer v.Close()\n\n\t// Call Watch in a loop from a background goroutine to see all changes,\n\t// including errors.\n\t//\n\t// You can use this for logging, or to trigger behaviors when the\n\t// config changes.\n\t//\n\t// Note that Latest always returns the latest \"good\" config, so seeing\n\t// an error from Watch doesn't mean that Latest will return one.\n\tgo func() {\n\t\tfor {\n\t\t\tsnapshot, err := v.Watch(context.Background())\n\t\t\tif err == runtimevar.ErrClosed {\n\t\t\t\t// v has been closed; exit.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\t// Casting to a string here because we used StringDecoder.\n\t\t\t\tlog.Printf(\"New config: %v\", snapshot.Value.(string))\n\t\t\t} else {\n\t\t\t\tlog.Printf(\"Error loading config: %v\", err)\n\t\t\t\t// Even though there's been an error loading the config,\n\t\t\t\t// v.Latest will continue to return the latest \"good\" value.\n\t\t\t}\n\t\t}\n\t}()\n}\n\nfunc ExampleDecryptDecode() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tvar keeper *secrets.Keeper\n\n\tdecodeFunc := runtimevar.DecryptDecode(keeper, runtimevar.StringDecode)\n\tdecoder := runtimevar.NewDecoder(\"\", decodeFunc)\n\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\t_ = decoder\n}\n"
  },
  {
    "path": "runtimevar/filevar/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage filevar_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/filevar\"\n)\n\nfunc ExampleOpenVariable() {\n\t// Create a temporary file to hold our config.\n\tf, err := os.CreateTemp(\"\", \"\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif _, err := f.Write([]byte(\"hello world\")); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *runtimevar.Variable pointing at f.\n\tv, err := filevar.OpenVariable(f.Name(), runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n\n\t// We can now read the current value of the variable from v.\n\tsnapshot, err := v.Latest(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// runtimevar.Snapshot.Value is decoded to a string.\n\tfmt.Println(snapshot.Value.(string))\n\n\t// Output:\n\t// hello world\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/filevar\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\n\tv, err := runtimevar.OpenVariable(ctx, \"file:///path/to/config.txt?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/filevar/filevar.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package filevar provides a runtimevar implementation with variables\n// backed by the filesystem. Use OpenVariable to construct a *runtimevar.Variable.\n//\n// Configuration files can be updated using any commands (cp, mv) or\n// tools/editors. This package does not guarantee read consistency since\n// it does not have control over the writes. For example, some kinds of\n// updates might result in filevar temporarily receiving an error or an\n// empty value.\n//\n// Known Issues:\n//\n// * On macOS, if an empty file is copied into a configuration file,\n//\n//\tfilevar will not detect the change.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, filevar registers for the scheme \"file\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// filevar does not support any types for As.\npackage filevar // import \"gocloud.dev/runtimevar/filevar\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/fsnotify/fsnotify\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, &URLOpener{})\n}\n\n// Scheme is the URL scheme filevar registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"file\"\n\n// URLOpener opens filevar URLs like \"file:///path/to/config.json?decoder=json\".\n//\n// The URL's host+path is used as the path to the file to watch.\n// If os.PathSeparator != \"/\", any leading \"/\" from the path is dropped\n// and remaining '/' characters are converted to os.PathSeparator.\n//\n// The following URL parameters are supported:\n//   - decoder: The decoder to use. Defaults to URLOpener.Decoder, or\n//     runtimevar.BytesDecoder if URLOpener.Decoder is nil.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The frequency for retries after an error, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to OpenVariable.\n\tOptions Options\n}\n\n// OpenVariableURL opens the variable at the URL's path. See the package doc\n// for more details.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\tpath := u.Path\n\t// Hostname == \".\" means a relative path, so drop the leading \"/\".\n\t// Also drop the leading \"/\" on Windows.\n\tif u.Host == \".\" || os.PathSeparator != '/' {\n\t\tpath = strings.TrimPrefix(path, \"/\")\n\t}\n\treturn OpenVariable(filepath.FromSlash(path), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the frequency of retries after an error. For example,\n\t// if the file does not exist. Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable backed by the file at path.\n// The file holds raw bytes; provide a decoder to decode the raw bytes into the\n// appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(path string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\tw, err := newWatcher(path, decoder, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn runtimevar.New(w), nil\n}\n\nfunc newWatcher(path string, decoder *runtimevar.Decoder, opts *Options) (*watcher, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif path == \"\" {\n\t\treturn nil, errors.New(\"path is required\")\n\t}\n\tif decoder == nil {\n\t\treturn nil, errors.New(\"decoder is required\")\n\t}\n\n\t// Use absolute file path.\n\tabspath, err := filepath.Abs(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Construct a fsnotify.Watcher.\n\tnotifier, err := fsnotify.NewWatcher()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Create a ctx for the background goroutine that does all of the reading.\n\t// The cancel function will be used to shut it down during Close, with the\n\t// result being passed back via closeCh.\n\tctx, cancel := context.WithCancel(context.Background())\n\tw := &watcher{\n\t\tpath: abspath,\n\t\t// See struct comments for why it's buffered.\n\t\tch:       make(chan *state, 1),\n\t\tcloseCh:  make(chan error),\n\t\tshutdown: cancel,\n\t}\n\tgo w.watch(ctx, notifier, abspath, decoder, driver.WaitDuration(opts.WaitDuration))\n\treturn w, nil\n}\n\n// errNotExist wraps an underlying error in cases where the file likely doesn't\n// exist.\ntype errNotExist struct {\n\terr error\n}\n\nfunc (e *errNotExist) Error() string {\n\treturn e.err.Error()\n}\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\tupdateTime time.Time\n\traw        []byte\n\terr        error\n}\n\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\nfunc (s *state) As(i any) bool {\n\treturn false\n}\n\n// watcher implements driver.Watcher for configurations stored in files.\ntype watcher struct {\n\t// The path for the file we're watching.\n\tpath string\n\t// The background goroutine writes new *state values to ch.\n\t// It is buffered so that the background goroutine can write without\n\t// blocking; it always drains the buffer before writing so that the latest\n\t// write is buffered. If writes could block, the background goroutine could be\n\t// blocked indefinitely from reading fsnotify events.\n\tch chan *state\n\t// closeCh is used to return any errors from closing the notifier\n\t// back to watcher.Close.\n\tcloseCh chan error\n\t// shutdown tells the background goroutine to exit.\n\tshutdown func()\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, _ driver.State) (driver.State, time.Duration) {\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn &state{err: ctx.Err()}, 0\n\tcase cur := <-w.ch:\n\t\treturn cur, 0\n\t}\n}\n\n// updateState checks to see if s and prev both represent the same error.\n// If not, it drains any previous state buffered in w.ch, then writes s to it.\n// It always return s.\nfunc (w *watcher) updateState(s, prev *state) *state {\n\tif s.err != nil && prev != nil && prev.err != nil && (s.err == prev.err || s.err.Error() == prev.err.Error() || (os.IsNotExist(s.err) && os.IsNotExist(prev.err))) {\n\t\t// s represents the same error as prev.\n\t\treturn s\n\t}\n\t// Drain any buffered value on ch; it is now stale.\n\tselect {\n\tcase <-w.ch:\n\tdefault:\n\t}\n\t// This write can't block, since we're the only writer, ch has a buffer\n\t// size of 1, and we just read anything that was buffered.\n\tw.ch <- s\n\treturn s\n}\n\n// watch is run by a background goroutine.\n// It watches file using notifier, and writes new states to w.ch.\n// If it can't read or watch the file, it re-checks every wait.\n// It exits when ctx is canceled, and writes any shutdown errors (or\n// nil if there weren't any) to w.closeCh.\nfunc (w *watcher) watch(ctx context.Context, notifier *fsnotify.Watcher, file string, decoder *runtimevar.Decoder, wait time.Duration) {\n\tvar cur *state\n\n\tfor {\n\t\t// If the current state is an error, pause between attempts\n\t\t// to avoid spin loops. In particular, this happens when the file\n\t\t// doesn't exist.\n\t\tif cur != nil && cur.err != nil {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tw.closeCh <- notifier.Close()\n\t\t\t\treturn\n\t\t\tcase <-time.After(wait):\n\t\t\t}\n\t\t}\n\n\t\t// Add the file to the notifier to be watched. It's fine to be\n\t\t// added multiple times, and fsnotifier is a bit flaky about when\n\t\t// it's needed during renames, so just always try.\n\t\tif err := notifier.Add(file); err != nil {\n\t\t\t// File probably does not exist. Try again later.\n\t\t\tcur = w.updateState(&state{err: &errNotExist{err}}, cur)\n\t\t\tcontinue\n\t\t}\n\n\t\t// Read the file.\n\t\tb, err := os.ReadFile(file)\n\t\tif err != nil {\n\t\t\t// File probably does not exist. Try again later.\n\t\t\tcur = w.updateState(&state{err: &errNotExist{err}}, cur)\n\t\t\tcontinue\n\t\t}\n\n\t\t// If it's a new value, decode and return it.\n\t\tif cur == nil || cur.err != nil || !bytes.Equal(cur.raw, b) {\n\t\t\tif val, err := decoder.Decode(ctx, b); err != nil {\n\t\t\t\tcur = w.updateState(&state{err: err}, cur)\n\t\t\t} else {\n\t\t\t\tcur = w.updateState(&state{val: val, updateTime: time.Now(), raw: b}, cur)\n\t\t\t}\n\t\t}\n\n\t\t// Block until notifier tells us something relevant changed.\n\t\twait := true\n\t\tfor wait {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tw.closeCh <- notifier.Close()\n\t\t\t\treturn\n\n\t\t\tcase event := <-notifier.Events:\n\t\t\t\tif event.Name != file {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// Ignore if not one of the following operations.\n\t\t\t\tif event.Op&(fsnotify.Create|fsnotify.Write|fsnotify.Remove|fsnotify.Rename) == 0 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\twait = false\n\n\t\t\tcase err := <-notifier.Errors:\n\t\t\t\tcur = w.updateState(&state{err: err}, cur)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Close implements driver.WatchVariable.\nfunc (w *watcher) Close() error {\n\t// Tell the background goroutine to shut down by canceling its ctx.\n\tw.shutdown()\n\t// Wait for it to return the result of closing the notifier.\n\terr := <-w.closeCh\n\t// Cleanup our channels.\n\tclose(w.ch)\n\tclose(w.closeCh)\n\treturn err\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool { return false }\n\n// ErrorCode implements driver.ErrorCode.\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tif _, ok := err.(*errNotExist); ok {\n\t\treturn gcerrors.NotFound\n\t}\n\treturn gcerrors.Unknown\n}\n"
  },
  {
    "path": "runtimevar/filevar/filevar_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage filevar\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n\t\"gocloud.dev/secrets\"\n\t_ \"gocloud.dev/secrets/localsecrets\"\n)\n\ntype harness struct {\n\tdir    string\n\tcloser func()\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tdir := t.TempDir()\n\n\treturn &harness{\n\t\tdir:    dir,\n\t\tcloser: func() { _ = os.RemoveAll(dir) },\n\t}, nil\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\t// filevar uses a goroutine in the background that poll every WaitDuration if\n\t// the file is deleted. Make this fast for tests.\n\treturn newWatcher(filepath.Join(h.dir, name), decoder, &Options{WaitDuration: 1 * time.Millisecond})\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\t// Write to a temporary file and rename; otherwise,\n\t// Watch can read an empty file during the write.\n\ttmp, err := os.CreateTemp(h.dir, \"tmp\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := tmp.Write(val); err != nil {\n\t\ttmp.Close()\n\t\treturn err\n\t}\n\ttmp.Close()\n\treturn os.Rename(tmp.Name(), filepath.Join(h.dir, name))\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\treturn h.CreateVariable(ctx, name, val)\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\tpath := filepath.Join(h.dir, name)\n\treturn os.Remove(path)\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar ss string\n\tif s.As(&ss) {\n\t\treturn errors.New(\"Snapshot.As expected to fail\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar ss string\n\tif v.ErrorAs(err, &ss) {\n\t\treturn errors.New(\"runtimevar.ErrorAs expected to fail\")\n\t}\n\treturn nil\n}\n\n// Filevar-specific tests.\n\nfunc TestOpenVariable(t *testing.T) {\n\tdir := t.TempDir()\n\n\ttests := []struct {\n\t\tdescription string\n\t\tpath        string\n\t\tdecoder     *runtimevar.Decoder\n\t\twant        string\n\t\twantErr     bool\n\t}{\n\t\t{\n\t\t\tdescription: \"empty path results in error\",\n\t\t\tdecoder:     runtimevar.StringDecoder,\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"empty decoder results in error\",\n\t\t\tpath:        filepath.Join(dir, \"foo.txt\"),\n\t\t\twantErr:     true,\n\t\t},\n\t\t{\n\t\t\tdescription: \"basic path works\",\n\t\t\tpath:        filepath.Join(dir, \"foo.txt\"),\n\t\t\tdecoder:     runtimevar.StringDecoder,\n\t\t\twant:        filepath.Join(dir, \"foo.txt\"),\n\t\t},\n\t\t{\n\t\t\tdescription: \"path with extra relative dirs works and is cleaned up\",\n\t\t\tpath:        filepath.Join(dir, \"bar/../foo.txt\"),\n\t\t\tdecoder:     runtimevar.StringDecoder,\n\t\t\twant:        filepath.Join(dir, \"foo.txt\"),\n\t\t},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.description, func(t *testing.T) {\n\t\t\t// Create driver impl.\n\t\t\tdrv, err := newWatcher(test.path, test.decoder, nil)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif drv != nil {\n\t\t\t\tif drv.path != test.want {\n\t\t\t\t\tt.Errorf(\"got %q want %q\", drv.path, test.want)\n\t\t\t\t}\n\t\t\t\tdrv.Close()\n\t\t\t}\n\n\t\t\t// Create portable type.\n\t\t\tw, err := OpenVariable(test.path, test.decoder, nil)\n\t\t\tif (err != nil) != test.wantErr {\n\t\t\t\tt.Errorf(\"got err %v want error %v\", err, test.wantErr)\n\t\t\t}\n\t\t\tif w != nil {\n\t\t\t\tw.Close()\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenVariableURL(t *testing.T) {\n\tdir := t.TempDir()\n\n\tjsonPath := filepath.Join(dir, \"myvar.json\")\n\tif err := os.WriteFile(jsonPath, []byte(`{\"Foo\": \"Bar\"}`), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttxtPath := filepath.Join(dir, \"myvar.txt\")\n\tif err := os.WriteFile(txtPath, []byte(\"hello world!\"), 0o666); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tnonexistentPath := filepath.Join(dir, \"filenotfound\")\n\tctx := context.Background()\n\tsecretsPath := filepath.Join(dir, \"mysecret.txt\")\n\tcleanup, err := setupTestSecrets(ctx, dir, secretsPath)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Convert paths to a URL path, adding a leading \"/\" if needed on Windows\n\t// (on Unix, dirpath already has a leading \"/\").\n\tjsonPath = filepath.ToSlash(jsonPath)\n\ttxtPath = filepath.ToSlash(txtPath)\n\tnonexistentPath = filepath.ToSlash(nonexistentPath)\n\tsecretsPath = filepath.ToSlash(secretsPath)\n\tif os.PathSeparator != '/' {\n\t\tif !strings.HasPrefix(jsonPath, \"/\") {\n\t\t\tjsonPath = \"/\" + jsonPath\n\t\t}\n\t\tif !strings.HasPrefix(txtPath, \"/\") {\n\t\t\ttxtPath = \"/\" + txtPath\n\t\t}\n\t\tif !strings.HasPrefix(nonexistentPath, \"/\") {\n\t\t\tnonexistentPath = \"/\" + nonexistentPath\n\t\t}\n\t\tif !strings.HasPrefix(secretsPath, \"/\") {\n\t\t\tsecretsPath = \"/\" + secretsPath\n\t\t}\n\t}\n\n\ttests := []struct {\n\t\tURL          string\n\t\tWantErr      bool\n\t\tWantWatchErr bool\n\t\tWant         any\n\t}{\n\t\t// Variable construction succeeds, but the file does not exist.\n\t\t{\"file://\" + nonexistentPath, false, true, nil},\n\t\t// Variable construction fails due to invalid decoder arg.\n\t\t{\"file://\" + txtPath + \"?decoder=notadecoder\", true, false, nil},\n\t\t// Variable construction fails due to invalid arg.\n\t\t{\"file://\" + txtPath + \"?param=value\", true, false, nil},\n\t\t// Working example with default decoder.\n\t\t{\"file://\" + txtPath, false, false, []byte(\"hello world!\")},\n\t\t// Working example with string decoder.\n\t\t{\"file://\" + txtPath + \"?decoder=string\", false, false, \"hello world!\"},\n\t\t// Working example with JSON decoder.\n\t\t{\"file://\" + jsonPath + \"?decoder=jsonmap\", false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t\t// Working example with decrypt (default) decoder.\n\t\t{\"file://\" + secretsPath + \"?decoder=decrypt\", false, false, []byte(`{\"Foo\":\"Bar\"}`)},\n\t\t// Working example with decrypt+bytes decoder.\n\t\t{\"file://\" + secretsPath + \"?decoder=decrypt+bytes\", false, false, []byte(`{\"Foo\":\"Bar\"}`)},\n\t\t// Working example with decrypt+json decoder.\n\t\t{\"file://\" + secretsPath + \"?decoder=decrypt+jsonmap\", false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t\t// Working example with escaped decrypt+json decoder\n\t\t{\"file://\" + secretsPath + \"?decoder=\" + url.QueryEscape(\"decrypt+jsonmap\"), false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t\t// Setting wait.\n\t\t{\"file://\" + txtPath + \"?decoder=string&wait=1m\", false, false, \"hello world!\"},\n\t\t// Invalid wait.\n\t\t{\"file://\" + txtPath + \"?decoder=string&wait=xx\", true, false, nil},\n\t\t// Relative path using host=\".\"; bucket is created but error at read time.\n\t\t{\"file://./../..\" + nonexistentPath, false, true, nil},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.URL, func(t *testing.T) {\n\t\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer v.Close()\n\t\t\tsnapshot, err := v.Watch(ctx)\n\t\t\tif (err != nil) != test.WantWatchErr {\n\t\t\t\tt.Errorf(\"%s: got Watch error %v, want error %v\", test.URL, err, test.WantWatchErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !cmp.Equal(snapshot.Value, test.Want) {\n\t\t\t\tt.Errorf(\"%s: got snapshot value\\n%v\\n  want\\n%v\", test.URL, snapshot.Value, test.Want)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc setupTestSecrets(ctx context.Context, dir, secretsPath string) (func(), error) {\n\tconst keeperEnv = \"RUNTIMEVAR_KEEPER_URL\"\n\tconst keeperURL = \"base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=\"\n\toldURL := os.Getenv(keeperEnv)\n\tos.Setenv(keeperEnv, keeperURL)\n\tcleanup := func() { os.Setenv(keeperEnv, oldURL) }\n\n\tk, err := secrets.OpenKeeper(ctx, keeperURL)\n\tif err != nil {\n\t\treturn cleanup, err\n\t}\n\tsc, err := k.Encrypt(ctx, []byte(`{\"Foo\":\"Bar\"}`))\n\tif err != nil {\n\t\treturn cleanup, err\n\t}\n\tif err := os.WriteFile(secretsPath, sc, 0o666); err != nil {\n\t\treturn cleanup, err\n\t}\n\treturn cleanup, nil\n}\n"
  },
  {
    "path": "runtimevar/gcpruntimeconfig/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpruntimeconfig_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/gcpruntimeconfig\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Connect to the Runtime Configurator service.\n\tclient, cleanup, err := gcpruntimeconfig.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// You can use the VariableKey helper to construct a Variable key from\n\t// your project ID, config ID, and the variable name; alternatively,\n\t// you can construct the full string yourself (e.g.,\n\t// \"projects/gcp-project-id/configs/config-id/variables/variable-name\").\n\t// See https://cloud.google.com/deployment-manager/runtime-configurator/\n\t// for more details.\n\t//\n\t// For this example, the GCP Cloud Runtime Configurator variable being\n\t// referenced should have a JSON string that decodes into MyConfig.\n\tvariableKey := gcpruntimeconfig.VariableKey(\"gcp-project-id\", \"config-id\", \"variable-name\")\n\n\t// Construct a *runtimevar.Variable that watches the variable.\n\tv, err := gcpruntimeconfig.OpenVariable(client, variableKey, runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The URL Host+Path are used as the GCP Runtime Configurator Variable key;\n\t// see https://cloud.google.com/deployment-manager/runtime-configurator/\n\t// for more details.\n\n\tv, err := runtimevar.OpenVariable(ctx, \"gcpruntimeconfig://projects/myproject/configs/myconfigid/variables/myvar?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/gcpruntimeconfig/gcpruntimeconfig.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcpruntimeconfig provides a runtimevar implementation with\n// variables read from GCP Cloud Runtime Configurator\n// (https://cloud.google.com/deployment-manager/runtime-configurator).\n// Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, gcpruntimeconfig registers for the scheme\n// \"gcpruntimeconfig\".\n// The default URL opener will creating a connection using use default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// gcpruntimeconfig exposes the following types for As:\n//   - Snapshot: *pb.Variable\n//   - Error: *status.Status\npackage gcpruntimeconfig // import \"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"regexp\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\tpb \"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/oauth\"\n\t\"google.golang.org/grpc/status\"\n)\n\nconst (\n\t// endpoint is the address of the GCP Runtime Configurator API.\n\tendPoint = \"runtimeconfig.googleapis.com:443\"\n)\n\n// Dial opens a gRPC connection to the Runtime Configurator API using\n// credentials from ts. It is provided as an optional helper with useful\n// defaults.\n//\n// The second return value is a function that should be called to clean up\n// the connection opened by Dial.\nfunc Dial(ctx context.Context, ts gcp.TokenSource) (pb.RuntimeConfigManagerClient, func(), error) {\n\tconn, err := grpc.DialContext(ctx, endPoint,\n\t\tgrpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, \"\")),\n\t\tgrpc.WithPerRPCCredentials(oauth.TokenSource{TokenSource: ts}),\n\t\tuseragent.GRPCDialOption(\"runtimevar\"),\n\t)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn pb.NewRuntimeConfigManagerClient(conn), func() { conn.Close() }, nil\n}\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, new(lazyCredsOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenVariableURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\to.init.Do(func() {\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tclient, _, err := Dial(ctx, creds.TokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenVariableURL(ctx, u)\n}\n\n// Scheme is the URL scheme gcpruntimeconfig registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"gcpruntimeconfig\"\n\n// URLOpener opens gcpruntimeconfig URLs like \"gcpruntimeconfig://projects/[project_id]/configs/[CONFIG_ID]/variables/[VARIABLE_NAME]\".\n//\n// The URL Host+Path are used as the GCP Runtime Configurator Variable key;\n// see https://cloud.google.com/deployment-manager/runtime-configurator/\n// for more details.\n//\n// The following query parameters are supported:\n//\n//   - decoder: The decoder to use. Defaults to URLOpener.Decoder, or\n//     runtimevar.BytesDecoder if URLOpener.Decoder is nil.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// Client must be set to a non-nil client authenticated with\n\t// Cloud RuntimeConfigurator scope or equivalent.\n\tClient pb.RuntimeConfigManagerClient\n\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to New.\n\tOptions Options\n}\n\n// OpenVariableURL opens a gcpruntimeconfig Variable for u.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\treturn OpenVariable(o.Client, path.Join(u.Host, u.Path), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the rate at which Parameter Store is polled.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable backed by variableKey in\n// GCP Cloud Runtime Configurator.\n//\n// A variableKey will look like:\n//\n//\tprojects/[project_id]/configs/[CONFIG_ID]/variables/[VARIABLE_NAME]\n//\n// You can use the full string (e.g., copied from the GCP Console), or\n// construct one from its parts using VariableKey.\n//\n// See https://cloud.google.com/deployment-manager/runtime-configurator/ for\n// more details.\n//\n// Runtime Configurator returns raw bytes; provide a decoder to decode the raw bytes\n// into the appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(client pb.RuntimeConfigManagerClient, variableKey string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\tw, err := newWatcher(client, variableKey, decoder, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn runtimevar.New(w), nil\n}\n\nvar variableKeyRE = regexp.MustCompile(\"^projects/.+/configs/.+/variables/.+$\")\n\nfunc newWatcher(client pb.RuntimeConfigManagerClient, variableKey string, decoder *runtimevar.Decoder, opts *Options) (driver.Watcher, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\tif !variableKeyRE.MatchString(variableKey) {\n\t\treturn nil, fmt.Errorf(\"invalid variableKey %q; must match %v\", variableKey, variableKeyRE)\n\t}\n\treturn &watcher{\n\t\tclient:  client,\n\t\twait:    driver.WaitDuration(opts.WaitDuration),\n\t\tname:    variableKey,\n\t\tdecoder: decoder,\n\t}, nil\n}\n\n// VariableKey constructs a GCP Runtime Configurator variable key from\n// component parts. See\n// https://cloud.google.com/deployment-manager/runtime-configurator/\n// for more details.\nfunc VariableKey(projectID gcp.ProjectID, configID, variableName string) string {\n\treturn fmt.Sprintf(\"projects/%s/configs/%s/variables/%s\", projectID, configID, variableName)\n}\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\traw        *pb.Variable\n\tupdateTime time.Time\n\trawBytes   []byte\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tif s.raw == nil {\n\t\treturn false\n\t}\n\tp, ok := i.(**pb.Variable)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s.raw\n\treturn true\n}\n\n// errorState returns a new State with err, unless prevS also represents\n// the same error, in which case it returns nil.\nfunc errorState(err error, prevS driver.State) driver.State {\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\t// New error.\n\t\treturn s\n\t}\n\tif equivalentError(err, prev.err) {\n\t\t// Same error, return nil to indicate no change.\n\t\treturn nil\n\t}\n\treturn s\n}\n\n// equivalentError returns true iff err1 and err2 represent an equivalent error;\n// i.e., we don't want to return it to the user as a different error.\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tcode1, code2 := status.Code(err1), status.Code(err2)\n\treturn code1 != codes.OK && code1 != codes.Unknown && code1 == code2\n}\n\n// watcher implements driver.Watcher for configurations provided by the Runtime Configurator\n// service.\ntype watcher struct {\n\tclient  pb.RuntimeConfigManagerClient\n\twait    time.Duration\n\tname    string\n\tdecoder *runtimevar.Decoder\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\t// Get the variable from the backend.\n\tvpb, err := w.client.GetVariable(ctx, &pb.GetVariableRequest{Name: w.name})\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\tupdateTime, err := parseUpdateTime(vpb)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\t// See if it's the same raw bytes as before.\n\tb := bytesFromProto(vpb)\n\tif prev != nil && bytes.Equal(b, prev.(*state).rawBytes) {\n\t\t// No change!\n\t\treturn nil, w.wait\n\t}\n\n\t// Decode the value.\n\tval, err := w.decoder.Decode(ctx, b)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\treturn &state{val: val, raw: vpb, updateTime: updateTime, rawBytes: b}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\t// FromError converts err to a *status.Status.\n\ts, _ := status.FromError(err)\n\tif p, ok := i.(**status.Status); ok {\n\t\t*p = s\n\t\treturn true\n\t}\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\nfunc bytesFromProto(vpb *pb.Variable) []byte {\n\t// Proto may contain either bytes or text.  If it contains text content, convert that to []byte.\n\tif _, isBytes := vpb.GetContents().(*pb.Variable_Value); isBytes {\n\t\treturn vpb.GetValue()\n\t}\n\treturn []byte(vpb.GetText())\n}\n\nfunc parseUpdateTime(vpb *pb.Variable) (time.Time, error) {\n\treturn vpb.GetUpdateTime().AsTime(), nil\n}\n"
  },
  {
    "path": "runtimevar/gcpruntimeconfig/gcpruntimeconfig_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpruntimeconfig\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n\tpb \"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// This constant records the project used for the last --record.\n// If you want to use --record mode,\n// 1. Update this constant to your GCP project ID.\n// 2. Ensure that the \"Runtime Configuration API\" is enabled for your project.\n// TODO(issue #300): Use Terraform to get this.\nconst projectID = \"go-cloud-test-216917\"\n\nconst (\n\t// configID is the runtimeconfig high-level config that variables sit under.\n\tconfigID = \"go_cloud_runtimeconfigurator_test\"\n)\n\nfunc configPath() string {\n\treturn fmt.Sprintf(\"projects/%s/configs/%s\", projectID, configID)\n}\n\nfunc variableKey(variableName string) string {\n\treturn VariableKey(projectID, configID, variableName)\n}\n\ntype harness struct {\n\tclient pb.RuntimeConfigManagerClient\n\tcloser func()\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tconn, done := setup.NewGCPgRPCConn(ctx, t, endPoint, \"runtimevar\")\n\tclient := pb.NewRuntimeConfigManagerClient(conn)\n\t// Ignore errors if the config already exists.\n\t_, _ = client.CreateConfig(ctx, &pb.CreateConfigRequest{\n\t\tParent: \"projects/\" + projectID,\n\t\tConfig: &pb.RuntimeConfig{\n\t\t\tName:        configPath(),\n\t\t\tDescription: t.Name(),\n\t\t},\n\t})\n\treturn &harness{\n\t\tclient: client,\n\t\tcloser: func() {\n\t\t\t_, _ = client.DeleteConfig(ctx, &pb.DeleteConfigRequest{Name: configPath()})\n\t\t\tdone()\n\t\t},\n\t}, nil\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.client, variableKey(name), decoder, nil)\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\t_, err := h.client.CreateVariable(ctx, &pb.CreateVariableRequest{\n\t\tParent: configPath(),\n\t\tVariable: &pb.Variable{\n\t\t\tName:     variableKey(name),\n\t\t\tContents: &pb.Variable_Value{Value: val},\n\t\t},\n\t})\n\treturn err\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\t_, err := h.client.UpdateVariable(ctx, &pb.UpdateVariableRequest{\n\t\tName: variableKey(name),\n\t\tVariable: &pb.Variable{\n\t\t\tContents: &pb.Variable_Value{Value: val},\n\t\t},\n\t})\n\treturn err\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\t_, err := h.client.DeleteVariable(ctx, &pb.DeleteVariableRequest{Name: variableKey(name)})\n\treturn err\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar v *pb.Variable\n\tif !s.As(&v) {\n\t\treturn errors.New(\"Snapshot.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar s *status.Status\n\tif !v.ErrorAs(err, &s) {\n\t\treturn errors.New(\"runtimevar.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\n// Runtimeconfigurator-specific tests.\n\nfunc TestEquivalentError(t *testing.T) {\n\ttests := []struct {\n\t\tErr1, Err2 error\n\t\tWant       bool\n\t}{\n\t\t{Err1: errors.New(\"not grpc\"), Err2: errors.New(\"not grpc\"), Want: true},\n\t\t{Err1: errors.New(\"not grpc\"), Err2: errors.New(\"not grpc but different\")},\n\t\t{Err1: errors.New(\"not grpc\"), Err2: status.Errorf(codes.Internal, \"fail\")},\n\t\t{Err1: status.Errorf(codes.Internal, \"fail\"), Err2: status.Errorf(codes.InvalidArgument, \"fail\")},\n\t\t{Err1: status.Errorf(codes.Internal, \"fail\"), Err2: status.Errorf(codes.Internal, \"fail\"), Want: true},\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := equivalentError(test.Err1, test.Err2)\n\t\tif got != test.Want {\n\t\t\tt.Errorf(\"%v vs %v: got %v want %v\", test.Err1, test.Err2, got, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestNoConnectionError(t *testing.T) {\n\tctx := context.Background()\n\tcreds, err := setup.FakeGCPCredentials(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Connect to the Runtime Configurator service.\n\tclient, cleanup, err := Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tvariableKey := VariableKey(\"gcp-project-id\", \"cfg-name\", \"cfg-variable-name\")\n\tv, err := OpenVariable(client, variableKey, nil, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer v.Close()\n\t_, err = v.Watch(context.Background())\n\tif err == nil {\n\t\tt.Error(\"got nil want error\")\n\t}\n}\n\nfunc TestOpenVariable(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg/variables/myvar\", false},\n\t\t// OK, hierarchical key name.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg/variables/myvar1/myvar2\", false},\n\t\t// OK, setting decoder.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg/variables/myvar?decoder=string\", false},\n\t\t// Missing projects prefix.\n\t\t{\"gcpruntimeconfig://project/myproject/configs/mycfg/variables/myvar\", true},\n\t\t// Missing project.\n\t\t{\"gcpruntimeconfig://projects//configs/mycfg/variables/myvar\", true},\n\t\t// Missing configs.\n\t\t{\"gcpruntimeconfig://projects/myproject/mycfg/variables/myvar\", true},\n\t\t// Missing configID.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs//variables/myvar\", true},\n\t\t// Missing variables.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg//myvar\", true},\n\t\t// Missing variable name.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg/variables/\", true},\n\t\t// Invalid decoder.\n\t\t{\"gcpruntimeconfig://myproject/mycfg/myvar?decoder=notadecoder\", true},\n\t\t// Invalid param.\n\t\t{\"gcpruntimeconfig://myproject/mycfg/myvar?param=value\", true},\n\t\t// OK, setting wait.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg/variables/myvar?wait=1m\", false},\n\t\t// Invalid wait.\n\t\t{\"gcpruntimeconfig://projects/myproject/configs/mycfg/variables/myvar?wait=xx\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\tif v != nil {\n\t\t\tdefer v.Close()\n\t\t}\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "runtimevar/gcpsecretmanager/example_test.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpsecretmanager_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/gcpsecretmanager\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Your GCP credentials.\n\t// See https://cloud.google.com/docs/authentication/production\n\t// for more info on alternatives.\n\tcreds, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Connect to the GCP Secret Manager service.\n\tclient, cleanup, err := gcpsecretmanager.Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// You can use the SecretKey helper to construct a secret key from\n\t// your project ID and the secret ID; alternatively,\n\t// you can construct the full string yourself (e.g.,\n\t// \"projects/gcp-project-id/secrets/secret-id\").\n\t// gcpsecretmanager package will always use the latest secret value,\n\t// so `/version/latest` postfix must NOT be added to the secret key.\n\t// See https://cloud.google.com/secret-manager\n\t// for more details.\n\t//\n\t// For this example, the GCP Secret Manager secret being\n\t// referenced should have a JSON string that decodes into MyConfig.\n\tvariableKey := gcpsecretmanager.SecretKey(\"gcp-project-id\", \"secret-id\")\n\n\t// Construct a *runtimevar.Variable that watches the variable.\n\tv, err := gcpsecretmanager.OpenVariable(client, variableKey, runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/gcpsecretmanager\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The URL Host+Path are used as the GCP Secret Manager secret key;\n\t// see https://cloud.google.com/secret-manager\n\t// for more details.\n\n\tv, err := runtimevar.OpenVariable(ctx, \"gcpsecretmanager://projects/myproject/secrets/mysecret?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/gcpsecretmanager/gcpsecretmanager.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcpsecretmanager provides a runtimevar implementation with\n// secrets read from GCP Secret Manager\n// (https://cloud.google.com/secret-manager).\n// Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, gcpsecretmanager registers for the scheme\n// \"gcpsecretmanager\".\n// The default URL opener will creating a connection using use default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// gcpsecretmanager exposes the following types for As:\n//   - Snapshot: *secretmanagerpb.AccessSecretVersionResponse\n//   - Error: *status.Status\npackage gcpsecretmanager // import \"gocloud.dev/runtimevar/gcpsecretmanager\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"regexp\"\n\t\"sync\"\n\t\"time\"\n\n\tsecretmanager \"cloud.google.com/go/secretmanager/apiv1\"\n\t\"cloud.google.com/go/secretmanager/apiv1/secretmanagerpb\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/credentials\"\n\t\"google.golang.org/grpc/credentials/oauth\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// Dial opens a gRPC connection to the Secret Manager API using\n// credentials from ts. It is provided as an optional helper with useful\n// defaults.\n//\n// The second return value is a function that should be called to clean up\n// the connection opened by Dial.\nfunc Dial(ctx context.Context, ts gcp.TokenSource) (*secretmanager.Client, func(), error) {\n\tclient, err := secretmanager.NewClient(ctx,\n\t\toption.WithGRPCDialOption(\n\t\t\tgrpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, \"\")),\n\t\t),\n\t\toption.WithTokenSource(oauth.TokenSource{TokenSource: ts}),\n\t\toption.WithUserAgent(\"runtimevar\"),\n\t)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn client, func() { _ = client.Close() }, nil\n}\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, new(lazyCredsOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenVariableURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\to.init.Do(func() {\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tclient, _, err := Dial(ctx, creds.TokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenVariableURL(ctx, u)\n}\n\n// Scheme is the URL scheme gcpsecretmanager registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"gcpsecretmanager\"\n\n// URLOpener opens gcpsecretmanager URLs like \"gcpsecretmanager://projects/[project_id]/secrets/[secret_id]\".\n//\n// The URL Host+Path are used as the GCP Secret Manager secret key;\n// see https://cloud.google.com/secret-manager\n// for more details.\n//\n// The following query parameters are supported:\n//\n//   - decoder: The decoder to use. Defaults to URLOpener.Decoder, or\n//     runtimevar.BytesDecoder if URLOpener.Decoder is nil.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// Client must be set to a non-nil client authenticated with\n\t// Secret Manager scope or equivalent.\n\tClient *secretmanager.Client\n\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to New.\n\tOptions Options\n}\n\n// OpenVariableURL opens a gcpsecretmanager Secret.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\treturn OpenVariable(o.Client, path.Join(u.Host, u.Path), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the rate at which Secret Manager is polled.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// OpenVariable constructs a *runtimevar.Variable backed by secretKey in GCP Secret Manager.\n//\n// A secretKey will look like:\n//\n//\tprojects/[project_id]/secrets/[secret_id]\n//\n// A project ID is a unique, user-assigned ID of the Project.\n// It must be 6 to 30 lowercase letters, digits, or hyphens.\n// It must start with a letter. Trailing hyphens are prohibited.\n//\n// A secret ID is a string with a maximum length of 255 characters and can\n// contain uppercase and lowercase letters, numerals, and the hyphen (`-`) and\n// underscore (`_`) characters.\n//\n// gcpsecretmanager package will always use the latest secret value,\n// so `/version/latest` postfix must NOT be added to the secret key.\n//\n// You can use the full string (e.g., copied from the GCP Console), or\n// construct one from its parts using SecretKey.\n//\n// See https://cloud.google.com/secret-manager for more details.\n//\n// Secret Manager returns raw bytes; provide a decoder to decode the raw bytes\n// into the appropriate type for runtimevar.Snapshot.Value.\n// See the runtimevar package documentation for examples of decoders.\nfunc OpenVariable(client *secretmanager.Client, secretKey string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\tw, err := newWatcher(client, secretKey, decoder, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn runtimevar.New(w), nil\n}\n\nvar secretKeyRE = regexp.MustCompile(`^projects/[a-z][a-z0-9_\\-]{4,28}[a-z0-9_]/secrets/[a-zA-Z0-9_\\-]{1,255}$`)\n\nconst latestVersion = \"/versions/latest\"\n\nfunc newWatcher(client *secretmanager.Client, secretKey string, decoder *runtimevar.Decoder, opts *Options) (driver.Watcher, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\n\tif !secretKeyRE.MatchString(secretKey) {\n\t\treturn nil, fmt.Errorf(\"invalid secretKey %q; must match %v\", secretKey, secretKeyRE)\n\t}\n\n\treturn &watcher{\n\t\tclient:  client,\n\t\twait:    driver.WaitDuration(opts.WaitDuration),\n\t\tname:    secretKey,\n\t\tdecoder: decoder,\n\t}, nil\n}\n\n// SecretKey constructs a GCP Secret Manager secret key from component parts.\n// See https://cloud.google.com/secret-manager for more details.\nfunc SecretKey(projectID gcp.ProjectID, secretID string) string {\n\treturn \"projects/\" + string(projectID) + \"/secrets/\" + secretID\n}\n\n// state implements driver.State.\ntype state struct {\n\tval        any\n\traw        *secretmanagerpb.AccessSecretVersionResponse\n\tupdateTime time.Time\n\trawBytes   []byte\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tif s.raw == nil {\n\t\treturn false\n\t}\n\tp, ok := i.(**secretmanagerpb.AccessSecretVersionResponse)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s.raw\n\treturn true\n}\n\n// errorState returns a new State with err, unless prevS also represents\n// the same error, in which case it returns nil.\nfunc errorState(err error, prevS driver.State) driver.State {\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\t// New error.\n\t\treturn s\n\t}\n\tif equivalentError(err, prev.err) {\n\t\t// Same error, return nil to indicate no change.\n\t\treturn nil\n\t}\n\treturn s\n}\n\n// equivalentError returns true iff err1 and err2 represent an equivalent error;\n// i.e., we don't want to return it to the user as a different error.\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tcode1, code2 := status.Code(err1), status.Code(err2)\n\treturn code1 != codes.OK && code1 != codes.Unknown && code1 == code2\n}\n\n// watcher implements driver.Watcher for secrets provided by the Secret Manager service.\ntype watcher struct {\n\tclient  *secretmanager.Client\n\twait    time.Duration\n\tname    string\n\tdecoder *runtimevar.Decoder\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\tlatest := w.name + latestVersion\n\n\tsecret, err := w.client.AccessSecretVersion(ctx, &secretmanagerpb.AccessSecretVersionRequest{Name: latest})\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\tif secret == nil || secret.Payload == nil || secret.Payload.Data == nil {\n\t\treturn errorState(errors.New(\"invalid secret payload\"), prev), w.wait\n\t}\n\n\tmeta, err := w.client.GetSecretVersion(ctx, &secretmanagerpb.GetSecretVersionRequest{Name: latest})\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\tcreateTime := meta.CreateTime.AsTime()\n\n\t// See if it's the same raw bytes as before.\n\tif prev != nil {\n\t\tprevState, ok := prev.(*state)\n\t\tif ok && prevState != nil && bytes.Equal(secret.Payload.Data, prevState.rawBytes) {\n\t\t\t// No change!\n\t\t\treturn nil, w.wait\n\t\t}\n\t}\n\n\t// Decode the value.\n\tval, err := w.decoder.Decode(ctx, secret.Payload.Data)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\t// A secret version is immutable.\n\t// The latest secret value creation time is the last time the secret value has been changed.\n\t// Hence set updateTime as createTime.\n\treturn &state{val: val, raw: secret, updateTime: createTime, rawBytes: secret.Payload.Data}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\t// FromError converts err to a *status.Status.\n\ts, _ := status.FromError(err)\n\tif p, ok := i.(**status.Status); ok {\n\t\t*p = s\n\t\treturn true\n\t}\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n"
  },
  {
    "path": "runtimevar/gcpsecretmanager/gcpsecretmanager_test.go",
    "content": "// Copyright 2020 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpsecretmanager\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"testing\"\n\n\tsecretmanager \"cloud.google.com/go/secretmanager/apiv1\"\n\t\"cloud.google.com/go/secretmanager/apiv1/secretmanagerpb\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc/codes\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// This constant records the project used for the last --record.\n// If you want to use --record mode,\n// 1. Update this constant to your GCP project ID.\n// 2. Ensure that the \"Secret Manager API\" is enabled for your project.\n// TODO(issue #300): Use Terraform to get this.\nconst projectID = \"go-cloud-test-216917\"\n\nfunc secretKey(secretID string) string {\n\treturn \"projects/\" + projectID + \"/secrets/\" + secretID\n}\n\ntype harness struct {\n\tclient *secretmanager.Client\n\tcloser func()\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tconn, done := setup.NewGCPgRPCConn(ctx, t, \"secretmanager.googleapis.com:443\", \"runtimevar\")\n\n\tclient, err := secretmanager.NewClient(ctx, option.WithGRPCConn(conn))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &harness{\n\t\tclient: client,\n\t\tcloser: func() {\n\t\t\t_ = client.Close()\n\t\t\tdone()\n\t\t},\n\t}, nil\n}\n\nfunc (h *harness) MakeWatcher(_ context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.client, secretKey(name), decoder, nil)\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\t_, err := h.client.CreateSecret(ctx, &secretmanagerpb.CreateSecretRequest{\n\t\tParent:   \"projects/\" + projectID,\n\t\tSecretId: name,\n\t\tSecret: &secretmanagerpb.Secret{\n\t\t\tReplication: &secretmanagerpb.Replication{\n\t\t\t\tReplication: &secretmanagerpb.Replication_Automatic_{\n\t\t\t\t\tAutomatic: &secretmanagerpb.Replication_Automatic{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: map[string]string{\n\t\t\t\t\"project\": \"runtimevar\",\n\t\t\t},\n\t\t},\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Add initial secret version.\n\t_, err = h.client.AddSecretVersion(ctx, &secretmanagerpb.AddSecretVersionRequest{\n\t\tParent:  secretKey(name),\n\t\tPayload: &secretmanagerpb.SecretPayload{Data: val},\n\t})\n\n\treturn err\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\t_, err := h.client.AddSecretVersion(ctx, &secretmanagerpb.AddSecretVersionRequest{\n\t\tParent:  secretKey(name),\n\t\tPayload: &secretmanagerpb.SecretPayload{Data: val},\n\t})\n\n\treturn err\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\treturn h.client.DeleteSecret(ctx, &secretmanagerpb.DeleteSecretRequest{Name: secretKey(name)})\n}\n\nfunc (h *harness) Close() {\n\th.closer()\n}\n\nfunc (h *harness) Mutable() bool { return true }\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar v *secretmanagerpb.AccessSecretVersionResponse\n\tif !s.As(&v) {\n\t\treturn errors.New(\"Snapshot.As failed\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar s *status.Status\n\tif !v.ErrorAs(err, &s) {\n\t\treturn errors.New(\"runtimevar.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\n// Secretmanager-specific tests.\n\nfunc TestEquivalentError(t *testing.T) {\n\ttests := []struct {\n\t\tErr1, Err2 error\n\t\tWant       bool\n\t}{\n\t\t{Err1: errors.New(\"not grpc\"), Err2: errors.New(\"not grpc\"), Want: true},\n\t\t{Err1: errors.New(\"not grpc\"), Err2: errors.New(\"not grpc but different\")},\n\t\t{Err1: errors.New(\"not grpc\"), Err2: status.Errorf(codes.Internal, \"fail\")},\n\t\t{Err1: status.Errorf(codes.Internal, \"fail\"), Err2: status.Errorf(codes.InvalidArgument, \"fail\")},\n\t\t{Err1: status.Errorf(codes.Internal, \"fail\"), Err2: status.Errorf(codes.Internal, \"fail\"), Want: true},\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := equivalentError(test.Err1, test.Err2)\n\t\tif got != test.Want {\n\t\t\tt.Errorf(\"%v vs %v: got %v want %v\", test.Err1, test.Err2, got, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestNoConnectionError(t *testing.T) {\n\tctx := context.Background()\n\tcreds, err := setup.FakeGCPCredentials(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t// Connect to the Secret Manager service.\n\tclient, cleanup, err := Dial(ctx, creds.TokenSource)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tkey := SecretKey(\"gcp-project-id\", \"secret-name\")\n\tv, err := OpenVariable(client, key, nil, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t}()\n\n\t_, err = v.Watch(ctx)\n\tif err == nil {\n\t\tt.Error(\"got nil want error\")\n\t}\n}\n\nfunc TestOpenVariable(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret\", false},\n\t\t// OK, hierarchical key name.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret2\", false},\n\t\t// OK, setting decoder.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret?decoder=string\", false},\n\t\t// Missing projects prefix.\n\t\t{\"gcpsecretmanager://project/myproject/secrets/mysecret\", true},\n\t\t// Missing project.\n\t\t{\"gcpsecretmanager://projects//secrets/mysecret\", true},\n\t\t// Missing configs.\n\t\t{\"gcpsecretmanager://projects/myproject/mysecret\", true},\n\t\t// Missing secretID with trailing slash.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/\", true},\n\t\t// Missing secretID.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets\", true},\n\t\t// Invalid decoder.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret?decoder=notadecoder\", true},\n\t\t// Invalid param.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret?param=value\", true},\n\t\t// Setting wait.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret?wait=1m\", false},\n\t\t// Invalid wait.\n\t\t{\"gcpsecretmanager://projects/myproject/secrets/mysecret?wait=xx\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tif err := openVariable(ctx, test.URL); (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t}\n}\n\nfunc openVariable(ctx context.Context, URL string) (err error) {\n\tvar v *runtimevar.Variable\n\tv, err = runtimevar.OpenVariable(ctx, URL)\n\tdefer func() {\n\t\tif v == nil {\n\t\t\treturn\n\t\t}\n\n\t\tif closeErr := v.Close(); closeErr != nil {\n\t\t\tif grpcErr, ok := closeErr.(*gcerr.Error); ok && grpcErr.Code != gcerr.Canceled {\n\t\t\t\terr = fmt.Errorf(\"close failed: %v. prev error: %v\", closeErr, err)\n\t\t\t}\n\t\t}\n\t}()\n\n\treturn err\n}\n"
  },
  {
    "path": "runtimevar/hashivault/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage hashivault_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/hashicorp/vault/api\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/hashivault\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Get a client to use with the Vault API.\n\tclient, err := hashivault.Dial(ctx, &hashivault.Config{\n\t\tToken: \"CLIENT_TOKEN\",\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: \"http://127.0.0.1:8200\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *runtimevar.Variable that watches the secret.\n\tv, err := hashivault.OpenVariable(client, \"myapp/config\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/hashivault\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The default opener connects to a Vault server based on the environment\n\t// variables VAULT_SERVER_URL/VAULT_ADDR and VAULT_SERVER_TOKEN/VAULT_TOKEN.\n\tv, err := runtimevar.OpenVariable(ctx, \"hashivault://myapp/config?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/hashivault/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/runtimevar/hashivault\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/hashicorp/vault/api v1.22.0\n\tgocloud.dev v0.45.0\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/cenkalti/backoff/v4 v4.3.0 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/google/go-cmp v0.7.0 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/google/wire v0.7.0 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2 // indirect\n\tgithub.com/hashicorp/go-multierror v1.1.1 // indirect\n\tgithub.com/hashicorp/go-retryablehttp v0.7.8 // indirect\n\tgithub.com/hashicorp/go-rootcerts v1.0.2 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect\n\tgithub.com/hashicorp/go-sockaddr v1.0.7 // indirect\n\tgithub.com/hashicorp/hcl v1.0.1-vault-7 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/mitchellh/mapstructure v1.5.0 // indirect\n\tgithub.com/ryanuber/go-glob v1.0.0 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/time v0.15.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "runtimevar/hashivault/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/kms v1.26.0 h1:cK9mN2cf+9V63D3H1f6koxTatWy39aTI/hCjz1I+adU=\ncloud.google.com/go/kms v1.26.0/go.mod h1:pHKOdFJm63hxBsiPkYtowZPltu9dW0MWvBa6IA4HM58=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=\ngithub.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=\ngithub.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=\ngithub.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=\ngithub.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=\ngithub.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=\ngithub.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=\ngithub.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=\ngithub.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=\ngithub.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=\ngithub.com/hashicorp/go-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw=\ngithub.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I=\ngithub.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=\ngithub.com/hashicorp/vault/api v1.22.0 h1:+HYFquE35/B74fHoIeXlZIP2YADVboaPjaSicHEZiH0=\ngithub.com/hashicorp/vault/api v1.22.0/go.mod h1:IUZA2cDvr4Ok3+NtK2Oq/r+lJeXkeCrHRmqdyWfpmGM=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=\ngithub.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=\ngithub.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=\ngithub.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "runtimevar/hashivault/hashivault.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package hashivault provides a runtimevar implementation with variables\n// backed by HashiCorp Vault's KV Secrets Engine.\n// Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, hashivault registers for the scheme \"hashivault\".\n// The default URL opener will dial a Vault server using the environment variables\n// \"VAULT_SERVER_URL\" (or \"VAULT_ADDR\") and \"VAULT_SERVER_TOKEN\" (or \"VAULT_TOKEN\").\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// hashivault exposes the following types for As:\n//   - Snapshot: *api.Secret\n//   - Error: *SecretError, *api.ResponseError\npackage hashivault // import \"gocloud.dev/runtimevar/hashivault\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/hashicorp/vault/api\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\truntimevar.DefaultURLMux().RegisterVariable(Scheme, new(defaultDialer))\n}\n\n// Scheme is the URL scheme hashivault registers its URLOpener under on runtimevar.DefaultMux.\nconst Scheme = \"hashivault\"\n\n// SecretError represents an error from a Vault operation.\ntype SecretError struct {\n\t// Code is the error code (e.g., 404 for not found).\n\tCode int\n\t// Message is the error message.\n\tMessage string\n}\n\nfunc (e *SecretError) Error() string {\n\treturn fmt.Sprintf(\"hashivault: %s (code %d)\", e.Message, e.Code)\n}\n\nfunc newNotFoundError(path string) *SecretError {\n\treturn &SecretError{\n\t\tCode:    404,\n\t\tMessage: fmt.Sprintf(\"secret not found at path %q\", path),\n\t}\n}\n\nfunc newInvalidDataError(path, reason string) *SecretError {\n\treturn &SecretError{\n\t\tCode:    400,\n\t\tMessage: fmt.Sprintf(\"invalid data at path %q: %s\", path, reason),\n\t}\n}\n\n// Config is the authentication configuration for the Vault server.\ntype Config struct {\n\t// Token is the access token the Vault client uses to talk to the server.\n\t// See https://www.vaultproject.io/docs/concepts/tokens.html for more\n\t// information.\n\tToken string\n\t// APIConfig is used to configure the creation of the client.\n\tAPIConfig api.Config\n}\n\n// Dial creates a Vault API client using the provided configuration.\nfunc Dial(ctx context.Context, cfg *Config) (*api.Client, error) {\n\tif cfg == nil {\n\t\treturn nil, errors.New(\"no auth Config provided\")\n\t}\n\tc, err := api.NewClient(&cfg.APIConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif cfg.Token != \"\" {\n\t\tc.SetToken(cfg.Token)\n\t}\n\treturn c, nil\n}\n\nfunc getVaultURL() (string, error) {\n\tif url := os.Getenv(\"VAULT_SERVER_URL\"); url != \"\" {\n\t\treturn url, nil\n\t}\n\tif url := os.Getenv(\"VAULT_ADDR\"); url != \"\" {\n\t\treturn url, nil\n\t}\n\treturn \"\", errors.New(\"neither VAULT_SERVER_URL nor VAULT_ADDR environment variables are set\")\n}\n\nfunc getVaultToken() string {\n\tif token := os.Getenv(\"VAULT_SERVER_TOKEN\"); token != \"\" {\n\t\treturn token\n\t}\n\tif token := os.Getenv(\"VAULT_TOKEN\"); token != \"\" {\n\t\treturn token\n\t}\n\treturn \"\"\n}\n\ntype defaultDialer struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *defaultDialer) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\to.init.Do(func() {\n\t\tserverURL, err := getVaultURL()\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\ttoken := getVaultToken()\n\t\tcfg := Config{Token: token, APIConfig: api.Config{Address: serverURL}}\n\t\tclient, err := Dial(ctx, &cfg)\n\t\tif err != nil {\n\t\t\to.err = fmt.Errorf(\"failed to Dial default Vault server at %q: %v\", serverURL, err)\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenVariableURL(ctx, u)\n}\n\n// URLOpener opens Vault URLs like \"hashivault://myapp/config\".\n//\n// The URL host+path are used as the secret path.\n//\n// The following query parameters are supported:\n//   - decoder: The decoder to use. Defaults to runtimevar.BytesDecoder.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats. Defaults to 30s.\n//   - engine_version: The KV engine version (1 or 2). Defaults to 2.\n//   - mount: The KV mount path. Defaults to \"secret\".\ntype URLOpener struct {\n\t// Client must be non-nil.\n\tClient *api.Client\n\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to OpenVariable.\n\tOptions Options\n}\n\n// OpenVariableURL opens a hashivault Variable for u.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\tq := u.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\n\topts := o.Options\n\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\n\tif s := q.Get(\"engine_version\"); s != \"\" {\n\t\tq.Del(\"engine_version\")\n\t\tv, err := strconv.Atoi(s)\n\t\tif err != nil || (v != 1 && v != 2) {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid engine_version %q: must be 1 or 2\", u, s)\n\t\t}\n\t\topts.EngineVersion = v\n\t}\n\n\tif s := q.Get(\"mount\"); s != \"\" {\n\t\tq.Del(\"mount\")\n\t\topts.Mount = s\n\t}\n\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid query parameter %q\", u, param)\n\t}\n\n\tsecretPath := path.Join(u.Host, u.Path)\n\n\treturn OpenVariable(o.Client, secretPath, decoder, &opts)\n}\n\n// Options sets options for constructing a *runtimevar.Variable backed by Vault.\ntype Options struct {\n\t// WaitDuration controls the rate at which the Vault server is polled.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n\n\t// EngineVersion specifies the KV secrets engine version.\n\t// Valid values are 1 and 2. Defaults to 2 (modern KV v2).\n\tEngineVersion int\n\n\t// Mount is the mount path of the KV secrets engine.\n\t// Defaults to \"secret\".\n\tMount string\n}\n\n// OpenVariable constructs a *runtimevar.Variable that uses client to read the\n// variable at the given path from a Vault KV secrets engine.\n//\n// The path should be the path to the secret without the mount prefix or\n// \"data\" segment (for KV v2). For example, \"myapp/config\".\nfunc OpenVariable(client *api.Client, secretPath string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\tw, err := newWatcher(client, secretPath, decoder, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn runtimevar.New(w), nil\n}\n\nfunc newWatcher(client *api.Client, secretPath string, decoder *runtimevar.Decoder, opts *Options) (driver.Watcher, error) {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\n\tengineVersion := opts.EngineVersion\n\tif engineVersion == 0 {\n\t\tengineVersion = 2\n\t}\n\tif engineVersion != 1 && engineVersion != 2 {\n\t\treturn nil, fmt.Errorf(\"invalid engine_version %d; must be 1 or 2\", engineVersion)\n\t}\n\n\tmount := opts.Mount\n\tif mount == \"\" {\n\t\tmount = \"secret\"\n\t}\n\n\tvar fullPath string\n\tif engineVersion == 2 {\n\t\tfullPath = path.Join(mount, \"data\", secretPath)\n\t} else {\n\t\tfullPath = path.Join(mount, secretPath)\n\t}\n\n\treturn &watcher{\n\t\tclient:        client,\n\t\tpath:          fullPath,\n\t\tdecoder:       decoder,\n\t\twait:          driver.WaitDuration(opts.WaitDuration),\n\t\tengineVersion: engineVersion,\n\t\tmount:         mount,\n\t}, nil\n}\n\ntype state struct {\n\tval        any\n\traw        *api.Secret\n\trawBytes   []byte\n\tupdateTime time.Time\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tif s.raw == nil {\n\t\treturn false\n\t}\n\tp, ok := i.(**api.Secret)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s.raw\n\treturn true\n}\n\nfunc errorState(err error, prevS driver.State) driver.State {\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\treturn s\n\t}\n\tif equivalentError(err, prev.err) {\n\t\treturn nil\n\t}\n\treturn s\n}\n\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tvar secErr1, secErr2 *SecretError\n\tif errors.As(err1, &secErr1) && errors.As(err2, &secErr2) {\n\t\treturn secErr1.Code == secErr2.Code\n\t}\n\tvar respErr1, respErr2 *api.ResponseError\n\tif errors.As(err1, &respErr1) && errors.As(err2, &respErr2) {\n\t\treturn respErr1.StatusCode == respErr2.StatusCode\n\t}\n\treturn false\n}\n\ntype watcher struct {\n\tclient        *api.Client\n\tpath          string\n\tdecoder       *runtimevar.Decoder\n\twait          time.Duration\n\tengineVersion int\n\tmount         string\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\tsecret, err := w.client.Logical().ReadWithContext(ctx, w.path)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\tif secret == nil {\n\t\treturn errorState(newNotFoundError(w.path), prev), w.wait\n\t}\n\n\tvar data map[string]any\n\tif w.engineVersion == 2 {\n\t\tdataRaw, ok := secret.Data[\"data\"]\n\t\tif !ok {\n\t\t\treturn errorState(newInvalidDataError(w.path, \"no data field in KV v2 response\"), prev), w.wait\n\t\t}\n\t\tdata, ok = dataRaw.(map[string]any)\n\t\tif !ok {\n\t\t\treturn errorState(newInvalidDataError(w.path, \"invalid data format\"), prev), w.wait\n\t\t}\n\t} else {\n\t\tdata = secret.Data\n\t}\n\n\tvar rawBytes []byte\n\tif len(data) == 1 {\n\t\tif v, ok := data[\"value\"]; ok {\n\t\t\tswitch val := v.(type) {\n\t\t\tcase string:\n\t\t\t\trawBytes = []byte(val)\n\t\t\tcase []byte:\n\t\t\t\trawBytes = val\n\t\t\tdefault:\n\t\t\t\trawBytes, err = json.Marshal(data)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn errorState(err, prev), w.wait\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\trawBytes, err = json.Marshal(data)\n\t\t\tif err != nil {\n\t\t\t\treturn errorState(err, prev), w.wait\n\t\t\t}\n\t\t}\n\t} else {\n\t\trawBytes, err = json.Marshal(data)\n\t\tif err != nil {\n\t\t\treturn errorState(err, prev), w.wait\n\t\t}\n\t}\n\n\tif prev != nil {\n\t\tif prevState, ok := prev.(*state); ok && bytes.Equal(rawBytes, prevState.rawBytes) {\n\t\t\treturn nil, w.wait\n\t\t}\n\t}\n\n\tval, err := w.decoder.Decode(ctx, rawBytes)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\treturn &state{\n\t\tval:        val,\n\t\traw:        secret,\n\t\trawBytes:   rawBytes,\n\t\tupdateTime: time.Now(),\n\t}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\tvar secErr *SecretError\n\tif errors.As(err, &secErr) {\n\t\tif p, ok := i.(**SecretError); ok {\n\t\t\t*p = secErr\n\t\t\treturn true\n\t\t}\n\t}\n\tvar respErr *api.ResponseError\n\tif errors.As(err, &respErr) {\n\t\tif p, ok := i.(**api.ResponseError); ok {\n\t\t\t*p = respErr\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (w *watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tvar secErr *SecretError\n\tif errors.As(err, &secErr) {\n\t\tswitch secErr.Code {\n\t\tcase 400:\n\t\t\treturn gcerr.InvalidArgument\n\t\tcase 403:\n\t\t\treturn gcerr.PermissionDenied\n\t\tcase 404:\n\t\t\treturn gcerr.NotFound\n\t\tcase 429, 503:\n\t\t\treturn gcerr.ResourceExhausted\n\t\tcase 500, 502:\n\t\t\treturn gcerr.Internal\n\t\t}\n\t}\n\tvar respErr *api.ResponseError\n\tif errors.As(err, &respErr) {\n\t\tswitch respErr.StatusCode {\n\t\tcase 400:\n\t\t\treturn gcerr.InvalidArgument\n\t\tcase 403:\n\t\t\treturn gcerr.PermissionDenied\n\t\tcase 404:\n\t\t\treturn gcerr.NotFound\n\t\tcase 429, 503:\n\t\t\treturn gcerr.ResourceExhausted\n\t\tcase 500, 502:\n\t\t\treturn gcerr.Internal\n\t\t}\n\t}\n\treturn gcerr.Unknown\n}\n"
  },
  {
    "path": "runtimevar/hashivault/hashivault_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage hashivault\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/hashicorp/vault/api\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\n// To run these tests against a real Vault server, first run ./localvault.sh.\n// Then wait a few seconds for the server to be ready.\n\nconst (\n\tapiAddress = \"http://127.0.0.1:8200\"\n\ttestToken  = \"faketoken\"\n)\n\ntype harness struct {\n\tclient *api.Client\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\treturn newWatcher(h.client, name, decoder, nil)\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\tvar data map[string]any\n\tif err := json.Unmarshal(val, &data); err != nil {\n\t\tdata = map[string]any{\"value\": string(val)}\n\t}\n\t_, err := h.client.Logical().Write(path.Join(\"secret/data\", name), map[string]any{\n\t\t\"data\": data,\n\t})\n\treturn err\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\treturn h.CreateVariable(ctx, name, val)\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\t_, err := h.client.Logical().Delete(path.Join(\"secret/metadata\", name))\n\treturn err\n}\n\nfunc (h *harness) Close() {}\n\nfunc (h *harness) Mutable() bool {\n\treturn true\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping Vault tests since the Vault server is not available\")\n\t}\n\n\tctx := context.Background()\n\tc, err := Dial(ctx, &Config{\n\t\tToken: testToken,\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: apiAddress,\n\t\t},\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.SetClientTimeout(3 * time.Second)\n\n\t_, err = c.Sys().Health()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"vault server not healthy (run runtimevar/hashivault/localvault.sh): %v\", err)\n\t}\n\n\treturn &harness{client: c}, nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar secret *api.Secret\n\tif !s.As(&secret) {\n\t\treturn errors.New(\"Snapshot.As failed for *api.Secret\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar secErr *SecretError\n\tif !v.ErrorAs(err, &secErr) {\n\t\treturn errors.New(\"ErrorAs expected to succeed with *SecretError\")\n\t}\n\tif secErr.Code != 404 {\n\t\treturn fmt.Errorf(\"expected SecretError code 404, got %d\", secErr.Code)\n\t}\n\treturn nil\n}\n\nfunc TestNoConfigError(t *testing.T) {\n\tif _, err := Dial(context.Background(), nil); err == nil {\n\t\tt.Error(\"got nil, want no auth Config provided\")\n\t}\n}\n\nfunc TestEquivalentError(t *testing.T) {\n\terr1 := errors.New(\"error one\")\n\terr2 := errors.New(\"error one\")\n\terr3 := errors.New(\"error two\")\n\trespErr404 := &api.ResponseError{StatusCode: 404}\n\trespErr403 := &api.ResponseError{StatusCode: 403}\n\tsecErr404 := &SecretError{Code: 404, Message: \"not found\"}\n\tsecErr404b := &SecretError{Code: 404, Message: \"also not found\"}\n\tsecErr400 := &SecretError{Code: 400, Message: \"bad request\"}\n\n\ttests := []struct {\n\t\tErr1, Err2 error\n\t\tWant       bool\n\t}{\n\t\t{Err1: err1, Err2: err2, Want: true},\n\t\t{Err1: err1, Err2: err3, Want: false},\n\t\t{Err1: respErr404, Err2: respErr404, Want: true},\n\t\t{Err1: respErr404, Err2: respErr403, Want: false},\n\t\t{Err1: err1, Err2: respErr404, Want: false},\n\t\t{Err1: secErr404, Err2: secErr404b, Want: true},\n\t\t{Err1: secErr404, Err2: secErr400, Want: false},\n\t\t{Err1: secErr404, Err2: respErr404, Want: false}, // Different error types\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := equivalentError(test.Err1, test.Err2)\n\t\tif got != test.Want {\n\t\t\tt.Errorf(\"%v vs %v: got %v want %v\", test.Err1, test.Err2, got, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestWatcherErrorCode(t *testing.T) {\n\tctx := context.Background()\n\tclient, err := Dial(ctx, &Config{\n\t\tToken: \"fake\",\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: \"http://localhost:8200\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tw, err := newWatcher(client, \"test\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer w.Close()\n\n\tcodes := []struct {\n\t\tCode int\n\t\tWant string\n\t}{\n\t\t{400, \"InvalidArgument\"},\n\t\t{403, \"PermissionDenied\"},\n\t\t{404, \"NotFound\"},\n\t\t{429, \"ResourceExhausted\"},\n\t\t{500, \"Internal\"},\n\t\t{502, \"Internal\"},\n\t\t{503, \"ResourceExhausted\"},\n\t\t{999, \"Unknown\"},\n\t}\n\n\tfor _, test := range codes {\n\t\terr := &api.ResponseError{StatusCode: test.Code}\n\t\tcode := w.ErrorCode(err)\n\t\tif code.String() != test.Want {\n\t\t\tt.Errorf(\"api.ResponseError StatusCode %d: got %v, want %v\", test.Code, code, test.Want)\n\t\t}\n\t}\n\n\tfor _, test := range codes {\n\t\terr := &SecretError{Code: test.Code, Message: \"test\"}\n\t\tcode := w.ErrorCode(err)\n\t\tif code.String() != test.Want {\n\t\t\tt.Errorf(\"SecretError Code %d: got %v, want %v\", test.Code, code, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestEngineVersionPaths(t *testing.T) {\n\tctx := context.Background()\n\tclient, err := Dial(ctx, &Config{\n\t\tToken: \"fake\",\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: \"http://localhost:8200\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tEngineVersion int\n\t\tMount         string\n\t\tSecretPath    string\n\t\tWantPath      string\n\t}{\n\t\t{2, \"secret\", \"myapp/config\", \"secret/data/myapp/config\"},\n\t\t{1, \"secret\", \"myapp/config\", \"secret/myapp/config\"},\n\t\t{2, \"kv\", \"myapp/config\", \"kv/data/myapp/config\"},\n\t\t{1, \"kv\", \"myapp/config\", \"kv/myapp/config\"},\n\t\t{0, \"\", \"test\", \"secret/data/test\"}, // defaults\n\t}\n\n\tfor _, test := range tests {\n\t\topts := &Options{\n\t\t\tEngineVersion: test.EngineVersion,\n\t\t\tMount:         test.Mount,\n\t\t}\n\t\tw, err := newWatcher(client, test.SecretPath, runtimevar.StringDecoder, opts)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"newWatcher failed: %v\", err)\n\t\t\tcontinue\n\t\t}\n\t\twatcher := w.(*watcher)\n\t\tif watcher.path != test.WantPath {\n\t\t\tt.Errorf(\"EngineVersion=%d, Mount=%q, SecretPath=%q: got path %q, want %q\",\n\t\t\t\ttest.EngineVersion, test.Mount, test.SecretPath, watcher.path, test.WantPath)\n\t\t}\n\t\tw.Close()\n\t}\n}\n\nfunc TestInvalidEngineVersion(t *testing.T) {\n\tctx := context.Background()\n\tclient, err := Dial(ctx, &Config{\n\t\tToken: \"fake\",\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: \"http://localhost:8200\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t_, err = newWatcher(client, \"test\", runtimevar.StringDecoder, &Options{EngineVersion: 3})\n\tif err == nil {\n\t\tt.Error(\"expected error for invalid engine version\")\n\t}\n}\n\nfunc fakeConnectionStringInEnv() func() {\n\toldURLVal := os.Getenv(\"VAULT_SERVER_URL\")\n\toldTokenVal := os.Getenv(\"VAULT_SERVER_TOKEN\")\n\tos.Setenv(\"VAULT_SERVER_URL\", \"http://myvaultserver\")\n\tos.Setenv(\"VAULT_SERVER_TOKEN\", \"faketoken\")\n\treturn func() {\n\t\tos.Setenv(\"VAULT_SERVER_URL\", oldURLVal)\n\t\tos.Setenv(\"VAULT_SERVER_TOKEN\", oldTokenVal)\n\t}\n}\n\nfunc alternativeConnectionStringEnvVars() func() {\n\toldURLVal := os.Getenv(\"VAULT_ADDR\")\n\toldTokenVal := os.Getenv(\"VAULT_TOKEN\")\n\tos.Setenv(\"VAULT_ADDR\", \"http://myalternativevaultserver\")\n\tos.Setenv(\"VAULT_TOKEN\", \"faketoken2\")\n\treturn func() {\n\t\tos.Setenv(\"VAULT_ADDR\", oldURLVal)\n\t\tos.Setenv(\"VAULT_TOKEN\", oldTokenVal)\n\t}\n}\n\nfunc unsetConnectionStringEnvVars() func() {\n\toldURLVal := os.Getenv(\"VAULT_ADDR\")\n\toldTokenVal := os.Getenv(\"VAULT_TOKEN\")\n\toldServerURLVal := os.Getenv(\"VAULT_SERVER_URL\")\n\toldServerTokenVal := os.Getenv(\"VAULT_SERVER_TOKEN\")\n\tos.Unsetenv(\"VAULT_ADDR\")\n\tos.Unsetenv(\"VAULT_TOKEN\")\n\tos.Unsetenv(\"VAULT_SERVER_URL\")\n\tos.Unsetenv(\"VAULT_SERVER_TOKEN\")\n\treturn func() {\n\t\tos.Setenv(\"VAULT_ADDR\", oldURLVal)\n\t\tos.Setenv(\"VAULT_SERVER_URL\", oldServerURLVal)\n\t\tos.Setenv(\"VAULT_TOKEN\", oldTokenVal)\n\t\tos.Setenv(\"VAULT_SERVER_TOKEN\", oldServerTokenVal)\n\t}\n}\n\nfunc TestGetVaultConnectionDetails(t *testing.T) {\n\tt.Run(\"Test Current Env Vars\", func(t *testing.T) {\n\t\tcleanup := fakeConnectionStringInEnv()\n\t\tdefer cleanup()\n\n\t\tserverURL, err := getVaultURL()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"got unexpected error: %v\", err)\n\t\t}\n\t\tif serverURL != \"http://myvaultserver\" {\n\t\t\tt.Errorf(\"expected 'http://myvaultserver': got %q\", serverURL)\n\t\t}\n\n\t\tvaultToken := getVaultToken()\n\t\tif vaultToken != \"faketoken\" {\n\t\t\tt.Errorf(\"expected 'faketoken': got %q\", vaultToken)\n\t\t}\n\t})\n\n\tt.Run(\"Test Alternative Env Vars\", func(t *testing.T) {\n\t\tcleanup := alternativeConnectionStringEnvVars()\n\t\tdefer cleanup()\n\n\t\tserverURL, err := getVaultURL()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"got unexpected error: %v\", err)\n\t\t}\n\t\tif serverURL != \"http://myalternativevaultserver\" {\n\t\t\tt.Errorf(\"expected 'http://myalternativevaultserver': got %q\", serverURL)\n\t\t}\n\n\t\tvaultToken := getVaultToken()\n\t\tif vaultToken != \"faketoken2\" {\n\t\t\tt.Errorf(\"expected 'faketoken2': got %q\", vaultToken)\n\t\t}\n\t})\n\n\tt.Run(\"Test Unset Env Vars Throws Error\", func(t *testing.T) {\n\t\tcleanup := unsetConnectionStringEnvVars()\n\t\tdefer cleanup()\n\n\t\tserverURL, err := getVaultURL()\n\t\tif err == nil {\n\t\t\tt.Errorf(\"expected error but got a url: %s\", serverURL)\n\t\t}\n\n\t\tvaultToken := getVaultToken()\n\t\tif vaultToken != \"\" {\n\t\t\tt.Errorf(\"expected '': got %q\", vaultToken)\n\t\t}\n\t})\n}\n\nfunc TestOpenVariableURL(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"hashivault://myapp/config\", false},\n\t\t// OK, setting decoder.\n\t\t{\"hashivault://myapp/config?decoder=string\", false},\n\t\t// OK, setting wait.\n\t\t{\"hashivault://myapp/config?wait=1m\", false},\n\t\t// OK, setting engine_version.\n\t\t{\"hashivault://myapp/config?engine_version=1\", false},\n\t\t{\"hashivault://myapp/config?engine_version=2\", false},\n\t\t// OK, setting mount.\n\t\t{\"hashivault://myapp/config?mount=kv\", false},\n\t\t// OK, setting all.\n\t\t{\"hashivault://myapp/config?decoder=string&wait=1m&engine_version=2&mount=secret\", false},\n\t\t// Invalid decoder.\n\t\t{\"hashivault://myapp/config?decoder=notadecoder\", true},\n\t\t// Invalid wait.\n\t\t{\"hashivault://myapp/config?wait=xx\", true},\n\t\t// Invalid engine_version.\n\t\t{\"hashivault://myapp/config?engine_version=3\", true},\n\t\t{\"hashivault://myapp/config?engine_version=abc\", true},\n\t\t// Invalid parameter.\n\t\t{\"hashivault://myapp/config?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tt.Run(test.URL, func(t *testing.T) {\n\t\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t\t}\n\t\t\tif err == nil {\n\t\t\t\tif err := v.Close(); err != nil {\n\t\t\t\t\tt.Errorf(\"%s: got error during close: %v\", test.URL, err)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "runtimevar/hashivault/localvault.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts a local Vault instance via Docker.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\necho \"Starting Vault Server...\"\ndocker rm -f dev-vault &> /dev/null || :\ndocker run --cap-add=IPC_LOCK -d --name=dev-vault -e 'VAULT_DEV_ROOT_TOKEN_ID=faketoken' -p 8200:8200 vault:1.6.0 &> /dev/null\necho \"...done. Run \\\"docker rm -f dev-vault\\\" to clean up the container.\"\necho\n\n"
  },
  {
    "path": "runtimevar/httpvar/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage httpvar_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"net/http\"\n\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/httpvar\"\n)\n\nfunc ExampleOpenVariable() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Create an HTTP.Client\n\thttpClient := http.DefaultClient\n\n\t// Construct a *runtimevar.Variable that watches the page.\n\tv, err := httpvar.OpenVariable(httpClient, \"http://example.com\", runtimevar.StringDecoder, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n\nfunc Example_openVariableFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/runtimevar/httpvar\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// runtimevar.OpenVariable creates a *runtimevar.Variable from a URL.\n\t// The default opener connects to an etcd server based on the environment\n\t// variable ETCD_SERVER_URL.\n\n\tv, err := runtimevar.OpenVariable(ctx, \"http://myserver.com/foo.txt?decoder=string\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer v.Close()\n}\n"
  },
  {
    "path": "runtimevar/httpvar/httpvar.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package httpvar provides a runtimevar implementation with variables\n// backed by http endpoint. Use OpenVariable to construct a *runtimevar.Variable.\n//\n// # URLs\n//\n// For runtimevar.OpenVariable, httpvar registers for the schemes \"http\" and\n// \"https\". The default URL opener will use http.DefaultClient.\n// To use HTTP Basic Auth for the requests, set the environment variables\n// \"HTTPVAR_AUTH_USERNAME\" and \"HTTPVAR_AUTH_PASSWORD\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// httpvar exposes the following types for As:\n//   - Snapshot: *http.Response\n//   - Error: httpvar.RequestError, url.Error\npackage httpvar // import \"gocloud.dev/runtimevar/httpvar\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"time\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n)\n\nfunc init() {\n\to := &URLOpener{Client: http.DefaultClient}\n\tfor _, scheme := range Schemes {\n\t\truntimevar.DefaultURLMux().RegisterVariable(scheme, o)\n\t}\n}\n\n// Schemes are the URL schemes httpvar registers its URLOpener under on runtimevar.DefaultMux.\nvar Schemes = []string{\"http\", \"https\"}\n\n// URLOpener opens HTTP URLs like \"http://myserver.com/foo.txt\".\n//\n// The full URL, including scheme, is used as the endpoint, except that the\n// the following URL parameters are removed if present:\n//   - decoder: The decoder to use. Defaults to runtimevar.BytesDecoder.\n//     See runtimevar.DecoderByName for supported values.\n//   - wait: The poll interval, in time.ParseDuration formats.\n//     Defaults to 30s.\ntype URLOpener struct {\n\t// The Client to use; required.\n\tClient *http.Client\n\n\t// Decoder specifies the decoder to use if one is not specified in the URL.\n\t// Defaults to runtimevar.BytesDecoder.\n\tDecoder *runtimevar.Decoder\n\n\t// Options specifies the options to pass to OpenVariable.\n\tOptions Options\n}\n\n// OpenVariableURL opens a httpvar Variable for u.\nfunc (o *URLOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*runtimevar.Variable, error) {\n\t// Clone u because we may strip some query parameters.\n\tu2 := *u\n\tq := u2.Query()\n\n\tdecoderName := q.Get(\"decoder\")\n\tq.Del(\"decoder\")\n\tdecoder, err := runtimevar.DecoderByName(ctx, decoderName, o.Decoder)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open variable %v: invalid decoder: %v\", u, err)\n\t}\n\topts := o.Options\n\tif s := q.Get(\"wait\"); s != \"\" {\n\t\tq.Del(\"wait\")\n\t\td, err := time.ParseDuration(s)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"open variable %v: invalid wait %q: %v\", u, s, err)\n\t\t}\n\t\topts.WaitDuration = d\n\t}\n\t// See if we changed the query parameters.\n\tif rawq := q.Encode(); rawq != u.Query().Encode() {\n\t\tu2.RawQuery = rawq\n\t}\n\treturn OpenVariable(o.Client, u2.String(), decoder, &opts)\n}\n\n// Options sets options.\ntype Options struct {\n\t// WaitDuration controls the rate at which the HTTP endpoint is called to check for changes.\n\t// Defaults to 30 seconds.\n\tWaitDuration time.Duration\n}\n\n// RequestError represents an HTTP error that occurred during endpoint call.\ntype RequestError struct {\n\tResponse *http.Response\n}\n\nfunc (e *RequestError) Error() string {\n\treturn fmt.Sprintf(\"httpvar: received status code %d\", e.Response.StatusCode)\n}\n\nfunc newRequestError(response *http.Response) *RequestError {\n\treturn &RequestError{Response: response}\n}\n\n// OpenVariable constructs a *runtimevar.Variable that uses client\n// to retrieve the variable contents from the URL urlStr.\nfunc OpenVariable(client *http.Client, urlStr string, decoder *runtimevar.Decoder, opts *Options) (*runtimevar.Variable, error) {\n\tendpointURL, err := url.Parse(urlStr)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"httpvar: failed to parse url %q: %v\", urlStr, err)\n\t}\n\n\treturn runtimevar.New(newWatcher(client, endpointURL, decoder, opts)), nil\n}\n\ntype state struct {\n\tval        any\n\traw        *http.Response\n\trawBytes   []byte\n\tupdateTime time.Time\n\terr        error\n}\n\n// Value implements driver.State.Value.\nfunc (s *state) Value() (any, error) {\n\treturn s.val, s.err\n}\n\n// UpdateTime implements driver.State.UpdateTime.\nfunc (s *state) UpdateTime() time.Time {\n\treturn s.updateTime\n}\n\n// As implements driver.State.As.\nfunc (s *state) As(i any) bool {\n\tif s.raw == nil {\n\t\treturn false\n\t}\n\tp, ok := i.(**http.Response)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s.raw\n\treturn true\n}\n\n// errorState returns a new State with err, unless prevS also represents\n// the same error, in which case it returns nil.\nfunc errorState(err error, prevS driver.State) driver.State {\n\ts := &state{err: err}\n\tif prevS == nil {\n\t\treturn s\n\t}\n\tprev := prevS.(*state)\n\tif prev.err == nil {\n\t\t// New error.\n\t\treturn s\n\t}\n\tif equivalentError(err, prev.err) {\n\t\t// Same error, return nil to indicate no change.\n\t\treturn nil\n\t}\n\treturn s\n}\n\n// equivalentError returns true if err1 and err2 represent an equivalent error;\n// i.e., we don't want to return it to the user as a different error.\nfunc equivalentError(err1, err2 error) bool {\n\tif err1 == err2 || err1.Error() == err2.Error() {\n\t\treturn true\n\t}\n\tvar code1, code2 int\n\tif e, ok := err1.(*RequestError); ok {\n\t\tcode1 = e.Response.StatusCode\n\t}\n\tif e, ok := err2.(*RequestError); ok {\n\t\tcode2 = e.Response.StatusCode\n\t}\n\treturn code1 != 0 && code1 == code2\n}\n\n// watcher implements driver.Watcher for configurations provided by the Runtime Configurator\n// service.\ntype watcher struct {\n\tclient   *http.Client\n\tendpoint *url.URL\n\tdecoder  *runtimevar.Decoder\n\twait     time.Duration\n}\n\n// WatchVariable implements driver.WatchVariable.\nfunc (w *watcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\treq, err := http.NewRequestWithContext(ctx, http.MethodGet, w.endpoint.String(), nil)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\tauthUsername := os.Getenv(\"HTTPVAR_AUTH_USERNAME\")\n\tauthPassword := os.Getenv(\"HTTPVAR_AUTH_PASSWORD\")\n\tif authUsername != \"\" && authPassword != \"\" {\n\t\treq.SetBasicAuth(authUsername, authPassword)\n\t}\n\tresp, err := w.client.Do(req)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\tdefer resp.Body.Close()\n\n\tif resp.StatusCode != http.StatusOK {\n\t\terr := newRequestError(resp)\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\trespBodyBytes, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\t// When endpoint returns the same response again, we return nil as state to not trigger variable update.\n\tif prev != nil && bytes.Equal(respBodyBytes, prev.(*state).rawBytes) {\n\t\treturn nil, w.wait\n\t}\n\n\tval, err := w.decoder.Decode(ctx, respBodyBytes)\n\tif err != nil {\n\t\treturn errorState(err, prev), w.wait\n\t}\n\n\treturn &state{\n\t\tval:        val,\n\t\traw:        resp,\n\t\trawBytes:   respBodyBytes,\n\t\tupdateTime: time.Now(),\n\t}, w.wait\n}\n\n// Close implements driver.Close.\nfunc (w *watcher) Close() error {\n\treturn nil\n}\n\n// ErrorAs implements driver.ErrorAs.\nfunc (w *watcher) ErrorAs(err error, i any) bool {\n\tswitch v := err.(type) {\n\tcase *url.Error:\n\t\tif p, ok := i.(*url.Error); ok {\n\t\t\t*p = *v\n\t\t\treturn true\n\t\t}\n\tcase *RequestError:\n\t\tif p, ok := i.(*RequestError); ok {\n\t\t\t*p = *v\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (*watcher) ErrorCode(err error) gcerrors.ErrorCode {\n\tif requestErr, ok := err.(*RequestError); ok {\n\t\tswitch requestErr.Response.StatusCode {\n\t\tcase http.StatusBadRequest:\n\t\t\treturn gcerr.InvalidArgument\n\t\tcase http.StatusNotFound:\n\t\t\treturn gcerr.NotFound\n\t\tcase http.StatusUnauthorized:\n\t\t\treturn gcerr.PermissionDenied\n\t\tcase http.StatusGatewayTimeout, http.StatusRequestTimeout:\n\t\t\treturn gcerr.DeadlineExceeded\n\t\tcase http.StatusInternalServerError, http.StatusServiceUnavailable, http.StatusBadGateway:\n\t\t\treturn gcerr.Internal\n\t\t}\n\t}\n\treturn gcerr.Unknown\n}\n\nfunc newWatcher(client *http.Client, endpoint *url.URL, decoder *runtimevar.Decoder, opts *Options) driver.Watcher {\n\tif opts == nil {\n\t\topts = &Options{}\n\t}\n\treturn &watcher{\n\t\tclient:   client,\n\t\tendpoint: endpoint,\n\t\tdecoder:  decoder,\n\t\twait:     driver.WaitDuration(opts.WaitDuration),\n\t}\n}\n"
  },
  {
    "path": "runtimevar/httpvar/httpvar_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage httpvar\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/runtimevar/drivertest\"\n)\n\ntype harness struct {\n\tmockServer *mockServer\n}\n\nfunc (h *harness) MakeWatcher(ctx context.Context, name string, decoder *runtimevar.Decoder) (driver.Watcher, error) {\n\tendpointURL, err := url.Parse(h.mockServer.baseURL + \"/\" + name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newWatcher(http.DefaultClient, endpointURL, decoder, nil), nil\n}\n\nfunc (h *harness) CreateVariable(ctx context.Context, name string, val []byte) error {\n\th.mockServer.SetResponse(name, string(val))\n\treturn nil\n}\n\nfunc (h *harness) UpdateVariable(ctx context.Context, name string, val []byte) error {\n\th.mockServer.SetResponse(name, string(val))\n\treturn nil\n}\n\nfunc (h *harness) DeleteVariable(ctx context.Context, name string) error {\n\th.mockServer.DeleteResponse(name)\n\treturn nil\n}\n\nfunc (h *harness) Close() {\n\th.mockServer.close()\n}\n\nfunc (h *harness) Mutable() bool {\n\treturn true\n}\n\nfunc newHarness(t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\treturn &harness{\n\t\tmockServer: newMockServer(),\n\t}, nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (verifyAs) Name() string {\n\treturn \"verify As\"\n}\n\nfunc (verifyAs) SnapshotCheck(s *runtimevar.Snapshot) error {\n\tvar resp *http.Response\n\tif !s.As(&resp) {\n\t\treturn errors.New(\"Snapshot.As failed\")\n\t}\n\n\ts2 := state{raw: nil}\n\tif s2.As(nil) {\n\t\treturn errors.New(\"Snapshot.As was expected to fail\")\n\t}\n\treturn nil\n}\n\nfunc (verifyAs) ErrorCheck(v *runtimevar.Variable, err error) error {\n\tvar e RequestError\n\tif !v.ErrorAs(err, &e) {\n\t\treturn errors.New(\"ErrorAs expected to succeed with *httpvar.RequestError\")\n\t}\n\tif !strings.Contains(e.Error(), strconv.Itoa(e.Response.StatusCode)) {\n\t\treturn errors.New(\"should contain url and status code\")\n\t}\n\n\tvar e2 url.Error\n\turlError := &url.Error{URL: \"http://example.com\", Op: \"GET\", Err: errors.New(\"example error\")}\n\tif !v.ErrorAs(urlError, &e2) {\n\t\treturn errors.New(\"ErrorAs expected to succeed with *url.Error\")\n\t}\n\n\tvar e3 RequestError\n\tif v.ErrorAs(errors.New(\"example error\"), &e3) {\n\t\treturn errors.New(\"ErrorAs was expected to fail\")\n\t}\n\treturn nil\n}\n\n// httpvar-specific tests.\n\nfunc TestOpenVariable(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t{\"http://example.com/config\", false},\n\t\t{\"%gh&%ij\", true},\n\t}\n\n\tfor _, test := range tests {\n\t\tv, err := OpenVariable(http.DefaultClient, test.URL, runtimevar.StringDecoder, nil)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif v != nil {\n\t\t\tv.Close()\n\t\t}\n\t}\n}\n\nfunc TestEquivalentError(t *testing.T) {\n\tnotFoundErr := newRequestError(&http.Response{StatusCode: http.StatusNotFound})\n\tbadGatewayErr := newRequestError(&http.Response{StatusCode: http.StatusBadGateway})\n\ttests := []struct {\n\t\tErr1, Err2 error\n\t\tWant       bool\n\t}{\n\t\t{Err1: errors.New(\"error one\"), Err2: errors.New(\"error one\"), Want: true},\n\t\t{Err1: errors.New(\"error one\"), Err2: errors.New(\"error two\"), Want: false},\n\t\t{Err1: errors.New(\"error one\"), Err2: notFoundErr, Want: false},\n\t\t{Err1: notFoundErr, Err2: notFoundErr, Want: true},\n\t\t{Err1: notFoundErr, Err2: badGatewayErr, Want: false},\n\t}\n\n\tfor _, test := range tests {\n\t\tgot := equivalentError(test.Err1, test.Err2)\n\t\tif got != test.Want {\n\t\t\tt.Errorf(\"%v vs %v: got %v want %v\", test.Err1, test.Err2, got, test.Want)\n\t\t}\n\t}\n}\n\nfunc TestWatcher_ErrorCode(t *testing.T) {\n\ttests := []struct {\n\t\tErr   *RequestError\n\t\tGCErr gcerr.ErrorCode\n\t}{\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusBadRequest}), GCErr: gcerr.InvalidArgument},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusNotFound}), GCErr: gcerr.NotFound},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusUnauthorized}), GCErr: gcerr.PermissionDenied},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusGatewayTimeout}), GCErr: gcerr.DeadlineExceeded},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusRequestTimeout}), GCErr: gcerr.DeadlineExceeded},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusInternalServerError}), GCErr: gcerr.Internal},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusServiceUnavailable}), GCErr: gcerr.Internal},\n\t\t{Err: newRequestError(&http.Response{StatusCode: http.StatusBadGateway}), GCErr: gcerr.Internal},\n\t}\n\n\tendpointURL, err := url.Parse(\"http://example.com\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\twatcher := newWatcher(http.DefaultClient, endpointURL, runtimevar.StringDecoder, nil)\n\tdefer watcher.Close()\n\tfor _, test := range tests {\n\t\tactualGCErr := watcher.ErrorCode(test.Err)\n\t\tif test.GCErr != actualGCErr {\n\t\t\tt.Errorf(\"expected gcerr.ErrorCode to be %d, got %d\", test.GCErr, actualGCErr)\n\t\t}\n\t}\n}\n\nfunc TestWatcher_WatchVariable(t *testing.T) {\n\tt.Run(\"client returns an error\", func(t *testing.T) {\n\t\tendpointURL, err := url.Parse(\"http://example.com\")\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\n\t\t// In order to force httpClient.Get to return an error, we pass custom *http.Client\n\t\t// with every short timeout, so that request will timed out and return an error.\n\t\thttpClient := &http.Client{\n\t\t\tTimeout: time.Duration(1 * time.Millisecond),\n\t\t}\n\t\twatcher := newWatcher(httpClient, endpointURL, runtimevar.StringDecoder, nil)\n\t\tdefer watcher.Close()\n\t\tstate, _ := watcher.WatchVariable(context.Background(), &state{})\n\n\t\tval, err := state.Value()\n\t\tif err == nil {\n\t\t\tt.Errorf(\"expected error got nil\")\n\t\t}\n\t\tif val != nil {\n\t\t\tt.Errorf(\"expected state value to be nil, got %v\", val)\n\t\t}\n\t})\n}\n\nfunc TestWithAuth(t *testing.T) {\n\tconst (\n\t\tauthUser = \"test_user\"\n\t\tauthPwd  = \"test_pwd\"\n\t\tvalue    = \"hello world\"\n\t)\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tmockServer := h.(*harness).mockServer\n\ttestURL := mockServer.baseURL + \"/string-var?decoder=string\"\n\tmockServer.authUser = authUser\n\tmockServer.authPwd = authPwd\n\n\tctx := context.Background()\n\tif err := h.CreateVariable(ctx, \"string-var\", []byte(value)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tAuthUser string\n\t\tAuthPwd  string\n\t\tWantErr  bool\n\t}{\n\t\t// No auth provided, fails.\n\t\t{\"\", \"\", true},\n\t\t// Invalid user, fails.\n\t\t{\"wronguser\", authPwd, true},\n\t\t// Invalid password, fails.\n\t\t{authUser, \"wrongpassword\", true},\n\t\t// Auth good, works.\n\t\t{authUser, authPwd, false},\n\t}\n\n\tfor _, test := range tests {\n\t\tname := fmt.Sprintf(\"user=%s,pwd=%s\", test.AuthUser, test.AuthPwd)\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tt.Setenv(\"HTTPVAR_AUTH_USERNAME\", test.AuthUser)\n\t\t\tt.Setenv(\"HTTPVAR_AUTH_PASSWORD\", test.AuthPwd)\n\n\t\t\tv, err := runtimevar.OpenVariable(ctx, testURL)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed OpenVariable: %v\", err)\n\t\t\t}\n\t\t\tdefer v.Close()\n\t\t\tsnapshot, err := v.Watch(ctx)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"got Watch error %v, want error %v\", err, test.WantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !cmp.Equal(snapshot.Value, value) {\n\t\t\t\tt.Errorf(\"got snapshot value\\n%v\\n  want\\n%v\", snapshot.Value, value)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenVariableURL(t *testing.T) {\n\th, err := newHarness(t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer h.Close()\n\tbaseURL := h.(*harness).mockServer.baseURL\n\n\tctx := context.Background()\n\tif err := h.CreateVariable(ctx, \"string-var\", []byte(\"hello world\")); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := h.CreateVariable(ctx, \"json-var\", []byte(`{\"Foo\": \"Bar\"}`)); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tURL          string\n\t\tWantErr      bool\n\t\tWantWatchErr bool\n\t\tWant         any\n\t}{\n\t\t// Nonexistentvar does not exist, so we get an error from Watch.\n\t\t{baseURL + \"/nonexistentvar\", false, true, nil},\n\t\t// Invalid decoder arg.\n\t\t{baseURL + \"/string-var?decoder=notadecoder\", true, false, nil},\n\t\t// Working example with string decoder.\n\t\t{baseURL + \"/string-var?decoder=string\", false, false, \"hello world\"},\n\t\t// Working example with default decoder.\n\t\t{baseURL + \"/string-var\", false, false, []byte(\"hello world\")},\n\t\t// Working example with JSON decoder.\n\t\t{baseURL + \"/json-var?decoder=jsonmap\", false, false, &map[string]any{\"Foo\": \"Bar\"}},\n\t\t// Setting wait.\n\t\t{baseURL + \"/string-var?decoder=string&wait=1m\", false, false, \"hello world\"},\n\t\t// Invalid wait.\n\t\t{baseURL + \"/string-var?decoder=string&wait=xx\", true, false, nil},\n\t}\n\n\tfor _, test := range tests {\n\t\tt.Run(test.URL, func(t *testing.T) {\n\t\t\tv, err := runtimevar.OpenVariable(ctx, test.URL)\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer v.Close()\n\t\t\tsnapshot, err := v.Watch(ctx)\n\t\t\tif (err != nil) != test.WantWatchErr {\n\t\t\t\tt.Errorf(\"%s: got Watch error %v, want error %v\", test.URL, err, test.WantWatchErr)\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif !cmp.Equal(snapshot.Value, test.Want) {\n\t\t\t\tt.Errorf(\"%s: got snapshot value\\n%v\\n  want\\n%v\", test.URL, snapshot.Value, test.Want)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype mockServer struct {\n\tbaseURL   string\n\tclose     func()\n\tresponses map[string]any\n\tauthUser  string\n\tauthPwd   string\n}\n\nfunc (m *mockServer) SetResponse(name string, response any) {\n\tm.responses[name] = response\n}\n\nfunc (m *mockServer) DeleteResponse(name string) {\n\tdelete(m.responses, name)\n}\n\nfunc newMockServer() *mockServer {\n\tmock := &mockServer{responses: map[string]any{}}\n\n\tmux := http.NewServeMux()\n\tmux.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n\t\tif mock.authUser != \"\" {\n\t\t\tuser, pwd, ok := r.BasicAuth()\n\t\t\tif !ok || user != mock.authUser || pwd != mock.authPwd {\n\t\t\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tresp := mock.responses[strings.TrimPrefix(r.URL.String(), \"/\")]\n\t\tif resp == nil {\n\t\t\tw.WriteHeader(http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\t\tfmt.Fprint(w, resp)\n\t})\n\n\tserver := httptest.NewServer(mux)\n\tmock.baseURL = server.URL\n\tmock.close = server.Close\n\treturn mock\n}\n"
  },
  {
    "path": "runtimevar/otel_test.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage runtimevar_test\n\nimport (\n\t\"context\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/testing/oteltest\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/constantvar\"\n\t\"testing\"\n)\n\nconst (\n\tpkgName = \"gocloud.dev/runtimevar\"\n\tdriver  = \"gocloud.dev/runtimevar/constantvar\"\n)\n\nfunc TestOpenTelemetry(t *testing.T) {\n\tctx := context.Background()\n\tte := oteltest.NewTestExporter(t, runtimevar.OpenTelemetryViews)\n\tdefer te.Shutdown(ctx)\n\n\tv := constantvar.New(1)\n\tdefer v.Close()\n\tif _, err := v.Watch(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcctx, cancel := context.WithCancel(ctx)\n\tcancel()\n\t_, _ = v.Watch(cctx)\n\n\t// Check metrics - during migration, we may need to look for different metric names.\n\tmetrics := te.GetMetrics(ctx)\n\n\tdiff := oteltest.DiffMetrics(metrics, pkgName, driver, []oteltest.Call{\n\t\t{Method: \"\", Code: gcerrors.OK},\n\t})\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n}\n"
  },
  {
    "path": "runtimevar/runtimevar.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package runtimevar provides an easy and portable way to watch runtime\n// configuration variables. Subpackages contain driver implementations of\n// runtimevar for supported services.\n//\n// See https://gocloud.dev/howto/runtimevar/ for a detailed how-to guide.\n//\n// # OpenTelemetry Integration\n//\n// OpenTelemetry supports tracing and metric collection for multiple languages and\n// backend providers. See https://opentelemetry.io.\n//\n// This API collects an OpenTelemetry metric \"gocloud.dev/runtimevar/value_changes\",\n// a count of the number of times all variables have changed values, by driver.\n//\n// To enable metric collection in your application, see the OpenTelemetry documentation at\n// https://opentelemetry.io/docs/instrumentation/go/getting-started/\npackage runtimevar // import \"gocloud.dev/runtimevar\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/gob\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/openurl\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/secrets\"\n\n\tgcdkotel \"gocloud.dev/internal/otel\"\n)\n\n// Snapshot contains a snapshot of a variable's value and metadata about it.\n// It is intended to be read-only for users.\ntype Snapshot struct {\n\t// Value contains the value of the variable.\n\t// The type for Value depends on the decoder used when creating the Variable.\n\tValue any\n\n\t// UpdateTime is the time when the last change was detected.\n\tUpdateTime time.Time\n\n\tasFunc func(any) bool\n}\n\n// As converts i to driver-specific types.\n// See https://gocloud.dev/concepts/as/ for background information, the \"As\"\n// examples in this package for examples, and the driver package\n// documentation for the specific types supported for that driver.\nfunc (s *Snapshot) As(i any) bool {\n\tif s.asFunc == nil {\n\t\treturn false\n\t}\n\treturn s.asFunc(i)\n}\n\nconst pkgName = \"gocloud.dev/runtimevar\"\n\nvar (\n\tOpenTelemetryViews = gcdkotel.CounterView(pkgName, \"/value_changes\",\n\t\t\"Count of variable value changes by driver.\")\n)\n\n// Variable provides an easy and portable way to watch runtime configuration\n// variables. To create a Variable, use constructors found in driver subpackages.\ntype Variable struct {\n\tdw            driver.Watcher\n\tchangeMeasure metric.Int64Counter\n\n\t// For cancelling the background goroutine, and noticing when it has exited.\n\tbackgroundCancel context.CancelFunc\n\tbackgroundDone   chan struct{}\n\n\t// haveGoodCh is closed when we get the first good value for the variable.\n\thaveGoodCh chan struct{}\n\t// A reference to changed at the last time Watch was called.\n\t// Not protected by mu because it's only referenced in Watch, which is not\n\t// supposed to be called from multiple goroutines.\n\tlastWatch <-chan struct{}\n\n\tmu       sync.RWMutex\n\tchanged  chan struct{} // closed when changing any of the other variables and replaced with a new channel\n\tlast     Snapshot\n\tlastErr  error\n\tlastGood Snapshot\n}\n\n// New is intended for use by drivers only. Do not use in application code.\nvar New = newVar\n\n// newVar creates a new *Variable based on a specific driver implementation.\nfunc newVar(w driver.Watcher) *Variable {\n\tctx, cancel := context.WithCancel(context.Background())\n\tchanged := make(chan struct{})\n\n\tproviderName := gcdkotel.ProviderName(w)\n\n\tv := &Variable{\n\t\tdw: w,\n\t\tchangeMeasure: gcdkotel.DimensionlessMeasure(pkgName, providerName, \"/value_changes\",\n\t\t\t\"Count of variable value changes by driver\"),\n\t\tbackgroundCancel: cancel,\n\t\tbackgroundDone:   make(chan struct{}),\n\t\thaveGoodCh:       make(chan struct{}),\n\t\tchanged:          changed,\n\t\tlastWatch:        changed,\n\t\tlastErr:          gcerr.Newf(gcerr.FailedPrecondition, nil, \"no value yet\"),\n\t}\n\tgo v.background(ctx)\n\treturn v\n}\n\n// ErrClosed is returned from Watch when the Variable has been Closed.\nvar ErrClosed = gcerr.Newf(gcerr.FailedPrecondition, nil, \"Variable has been Closed\")\n\n// Watch returns when there is a new Snapshot of the current value of the\n// variable.\n//\n// The first call to Watch will block while reading the variable from the\n// driver, and will return the resulting Snapshot or error. If an error is\n// returned, the returned Snapshot is a zero value and should be ignored.\n// Subsequent calls will block until the variable's value changes or a different\n// error occurs.\n//\n// Watch returns an ErrClosed error if the Variable has been closed.\n//\n// Watch should not be called on the same variable from multiple goroutines\n// concurrently. The typical use case is to call it in a single goroutine in a\n// loop.\n//\n// If the variable does not exist, Watch returns an error for which\n// gcerrors.Code will return gcerrors.NotFound.\n//\n// Alternatively, use Latest to retrieve the latest good value.\nfunc (c *Variable) Watch(ctx context.Context) (Snapshot, error) {\n\t// Block until there's a change since the last Watch call, signaled\n\t// by lastWatch being closed by the background goroutine.\n\tvar ctxErr error\n\tselect {\n\tcase <-c.lastWatch:\n\tcase <-ctx.Done():\n\t\tctxErr = ctx.Err()\n\t}\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif errors.Is(c.lastErr, ErrClosed) {\n\t\treturn Snapshot{}, ErrClosed\n\t} else if ctxErr != nil {\n\t\treturn Snapshot{}, ctxErr\n\t}\n\tc.lastWatch = c.changed\n\treturn c.last, c.lastErr\n}\n\nfunc (c *Variable) background(ctx context.Context) {\n\tvar curState, prevState driver.State\n\tvar wait time.Duration\n\tfor {\n\t\tselect {\n\t\tcase <-ctx.Done():\n\t\t\t// We're shutting down; exit the goroutine.\n\t\t\tclose(c.backgroundDone)\n\t\t\treturn\n\t\tcase <-time.After(wait):\n\t\t\t// Continue.\n\t\t}\n\n\t\tcurState, wait = c.dw.WatchVariable(ctx, prevState)\n\t\tif curState == nil {\n\t\t\t// No change.\n\t\t\tcontinue\n\t\t}\n\n\t\t// There's something new to return!\n\t\tprevState = curState\n\t\tc.changeMeasure.Add(ctx, 1)\n\t\t// Error from RecordWithTags is not possible.\n\n\t\t// Updates under the lock.\n\t\tc.mu.Lock()\n\t\tif errors.Is(c.lastErr, ErrClosed) {\n\t\t\tclose(c.backgroundDone)\n\t\t\tc.mu.Unlock()\n\t\t\treturn\n\t\t}\n\t\tif val, err := curState.Value(); err == nil {\n\t\t\t// We got a good value!\n\t\t\tc.last = Snapshot{\n\t\t\t\tValue:      val,\n\t\t\t\tUpdateTime: curState.UpdateTime(),\n\t\t\t\tasFunc:     curState.As,\n\t\t\t}\n\t\t\tc.lastErr = nil\n\t\t\tc.lastGood = c.last\n\t\t\t// Close c.haveGoodCh if it's not already closed.\n\t\t\tselect {\n\t\t\tcase <-c.haveGoodCh:\n\t\t\tdefault:\n\t\t\t\tclose(c.haveGoodCh)\n\t\t\t}\n\t\t} else {\n\t\t\t// We got an error value.\n\t\t\tc.last = Snapshot{}\n\t\t\tc.lastErr = wrapError(c.dw, err)\n\t\t}\n\t\tclose(c.changed)\n\t\tc.changed = make(chan struct{})\n\t\tc.mu.Unlock()\n\t}\n}\n\nfunc (c *Variable) haveGood() bool {\n\tselect {\n\tcase <-c.haveGoodCh:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Latest is intended to be called per request, with the request context.\n// It returns the latest good Snapshot of the variable value, blocking if no\n// good value has ever been received. If ctx is Done, it returns the latest\n// error indicating why no good value is available (not the ctx.Err()).\n// You can pass an already-Done ctx to make Latest not block.\n//\n// Latest returns ErrClosed if the Variable has been closed.\nfunc (c *Variable) Latest(ctx context.Context) (Snapshot, error) {\n\thaveGood := c.haveGood()\n\tif !haveGood {\n\t\tselect {\n\t\tcase <-c.haveGoodCh:\n\t\t\thaveGood = true\n\t\tcase <-ctx.Done():\n\t\t\t// We don't return ctx.Err().\n\t\t}\n\t}\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tif haveGood && !errors.Is(c.lastErr, ErrClosed) {\n\t\treturn c.lastGood, nil\n\t}\n\treturn Snapshot{}, c.lastErr\n}\n\n// CheckHealth returns an error unless Latest will return a good value\n// without blocking.\nfunc (c *Variable) CheckHealth() error {\n\thaveGood := c.haveGood()\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tif haveGood && !errors.Is(c.lastErr, ErrClosed) {\n\t\treturn nil\n\t}\n\treturn c.lastErr\n}\n\n// Close closes the Variable. The Variable is unusable after Close returns.\nfunc (c *Variable) Close() error {\n\t// Record that we're closing. Subsequent calls to Watch/Latest will return ErrClosed.\n\tc.mu.Lock()\n\tif errors.Is(c.lastErr, ErrClosed) {\n\t\tc.mu.Unlock()\n\t\treturn ErrClosed\n\t}\n\tc.last = Snapshot{}\n\tc.lastErr = ErrClosed\n\n\t// Close any remaining channels to wake up any callers that are waiting on them.\n\tclose(c.changed)\n\t// If it's the first good value, close haveGoodCh so that Latest doesn't block.\n\tselect {\n\tcase <-c.haveGoodCh:\n\tdefault:\n\t\tclose(c.haveGoodCh)\n\t}\n\tc.mu.Unlock()\n\n\t// Shut down the background goroutine.\n\tc.backgroundCancel()\n\t<-c.backgroundDone\n\n\t// Close the driver.\n\terr := c.dw.Close()\n\treturn wrapError(c.dw, err)\n}\n\nfunc wrapError(w driver.Watcher, err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif gcerr.DoNotWrap(err) {\n\t\treturn err\n\t}\n\treturn gcerr.New(w.ErrorCode(err), err, 2, \"runtimevar\")\n}\n\n// ErrorAs converts err to driver-specific types.\n// ErrorAs panics if i is nil or not a pointer.\n// ErrorAs returns false if err == nil.\n// See https://gocloud.dev/concepts/as/ for background information.\nfunc (c *Variable) ErrorAs(err error, i any) bool {\n\treturn gcerr.ErrorAs(err, i, c.dw.ErrorAs)\n}\n\n// VariableURLOpener represents types than can open Variables based on a URL.\n// The opener must not modify the URL argument. OpenVariableURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype VariableURLOpener interface {\n\tOpenVariableURL(ctx context.Context, u *url.URL) (*Variable, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n// See https://gocloud.dev/concepts/urls/ for more information.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n\tschemes openurl.SchemeMap\n}\n\n// VariableSchemes returns a sorted slice of the registered Variable schemes.\nfunc (mux *URLMux) VariableSchemes() []string { return mux.schemes.Schemes() }\n\n// ValidVariableScheme returns true iff scheme has been registered for Variables.\nfunc (mux *URLMux) ValidVariableScheme(scheme string) bool { return mux.schemes.ValidScheme(scheme) }\n\n// RegisterVariable registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterVariable panics.\nfunc (mux *URLMux) RegisterVariable(scheme string, opener VariableURLOpener) {\n\tmux.schemes.Register(\"runtimevar\", \"Variable\", scheme, opener)\n}\n\n// OpenVariable calls OpenVariableURL with the URL parsed from urlstr.\n// OpenVariable is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenVariable(ctx context.Context, urlstr string) (*Variable, error) {\n\topener, u, err := mux.schemes.FromString(\"Variable\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(VariableURLOpener).OpenVariableURL(ctx, u)\n}\n\n// OpenVariableURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenVariableURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenVariableURL(ctx context.Context, u *url.URL) (*Variable, error) {\n\topener, err := mux.schemes.FromURL(\"Variable\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(VariableURLOpener).OpenVariableURL(ctx, u)\n}\n\nvar defaultURLMux = new(URLMux)\n\n// DefaultURLMux returns the URLMux used by OpenVariable.\n//\n// Driver packages can use this to register their VariableURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// OpenVariable opens the variable identified by the URL given.\n// See the URLOpener documentation in driver subpackages for\n// details on supported URL formats, and https://gocloud.dev/concepts/urls\n// for more information.\nfunc OpenVariable(ctx context.Context, urlstr string) (*Variable, error) {\n\treturn defaultURLMux.OpenVariable(ctx, urlstr)\n}\n\n// Decode is a function type for unmarshaling/decoding a slice of bytes into\n// an arbitrary type. Decode functions are used when creating a Decoder via\n// NewDecoder. This package provides common Decode functions including\n// GobDecode and JSONDecode.\ntype Decode func(context.Context, []byte, any) error\n\n// Decoder decodes a slice of bytes into a particular Go object.\n//\n// This package provides some common Decoders that you can use directly,\n// including StringDecoder and BytesDecoder. You can also NewDecoder to\n// construct other Decoders.\ntype Decoder struct {\n\ttyp reflect.Type\n\tfn  Decode\n}\n\n// NewDecoder returns a Decoder that uses fn to decode a slice of bytes into\n// an object of type obj.\n//\n// This package provides some common Decode functions, including JSONDecode\n// and GobDecode, which can be passed to this function to create Decoders for\n// JSON and gob values.\nfunc NewDecoder(obj any, fn Decode) *Decoder {\n\treturn &Decoder{\n\t\ttyp: reflect.TypeOf(obj),\n\t\tfn:  fn,\n\t}\n}\n\n// Decode decodes b into a new instance of the target type.\nfunc (d *Decoder) Decode(ctx context.Context, b []byte) (any, error) {\n\tnv := reflect.New(d.typ).Interface()\n\tif err := d.fn(ctx, b, nv); err != nil {\n\t\treturn nil, err\n\t}\n\tptr := reflect.ValueOf(nv)\n\treturn ptr.Elem().Interface(), nil\n}\n\nvar (\n\t// StringDecoder decodes into strings.\n\tStringDecoder = NewDecoder(\"\", StringDecode)\n\n\t// BytesDecoder copies the slice of bytes.\n\tBytesDecoder = NewDecoder([]byte{}, BytesDecode)\n)\n\n// JSONDecode can be passed to NewDecoder when decoding JSON (https://golang.org/pkg/encoding/json/).\nfunc JSONDecode(ctx context.Context, data []byte, obj any) error {\n\treturn json.Unmarshal(data, obj)\n}\n\n// GobDecode can be passed to NewDecoder when decoding gobs (https://golang.org/pkg/encoding/gob/).\nfunc GobDecode(ctx context.Context, data []byte, obj any) error {\n\treturn gob.NewDecoder(bytes.NewBuffer(data)).Decode(obj)\n}\n\n// StringDecode decodes raw bytes b into a string.\nfunc StringDecode(ctx context.Context, b []byte, obj any) error {\n\tv := obj.(*string)\n\t*v = string(b)\n\treturn nil\n}\n\n// BytesDecode copies the slice of bytes b into obj.\nfunc BytesDecode(ctx context.Context, b []byte, obj any) error {\n\tv := obj.(*[]byte)\n\t*v = b[:]\n\treturn nil\n}\n\n// DecryptDecode returns a decode function that can be passed to NewDecoder when\n// decoding an encrypted message (https://godoc.org/gocloud.dev/secrets).\n//\n// post defaults to BytesDecode. An optional decoder can be passed in to do\n// further decode operation based on the decrypted message.\nfunc DecryptDecode(k *secrets.Keeper, post Decode) Decode {\n\treturn func(ctx context.Context, b []byte, obj any) error {\n\t\tdecrypted, err := k.Decrypt(ctx, b)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif post == nil {\n\t\t\treturn BytesDecode(ctx, decrypted, obj)\n\t\t}\n\t\treturn post(ctx, decrypted, obj)\n\t}\n}\n\n// DecoderByName returns a *Decoder based on decoderName.\n//\n// It is intended to be used by URL openers in driver packages.\n//\n// Supported values include:\n//   - empty string: Returns the default from the URLOpener.Decoder, or\n//     BytesDecoder if URLOpener.Decoder is nil (which is true if you're\n//     using the default URLOpener).\n//   - \"bytes\": Returns a BytesDecoder; Snapshot.Value will be of type []byte.\n//   - \"jsonmap\": Returns a JSON decoder for a map[string]any;\n//     Snapshot.Value will be of type *map[string]any.\n//   - \"string\": Returns StringDecoder; Snapshot.Value will be of type string.\n//\n// It also supports using \"decrypt+<decoderName>\" (or \"decrypt\" for default\n// decoder) to decrypt the data before decoding. It uses the secrets package to\n// open a keeper by the URL string stored in a environment variable\n// \"RUNTIMEVAR_KEEPER_URL\". See https://godoc.org/gocloud.dev/secrets#OpenKeeper\n// for more details.\nfunc DecoderByName(ctx context.Context, decoderName string, dflt *Decoder) (*Decoder, error) {\n\t// Open a *secrets.Keeper if the decoderName contains \"decrypt\".\n\tk, decoderName, err := decryptByName(ctx, decoderName)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif dflt == nil {\n\t\tdflt = BytesDecoder\n\t}\n\tswitch decoderName {\n\tcase \"\":\n\t\treturn maybeDecrypt(ctx, k, dflt), nil\n\tcase \"bytes\":\n\t\treturn maybeDecrypt(ctx, k, BytesDecoder), nil\n\tcase \"jsonmap\":\n\t\tvar m map[string]any\n\t\treturn maybeDecrypt(ctx, k, NewDecoder(&m, JSONDecode)), nil\n\tcase \"string\":\n\t\treturn maybeDecrypt(ctx, k, StringDecoder), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported decoder %q\", decoderName)\n\t}\n}\n\n// decryptByName returns a *secrets.Keeper for decryption when decoderName\n// contains \"decrypt\".\nfunc decryptByName(ctx context.Context, decoderName string) (*secrets.Keeper, string, error) {\n\tif !strings.HasPrefix(decoderName, \"decrypt\") {\n\t\treturn nil, decoderName, nil\n\t}\n\tkeeperURL := os.Getenv(\"RUNTIMEVAR_KEEPER_URL\")\n\tif keeperURL == \"\" {\n\t\treturn nil, \"\", errors.New(\"environment variable RUNTIMEVAR_KEEPER_URL needed to open a *secrets.Keeper for decryption\")\n\t}\n\tk, err := secrets.OpenKeeper(ctx, keeperURL)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tdecoderName = strings.TrimPrefix(decoderName, \"decrypt\")\n\tif decoderName != \"\" {\n\t\tdecoderName = strings.TrimLeftFunc(decoderName, func(r rune) bool {\n\t\t\treturn r == ' ' || r == '+'\n\t\t})\n\t}\n\t// The parsed value is \"decrypt <decoderName>\".\n\treturn k, decoderName, nil\n}\n\nfunc maybeDecrypt(ctx context.Context, k *secrets.Keeper, dec *Decoder) *Decoder {\n\tif k == nil {\n\t\treturn dec\n\t}\n\treturn NewDecoder(reflect.New(dec.typ).Elem().Interface(), DecryptDecode(k, dec.fn))\n}\n"
  },
  {
    "path": "runtimevar/runtimevar_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package runtimevar contains tests that exercises the runtimevar APIs. It does not test\n// driver implementations.\npackage runtimevar\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/gob\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"reflect\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/runtimevar/driver\"\n\t\"gocloud.dev/secrets/localsecrets\"\n)\n\n// How long we wait on a call that is expected to block forever before cancelling it.\nconst blockingCheckDelay = 25 * time.Millisecond\n\n// state implements driver.State.\ntype state struct {\n\tval        string\n\tupdateTime time.Time\n\terr        error\n}\n\nfunc (s *state) Value() (any, error)   { return s.val, s.err }\nfunc (s *state) UpdateTime() time.Time { return s.updateTime }\nfunc (s *state) As(i any) bool         { return false }\n\n// fakeWatcher is a fake implementation of driver.Watcher that returns a set *state.\ntype fakeWatcher struct {\n\tdriver.Watcher\n\n\tmu     sync.Mutex\n\tstate  *state\n\tnewval bool // true iff WatchVariable should return state\n}\n\nfunc (w *fakeWatcher) Set(s *state) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tw.state = s\n\tw.newval = true\n}\n\nfunc (w *fakeWatcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\tif err := ctx.Err(); err != nil {\n\t\tw.Set(&state{err: err})\n\t}\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\tif !w.newval {\n\t\treturn nil, 1 * time.Millisecond // to avoid spinning\n\t}\n\tw.newval = false\n\treturn w.state, 0\n}\n\nfunc (*fakeWatcher) Close() error                       { return nil }\nfunc (*fakeWatcher) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Internal }\n\nfunc TestVariable_Watch(t *testing.T) {\n\tfake := &fakeWatcher{}\n\tv := New(fake)\n\n\tctx := context.Background()\n\n\t// Watch should block when there's no value yet.\n\tctx2, cancel := context.WithTimeout(ctx, blockingCheckDelay)\n\tdefer cancel()\n\tif _, err := v.Watch(ctx2); err == nil {\n\t\tt.Errorf(\"Watch with no value yet should block: got nil err, want err\")\n\t}\n\tif ctx2.Err() == nil {\n\t\tt.Error(\"Watch with no value yet should block\")\n\t}\n\n\t// Setting an error value makes Watch return an error.\n\tfake.Set(&state{err: errFake})\n\tif _, err := v.Watch(ctx); err == nil {\n\t\tt.Fatal(\"Watch returned non-nil error, want error\")\n\t}\n\t// But calling Watch again blocks.\n\tctx2, cancel = context.WithTimeout(ctx, blockingCheckDelay)\n\tdefer cancel()\n\tif _, err := v.Watch(ctx2); err == nil {\n\t\tt.Errorf(\"Watch called again with error value should block: got nil err, want err\")\n\t}\n\tif ctx2.Err() == nil {\n\t\tt.Error(\"Watch called again with error value should block\")\n\t}\n\n\t// Setting a different error makes Watch return again.\n\tfake.Set(&state{err: errors.New(\"another fake error\")})\n\tif _, err := v.Watch(ctx); err == nil {\n\t\tt.Fatal(\"Watch returned non-nil error, want error\")\n\t}\n\n\t// Setting a value makes Watch return again.\n\tfake.Set(&state{val: \"hello\"})\n\tif _, err := v.Watch(ctx); err != nil {\n\t\tt.Fatalf(\"Watch returned error %v, want nil\", err)\n\t}\n\n\t// Make a few updates. Each of these will try to write to the nextWatchCh,\n\t// but we should only keep the latest one.\n\tfake.Set(&state{val: \"hello1\"})\n\tfake.Set(&state{val: \"hello2\"})\n\tfake.Set(&state{val: \"hello3\"})\n\tfake.Set(&state{val: \"hello4\"})\n\tfake.Set(&state{val: \"hello5\"})\n\t// Wait until we're sure the last one has been received.\n\tfor {\n\t\tsnap, err := v.Latest(ctx)\n\t\tif err != nil {\n\t\t\tt.Errorf(\"got unexpected error from Latest: %v\", err)\n\t\t}\n\t\tif snap.Value == \"hello5\" {\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Watch should get the last one, hello5.\n\tif snap, err := v.Watch(ctx); err != nil {\n\t\tt.Fatalf(\"Watch returned error %v, want nil\", err)\n\t} else if snap.Value != \"hello5\" {\n\t\tt.Errorf(\"Watch got %v, want hello5\", snap.Value)\n\t}\n\n\t// And the next call should block.\n\tctx2, cancel = context.WithTimeout(ctx, blockingCheckDelay)\n\tdefer cancel()\n\tif _, err := v.Watch(ctx2); err == nil {\n\t\tt.Errorf(\"Watch after no change in good value should block: got nil err, want err\")\n\t}\n\tif ctx2.Err() == nil {\n\t\tt.Error(\"Watch after no change in good value should block\")\n\t}\n\n\t// Ensure a blocking Watch returns when a new value arrives.\n\t// Wait blockingCheckDelay to give some time to be blocking in Watch.\n\t// There's no guarantee it will get there, but if Watch doesn't handle\n\t// cancelation properly, then the test will fail whenever it does get there,\n\t// so at least we'll observe a flaky test.\n\ttime.AfterFunc(blockingCheckDelay, func() { fake.Set(&state{val: \"hello6\"}) })\n\tif snap, err := v.Watch(ctx); err != nil {\n\t\tt.Errorf(\"Watch interrupted by new value returned %v, want nil\", err)\n\t} else if snap.Value != \"hello6\" {\n\t\tt.Errorf(\"Watch got %v, want hello6\", snap.Value)\n\t}\n\n\t// Similarly, ensure a blocking Watch is interrupted by Close.\n\ttime.AfterFunc(blockingCheckDelay, func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t})\n\tif _, err := v.Watch(ctx); err != ErrClosed {\n\t\tt.Errorf(\"Watch interrupted by Close returned %v, want ErrClosed\", err)\n\t}\n\n\t// Watch should now return ErrClosed.\n\tif _, err := v.Watch(ctx); err != ErrClosed {\n\t\tt.Errorf(\"Watch after Close returned %v, want ErrClosed\", err)\n\t}\n}\n\nfunc TestVariable_Latest(t *testing.T) {\n\tconst content1, content2 = \"foo\", \"bar\"\n\tconst numGoroutines = 10\n\tctx := context.Background()\n\n\tfake := &fakeWatcher{}\n\tv := New(fake)\n\n\t// Not healthy at startup.\n\tif v.CheckHealth() == nil {\n\t\tt.Error(\"got nil from CheckHealth, want error\")\n\t}\n\n\t// Latest should block until the context is done, as there's no value.\n\tctx2, cancel := context.WithTimeout(ctx, blockingCheckDelay)\n\tdefer cancel()\n\tif _, err := v.Latest(ctx2); err == nil {\n\t\tt.Errorf(\"Latest with no value yet should block: got nil err, want err\")\n\t}\n\tif ctx2.Err() == nil {\n\t\tt.Error(\"Latest with no value yet should block\")\n\t}\n\t// And we're not healthy.\n\tif v.CheckHealth() == nil {\n\t\tt.Error(\"got nil from CheckHealth, want error\")\n\t}\n\n\t// Call Latest concurrently. There's still no value.\n\tvar wg sync.WaitGroup\n\twg.Add(numGoroutines)\n\tfor range numGoroutines {\n\t\tgo func() {\n\t\t\tctx2, cancel := context.WithTimeout(ctx, blockingCheckDelay)\n\t\t\tcancel()\n\t\t\tif _, err := v.Latest(ctx2); err == nil {\n\t\t\t\tt.Errorf(\"Latest with no value yet: got nil err, want err\")\n\t\t\t}\n\t\t\twg.Done()\n\t\t}()\n\t}\n\twg.Wait()\n\n\t// Set an error value. Latest should still block.\n\tfake.Set(&state{err: errFake})\n\tctx2, cancel = context.WithTimeout(ctx, blockingCheckDelay)\n\tdefer cancel()\n\tif _, err := v.Latest(ctx2); err == nil {\n\t\tt.Errorf(\"Latest with error value should block: got nil err, want err\")\n\t}\n\tif ctx2.Err() == nil {\n\t\tt.Error(\"Latest with error value should block\")\n\t}\n\t// And we're still not healthy.\n\tif v.CheckHealth() == nil {\n\t\tt.Error(\"got nil from CheckHealth, want error\")\n\t}\n\n\t// Call Latest concurrently, only exiting each goroutine when they\n\t// see the content1 value.\n\twg.Add(numGoroutines)\n\tfor range numGoroutines {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tval, err := v.Latest(ctx)\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif val.Value != content1 {\n\t\t\t\t\tt.Errorf(\"got %v want %s\", val, content1)\n\t\t\t\t}\n\t\t\t\twg.Done()\n\t\t\t\treturn\n\t\t\t}\n\t\t}()\n\t}\n\t// Set a good value, after a small delay to give the goroutines a chance\n\t// to get into Latest.\n\ttime.Sleep(blockingCheckDelay)\n\tfake.Set(&state{val: content1})\n\twg.Wait()\n\t// And now we're healthy.\n\tif err := v.CheckHealth(); err != nil {\n\t\tt.Errorf(\"got %v from CheckHealth, want nil\", err)\n\t}\n\n\t// Set a different value. At some point after this, Latest should start\n\t// returning a Snapshot with Value set to content2.\n\tfake.Set(&state{val: content2})\n\n\t// Call Latest concurrently, only exiting each goroutine when they\n\t// see the content2 value.\n\twg.Add(numGoroutines)\n\tfor range numGoroutines {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tval, err := v.Latest(ctx)\n\t\t\t\tif err != nil {\n\t\t\t\t\t// Errors are unexpected at this point.\n\t\t\t\t\tt.Error(err)\n\t\t\t\t}\n\t\t\t\tif val.Value == content1 {\n\t\t\t\t\t// Still seeing the old value.\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif val.Value != content2 {\n\t\t\t\t\tt.Errorf(\"got %v want %s\", val, content2)\n\t\t\t\t}\n\t\t\t\twg.Done()\n\t\t\t\treturn\n\t\t\t}\n\t\t}()\n\t}\n\twg.Wait()\n\n\t// Set an error value. Latest should still return content2.\n\tfake.Set(&state{err: errFake})\n\n\t// Call Latest concurrently. The test will be flaky if some of them\n\t// start getting errors.\n\twg.Add(numGoroutines)\n\tfor range numGoroutines {\n\t\tgo func() {\n\t\t\tval, err := v.Latest(ctx)\n\t\t\tif err != nil {\n\t\t\t\t// Errors are unexpected at this point.\n\t\t\t\tt.Error(err)\n\t\t\t} else if val.Value != content2 {\n\t\t\t\tt.Errorf(\"got %v want %s\", val.Value, content2)\n\t\t\t}\n\t\t\twg.Done()\n\t\t\treturn\n\t\t}()\n\t}\n\twg.Wait()\n\n\t// Still healthy.\n\tif err := v.CheckHealth(); err != nil {\n\t\tt.Errorf(\"got %v from CheckHealth, want nil\", err)\n\t}\n\n\t// Close the variable.\n\tif err := v.Close(); err != nil {\n\t\tt.Error(err)\n\t}\n\n\t// Latest should now return ErrClosed.\n\tif _, err := v.Latest(ctx); err != ErrClosed {\n\t\tt.Errorf(\"Latest after close returned %v, want ErrClosed\", err)\n\t}\n\t// Unhealthy now.\n\tif err := v.CheckHealth(); err != ErrClosed {\n\t\tt.Errorf(\"got %v from CheckHealth, want ErrClosed\", err)\n\t}\n}\n\n// Tests that Latest is interrupted by Close.\nfunc TestVariable_LatestBlockedDuringClose(t *testing.T) {\n\tfake := &fakeWatcher{}\n\tv := New(fake)\n\n\tctx := context.Background()\n\n\t// Wait blockingCheckDelay to give some time to be blocking in Latest.\n\t// There's no guarantee it will get there, but if Latest doesn't handle\n\t// cancelation properly, then the test will fail whenever it does get there,\n\t// so at least we'll observe a flaky test.\n\ttime.AfterFunc(blockingCheckDelay, func() {\n\t\tif err := v.Close(); err != nil {\n\t\t\tt.Error(err)\n\t\t}\n\t})\n\tif _, err := v.Latest(ctx); err != ErrClosed {\n\t\tt.Errorf(\"Latest interrupted by Close got %v, want ErrClosed\", err)\n\t}\n\n\t// Calling Close again should return ErrClosed.\n\tif err := v.Close(); err != ErrClosed {\n\t\tt.Errorf(\"calling Close 2x returned %v, want ErrClosed\", err)\n\t}\n}\n\nvar errFake = errors.New(\"fake\")\n\n// erroringWatcher implements driver.Watcher.\n// WatchVariable always returns a state with errFake, and Close\n// always returns errFake.\ntype erroringWatcher struct {\n\tdriver.Watcher\n}\n\nfunc (b *erroringWatcher) WatchVariable(ctx context.Context, prev driver.State) (driver.State, time.Duration) {\n\treturn &state{err: errFake}, 0\n}\n\nfunc (b *erroringWatcher) Close() error {\n\treturn errFake\n}\n\nfunc (b *erroringWatcher) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerrors.Internal\n}\n\n// TestErrorsAreWrapped tests that all errors returned from the driver are\n// wrapped exactly once by the portable type.\nfunc TestErrorsAreWrapped(t *testing.T) {\n\tctx := context.Background()\n\tv := New(&erroringWatcher{})\n\n\t// verifyWrap ensures that err is wrapped exactly once.\n\tverifyWrap := func(description string, err error) {\n\t\tif unwrapped, ok := err.(*gcerr.Error); !ok {\n\t\t\tt.Errorf(\"%s: not wrapped: %v\", description, err)\n\t\t} else if du, ok := unwrapped.Unwrap().(*gcerr.Error); ok {\n\t\t\tt.Errorf(\"%s: double wrapped: %v\", description, du)\n\t\t}\n\t}\n\n\t_, err := v.Watch(ctx)\n\tverifyWrap(\"Watch\", err)\n\n\terr = v.Close()\n\tverifyWrap(\"Close\", err)\n}\n\nvar (\n\ttestOpenOnce sync.Once\n\ttestOpenGot  *url.URL\n)\n\nfunc TestURLMux(t *testing.T) {\n\tctx := context.Background()\n\n\tmux := new(URLMux)\n\tfake := &fakeOpener{}\n\tmux.RegisterVariable(\"foo\", fake)\n\tmux.RegisterVariable(\"err\", fake)\n\n\tif diff := cmp.Diff(mux.VariableSchemes(), []string{\"err\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !mux.ValidVariableScheme(\"foo\") || !mux.ValidVariableScheme(\"err\") {\n\t\tt.Errorf(\"ValidVariableScheme didn't return true for valid scheme\")\n\t}\n\tif mux.ValidVariableScheme(\"foo2\") || mux.ValidVariableScheme(\"http\") {\n\t\tt.Errorf(\"ValidVariableScheme didn't return false for invalid scheme\")\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\turl     string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:    \"empty URL\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL\",\n\t\t\turl:     \":foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL no scheme\",\n\t\t\turl:     \"foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"unregistered scheme\",\n\t\t\turl:     \"bar://myvar\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"func returns error\",\n\t\t\turl:     \"err://myvar\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"no query options\",\n\t\t\turl:  \"foo://myvar\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty query options\",\n\t\t\turl:  \"foo://myvar?\",\n\t\t},\n\t\t{\n\t\t\tname: \"query options\",\n\t\t\turl:  \"foo://myvar?aAa=bBb&cCc=dDd\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple query options\",\n\t\t\turl:  \"foo://myvar?x=a&x=b&x=c\",\n\t\t},\n\t\t{\n\t\t\tname: \"fancy var name\",\n\t\t\turl:  \"foo:///foo/bar/baz\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api scheme prefix\",\n\t\t\turl:  \"runtimevar+foo:///foo/bar/baz\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api+type scheme prefix\",\n\t\t\turl:  \"runtimevar+variable+foo:///foo/bar/baz\",\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\t_, gotErr := mux.OpenVariable(ctx, tc.url)\n\t\t\tif (gotErr != nil) != tc.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error %v\", gotErr, tc.wantErr)\n\t\t\t}\n\t\t\tif gotErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t\t// Repeat with OpenVariableURL.\n\t\t\tparsed, err := url.Parse(tc.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\t_, gotErr = mux.OpenVariableURL(ctx, parsed)\n\t\t\tif gotErr != nil {\n\t\t\t\tt.Fatalf(\"got err %v, want nil\", gotErr)\n\t\t\t}\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype fakeOpener struct {\n\tu *url.URL // last url passed to OpenVariableURL\n}\n\nfunc (o *fakeOpener) OpenVariableURL(ctx context.Context, u *url.URL) (*Variable, error) {\n\tif u.Scheme == \"err\" {\n\t\treturn nil, errors.New(\"fail\")\n\t}\n\to.u = u\n\treturn nil, nil\n}\n\nfunc TestDecoder(t *testing.T) {\n\ttype Struct struct {\n\t\tFieldA string\n\t\tFieldB map[string]any\n\t}\n\n\tnum := 4321\n\tnumptr := &num\n\tstr := \"boring string\"\n\tstrptr := &str\n\n\tinputs := []any{\n\t\tstr,\n\t\tstrptr,\n\t\tnum,\n\t\tnumptr,\n\t\t100.1,\n\t\tStruct{\n\t\t\tFieldA: \"hello\",\n\t\t\tFieldB: map[string]any{\n\t\t\t\t\"hello\": \"world\",\n\t\t\t},\n\t\t},\n\t\t&Struct{\n\t\t\tFieldA: \"world\",\n\t\t},\n\t\tmap[string]string{\n\t\t\t\"slice\": \"pizza\",\n\t\t},\n\t\t&map[string]any{},\n\t\t[]string{\"hello\", \"world\"},\n\t\t&[]int{1, 0, 1},\n\t\t[...]float64{3.1415},\n\t\t&[...]int64{4, 5, 6},\n\t}\n\n\tfor _, tc := range []struct {\n\t\tdesc     string\n\t\tencodeFn func(any) ([]byte, error)\n\t\tdecodeFn Decode\n\t}{\n\t\t{\n\t\t\tdesc:     \"JSON\",\n\t\t\tencodeFn: json.Marshal,\n\t\t\tdecodeFn: JSONDecode,\n\t\t},\n\t\t{\n\t\t\tdesc:     \"Gob\",\n\t\t\tencodeFn: gobMarshal,\n\t\t\tdecodeFn: GobDecode,\n\t\t},\n\t} {\n\t\tfor i, input := range inputs {\n\t\t\tt.Run(fmt.Sprintf(\"%s_%d\", tc.desc, i), func(t *testing.T) {\n\t\t\t\tdecoder := NewDecoder(input, tc.decodeFn)\n\t\t\t\tb, err := tc.encodeFn(input)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"marshal error %v\", err)\n\t\t\t\t}\n\t\t\t\tgot, err := decoder.Decode(context.Background(), b)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"parse input\\n%s\\nerror: %v\", string(b), err)\n\t\t\t\t}\n\t\t\t\tif reflect.TypeOf(got) != reflect.TypeOf(input) {\n\t\t\t\t\tt.Errorf(\"type mismatch got %T, want %T\", got, input)\n\t\t\t\t}\n\t\t\t\tif diff := cmp.Diff(got, input); diff != \"\" {\n\t\t\t\t\tt.Errorf(\"value diff:\\n%v\", diff)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc gobMarshal(v any) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tif err := gob.NewEncoder(&buf).Encode(v); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf.Bytes(), nil\n}\n\nfunc TestStringDecoder(t *testing.T) {\n\tinput := \"hello world\"\n\tgot, err := StringDecoder.Decode(context.Background(), []byte(input))\n\tif err != nil {\n\t\tt.Fatalf(\"error: %v\", err)\n\t}\n\tif input != got.(string) {\n\t\tt.Errorf(\"output got %v, want %q\", got, input)\n\t}\n}\n\nfunc TestBytesDecoder(t *testing.T) {\n\tinput := []byte(\"hello world\")\n\tgot, err := BytesDecoder.Decode(context.Background(), input)\n\tif err != nil {\n\t\tt.Fatalf(\"error: %v\", err)\n\t}\n\tif diff := cmp.Diff(got, input); diff != \"\" {\n\t\tt.Errorf(\"output got %v, want %q\", got, input)\n\t}\n}\n\nfunc TestDecryptDecoder(t *testing.T) {\n\tctx := context.Background()\n\tsecretKey, err := localsecrets.NewRandomKey()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper := localsecrets.NewKeeper(secretKey)\n\n\ttests := []struct {\n\t\tdesc      string\n\t\tin        any\n\t\tencodeFn  func(any) ([]byte, error)\n\t\tpostDecFn Decode\n\t}{\n\t\t{\n\t\t\tdesc:     \"Bytes\",\n\t\t\tin:       []byte(\"hello world\"),\n\t\t\tencodeFn: func(obj any) ([]byte, error) { return obj.([]byte), nil },\n\t\t},\n\t\t{\n\t\t\tdesc:      \"String\",\n\t\t\tin:        \"hello world\",\n\t\t\tencodeFn:  func(obj any) ([]byte, error) { return []byte(obj.(string)), nil },\n\t\t\tpostDecFn: StringDecode,\n\t\t},\n\t\t{\n\t\t\tdesc: \"JSON\",\n\t\t\tin: map[string]string{\n\t\t\t\t\"slice\": \"pizza\",\n\t\t\t},\n\t\t\tencodeFn:  json.Marshal,\n\t\t\tpostDecFn: JSONDecode,\n\t\t},\n\t}\n\tfor _, tc := range tests {\n\t\tt.Run(tc.desc, func(t *testing.T) {\n\t\t\tdecoder := NewDecoder(tc.in, DecryptDecode(keeper, tc.postDecFn))\n\n\t\t\tb, err := tc.encodeFn(tc.in)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"encode error %v\", err)\n\t\t\t}\n\t\t\tencrypted, err := keeper.Encrypt(ctx, b)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"encrypt error: %v\", err)\n\t\t\t}\n\n\t\t\tgot, err := decoder.Decode(ctx, encrypted)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"parse input\\n%s\\nerror: %v\", string(b), err)\n\t\t\t}\n\t\t\tif reflect.TypeOf(got) != reflect.TypeOf(tc.in) {\n\t\t\t\tt.Errorf(\"type mismatch got %T, want %T\", got, tc.in)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(got, tc.in); diff != \"\" {\n\t\t\t\tt.Errorf(\"value diff:\\n%v\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "samples/appengine/.gcloudignore",
    "content": "# This file specifies files that are *not* uploaded to Google Cloud Platform\n# using gcloud. It follows the same syntax as .gitignore, with the addition of\n# \"#!include\" directives (which insert the entries of the given .gitignore-style\n# file at that point).\n#\n# For more information, run:\n#   $ gcloud topic gcloudignore\n#\n.gcloudignore\n# If you would like to upload your .git directory, .gitignore file or files\n# from your .gitignore file, remove the corresponding line\n# below:\n.git\n.gitignore\n\n# Binaries for programs and plugins\n*.exe\n*.exe~\n*.dll\n*.so\n*.dylib\n# Test binary, build with `go test -c`\n*.test\n# Output of the go coverage tool, specifically when used with LiteIDE\n*.out"
  },
  {
    "path": "samples/appengine/README.md",
    "content": "# AppEngine Sample\n\nThis directory holds a simple \"Hello world!\" AppEngine app that uses\n[server.Server](https://github.com/google/go-cloud/blob/master/server/server.go).\n\n## Prerequisites\n\nYou will need to install the following software to run this sample:\n\n-   [Go](https://golang.org/doc/install)\n-   [gcloud CLI](https://cloud.google.com/sdk/downloads)\n\n## Deploying\n\nRun the following in this `samples/appengine` directory:\n\n```shell\n# Build the binary.\ngo build\n# Deploy it to AppEngine.\ngcloud app deploy\n# Open a browser to the app.\ngcloud app browse\n```\n\nTry browsing to the `/healthz/readiness` page that `server.Server` adds a\nhandler for.\n"
  },
  {
    "path": "samples/appengine/app.yaml",
    "content": "runtime: go111\n"
  },
  {
    "path": "samples/appengine/helloworld.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// A simple \"hello world\" application using server.Server, to be run on\n// Google App Engine (GAE).\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\n\t\"github.com/gorilla/mux\"\n\t\"gocloud.dev/server\"\n)\n\nfunc main() {\n\tr := mux.NewRouter()\n\tr.HandleFunc(\"/\", handle)\n\n\tport := os.Getenv(\"PORT\")\n\tif port == \"\" {\n\t\tport = \"8080\"\n\t}\n\tsrv := server.New(r, nil)\n\tlog.Printf(\"Listening on port %s\", port)\n\tlog.Fatal(srv.ListenAndServe(fmt.Sprintf(\":%s\", port)))\n}\n\nfunc handle(w http.ResponseWriter, r *http.Request) {\n\tif r.URL.Path != \"/\" {\n\t\thttp.NotFound(w, r)\n\t\treturn\n\t}\n\tfmt.Fprint(w, \"Hello world!\")\n}\n"
  },
  {
    "path": "samples/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/samples\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.97.1\n\tgithub.com/aws/aws-sdk-go-v2/service/ssm v1.68.3\n\tgithub.com/go-sql-driver/mysql v1.9.3\n\tgithub.com/google/go-cmdtest v0.3.0\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/subcommands v1.2.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/google/wire v0.7.0\n\tgithub.com/gorilla/mux v1.8.1\n\tgithub.com/streadway/amqp v1.0.0\n\tgo.opentelemetry.io/contrib/exporters/autoexport v0.67.0\n\tgo.opentelemetry.io/contrib/propagators/autoprop v0.67.0\n\tgo.opentelemetry.io/otel v1.42.0\n\tgo.opentelemetry.io/otel/log v0.18.0\n\tgo.opentelemetry.io/otel/metric v1.42.0\n\tgo.opentelemetry.io/otel/sdk v1.42.0\n\tgo.opentelemetry.io/otel/sdk/log v0.18.0\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0\n\tgo.opentelemetry.io/otel/trace v1.42.0\n\tgocloud.dev v0.45.0\n\tgocloud.dev/docstore/mongodocstore v0.45.0\n\tgocloud.dev/pubsub/kafkapubsub v0.45.0\n\tgocloud.dev/pubsub/natspubsub v0.45.0\n\tgocloud.dev/pubsub/rabbitpubsub v0.45.0\n\tgocloud.dev/runtimevar/hashivault v0.45.0\n\tgocloud.dev/secrets/hashivault v0.45.0\n\tgoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5\n\tgopkg.in/pipe.v2 v2.0.0-20140414041502-3c2ca4d52544\n)\n\nrequire (\n\tcel.dev/expr v0.25.1 // indirect\n\tcloud.google.com/go v0.123.0 // indirect\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tcloud.google.com/go/firestore v1.21.0 // indirect\n\tcloud.google.com/go/iam v1.5.3 // indirect\n\tcloud.google.com/go/kms v1.26.0 // indirect\n\tcloud.google.com/go/longrunning v0.8.0 // indirect\n\tcloud.google.com/go/monitoring v1.24.3 // indirect\n\tcloud.google.com/go/pubsub v1.50.1 // indirect\n\tcloud.google.com/go/pubsub/v2 v2.4.0 // indirect\n\tcloud.google.com/go/storage v1.61.3 // indirect\n\tcloud.google.com/go/trace v1.11.7 // indirect\n\tfilippo.io/edwards25519 v1.2.0 // indirect\n\tgithub.com/Azure/azure-amqp-common-go/v3 v3.2.3 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0 // indirect\n\tgithub.com/Azure/go-amqp v1.5.1 // indirect\n\tgithub.com/AzureAD/microsoft-authentication-library-for-go v1.7.0 // indirect\n\tgithub.com/GoogleCloudPlatform/cloudsql-proxy v1.37.13 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.31.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect\n\tgithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.55.0 // indirect\n\tgithub.com/IBM/sarama v1.47.0 // indirect\n\tgithub.com/XSAM/otelsql v0.41.0 // indirect\n\tgithub.com/aws/aws-sdk-go v1.55.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/kms v1.50.3 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sns v1.39.14 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sqs v1.42.24 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/cenkalti/backoff/v4 v4.3.0 // indirect\n\tgithub.com/cenkalti/backoff/v5 v5.0.3 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgithub.com/eapache/go-resiliency v1.7.0 // indirect\n\tgithub.com/eapache/queue v1.1.0 // indirect\n\tgithub.com/envoyproxy/go-control-plane/envoy v1.37.0 // indirect\n\tgithub.com/envoyproxy/protoc-gen-validate v1.3.3 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/fsnotify/fsnotify v1.9.0 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang-jwt/jwt/v5 v5.3.1 // indirect\n\tgithub.com/golang/snappy v1.0.0 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/renameio v0.1.0 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2 // indirect\n\tgithub.com/hashicorp/go-multierror v1.1.1 // indirect\n\tgithub.com/hashicorp/go-retryablehttp v0.7.8 // indirect\n\tgithub.com/hashicorp/go-rootcerts v1.0.2 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect\n\tgithub.com/hashicorp/go-sockaddr v1.0.7 // indirect\n\tgithub.com/hashicorp/go-uuid v1.0.3 // indirect\n\tgithub.com/hashicorp/hcl v1.0.1-vault-7 // indirect\n\tgithub.com/hashicorp/vault/api v1.22.0 // indirect\n\tgithub.com/jcmturner/aescts/v2 v2.0.0 // indirect\n\tgithub.com/jcmturner/dnsutils/v2 v2.0.0 // indirect\n\tgithub.com/jcmturner/gofork v1.7.6 // indirect\n\tgithub.com/jcmturner/gokrb5/v8 v8.4.4 // indirect\n\tgithub.com/jcmturner/rpc/v2 v2.0.3 // indirect\n\tgithub.com/jmespath/go-jmespath v0.4.0 // indirect\n\tgithub.com/klauspost/compress v1.18.4 // indirect\n\tgithub.com/kylelemons/godebug v1.1.0 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/mitchellh/mapstructure v1.5.0 // indirect\n\tgithub.com/montanaflynn/stats v0.8.2 // indirect\n\tgithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect\n\tgithub.com/nats-io/nats.go v1.49.0 // indirect\n\tgithub.com/nats-io/nkeys v0.4.15 // indirect\n\tgithub.com/nats-io/nuid v1.0.1 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.26 // indirect\n\tgithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect\n\tgithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect\n\tgithub.com/prometheus/client_golang v1.23.2 // indirect\n\tgithub.com/prometheus/client_model v0.6.2 // indirect\n\tgithub.com/prometheus/common v0.67.5 // indirect\n\tgithub.com/prometheus/otlptranslator v1.0.0 // indirect\n\tgithub.com/prometheus/procfs v0.20.1 // indirect\n\tgithub.com/rabbitmq/amqp091-go v1.10.0 // indirect\n\tgithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 // indirect\n\tgithub.com/ryanuber/go-glob v1.0.0 // indirect\n\tgithub.com/spiffe/go-spiffe/v2 v2.6.0 // indirect\n\tgithub.com/xdg-go/pbkdf2 v1.0.0 // indirect\n\tgithub.com/xdg-go/scram v1.2.0 // indirect\n\tgithub.com/xdg-go/stringprep v1.0.4 // indirect\n\tgithub.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect\n\tgo.mongodb.org/mongo-driver v1.17.9 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/bridges/prometheus v0.67.0 // indirect\n\tgo.opentelemetry.io/contrib/detectors/aws/ec2 v1.38.0 // indirect\n\tgo.opentelemetry.io/contrib/detectors/gcp v1.42.0 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/contrib/propagators/aws v1.42.0 // indirect\n\tgo.opentelemetry.io/contrib/propagators/b3 v1.42.0 // indirect\n\tgo.opentelemetry.io/contrib/propagators/jaeger v1.42.0 // indirect\n\tgo.opentelemetry.io/contrib/propagators/ot v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.18.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/prometheus v0.64.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0 // indirect\n\tgo.opentelemetry.io/proto/otlp v1.10.0 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgo.uber.org/zap v1.27.1 // indirect\n\tgo.yaml.in/yaml/v2 v2.4.4 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sync v0.20.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/time v0.15.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../\n\nreplace gocloud.dev/docstore/mongodocstore => ../docstore/mongodocstore\n\nreplace gocloud.dev/pubsub/kafkapubsub => ../pubsub/kafkapubsub\n\nreplace gocloud.dev/pubsub/natspubsub => ../pubsub/natspubsub\n\nreplace gocloud.dev/pubsub/rabbitpubsub => ../pubsub/rabbitpubsub\n\nreplace gocloud.dev/runtimevar/hashivault => ../runtimevar/hashivault\n\nreplace gocloud.dev/secrets/hashivault => ../secrets/hashivault\n"
  },
  {
    "path": "samples/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/firestore v1.21.0 h1:BhopUsx7kh6NFx77ccRsHhrtkbJUmDAxNY3uapWdjcM=\ncloud.google.com/go/firestore v1.21.0/go.mod h1:1xH6HNcnkf/gGyR8udd6pFO4Z7GWJSwLKQMx/u6UrP4=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/kms v1.26.0 h1:cK9mN2cf+9V63D3H1f6koxTatWy39aTI/hCjz1I+adU=\ncloud.google.com/go/kms v1.26.0/go.mod h1:pHKOdFJm63hxBsiPkYtowZPltu9dW0MWvBa6IA4HM58=\ncloud.google.com/go/logging v1.13.2 h1:qqlHCBvieJT9Cdq4QqYx1KPadCQ2noD4FK02eNqHAjA=\ncloud.google.com/go/logging v1.13.2/go.mod h1:zaybliM3yun1J8mU2dVQ1/qDzjbOqEijZCn6hSBtKak=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/pubsub v1.50.1 h1:fzbXpPyJnSGvWXF1jabhQeXyxdbCIkXTpjXHy7xviBM=\ncloud.google.com/go/pubsub v1.50.1/go.mod h1:6YVJv3MzWJUVdvQXG081sFvS0dWQOdnV+oTo++q/xFk=\ncloud.google.com/go/pubsub/v2 v2.4.0 h1:oMKNiBQpXImRWnHYla9uSU66ZzByZwBSCJOEs/pTKVg=\ncloud.google.com/go/pubsub/v2 v2.4.0/go.mod h1:2lS/XQKq5qtOMs6kHBK+WX1ytUC36kLl2ig3zqsGUx8=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ncloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U=\ncloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\nfilippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=\nfilippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=\ngithub.com/Azure/azure-amqp-common-go/v3 v3.2.3 h1:uDF62mbd9bypXWi19V1bN5NZEO84JqgmI5G73ibAmrk=\ngithub.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas=\ngithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0 h1:fou+2+WFTib47nS+nz/ozhEBnvU96bKHy6LjRsY4E28=\ngithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.0/go.mod h1:t76Ruy8AHvUAC8GfMWJMa0ElSbuIcO03NLpynfbgsPA=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY=\ngithub.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8=\ngithub.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA=\ngithub.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw=\ngithub.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA=\ngithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0 h1:kE5kpeiSqu4jcCQ/sWuyggMXJ/pT6oQ99+8hwPmyeJ0=\ngithub.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0/go.mod h1:IAN3Z0DMtehoxoQQnfqg1891z1P7GNoDryKtFcAyMBI=\ngithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1 h1:/Zt+cDPnpC3OVDm/JKLOs7M2DKmLRIIp3XIx9pHHiig=\ngithub.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.1/go.mod h1:Ng3urmn6dYe8gnbCMoHHVl5APYz2txho3koEkV2o2HA=\ngithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4 h1:jWQK1GI+LeGGUKBADtcH2rRqPxYB1Ljwms5gFA2LqrM=\ngithub.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.4/go.mod h1:8mwH4klAm9DUgR2EEHyEEAQlRDvLPyg5fQry3y+cDew=\ngithub.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg=\ngithub.com/Azure/go-amqp v1.5.1 h1:WyiPTz2C3zVvDL7RLAqwWdeoYhMtX62MZzQoP09fzsU=\ngithub.com/Azure/go-amqp v1.5.1/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE=\ngithub.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=\ngithub.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=\ngithub.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=\ngithub.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=\ngithub.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=\ngithub.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=\ngithub.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=\ngithub.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=\ngithub.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=\ngithub.com/AzureAD/microsoft-authentication-library-for-go v1.7.0 h1:4iB+IesclUXdP0ICgAabvq2FYLXrJWKx1fJQ+GxSo3Y=\ngithub.com/AzureAD/microsoft-authentication-library-for-go v1.7.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/cloudsql-proxy v1.37.13 h1:cszvE7VCNLGIvcr7mOZ5lOIqITQfQnn4NXbuHozqO4c=\ngithub.com/GoogleCloudPlatform/cloudsql-proxy v1.37.13/go.mod h1:6IMmxkLFo8kvCZbG0egv30L6YSgeZwxjH0WVRMGAacQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.31.0 h1:xQMhkBXPOKe/GzC6TctwlK2aNF+9k5VwFgdE83rBK2Y=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.31.0/go.mod h1:VLoD5cAsRQXsAFXpOZrrTGzbuMsntlspIZno4xor5Zg=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.55.0 h1:0G1Faw/W6OirxOw2Kgz303+JuUgifQXYS5J21NtZxog=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator v0.55.0/go.mod h1:8W5IW/jylevlBQKSWkh5ZMP2oy7yT9Pnfug6Y6W/9D8=\ngithub.com/IBM/sarama v1.47.0 h1:GcQFEd12+KzfPYeLgN69Fh7vLCtYRhVIx0rO4TZO318=\ngithub.com/IBM/sarama v1.47.0/go.mod h1:7gLLIU97nznOmA6TX++Qds+DRxH89P2XICY2KAQUzAY=\ngithub.com/XSAM/otelsql v0.41.0 h1:uZifjQhZhv5EDYJh+IVk1DiYxQZJBlNSen0MBFnfxB8=\ngithub.com/XSAM/otelsql v0.41.0/go.mod h1:NMQT0PiKoFILp9QgjQz+D5mvW+9mT0suR7OejqrtMaM=\ngithub.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op h1:Ucf+QxEKMbPogRO5guBNe5cgd9uZgfoJLOYs8WWhtjM=\ngithub.com/antithesishq/antithesis-sdk-go v0.5.0-default-no-op/go.mod h1:IUpT2DPAKh6i/YhSbt6Gl3v2yvUZjmKncl7U91fup7E=\ngithub.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ=\ngithub.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 h1:3kGOqnh1pPeddVa/E37XNTaWJ8W6vrbYV9lJEkCnhuY=\ngithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35 h1:CQ2kB9Q4xQ2PDBmn+KCr/pw1DvK7pH6NkR2nl2KV7ng=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.20.35/go.mod h1:ypTMB9nZhpqfMeRVesGj4dEknIg0YS+aXGtLMidw/Ek=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35 h1:qxsbiWRtwChp/rrSHMfYoosVDVWRICoYXoDdczaLFiI=\ngithub.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.8.35/go.mod h1:SomvXQRUKYBML53k4LqIgszKJKz8TdUwi/Zwig7JhfU=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.20 h1:nBtAkfvLanKNwKfmsxfpLqYAjKpTAO9yRfuXAKconUY=\ngithub.com/aws/aws-sdk-go-v2/feature/rds/auth v1.6.20/go.mod h1:wtCkeFPPKHdxFPrZGkdT5tKR4boa3GvW54sYdGNWPHg=\ngithub.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.8 h1:nuc44j+otOY0d1e+CWwB6zul57d2YEGlgCyiq3SL0lI=\ngithub.com/aws/aws-sdk-go-v2/feature/s3/manager v1.22.8/go.mod h1:qSFgGCN8fjdhvlLhTPZdWRWXbwfeZZWF2FEaIplYPhE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 h1:SwGMTMLIlvDNyhMteQ6r8IJSBPlRdXX5d4idhIGbkXA=\ngithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21/go.mod h1:UUxgWxofmOdAMuqEsSppbDtGKLfR04HGsD0HXzvhI1k=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2 h1:xi/ECwajy2mixviBD7bKAlGGSwzEaFKX2wIhrZt9NGw=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodb v1.56.2/go.mod h1:dLREOeW66eVaaGIOi2ZlLHDgkR3nuJ02rd00j0YSlBE=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13 h1:xQ9dX2jxVm14uNVe0WomcCSza832ytYWt1ZBu2LrBLM=\ngithub.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.32.13/go.mod h1:D5up2/CMSP4sF8ESBWla6gJvIMySJi8dYYAaED4oTCc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 h1:qtJZ70afD3ISKWnoX3xB0J2otEqu3LqicRcDBqsj0hQ=\ngithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12/go.mod h1:v2pNpJbRNl4vEUWEh5ytQok0zACAKfdmKS51Hotc3pQ=\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20 h1:ru+seMuylHiNZlvgZei83eD8h37hRjm1XIMOEmcV0BU=\ngithub.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.11.20/go.mod h1:ihZMtPTKoX/ugQRHbui6zNdSgVYN1KY2Dgwb2d3hXlc=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 h1:siU1A6xjUZ2N8zjTHSXFhB9L/2OY8Dqs0xXiLjF30jA=\ngithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20/go.mod h1:4TLZCmVJDM3FOu5P5TJP0zOlu9zWgDWU7aUxWbr+rcw=\ngithub.com/aws/aws-sdk-go-v2/service/kms v1.50.3 h1:s/zDSG/a/Su9aX+v0Ld9cimUCdkr5FWPmBV8owaEbZY=\ngithub.com/aws/aws-sdk-go-v2/service/kms v1.50.3/go.mod h1:/iSgiUor15ZuxFGQSTf3lA2FmKxFsQoc2tADOarQBSw=\ngithub.com/aws/aws-sdk-go-v2/service/s3 v1.97.1 h1:csi9NLpFZXb9fxY7rS1xVzgPRGMt7MSNWeQ6eo247kE=\ngithub.com/aws/aws-sdk-go-v2/service/s3 v1.97.1/go.mod h1:qXVal5H0ChqXP63t6jze5LmFalc7+ZE7wOdLtZ0LCP0=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sns v1.39.14 h1:p8WdWDh5AwSZdp19Haa3XMyPCICi9Z375a/Nu3IIEZY=\ngithub.com/aws/aws-sdk-go-v2/service/sns v1.39.14/go.mod h1:NKVY7DER6VXHkt2I/ycmHakALNboi3Rqwt4eEf/1Cnk=\ngithub.com/aws/aws-sdk-go-v2/service/sqs v1.42.24 h1:JP2wjWGmUp8lTCZb13Dv0Eciyc1jbO8pd0HZVMHFlrc=\ngithub.com/aws/aws-sdk-go-v2/service/sqs v1.42.24/go.mod h1:Ql9ziDutk8ERAN9HMaYANCW3lop451ppebkxEJMLCTM=\ngithub.com/aws/aws-sdk-go-v2/service/ssm v1.68.3 h1:bBoWhx8lsFLTXintRX64ZBXcmFZbGqUmaPUrjXECqIc=\ngithub.com/aws/aws-sdk-go-v2/service/ssm v1.68.3/go.mod h1:rcRkKbUJ2437WuXdq9fbj+MjTudYWzY9Ct8kiBbN8a8=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=\ngithub.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=\ngithub.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=\ngithub.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=\ngithub.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=\ngithub.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/coder/websocket v1.8.13 h1:f3QZdXy7uGVz+4uCJy2nTZyM0yTBj8yANEHhqlXZ9FE=\ngithub.com/coder/websocket v1.8.13/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=\ngithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY=\ngithub.com/eapache/go-resiliency v1.7.0 h1:n3NRTnBn5N0Cbi/IeOHuQn9s2UwVUH7Ga0ZWcP+9JTA=\ngithub.com/eapache/go-resiliency v1.7.0/go.mod h1:5yPzW0MIvSe0JDsv0v+DvcjEv2FyD6iZYSs1ZI+iQho=\ngithub.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc=\ngithub.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI=\ngithub.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=\ngithub.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=\ngithub.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=\ngithub.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=\ngithub.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=\ngithub.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=\ngithub.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=\ngithub.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=\ngithub.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=\ngithub.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=\ngithub.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=\ngithub.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=\ngithub.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmdtest v0.3.0 h1:382oNMtKBpvJjOm5c5ONU3pzwh2ZK/eNA4/h2v9PnXM=\ngithub.com/google/go-cmdtest v0.3.0/go.mod h1:apVn/GCasLZUVpAJ6oWAuyP7Ne7CEsQbTnc0plM3m+o=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo=\ngithub.com/google/go-tpm v0.9.8/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE=\ngithub.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=\ngithub.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=\ngithub.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=\ngithub.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs=\ngithub.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=\ngithub.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=\ngithub.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=\ngithub.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=\ngithub.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=\ngithub.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=\ngithub.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=\ngithub.com/hashicorp/go-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw=\ngithub.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw=\ngithub.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=\ngithub.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I=\ngithub.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=\ngithub.com/hashicorp/vault/api v1.22.0 h1:+HYFquE35/B74fHoIeXlZIP2YADVboaPjaSicHEZiH0=\ngithub.com/hashicorp/vault/api v1.22.0/go.mod h1:IUZA2cDvr4Ok3+NtK2Oq/r+lJeXkeCrHRmqdyWfpmGM=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=\ngithub.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=\ngithub.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=\ngithub.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=\ngithub.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg=\ngithub.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo=\ngithub.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=\ngithub.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=\ngithub.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8=\ngithub.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=\ngithub.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=\ngithub.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=\ngithub.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=\ngithub.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=\ngithub.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=\ngithub.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=\ngithub.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU=\ngithub.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/klauspost/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c=\ngithub.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=\ngithub.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=\ngithub.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=\ngithub.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/minio/highwayhash v1.0.4-0.20251030100505-070ab1a87a76 h1:KGuD/pM2JpL9FAYvBrnBBeENKZNh6eNtjqytV6TYjnk=\ngithub.com/minio/highwayhash v1.0.4-0.20251030100505-070ab1a87a76/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=\ngithub.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/montanaflynn/stats v0.8.2 h1:52wnefTJnPI5FoHif1DQh2soKRw0yYs+4AVyvtcZCH0=\ngithub.com/montanaflynn/stats v0.8.2/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=\ngithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=\ngithub.com/nats-io/jwt/v2 v2.8.0 h1:K7uzyz50+yGZDO5o772eRE7atlcSEENpL7P+b74JV1g=\ngithub.com/nats-io/jwt/v2 v2.8.0/go.mod h1:me11pOkwObtcBNR8AiMrUbtVOUGkqYjMQZ6jnSdVUIA=\ngithub.com/nats-io/nats-server/v2 v2.11.12 h1:jGDXTkcjqQ5fCRstwIxvv1K0RHfftFUoSCT/iIZcqOc=\ngithub.com/nats-io/nats-server/v2 v2.11.12/go.mod h1:5MCp/pqm5SEfsvVZ31ll1088ZTwEUdvRX1Hmh/mTTDg=\ngithub.com/nats-io/nats.go v1.49.0 h1:yh/WvY59gXqYpgl33ZI+XoVPKyut/IcEaqtsiuTJpoE=\ngithub.com/nats-io/nats.go v1.49.0/go.mod h1:fDCn3mN5cY8HooHwE2ukiLb4p4G4ImmzvXyJt+tGwdw=\ngithub.com/nats-io/nkeys v0.4.15 h1:JACV5jRVO9V856KOapQ7x+EY8Jo3qw1vJt/9Jpwzkk4=\ngithub.com/nats-io/nkeys v0.4.15/go.mod h1:CpMchTXC9fxA5zrMo4KpySxNjiDVvr8ANOSZdiNfUrs=\ngithub.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=\ngithub.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=\ngithub.com/pierrec/lz4/v4 v4.1.26 h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY=\ngithub.com/pierrec/lz4/v4 v4.1.26/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4=\ngithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=\ngithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=\ngithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=\ngithub.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=\ngithub.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=\ngithub.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4=\ngithub.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw=\ngithub.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos=\ngithub.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM=\ngithub.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc=\ngithub.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo=\ngithub.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw=\ngithub.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o=\ngithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg=\ngithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=\ngithub.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo=\ngithub.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=\ngithub.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=\ngithub.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=\ngithub.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=\ngithub.com/xdg-go/scram v1.2.0 h1:bYKF2AEwG5rqd1BumT4gAnvwU/M9nBp2pTSxeZw7Wvs=\ngithub.com/xdg-go/scram v1.2.0/go.mod h1:3dlrS0iBaWKYVt2ZfA4cj48umJZ+cAEbR6/SjLA88I8=\ngithub.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=\ngithub.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=\ngithub.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=\ngithub.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.mongodb.org/mongo-driver v1.17.9 h1:IexDdCuuNJ3BHrELgBlyaH9p60JXAvdzWR128q+U5tU=\ngo.mongodb.org/mongo-driver v1.17.9/go.mod h1:LlOhpH5NUEfhxcAwG0UEkMqwYcc4JU18gtCdGudk/tQ=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/bridges/prometheus v0.67.0 h1:dkBzNEAIKADEaFnuESzcXvpd09vxvDZsOjx11gjUqLk=\ngo.opentelemetry.io/contrib/bridges/prometheus v0.67.0/go.mod h1:Z5RIwRkZgauOIfnG5IpidvLpERjhTninpP1dTG2jTl4=\ngo.opentelemetry.io/contrib/detectors/aws/ec2 v1.38.0 h1:gSqtaXUzONG+J3PutTnKpLVLpKLsX+FztJwxSFQ15PU=\ngo.opentelemetry.io/contrib/detectors/aws/ec2 v1.38.0/go.mod h1:AqLDNPbKVFwdXy2/Xu2EYElVHO7ghhbEhKCCWymjpMI=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/exporters/autoexport v0.67.0 h1:4fnRcNpc6YFtG3zsFw9achKn3XgmxPxuMuqIL5rE8e8=\ngo.opentelemetry.io/contrib/exporters/autoexport v0.67.0/go.mod h1:qTvIHMFKoxW7HXg02gm6/Wofhq5p3Ib/A/NNt1EoBSQ=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/contrib/propagators/autoprop v0.67.0 h1:XhcQRf4MeqwQw96FcnatDAj6gwE19SUrWZ1VwNg77iE=\ngo.opentelemetry.io/contrib/propagators/autoprop v0.67.0/go.mod h1:7OK06SuNIBIlc5Uq3JGQEsKHuXw29t9OJemvDYyP1dk=\ngo.opentelemetry.io/contrib/propagators/aws v1.42.0 h1:Kbr3xDxs6kcxp5ThXTKWK2OtwLhNoXBVtqguNYcsZL0=\ngo.opentelemetry.io/contrib/propagators/aws v1.42.0/go.mod h1:Jzw9hZHtxdpCN7x8S17UH59X/EiFivp6VXLs9bdM1OQ=\ngo.opentelemetry.io/contrib/propagators/b3 v1.42.0 h1:B2Pew5ufEtgkjLF+tSkXjgYZXQr9m7aCm1wLKB0URbU=\ngo.opentelemetry.io/contrib/propagators/b3 v1.42.0/go.mod h1:iPgUcSEF5DORW6+yNbdw/YevUy+QqJ508ncjhrRSCjc=\ngo.opentelemetry.io/contrib/propagators/jaeger v1.42.0 h1:jP8unWI6q5kcb3gpGLjKDGaUa+JW+nHKWvpS/q+YuWA=\ngo.opentelemetry.io/contrib/propagators/jaeger v1.42.0/go.mod h1:xd89e/pUyPatUP1C4z1UknD9jHptESO99tWyvd4mWD4=\ngo.opentelemetry.io/contrib/propagators/ot v1.42.0 h1:uQjD1NNqX1+DfcAoWParPt1egNg9vC9gH4xarJ9Khxo=\ngo.opentelemetry.io/contrib/propagators/ot v1.42.0/go.mod h1:yw/c2TCmQLIv109HBOCn6NlJ8Dp7MNfjMcqQZRnAMmg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 h1:deI9UQMoGFgrg5iLPgzueqFPHevDl+28YKfSpPTI6rY=\ngo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0/go.mod h1:PFx9NgpNUKXdf7J4Q3agRxMs3Y07QhTCVipKmLsMKnU=\ngo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.18.0 h1:icqq3Z34UrEFk2u+HMhTtRsvo7Ues+eiJVjaJt62njs=\ngo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.18.0/go.mod h1:W2m8P+d5Wn5kipj4/xmbt9uMqezEKfBjzVJadfABSBE=\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk=\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc=\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.42.0 h1:H7O6RlGOMTizyl3R08Kn5pdM06bnH8oscSj7o11tmLA=\ngo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.42.0/go.mod h1:mBFWu/WOVDkWWsR7Tx7h6EpQB8wsv7P0Yrh0Pb7othc=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 h1:THuZiwpQZuHPul65w4WcwEnkX2QIuMT+UFoOrygtoJw=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0/go.mod h1:J2pvYM5NGHofZ2/Ru6zw/TNWnEQp5crgyDeSrYpXkAw=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0 h1:uLXP+3mghfMf7XmV4PkGfFhFKuNWoCvvx5wP/wOXo0o=\ngo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0/go.mod h1:v0Tj04armyT59mnURNUJf7RCKcKzq+lgJs6QSjHjaTc=\ngo.opentelemetry.io/otel/exporters/prometheus v0.64.0 h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs=\ngo.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0 h1:KJVjPD3rcPb98rIs3HznyJlrfx9ge5oJvxxlGR+P/7s=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0/go.mod h1:K3kRa2ckmHWQaTWQdPRHc7qGXASuVuoEQXzrvlA98Ws=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.42.0 h1:lSZHgNHfbmQTPfuTmWVkEu8J8qXaQwuV30pjCcAUvP8=\ngo.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.42.0/go.mod h1:so9ounLcuoRDu033MW/E0AD4hhUjVqswrMF5FoZlBcw=\ngo.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0 h1:s/1iRkCKDfhlh1JF26knRneorus8aOwVIDhvYx9WoDw=\ngo.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0/go.mod h1:UI3wi0FXg1Pofb8ZBiBLhtMzgoTm1TYkMvn71fAqDzs=\ngo.opentelemetry.io/otel/log v0.18.0 h1:XgeQIIBjZZrliksMEbcwMZefoOSMI1hdjiLEiiB0bAg=\ngo.opentelemetry.io/otel/log v0.18.0/go.mod h1:KEV1kad0NofR3ycsiDH4Yjcoj0+8206I6Ox2QYFSNgI=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/log v0.18.0 h1:n8OyZr7t7otkeTnPTbDNom6rW16TBYGtvyy2Gk6buQw=\ngo.opentelemetry.io/otel/sdk/log v0.18.0/go.mod h1:C0+wxkTwKpOCZLrlJ3pewPiiQwpzycPI/u6W0Z9fuYk=\ngo.opentelemetry.io/otel/sdk/log/logtest v0.18.0 h1:l3mYuPsuBx6UKE47BVcPrZoZ0q/KER57vbj2qkgDLXA=\ngo.opentelemetry.io/otel/sdk/log/logtest v0.18.0/go.mod h1:7cHtiVJpZebB3wybTa4NG+FUo5NPe3PROz1FqB0+qdw=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngo.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=\ngo.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=\ngo.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=\ngo.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=\ngo.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=\ngo.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=\ngo.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=\ngo.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=\ngo.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ=\ngo.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/pipe.v2 v2.0.0-20140414041502-3c2ca4d52544 h1:WJH1qsOB4/zb/li+zLMn0vaAUJ5FqPv6HYLI3aQVg1k=\ngopkg.in/pipe.v2 v2.0.0-20140414041502-3c2ca4d52544/go.mod h1:UhTeH/yXCK/KY7TX24mqPkaQ7gZeqmWd/8SSS8B3aHw=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "samples/gocdk-blob/blob.ct",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Tests of the gocdk-blob program.\n\n# ROOTDIR_URL is a platform-specific environment variable set\n# in main_test.go.\n\n# Create a subdirectory so we can use fileblob.\n$ mkdir bucket\n\n# List an empty bucket: valid, but no output.\n$ gocdk-blob ls ${ROOTDIR_URL}/bucket\n\n$ fecho hello.txt hello world\n$ gocdk-blob upload ${ROOTDIR_URL}/bucket hw < hello.txt\n\n$ gocdk-blob ls ${ROOTDIR_URL}/bucket\nhw\n\n$ gocdk-blob download ${ROOTDIR_URL}/bucket hw\nhello world\n\n# Error downloading a bucket that doesn't exist.\n# For now we can't use this test case, because the output won't be the same across operating systems.\n#$ gocdk-blob download ${ROOTDIR_URL}/bucket noexist --> FAIL\n#gocdk-blob: Failed to read \"noexist\": blob (code=NotFound): stat ${SLASHDIR}/bucket/noexist: no such file or directory\n\n"
  },
  {
    "path": "samples/gocdk-blob/main.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// gocdk-blob demonstrates the use of the Go CDK blob package in a\n// simple command-line application.\npackage main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\n\t\"github.com/google/subcommands\"\n\t\"gocloud.dev/blob\"\n\n\t// Import the blob driver packages we want to be able to open.\n\t_ \"gocloud.dev/blob/azureblob\"\n\t_ \"gocloud.dev/blob/fileblob\"\n\t_ \"gocloud.dev/blob/gcsblob\"\n\t_ \"gocloud.dev/blob/s3blob\"\n)\n\nconst helpSuffix = `\n\n  See https://gocloud.dev/concepts/urls/ for more background on\n  Go CDK URLs, and sub-packages under gocloud.dev/blob\n  (https://godoc.org/gocloud.dev/blob#pkg-subdirectories)\n  for details on the blob.Bucket URL format.\n`\n\nfunc main() {\n\tos.Exit(run())\n}\n\nfunc run() int {\n\tsubcommands.Register(subcommands.HelpCommand(), \"\")\n\tsubcommands.Register(&downloadCmd{}, \"\")\n\tsubcommands.Register(&listCmd{}, \"\")\n\tsubcommands.Register(&uploadCmd{}, \"\")\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"gocdk-blob: \")\n\tflag.Parse()\n\treturn int(subcommands.Execute(context.Background()))\n}\n\ntype downloadCmd struct{}\n\nfunc (*downloadCmd) Name() string     { return \"download\" }\nfunc (*downloadCmd) Synopsis() string { return \"Output a blob to stdout\" }\nfunc (*downloadCmd) Usage() string {\n\treturn `download <bucket URL> <key>\n\n  Read the blob <key> from <bucket URL> and write it to stdout.\n\n  Example:\n    gocdk-blob download gs://mybucket my/gcs/file > foo.txt` + helpSuffix\n}\n\nfunc (*downloadCmd) SetFlags(_ *flag.FlagSet) {}\n\nfunc (*downloadCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 2 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tbucketURL := f.Arg(0)\n\tblobKey := f.Arg(1)\n\n\t// Open a *blob.Bucket using the bucketURL.\n\tbucket, err := blob.OpenBucket(ctx, bucketURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open bucket: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer bucket.Close()\n\n\t// Open a *blob.Reader for the blob at blobKey.\n\treader, err := bucket.NewReader(ctx, blobKey, nil)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to read %q: %v\\n\", blobKey, err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer reader.Close()\n\n\t// Copy the data.\n\t_, err = io.Copy(os.Stdout, reader)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to copy data: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\treturn subcommands.ExitSuccess\n}\n\ntype listCmd struct {\n\tprefix    string\n\tdelimiter string\n}\n\nfunc (*listCmd) Name() string     { return \"ls\" }\nfunc (*listCmd) Synopsis() string { return \"List blobs in a bucket\" }\nfunc (*listCmd) Usage() string {\n\treturn `ls [-p <prefix>] [d <delimiter>] <bucket URL>\n\n  List the blobs in <bucket URL>.\n\n  Example:\n    gocdk-blob ls -p \"subdir/\" gs://mybucket` + helpSuffix\n}\n\nfunc (cmd *listCmd) SetFlags(f *flag.FlagSet) {\n\tf.StringVar(&cmd.prefix, \"p\", \"\", \"prefix to match\")\n\tf.StringVar(&cmd.delimiter, \"d\", \"/\", \"directory delimiter; empty string returns flattened listing\")\n}\n\nfunc (cmd *listCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tbucketURL := f.Arg(0)\n\n\t// Open a *blob.Bucket using the bucketURL.\n\tbucket, err := blob.OpenBucket(ctx, bucketURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open bucket: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer bucket.Close()\n\n\topts := blob.ListOptions{\n\t\tPrefix:    cmd.prefix,\n\t\tDelimiter: cmd.delimiter,\n\t}\n\titer := bucket.List(&opts)\n\tfor {\n\t\tobj, err := iter.Next(ctx)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tlog.Printf(\"Failed to list: %v\", err)\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t\tfmt.Println(obj.Key)\n\t}\n\treturn subcommands.ExitSuccess\n}\n\ntype uploadCmd struct{}\n\nfunc (*uploadCmd) Name() string     { return \"upload\" }\nfunc (*uploadCmd) Synopsis() string { return \"Upload a blob from stdin\" }\nfunc (*uploadCmd) Usage() string {\n\treturn `upload <bucket URL> <key>\n\n  Read from stdin and write to the blob <key> in <bucket URL>.\n\n  Example:\n    cat foo.txt | gocdk-blob upload gs://mybucket my/gcs/file` + helpSuffix\n}\n\nfunc (*uploadCmd) SetFlags(_ *flag.FlagSet) {}\n\nfunc (*uploadCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) (status subcommands.ExitStatus) {\n\tif f.NArg() != 2 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tbucketURL := f.Arg(0)\n\tblobKey := f.Arg(1)\n\n\t// Open a *blob.Bucket using the bucketURL.\n\tbucket, err := blob.OpenBucket(ctx, bucketURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open bucket: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer bucket.Close()\n\n\t// Open a *blob.Writer for the blob at blobKey.\n\twriter, err := bucket.NewWriter(ctx, blobKey, nil)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to write %q: %v\\n\", blobKey, err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer func() {\n\t\tif err := writer.Close(); err != nil && status == subcommands.ExitSuccess {\n\t\t\tlog.Printf(\"closing the writer: %v\", err)\n\t\t\tstatus = subcommands.ExitFailure\n\t\t}\n\t}()\n\n\t// Copy the data.\n\t_, err = io.Copy(writer, os.Stdin)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to copy data: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\treturn subcommands.ExitSuccess\n}\n"
  },
  {
    "path": "samples/gocdk-blob/main_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"flag\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmdtest\"\n)\n\nvar update = flag.Bool(\"update\", false, \"replace test file contents with output\")\n\nfunc Test(t *testing.T) {\n\tts, err := cmdtest.Read(\".\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tts.Commands[\"gocdk-blob\"] = cmdtest.InProcessProgram(\"gocdk-blob\", run)\n\tts.Setup = func(rootdir string) error {\n\t\t// On Windows, convert \"\\\" to \"/\" and add a leading \"/\":\n\t\tslashdir := filepath.ToSlash(rootdir)\n\t\tif os.PathSeparator != '/' && !strings.HasPrefix(slashdir, \"/\") {\n\t\t\tslashdir = \"/\" + slashdir\n\t\t}\n\t\treturn os.Setenv(\"ROOTDIR_URL\", \"file://\"+slashdir)\n\t}\n\tts.Run(t, *update)\n}\n"
  },
  {
    "path": "samples/gocdk-docstore/docstore.ct",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Tests of the gocdk-doctore program.\n\n$ setenv url mem://sample-coll/ID?filename=save\n\n# Collection is initially empty.\n$ gocdk-docstore ls ${url}\n\n$ gocdk-docstore put -d 2019-05-01 -id first ${url} message1\nPut message: first 2019-05-01: message1\n\n$ gocdk-docstore ls -d 2019-05-01 ${url}\nfirst 2019-05-01: message1\n\n$ gocdk-docstore put -d 2019-05-02 -id second ${url} message2\n$ gocdk-docstore ls -d 2019-05-02 ${url}\nPut message: second 2019-05-02: message2\nsecond 2019-05-02: message2\n\n$ gocdk-docstore update first ${url} new-message\nupdated: first 2019-05-01: new-message\n\n\n# Delete everything.\n$ gocdk-docstore delete ${url}\n\n# Collection is empty again.\n$ gocdk-docstore ls ${url}\n\n\n\n"
  },
  {
    "path": "samples/gocdk-docstore/main.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// gocdk-docstore demonstrates the use of the Go CDK docstore package in a\n// simple command-line application.\npackage main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/google/subcommands\"\n\t\"github.com/google/uuid\"\n\t\"gocloud.dev/docstore\"\n\n\t// Import the docstore driver packages we want to be able to open.\n\t_ \"gocloud.dev/docstore/awsdynamodb/v2\"\n\t_ \"gocloud.dev/docstore/gcpfirestore\"\n\t_ \"gocloud.dev/docstore/memdocstore\"\n\t_ \"gocloud.dev/docstore/mongodocstore\"\n)\n\nconst helpSuffix = `\n\n  See https://gocloud.dev/concepts/urls/ for more background on\n  Go CDK URLs, and sub-packages under gocloud.dev/docstore\n  (https://godoc.org/gocloud.dev/docstore#pkg-subdirectories)\n  for details on the docstore.Collection URL format.\n`\n\nfunc main() {\n\tos.Exit(run())\n}\n\nfunc run() int {\n\tsubcommands.Register(subcommands.HelpCommand(), \"\")\n\tsubcommands.Register(&listCmd{}, \"\")\n\tsubcommands.Register(&putCmd{}, \"\")\n\tsubcommands.Register(&updateCmd{}, \"\")\n\tsubcommands.Register(&deleteCmd{}, \"\")\n\tflag.Parse()\n\treturn int(subcommands.Execute(context.Background()))\n}\n\n// A Message is a document entry stored in a collection.\ntype Message struct {\n\tID               string // unique ID of each document\n\tDate             string\n\tContent          string\n\tDocstoreRevision any\n}\n\nfunc (m Message) String() string {\n\treturn fmt.Sprintf(\"%s %s: %s\", m.ID, m.Date, m.Content)\n}\n\ntype listCmd struct {\n\tdate string\n}\n\nfunc (*listCmd) Name() string     { return \"ls\" }\nfunc (*listCmd) Synopsis() string { return \"List items in a collection\" }\nfunc (*listCmd) Usage() string {\n\treturn `ls [-d <date>] <collection URL>\n\n  List the documents in <collection URL>.\n\n  Example:\n    gocdk-docstore ls -d \"2006-01-02\" \"mongo://myDB/myCollection?id_field=ID\"` + helpSuffix\n}\n\nfunc (cmd *listCmd) SetFlags(f *flag.FlagSet) {\n\tf.StringVar(&cmd.date, \"d\", \"\", \"get the messages from this date, in the format YYYY-MM-DD\")\n}\n\nfunc (cmd *listCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tcollectionURL := f.Arg(0)\n\n\t// Open a *docstore.Collection using the collectionURL.\n\tcollection, err := docstore.OpenCollection(ctx, collectionURL)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to open collection: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer collection.Close()\n\n\tq := collection.Query()\n\tif cmd.date != \"\" {\n\t\tq = q.Where(\"Date\", \"=\", cmd.date)\n\t}\n\titer := q.Get(ctx)\n\tdefer iter.Stop()\n\tfor {\n\t\tvar msg Message\n\t\terr := iter.Next(ctx, &msg)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(os.Stderr, \"Failed to list: %v\\n\", err)\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t\tfmt.Println(msg)\n\t}\n\treturn subcommands.ExitSuccess\n}\n\ntype putCmd struct {\n\tid   string // user-chosen ID\n\tdate string // user-chosen date\n}\n\nfunc (*putCmd) Name() string     { return \"put\" }\nfunc (*putCmd) Synopsis() string { return \"Put an item from stdin\" }\nfunc (*putCmd) Usage() string {\n\treturn `put [-id <ID>] [-d <date>] <collection URL> <message>\n\n  Read from stdin and put an message with the current timestamp in <collection URL>.\n\n  Example:\n    gocdk-docstore put \"mongo://myDB/myCollection?id_field=ID\" \"hello docstore\"` + helpSuffix\n}\n\nfunc (p *putCmd) SetFlags(f *flag.FlagSet) {\n\tf.StringVar(&p.id, \"id\", \"\", \"ID of document\")\n\tf.StringVar(&p.date, \"d\", \"\", \"date of document\")\n}\n\nfunc (p *putCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 2 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tcollectionURL := f.Arg(0)\n\tcontent := f.Arg(1)\n\n\t// Open a *docstore.Collection using the collectionURL.\n\tcollection, err := docstore.OpenCollection(ctx, collectionURL)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to open collection: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer collection.Close()\n\n\tif p.id == \"\" {\n\t\tp.id = uuid.New().String()\n\t}\n\tif p.date == \"\" {\n\t\tp.date = time.Now().Format(\"2006-01-02\")\n\t}\n\tmsg := &Message{\n\t\tID:      p.id,\n\t\tDate:    p.date,\n\t\tContent: content,\n\t}\n\tif err := collection.Put(ctx, msg); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to put message: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tfmt.Printf(\"Put message: %s\\n\", msg)\n\treturn subcommands.ExitSuccess\n}\n\ntype updateCmd struct{}\n\nfunc (*updateCmd) Name() string     { return \"update\" }\nfunc (*updateCmd) Synopsis() string { return \"Update an item in a collection\" }\nfunc (*updateCmd) Usage() string {\n\treturn `update <ID> <collection URL> <updated message>\n\n  Update the document with ID <ID> in <collection URL>.\n\n  Example:\n    gocdk-docstore update <ID> \"mongo://myDB/myCollection?id_field=ID\" \"hello again\"` + helpSuffix\n}\n\nfunc (*updateCmd) SetFlags(_ *flag.FlagSet) {}\n\nfunc (cmd *updateCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 3 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tid := f.Arg(0)\n\tcollectionURL := f.Arg(1)\n\tupdated := f.Arg(2)\n\n\t// Open a *docstore.Collection using the collectionURL.\n\tcollection, err := docstore.OpenCollection(ctx, collectionURL)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to open collection: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer collection.Close()\n\n\tmsg := &Message{ID: id}\n\tmods := docstore.Mods{\"Content\": updated}\n\tif errs := collection.Actions().Update(msg, mods).Get(msg).Do(ctx); errs != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to update message: %v\\n\", errs)\n\t\treturn subcommands.ExitFailure\n\t}\n\tfmt.Printf(\"updated: %s\\n\", msg)\n\treturn subcommands.ExitSuccess\n}\n\ntype deleteCmd struct {\n\tdate string\n}\n\nfunc (*deleteCmd) Name() string     { return \"delete\" }\nfunc (*deleteCmd) Synopsis() string { return \"Delete items in a collection\" }\nfunc (*deleteCmd) Usage() string {\n\treturn `delete [-d <date>] <collection URL>\n\n  Delete the documents in <collection URL>.\n\n  Example:\n    gocdk-docstore delete -d 2006-01-02 mongo://myDB/myCollection?id_field=ID` + helpSuffix\n}\n\nfunc (cmd *deleteCmd) SetFlags(f *flag.FlagSet) {\n\tf.StringVar(&cmd.date, \"d\", \"\", \"delete the messages from this date, in the format YYYY-MM-DD\")\n}\n\nfunc (cmd *deleteCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tcollectionURL := f.Arg(0)\n\n\t// Open a *docstore.Collection using the collectionURL.\n\tcollection, err := docstore.OpenCollection(ctx, collectionURL)\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to open collection: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer collection.Close()\n\n\tq := collection.Query()\n\tif cmd.date != \"\" {\n\t\tq = q.Where(\"Date\", \"=\", cmd.date)\n\t}\n\titer := q.Get(ctx, \"ID\")\n\tdels := collection.Actions()\n\tfor {\n\t\tvar msg Message\n\t\terr := iter.Next(ctx, &msg)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t\tdels.Delete(&msg)\n\t}\n\tif err := dels.Do(ctx); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Failed to delete: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\treturn subcommands.ExitSuccess\n}\n"
  },
  {
    "path": "samples/gocdk-docstore/main_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmdtest\"\n)\n\nvar update = flag.Bool(\"update\", false, \"replace test file contents with output\")\n\nfunc Test(t *testing.T) {\n\tts, err := cmdtest.Read(\".\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tts.Commands[\"gocdk-docstore\"] = cmdtest.InProcessProgram(\"gocdk-docstore\", run)\n\tts.Run(t, *update)\n}\n"
  },
  {
    "path": "samples/gocdk-pubsub/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// gocdk-pubsub demonstrates the use of the Go CDK pubsub package in a\n// simple command-line application.\npackage main\n\nimport (\n\t\"bufio\"\n\t\"context\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"github.com/google/subcommands\"\n\t\"gocloud.dev/pubsub\"\n\n\t// Import the pubsub driver packages we want to be able to open.\n\t_ \"gocloud.dev/pubsub/awssnssqs\"\n\t_ \"gocloud.dev/pubsub/azuresb\"\n\t_ \"gocloud.dev/pubsub/gcppubsub\"\n\t_ \"gocloud.dev/pubsub/kafkapubsub\"\n\t_ \"gocloud.dev/pubsub/natspubsub\"\n\t_ \"gocloud.dev/pubsub/rabbitpubsub\"\n)\n\nconst helpSuffix = `\n\n  See https://gocloud.dev/concepts/urls/ for more background on\n  Go CDK URLs, and sub-packages under gocloud.dev/pubsub\n  (https://godoc.org/gocloud.dev/pubsub#pkg-subdirectories)\n  for details on the topic/subscription URL format.\n`\n\nfunc main() {\n\tos.Exit(run())\n}\n\nfunc run() int {\n\tsubcommands.Register(subcommands.HelpCommand(), \"\")\n\tsubcommands.Register(&pubCmd{}, \"\")\n\tsubcommands.Register(&subCmd{}, \"\")\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"gocdk-pubsub: \")\n\tflag.Parse()\n\treturn int(subcommands.Execute(context.Background()))\n}\n\ntype pubCmd struct{}\n\nfunc (*pubCmd) Name() string     { return \"pub\" }\nfunc (*pubCmd) Synopsis() string { return \"Publish a message to a topic\" }\nfunc (*pubCmd) Usage() string {\n\treturn `pub <topic URL>\n\n  Read messages from stdin, one per line and send them to <topic URL>.\n\n  Example:\n    gocdk-pubsub pub gcppubsub://myproject/mytopic` + helpSuffix\n}\n\nfunc (*pubCmd) SetFlags(_ *flag.FlagSet) {}\n\nfunc (*pubCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\ttopicURL := f.Arg(0)\n\n\t// Open a *pubsub.Topic using the URL.\n\ttopic, err := pubsub.OpenTopic(ctx, topicURL)\n\tif err != nil {\n\t\tlog.Print(err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer topic.Shutdown(ctx)\n\n\t// Read lines from stdin and send them as messages to the topic.\n\tfmt.Fprintf(os.Stderr, \"Enter messages, one per line, to be published to %q.\\n\", topicURL)\n\tscanner := bufio.NewScanner(os.Stdin)\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tif line == \"\" {\n\t\t\tlog.Print(\"Skipping empty message.\")\n\t\t\tcontinue\n\t\t}\n\t\tm := &pubsub.Message{Body: []byte(line)}\n\t\tif err := topic.Send(ctx, m); err != nil {\n\t\t\tlog.Print(err)\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\tlog.Print(err)\n\t\treturn subcommands.ExitFailure\n\t}\n\treturn subcommands.ExitSuccess\n}\n\ntype subCmd struct {\n\tn int // number of messages to receive, or 0 for infinite\n}\n\nfunc (*subCmd) Name() string     { return \"sub\" }\nfunc (*subCmd) Synopsis() string { return \"Receive messages from a subscription\" }\nfunc (*subCmd) Usage() string {\n\treturn `sub [-n N] <subscription URL>\n\n  Receive messages from <subscription URL> and send them to stdout, one per line.\n\n  Example:\n    gocdk-pubsub sub gcppubsub://myproject/mytopic` + helpSuffix\n}\n\nfunc (cmd *subCmd) SetFlags(f *flag.FlagSet) {\n\tf.IntVar(&cmd.n, \"n\", 0, \"number of messages to receive, or 0 for unlimited\")\n}\n\nfunc (cmd *subCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tsubURL := f.Arg(0)\n\n\t// Open a *pubsub.Subscription using the URL.\n\tsub, err := pubsub.OpenSubscription(ctx, subURL)\n\tif err != nil {\n\t\tlog.Print(err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer sub.Shutdown(ctx)\n\n\t// Receive messages from the subscription and print them to stdout.\n\tfmt.Printf(\"Receiving messages from %q...\\n\", subURL)\n\tfor i := 0; cmd.n == 0 || i < cmd.n; i++ {\n\t\tm, err := sub.Receive(ctx)\n\t\tif err != nil {\n\t\t\tlog.Print(err)\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t\tfmt.Printf(\"%s\\n\", m.Body)\n\t\tm.Ack()\n\t}\n\treturn subcommands.ExitSuccess\n}\n"
  },
  {
    "path": "samples/gocdk-pubsub/main_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"flag\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmdtest\"\n\t\"github.com/streadway/amqp\"\n\t\"gocloud.dev/internal/testing/setup\"\n)\n\n// Requires rabbit to be running. Run pubsub/rabbitpubsub/localrabbit.sh.\n\nvar update = flag.Bool(\"update\", false, \"replace test file contents with output\")\n\nfunc Test(t *testing.T) {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"do not have docker test environment\")\n\t}\n\tts, err := cmdtest.Read(\".\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tos.Setenv(\"RABBIT_SERVER_URL\", rabbitURL)\n\tif err := initRabbit(); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tts.Commands[\"gocdk-pubsub\"] = cmdtest.InProcessProgram(\"gocdk-pubsub\", run)\n\tts.Run(t, *update)\n}\n\nconst (\n\trabbitURL = \"amqp://guest:guest@localhost:5672/\"\n\n\t// These names must match the URLs in the pubsub.ct file.\n\ttopicName        = \"sample-topic\"\n\tsubscriptionName = \"sample-subscription\"\n)\n\n// Set up a topic and subscription.\nfunc initRabbit() error {\n\tconn, err := amqp.Dial(rabbitURL)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer conn.Close()\n\tch, err := conn.Channel()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer ch.Close()\n\tif err := ch.Confirm(false); err != nil {\n\t\treturn err\n\t}\n\terr = ch.ExchangeDeclare(topicName,\n\t\t\"fanout\", // kind\n\t\tfalse,    // durable\n\t\tfalse,    // delete when unused\n\t\tfalse,    // internal\n\t\tfalse,    // wait for server response\n\t\tnil)      // args\n\tif err != nil {\n\t\treturn err\n\t}\n\tq, err := ch.QueueDeclare(subscriptionName,\n\t\tfalse, // durable\n\t\tfalse, // delete when unused\n\t\tfalse, // exclusive\n\t\tfalse, // wait for server response\n\t\tnil)   // args\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn ch.QueueBind(q.Name, q.Name, topicName, false, nil)\n}\n"
  },
  {
    "path": "samples/gocdk-pubsub/pubsub.ct",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Tests of the gocdk-pubsub program.\n\n\n$ fecho msg this is the message\n\n$ gocdk-pubsub pub rabbit://sample-topic < msg\nEnter messages, one per line, to be published to \"rabbit://sample-topic\".\n\n$ gocdk-pubsub sub -n 1 rabbit://sample-subscription\nReceiving messages from \"rabbit://sample-subscription\"...\nthis is the message\n\n"
  },
  {
    "path": "samples/gocdk-runtimevar/main.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// gocdk-runtimevar demonstrates the use of the Go CDK runtimevar package in a\n// simple command-line application.\npackage main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"github.com/google/subcommands\"\n\t\"gocloud.dev/runtimevar\"\n\n\t// Import the runtimevar driver packages we want to be able to open.\n\t_ \"gocloud.dev/runtimevar/awsparamstore\"\n\t_ \"gocloud.dev/runtimevar/blobvar\"\n\t_ \"gocloud.dev/runtimevar/constantvar\"\n\t_ \"gocloud.dev/runtimevar/filevar\"\n\t_ \"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\t_ \"gocloud.dev/runtimevar/hashivault\"\n\t_ \"gocloud.dev/runtimevar/httpvar\"\n)\n\nconst helpSuffix = `\n\n  See https://gocloud.dev/concepts/urls/ for more background on\n  Go CDK URLs, and sub-packages under gocloud.dev/runtimevar\n  (https://godoc.org/gocloud.dev/runtimevar#pkg-subdirectories)\n  for details on the runtimevar.Variable URL format.\n`\n\nfunc main() {\n\tos.Exit(run(context.Background()))\n}\n\nfunc run(ctx context.Context) int {\n\tsubcommands.Register(subcommands.HelpCommand(), \"\")\n\tsubcommands.Register(&catCmd{}, \"\")\n\tsubcommands.Register(&watchCmd{}, \"\")\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"gocdk-runtimevar: \")\n\tflag.Parse()\n\treturn int(subcommands.Execute(ctx))\n}\n\ntype catCmd struct{}\n\nfunc (*catCmd) Name() string     { return \"cat\" }\nfunc (*catCmd) Synopsis() string { return \"Print a variable's value to stdout\" }\nfunc (*catCmd) Usage() string {\n\treturn `cat <variable URL>\n\n  Read the current value of the variable from <variable URL> and print it to stdout.\n\n  Example:\n    gocdk-runtimevar cat \"constant://?val=foo&decoder=string\"` + helpSuffix\n}\n\nfunc (*catCmd) SetFlags(_ *flag.FlagSet) {}\n\nfunc (*catCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tvariableURL := f.Arg(0)\n\n\t// Open a *runtimevar.Variable using the variableURL.\n\tvariable, err := runtimevar.OpenVariable(ctx, variableURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open variable: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer variable.Close()\n\n\tsnapshot, err := variable.Latest(ctx)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to read variable value: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tfmt.Printf(\"(%T) %v\\n\", snapshot.Value, snapshot.Value)\n\treturn subcommands.ExitSuccess\n}\n\ntype watchCmd struct{}\n\nfunc (*watchCmd) Name() string     { return \"watch\" }\nfunc (*watchCmd) Synopsis() string { return \"Watch a variable's value and print changes to stdout\" }\nfunc (*watchCmd) Usage() string {\n\treturn `watch <variable URL>\n\n  Read the value of the variable from <variable URL> and print changes to stdout.\n\n  Example:\n    gocdk-runtimevar watch \"constant://?val=foo&decoder=string\"` + helpSuffix\n}\n\nfunc (*watchCmd) SetFlags(_ *flag.FlagSet) {}\n\nfunc (*watchCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 1 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tvariableURL := f.Arg(0)\n\n\t// Open a *runtimevar.Variable using the variableURL.\n\tvariable, err := runtimevar.OpenVariable(ctx, variableURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open variable: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer variable.Close()\n\n\tfmt.Fprintf(os.Stderr, \"Watching %s for changes...\\n\\n\", variableURL)\n\ttime.Sleep(250 * time.Millisecond) // to ensure deterministic combined output for test\n\tfor {\n\t\tsnapshot, err := variable.Watch(ctx)\n\t\tif err != nil {\n\t\t\tif err == context.Canceled {\n\t\t\t\treturn subcommands.ExitSuccess\n\t\t\t}\n\t\t\tfmt.Printf(\"(error) %v\\n\", err)\n\t\t\tcontinue\n\t\t}\n\t\tfmt.Printf(\"(%T) %[1]v\\n\", snapshot.Value)\n\t}\n\treturn subcommands.ExitSuccess\n}\n"
  },
  {
    "path": "samples/gocdk-runtimevar/main_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmdtest\"\n)\n\nvar update = flag.Bool(\"update\", false, \"replace test file contents with output\")\n\nfunc Test(t *testing.T) {\n\tts, err := cmdtest.Read(\".\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttype result struct {\n\t\tout []byte\n\t\terr error\n\t}\n\n\tctx := context.Background()\n\n\truntimevar := cmdtest.InProcessProgram(\"gocdk-runtimevar\", func() int {\n\t\treturn run(ctx)\n\t})\n\tts.Commands[\"gocdk-runtimevar\"] = runtimevar\n\tts.Run(t, *update)\n}\n"
  },
  {
    "path": "samples/gocdk-runtimevar/runtimevar.ct",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Tests of the gocdk-runtimevar program.\n\n$ gocdk-runtimevar cat constant://?val=foo&decoder=string\n(string) foo\n\n$ fecho fvar contents\n\n$ gocdk-runtimevar cat file:///${ROOTDIR}/fvar?decoder=string\n(string) contents\n"
  },
  {
    "path": "samples/gocdk-secrets/main.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// gocdk-secrets demonstrates the use of the Go CDK secrets package in a\n// simple command-line application.\npackage main\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\n\t\"github.com/google/subcommands\"\n\t\"gocloud.dev/secrets\"\n\n\t// Import the secrets driver packages we want to be able to open.\n\t_ \"gocloud.dev/secrets/awskms\"\n\t_ \"gocloud.dev/secrets/azurekeyvault\"\n\t_ \"gocloud.dev/secrets/gcpkms\"\n\t_ \"gocloud.dev/secrets/hashivault\"\n\t_ \"gocloud.dev/secrets/localsecrets\"\n)\n\nconst helpSuffix = `\n\n  See https://gocloud.dev/concepts/urls/ for more background on\n  Go CDK URLs, and sub-packages under gocloud.dev/secrets\n  (https://godoc.org/gocloud.dev/secrets#pkg-subdirectories)\n  for details on the secrets.Keeper URL format.\n`\n\nfunc main() {\n\tos.Exit(run())\n}\n\nfunc run() int {\n\tsubcommands.Register(subcommands.HelpCommand(), \"\")\n\tsubcommands.Register(&decryptCmd{}, \"\")\n\tsubcommands.Register(&encryptCmd{}, \"\")\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"gocdk-secrets: \")\n\tflag.Parse()\n\treturn int(subcommands.Execute(context.Background()))\n}\n\ntype decryptCmd struct {\n\tbase64in  bool\n\tbase64out bool\n}\n\nfunc (*decryptCmd) Name() string     { return \"decrypt\" }\nfunc (*decryptCmd) Synopsis() string { return \"Decrypt data\" }\nfunc (*decryptCmd) Usage() string {\n\treturn `decrypt [-base64in] [-base64out] <keeper URL> <ciphertext>\n\n  Decrypt the ciphertext using <keeper URL> and print the result to stdout.\n\n  Example:\n    gocdk-secrets decrypt stringkey://mykey nzam9AJHqH1sqeEr1ZLMbWOf4pp5NRHKYBx/h8loARL83+CBc0WPh8dYzHfccQYFUQ==` + helpSuffix\n}\n\nfunc (cmd *decryptCmd) SetFlags(f *flag.FlagSet) {\n\tf.BoolVar(&cmd.base64in, \"base64in\", true, \"the ciphertext is base64 encoded\")\n\tf.BoolVar(&cmd.base64out, \"base64out\", false, \"the resulting plaintext should be base64 encoded before printing it out\")\n}\n\nfunc (cmd *decryptCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 2 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tkeeperURL := f.Arg(0)\n\tciphertext := f.Arg(1)\n\n\tcipher := []byte(ciphertext)\n\tif cmd.base64in {\n\t\tvar err error\n\t\tcipher, err = base64.StdEncoding.DecodeString(ciphertext)\n\t\tif err != nil {\n\t\t\tlog.Printf(\"Failed to base64 decode ciphertext: %v\\n\", err)\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t}\n\n\t// Open a *secrets.Keeper using the keeperURL.\n\tkeeper, err := secrets.OpenKeeper(ctx, keeperURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open keeper: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer keeper.Close()\n\n\tplain, err := keeper.Decrypt(ctx, cipher)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to decrypt: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\n\tplaintext := string(plain)\n\tif cmd.base64out {\n\t\tplaintext = base64.StdEncoding.EncodeToString(plain)\n\t}\n\tfmt.Println(plaintext)\n\n\treturn subcommands.ExitSuccess\n}\n\ntype encryptCmd struct {\n\tbase64in  bool\n\tbase64out bool\n}\n\nfunc (*encryptCmd) Name() string     { return \"encrypt\" }\nfunc (*encryptCmd) Synopsis() string { return \"Encrypt data\" }\nfunc (*encryptCmd) Usage() string {\n\treturn `encrypt [-base64in] [-base64out] <keeper URL> <plaintext>\n\n  Encrypt the plaintext using <keeper URL> and print the result to stdout.\n\n  Example:\n    gocdk-secrets encrypt --base64out stringkey://mykey my-plaintext` + helpSuffix\n}\n\nfunc (cmd *encryptCmd) SetFlags(f *flag.FlagSet) {\n\tf.BoolVar(&cmd.base64in, \"base64in\", false, \"the plaintext is base64-encoded\")\n\tf.BoolVar(&cmd.base64out, \"base64out\", true, \"the resulting ciphertext should be base64-encoded before printing it out\")\n}\n\nfunc (cmd *encryptCmd) Execute(ctx context.Context, f *flag.FlagSet, _ ...any) subcommands.ExitStatus {\n\tif f.NArg() != 2 {\n\t\tf.Usage()\n\t\treturn subcommands.ExitUsageError\n\t}\n\tkeeperURL := f.Arg(0)\n\tplaintext := f.Arg(1)\n\n\tplain := []byte(plaintext)\n\tif cmd.base64in {\n\t\tvar err error\n\t\tplain, err = base64.StdEncoding.DecodeString(plaintext)\n\t\tif err != nil {\n\t\t\tlog.Printf(\"Failed to base64 decode plaintext: %v\\n\", err)\n\t\t\treturn subcommands.ExitFailure\n\t\t}\n\t}\n\n\t// Open a *secrets.Keeper using the keeperURL.\n\tkeeper, err := secrets.OpenKeeper(ctx, keeperURL)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to open keeper: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\tdefer keeper.Close()\n\n\tcipher, err := keeper.Encrypt(ctx, plain)\n\tif err != nil {\n\t\tlog.Printf(\"Failed to encrypt: %v\\n\", err)\n\t\treturn subcommands.ExitFailure\n\t}\n\n\tciphertext := string(cipher)\n\tif cmd.base64out {\n\t\tciphertext = base64.StdEncoding.EncodeToString(cipher)\n\t}\n\tfmt.Println(ciphertext)\n\n\treturn subcommands.ExitSuccess\n}\n"
  },
  {
    "path": "samples/gocdk-secrets/main_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"flag\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmdtest\"\n)\n\nvar update = flag.Bool(\"update\", false, \"replace test file contents with output\")\n\nfunc Test(t *testing.T) {\n\tts, err := cmdtest.Read(\".\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tts.Commands[\"gocdk-secrets\"] = cmdtest.InProcessProgram(\"gocdk-secrets\", run)\n\tts.Run(t, *update)\n}\n"
  },
  {
    "path": "samples/gocdk-secrets/secrets.ct",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Tests of the gocdk-secrets program.\n\n# We can't test encrypt because its output is nondeterministic.\n\n$ gocdk-secrets decrypt -base64in base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4= vnO4Lab8WxdGAklhKUAm+OkmM4mD4aRe9+Uo3iU/sBKMsf2txirq3Gg/MIYaOCRQLw==\nmy-secret\n\n\n"
  },
  {
    "path": "samples/guestbook/README.md",
    "content": "# Guestbook Sample\n\nGuestbook is a sample application that records visitors' messages, displays a\ncloud banner, and an administrative message. The main business logic is written\nin a cloud-agnostic manner using MySQL, the generic blob API, and the generic\nruntimevar API. All platform-specific code is set up by\n[Wire](https://github.com/google/wire).\n\nThe [online tutorial](https://gocloud.dev/tutorials/guestbook) will walk you through how to build, run, and deploy this sample locally, on Google Cloud Platform (GCP), on Amazon Web Servicess (AWS), or on Microsoft Azure.\n\n## Gophers\n\nThe Go gopher was designed by Renee French and used under the\n[Creative Commons 3.0 Attributions](https://creativecommons.org/licenses/by/3.0/)\nlicense.\n"
  },
  {
    "path": "samples/guestbook/aws/main.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nterraform {\n  required_version = \"~>0.12\"\n}\n\nprovider \"aws\" {\n  version = \"~> 2.7\"\n  region  = var.region\n}\n\nprovider \"random\" {\n  version = \"~> 2.1\"\n}\n\n# Firewalls\n\nresource \"aws_security_group\" \"guestbook\" {\n  name_prefix = \"guestbook\"\n  description = \"Sandbox for the Guestbook Go CDK sample app.\"\n\n  ingress {\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Public SSH access\"\n  }\n\n  ingress {\n    from_port   = 8080\n    to_port     = 8080\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"Public HTTP access\"\n  }\n\n  ingress {\n    from_port   = 3306\n    to_port     = 3306\n    protocol    = \"tcp\"\n    self        = true\n    description = \"MySQL within group\"\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0/0\"]\n    description = \"All outgoing traffic allowed\"\n  }\n}\n\n# SQL Database (RDS)\n\nresource \"random_string\" \"db_password\" {\n  special = false\n  length  = 20\n}\n\nresource \"aws_db_instance\" \"guestbook\" {\n  identifier_prefix      = \"guestbook\"\n  engine                 = \"mysql\"\n  engine_version         = \"5.6.39\"\n  instance_class         = \"db.t2.micro\"\n  allocated_storage      = 20\n  username               = \"root\"\n  password               = random_string.db_password.result\n  name                   = \"guestbook\"\n  publicly_accessible    = true\n  vpc_security_group_ids = [aws_security_group.guestbook.id]\n  skip_final_snapshot    = true\n\n  provisioner \"local-exec\" {\n    # TODO(light): Reuse credentials from Terraform.\n    command = \"go run '${path.module}'/provision_db/main.go -host='${aws_db_instance.guestbook.address}' -region='${var.region}' -security_group='${aws_security_group.guestbook.id}' -database=guestbook -password='${random_string.db_password.result}' -schema='${path.module}'/../schema.sql\"\n  }\n}\n\n# Blob Storage (S3)\n\nresource \"aws_s3_bucket\" \"guestbook\" {\n  bucket_prefix = \"guestbook\"\n}\n\nresource \"aws_s3_bucket_object\" \"aws\" {\n  bucket       = aws_s3_bucket.guestbook.bucket\n  key          = \"aws.png\"\n  content_type = \"image/png\"\n  source       = \"${path.module}/../blobs/aws.png\"\n}\n\nresource \"aws_s3_bucket_object\" \"gcp\" {\n  bucket       = aws_s3_bucket.guestbook.bucket\n  key          = \"gcp.png\"\n  content_type = \"image/png\"\n  source       = \"${path.module}/../blobs/gcp.png\"\n}\n\nresource \"aws_s3_bucket_object\" \"gophers\" {\n  bucket       = aws_s3_bucket.guestbook.bucket\n  key          = \"gophers.jpg\"\n  content_type = \"image/jpeg\"\n  source       = \"${path.module}/../blobs/gophers.jpg\"\n}\n\n# Paramstore (SSM)\n\nresource \"aws_ssm_parameter\" \"motd\" {\n  name      = var.paramstore_var\n  type      = \"String\"\n  value     = \"ohai from AWS\"\n  overwrite = \"true\"\n}\n\n# Compute (EC2)\n\nresource \"aws_iam_role\" \"guestbook\" {\n  name_prefix = \"guestbook\"\n\n  assume_role_policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": {\n    \"Effect\": \"Allow\",\n    \"Principal\": {\"Service\": \"ec2.amazonaws.com\"},\n    \"Action\": \"sts:AssumeRole\"\n  }\n}\nEOF\n\n}\n\nresource \"aws_iam_role_policy\" \"guestbook\" {\n  name_prefix = \"Guestbook-Policy\"\n  role = aws_iam_role.guestbook.id\n\n  policy = <<EOF\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": {\n    \"Effect\": \"Allow\",\n    \"Action\": [\n        \"s3:GetObject\",\n        \"ssm:DescribeParameters\",\n        \"ssm:GetParameter\",\n        \"ssm:GetParameters\",\n        \"xray:PutTraceSegments\",\n        \"xray:PutTelemetryRecords\"\n    ],\n    \"Resource\": \"*\"\n  }\n}\nEOF\n\n}\n\nresource \"aws_iam_instance_profile\" \"guestbook\" {\n  name_prefix = \"guestbook\"\n  role        = aws_iam_role.guestbook.name\n}\n\ndata \"aws_ami\" \"debian\" {\n  most_recent = true\n\n  filter {\n    name   = \"product-code\"\n    values = [\"55q52qvgjfpdj2fpfy9mb1lo4\"]\n  }\n\n  filter {\n    name   = \"product-code.type\"\n    values = [\"marketplace\"]\n  }\n\n  filter {\n    name   = \"architecture\"\n    values = [\"x86_64\"]\n  }\n\n  owners = [\"679593333241\"]\n}\n\nresource \"aws_key_pair\" \"guestbook\" {\n  key_name_prefix = \"guestbook\"\n  public_key      = var.ssh_public_key\n}\n\nresource \"aws_instance\" \"guestbook\" {\n  ami                    = data.aws_ami.debian.id\n  instance_type          = \"t2.micro\"\n  vpc_security_group_ids = [aws_security_group.guestbook.id]\n  iam_instance_profile   = aws_iam_instance_profile.guestbook.id\n  key_name               = aws_key_pair.guestbook.key_name\n\n  connection {\n    host = coalesce(self.public_ip, self.private_ip)\n    type = \"ssh\"\n    user = \"admin\"\n  }\n\n  provisioner \"file\" {\n    source      = \"${path.module}/../guestbook\"\n    destination = \"/home/admin/guestbook\"\n  }\n\n  provisioner \"remote-exec\" {\n    inline = [\"chmod +x /home/admin/guestbook\"]\n  }\n}\n\n"
  },
  {
    "path": "samples/guestbook/aws/outputs.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\noutput \"region\" {\n  value       = var.region\n  description = \"Region the resources were created in.\"\n}\n\noutput \"bucket\" {\n  value       = aws_s3_bucket.guestbook.id\n  description = \"Name of the S3 bucket created to store images.\"\n}\n\noutput \"database_host\" {\n  value       = aws_db_instance.guestbook.address\n  description = \"Host name of the RDS MySQL database.\"\n}\n\noutput \"database_root_password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"Password for the root user of the RDS MySQL databse.\"\n}\n\noutput \"paramstore_var\" {\n  value       = var.paramstore_var\n  description = \"Location of the SSM Parameter Store Message of the Day variable.\"\n}\n\noutput \"instance_host\" {\n  value       = aws_instance.guestbook.public_ip\n  description = \"Address of the EC2 instance.\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/aws/provision_db/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// The provision_db program connects to an RDS database and initializes it with\n// SQL from stdin. It is intended to be invoked from Terraform.\npackage main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\nfunc main() {\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"aws/provision_db: \")\n\thost := flag.String(\"host\", \"\", \"hostname of database\")\n\tregion := flag.String(\"region\", \"\", \"AWS region\")\n\tsecurityGroup := flag.String(\"security_group\", \"\", \"database security group\")\n\tdatabase := flag.String(\"database\", \"\", \"name of database to provision\")\n\tpassword := flag.String(\"password\", \"\", \"root password on database\")\n\tschema := flag.String(\"schema\", \"\", \"path to .sql file defining the database schema\")\n\tflag.Parse()\n\tmissing := false\n\tflag.VisitAll(func(f *flag.Flag) {\n\t\tif f.Value.String() == \"\" {\n\t\t\tlog.Printf(\"Required flag -%s not set.\", f.Name)\n\t\t\tmissing = true\n\t\t}\n\t})\n\tif missing {\n\t\tos.Exit(64)\n\t}\n\tif err := provisionDb(*host, *region, *securityGroup, *database, *password, *schema); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc provisionDb(dbHost, region, securityGroupID, dbName, dbPassword, schemaPath string) error {\n\tconst mySQLImage = \"mysql:5.6\"\n\n\t// Pull the necessary Docker images.\n\tlog.Print(\"Downloading Docker images...\")\n\tif _, err := run(\"docker\", \"pull\", mySQLImage); err != nil {\n\t\treturn err\n\t}\n\n\t// Create a temporary directory to hold the certificates.\n\t// We resolve all symlinks to avoid Docker on Mac issues, see\n\t// https://github.com/google/go-cloud/issues/110.\n\ttempdir, err := os.MkdirTemp(\"\", \"guestbook-ca\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"creating temp dir for certs: %v\", err)\n\t}\n\tdefer os.RemoveAll(tempdir)\n\ttempdir, err = filepath.EvalSymlinks(tempdir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"evaluating any symlinks: %v\", err)\n\t}\n\tresp, err := http.Get(\"https://s3.amazonaws.com/rds-downloads/rds-ca-2015-root.pem\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"fetching pem file: %v\", err)\n\t}\n\tif resp.StatusCode != 200 {\n\t\treturn fmt.Errorf(\"response status code is %d, want 200\", resp.StatusCode)\n\t}\n\tdefer resp.Body.Close()\n\tcaPath := filepath.Join(tempdir, \"rds-ca.pem\")\n\tcaFile, err := os.Create(caPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err := io.Copy(caFile, resp.Body); err != nil {\n\t\treturn fmt.Errorf(\"copying response to file: %v\", err)\n\t}\n\n\tlog.Print(\"Adding a temporary ingress rule\")\n\tif _, err := run(\"aws\", \"ec2\", \"authorize-security-group-ingress\", \"--region\", region, \"--group-id\", securityGroupID, \"--protocol=tcp\", \"--port=3306\", \"--cidr=0.0.0.0/0\"); err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tlog.Print(\"Removing ingress rule...\")\n\t\tif _, err := run(\"aws\", \"ec2\", \"revoke-security-group-ingress\", \"--region\", region, \"--group-id\", securityGroupID, \"--protocol=tcp\", \"--port=3306\", \"--cidr=0.0.0.0/0\"); err != nil {\n\t\t\tlog.Print(err)\n\t\t}\n\t}()\n\tlog.Printf(\"Added ingress rule to %s for port 3306\", securityGroupID)\n\n\t// Send schema.\n\tlog.Print(\"Sending schema to database...\")\n\tschema, err := os.Open(schemaPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer schema.Close()\n\tmySQLCmd := fmt.Sprintf(`mysql -h'%s' -uroot -p'%s' --ssl-ca=/ca/rds-ca.pem '%s'`, dbHost, dbPassword, dbName)\n\tconnect := exec.Command(\"docker\", \"run\", \"--rm\", \"--interactive\", \"--volume\", tempdir+\":/ca\", mySQLImage, \"sh\", \"-c\", mySQLCmd)\n\tconnect.Stdin = schema\n\tconnect.Stderr = os.Stderr\n\tif err := connect.Run(); err != nil {\n\t\treturn fmt.Errorf(\"running %v: %v\", connect.Args, err)\n\t}\n\n\treturn nil\n}\n\nfunc run(args ...string) (stdout string, err error) {\n\tcmd := exec.Command(args[0], args[1:]...)\n\tcmd.Stderr = os.Stderr\n\tcmd.Env = append(cmd.Env, os.Environ()...)\n\tstdoutb, err := cmd.Output()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"running %v: %v\", cmd.Args, err)\n\t}\n\treturn strings.TrimSpace(string(stdoutb)), nil\n}\n"
  },
  {
    "path": "samples/guestbook/aws/variables.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nvariable \"region\" {\n  type        = string\n  description = \"Region to create resources in. See https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html for valid values.\"\n}\n\nvariable \"ssh_public_key\" {\n  type        = string\n  description = \"A public key line in .ssh/authorized_keys format to use to authenticate to your instance. This must be added to your SSH agent for provisioning to succeed.\"\n}\n\nvariable \"paramstore_var\" {\n  default     = \"/guestbook/motd\"\n  description = \"The location in SSM Parameter Store of the Message of the Day variable.\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/azure/main.tf",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nterraform {\n  required_version = \"~>0.12\"\n}\n\nprovider \"azurerm\" {\n  version = \"~> 1.27.0\"\n}\n\nprovider \"random\" {\n  version = \"~> 2.1\"\n}\n\nresource \"random_string\" \"suffix\" {\n  special = false\n  upper   = false\n  length  = 7\n}\n\n# Create a resource group\nresource \"azurerm_resource_group\" \"guestbook\" {\n  name     = \"guestbook${random_string.suffix.result}\"\n  location = var.location\n}\n\n# Create a Storage Account, container, and two blobs.\n\nresource \"azurerm_storage_account\" \"guestbook\" {\n  name                     = \"guestbook${random_string.suffix.result}\"\n  resource_group_name      = azurerm_resource_group.guestbook.name\n  location                 = var.location\n  account_tier             = \"Standard\"\n  account_replication_type = \"GRS\"\n}\n\nresource \"azurerm_storage_container\" \"guestbook\" {\n  name                  = \"guestbook${random_string.suffix.result}\"\n  resource_group_name   = azurerm_resource_group.guestbook.name\n  storage_account_name  = azurerm_storage_account.guestbook.name\n  container_access_type = \"private\"\n}\n\nresource \"azurerm_storage_blob\" \"gopher\" {\n  name = \"azure.png\"\n\n  resource_group_name    = azurerm_resource_group.guestbook.name\n  storage_account_name   = azurerm_storage_account.guestbook.name\n  storage_container_name = azurerm_storage_container.guestbook.name\n\n  type         = \"block\"\n  content_type = \"image/png\"\n  source       = \"${path.module}/../blobs/azure.png\"\n}\n\nresource \"azurerm_storage_blob\" \"motd\" {\n  name = \"motd\"\n\n  resource_group_name    = azurerm_resource_group.guestbook.name\n  storage_account_name   = azurerm_storage_account.guestbook.name\n  storage_container_name = azurerm_storage_container.guestbook.name\n\n  type         = \"block\"\n  content_type = \"text/plain\"\n  source       = \"${path.module}/../blobs/motd.txt\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/azure/outputs.tf",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\noutput \"storage_account\" {\n  value       = azurerm_storage_account.guestbook.name\n  description = \"Name of the Storage Account created to store images.\"\n}\n\noutput \"storage_container\" {\n  value       = azurerm_storage_container.guestbook.name\n  description = \"Name of the storage container created to store images.\"\n}\n\noutput \"access_key\" {\n  value       = azurerm_storage_account.guestbook.primary_access_key\n  description = \"The primary access key for the Storage Account.\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/azure/variables.tf",
    "content": "# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nvariable \"location\" {\n  type        = string\n  description = \"Location to create resources in. See https://azure.microsoft.com/en-us/global-infrastructure/locations/ for valid values.\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/blobs/motd.txt",
    "content": "Message of the Day Is: Hello World!\n"
  },
  {
    "path": "samples/guestbook/gcp/.gcloudignore",
    "content": "*.tf\n*.tfstate\n*.tfstate.backup\n.terraform/\nterraform.tfvars\n*.pem\n*.json\n"
  },
  {
    "path": "samples/guestbook/gcp/Dockerfile",
    "content": "FROM gcr.io/distroless/base\nCOPY guestbook /\nENTRYPOINT [\"/guestbook\"]\n"
  },
  {
    "path": "samples/guestbook/gcp/deploy/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// The deploy program builds the Guestbook server locally and deploys it to\n// GKE.\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n)\n\nfunc main() {\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"gcp/deploy: \")\n\tguestbookDir := flag.String(\"guestbook_dir\", \"..\", \"directory containing the guestbook example\")\n\ttfStatePath := flag.String(\"tfstate\", \"terraform.tfstate\", \"path to terraform state file\")\n\tflag.Parse()\n\tif err := deploy(*guestbookDir, *tfStatePath); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc deploy(guestbookDir, tfStatePath string) error {\n\ttype tfItem struct {\n\t\tSensitive bool\n\t\tType      string\n\t\tValue     string\n\t}\n\ttype state struct {\n\t\tProject          tfItem\n\t\tClusterName      tfItem `json:\"cluster_name\"`\n\t\tClusterZone      tfItem `json:\"cluster_zone\"`\n\t\tBucket           tfItem\n\t\tDatabaseInstance tfItem `json:\"database_instance\"`\n\t\tDatabaseRegion   tfItem `json:\"database_region\"`\n\t\tMotdVarConfig    tfItem `json:\"motd_var_config\"`\n\t\tMotdVarName      tfItem `json:\"motd_var_name\"`\n\t}\n\ttfStateb, err := runb(\"terraform\", \"output\", \"-state\", tfStatePath, \"-json\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar tfState state\n\tif err := json.Unmarshal(tfStateb, &tfState); err != nil {\n\t\treturn fmt.Errorf(\"parsing terraform state JSON: %v\", err)\n\t}\n\tzone := tfState.ClusterZone.Value\n\tif zone == \"\" {\n\t\treturn fmt.Errorf(\"empty or missing cluster_zone in %s\", tfStatePath)\n\t}\n\ttempDir, err := os.MkdirTemp(\"\", \"guestbook-k8s-\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"making temp dir: %v\", err)\n\t}\n\tdefer os.RemoveAll(tempDir)\n\n\t// Fill in Kubernetes template parameters.\n\tproj := strings.Replace(tfState.Project.Value, \":\", \"/\", -1)\n\timageName := fmt.Sprintf(\"gcr.io/%s/guestbook\", proj)\n\tgbyin, err := os.ReadFile(filepath.Join(guestbookDir, \"gcp\", \"guestbook.yaml.in\"))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading guestbook.yaml.in: %v\", err)\n\t}\n\tgby := string(gbyin)\n\treplacements := map[string]string{\n\t\t\"{{IMAGE}}\":             imageName,\n\t\t\"{{bucket}}\":            tfState.Bucket.Value,\n\t\t\"{{database_instance}}\": tfState.DatabaseInstance.Value,\n\t\t\"{{database_region}}\":   tfState.DatabaseRegion.Value,\n\t\t\"{{motd_var_config}}\":   tfState.MotdVarConfig.Value,\n\t\t\"{{motd_var_name}}\":     tfState.MotdVarName.Value,\n\t}\n\tfor old, new := range replacements {\n\t\tgby = strings.Replace(gby, old, new, -1)\n\t}\n\tif err := os.WriteFile(filepath.Join(tempDir, \"guestbook.yaml\"), []byte(gby), 0o666); err != nil {\n\t\treturn fmt.Errorf(\"writing guestbook.yaml: %v\", err)\n\t}\n\n\t// Build Guestbook Docker image.\n\tlog.Printf(\"Building %s...\", imageName)\n\tbuild := exec.Command(\"go\", \"build\", \"-o\", \"gcp/guestbook\")\n\tenv := append(build.Env, \"GOOS=linux\", \"GOARCH=amd64\")\n\tenv = append(env, os.Environ()...)\n\tbuild.Env = env\n\tabsDir, err := filepath.Abs(guestbookDir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting abs path to guestbook dir (%s): %v\", guestbookDir, err)\n\t}\n\tbuild.Dir = absDir\n\tbuild.Stderr = os.Stderr\n\tif err := build.Run(); err != nil {\n\t\treturn fmt.Errorf(\"building guestbook app by running %v: %v\", build.Args, err)\n\t}\n\tgcp := gcloud{projectID: tfState.Project.Value}\n\tcbs := gcp.cmd(\"builds\", \"submit\", \"-t\", imageName, filepath.Join(guestbookDir, \"gcp\"))\n\tif err := cbs.Run(); err != nil {\n\t\treturn fmt.Errorf(\"building container image with %v: %v\", cbs.Args, err)\n\t}\n\n\t// Run on Kubernetes.\n\tlog.Printf(\"Deploying to %s...\", tfState.ClusterName.Value)\n\tgetCreds := gcp.cmd(\"container\", \"clusters\", \"get-credentials\", \"--zone\", zone, tfState.ClusterName.Value)\n\tgetCreds.Stderr = os.Stderr\n\tif err := getCreds.Run(); err != nil {\n\t\treturn fmt.Errorf(\"getting credentials with %v: %v\", getCreds.Args, err)\n\t}\n\tkubeCmds := [][]string{\n\t\t{\"kubectl\", \"apply\", \"-f\", filepath.Join(tempDir, \"guestbook.yaml\")},\n\t\t// Force pull the latest image.\n\t\t{\"kubectl\", \"scale\", \"--replicas\", \"0\", \"deployment/guestbook\"},\n\t\t{\"kubectl\", \"scale\", \"--replicas\", \"1\", \"deployment/guestbook\"},\n\t}\n\tfor _, kcmd := range kubeCmds {\n\t\tcmd := exec.Command(kcmd[0], kcmd[1:]...)\n\t\tif err := cmd.Run(); err != nil {\n\t\t\treturn fmt.Errorf(\"running %v: %v\", cmd.Args, err)\n\t\t}\n\t}\n\n\t// Wait for endpoint then print it.\n\tlog.Printf(\"Waiting for load balancer...\")\n\tfor {\n\t\toutb, err := runb(\"kubectl\", \"get\", \"service\", \"guestbook\", \"-o\", \"json\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar s service\n\t\tif err := json.Unmarshal(outb, &s); err != nil {\n\t\t\treturn fmt.Errorf(\"parsing JSON output: %v\", err)\n\t\t}\n\t\ti := s.Status.LoadBalancer.Ingress\n\t\tif len(i) == 0 || i[0].IP == \"\" {\n\t\t\tdt := time.Second\n\t\t\tlog.Printf(\"No ingress returned in %s. Trying again in %v\", outb, dt)\n\t\t\ttime.Sleep(dt)\n\t\t\tcontinue\n\t\t}\n\t\tendpoint := i[0].IP\n\t\tlog.Printf(\"Deployed at http://%s:8080\", endpoint)\n\t\tbreak\n\t}\n\treturn nil\n}\n\ntype (\n\tservice      struct{ Status *status }\n\tstatus       struct{ LoadBalancer loadBalancer }\n\tloadBalancer struct{ Ingress []ingress }\n\tingress      struct{ IP string }\n)\n\ntype gcloud struct {\n\tprojectID string\n}\n\nfunc (gcp *gcloud) cmd(args ...string) *exec.Cmd {\n\targs = append([]string{\"--quiet\", \"--project\", gcp.projectID}, args...)\n\tcmd := exec.Command(\"gcloud\", args...)\n\tcmd.Env = append(cmd.Env, os.Environ()...)\n\tcmd.Stderr = os.Stderr\n\treturn cmd\n}\n\nfunc run(args ...string) (stdout string, err error) {\n\tstdoutb, err := runb(args...)\n\treturn strings.TrimSpace(string(stdoutb)), err\n}\n\nfunc runb(args ...string) (stdout []byte, err error) {\n\tcmd := exec.Command(args[0], args[1:]...)\n\tcmd.Stderr = os.Stderr\n\tcmd.Env = append(cmd.Env, os.Environ()...)\n\tstdoutb, err := cmd.Output()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"running %v: %v\", cmd.Args, err)\n\t}\n\treturn stdoutb, nil\n}\n"
  },
  {
    "path": "samples/guestbook/gcp/guestbook.yaml.in",
    "content": "apiVersion: extensions/v1beta1\nkind: Deployment\nmetadata:\n  name: guestbook\n  labels:\n    app: guestbook\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: guestbook\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 1\n  template:\n    metadata:\n      labels:\n        app: guestbook\n    spec:\n      volumes:\n      - name: google-cloud-key\n        secret:\n          secretName: guestbook-key\n      containers:\n      - name: guestbook\n        image: {{IMAGE}}\n        args: \n        - \"-env=gcp\"\n        - \"-bucket={{bucket}}\"\n        - \"-db_host={{database_instance}}\"\n        - \"-cloud_sql_region={{database_region}}\"\n        - \"-runtime_config={{motd_var_config}}\"\n        - \"-motd_var={{motd_var_name}}\"\n        imagePullPolicy: Always\n        ports:\n        - containerPort: 8080\n          protocol: TCP\n        volumeMounts:\n        - name: google-cloud-key\n          mountPath: /var/secrets/google\n        env:\n        - name: GOOGLE_APPLICATION_CREDENTIALS\n          value: /var/secrets/google/key.json\n        livenessProbe:\n          httpGet:\n            path: /healthz/liveness\n            port: 8080\n        readinessProbe:\n          httpGet:\n            path: /healthz/readiness\n            port: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: guestbook\n  labels:\n    app: guestbook\nspec:\n  type: LoadBalancer\n  selector:\n    app: guestbook\n  ports:\n  - port: 8080\n    protocol: TCP\n    targetPort: 8080\n"
  },
  {
    "path": "samples/guestbook/gcp/main.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nterraform {\n  required_version = \"~>0.12\"\n}\n\nprovider \"google\" {\n  version = \"~> 2.5\"\n  project = var.project\n}\n\nprovider \"random\" {\n  version = \"~> 2.1\"\n}\n\nresource \"google_project_service\" \"cloudbuild\" {\n  service            = \"cloudbuild.googleapis.com\"\n  disable_on_destroy = false\n}\n\n# Service account for the running server\n\nresource \"google_service_account\" \"server\" {\n  account_id   = var.server_service_account_name\n  project      = var.project\n  display_name = \"Guestbook Server\"\n}\n\nresource \"google_service_account_key\" \"server\" {\n  service_account_id = google_service_account.server.name\n}\n\n# Stackdriver Tracing\n\nresource \"google_project_service\" \"trace\" {\n  service            = \"cloudtrace.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_project_iam_member\" \"server_trace\" {\n  role   = \"roles/cloudtrace.agent\"\n  member = \"serviceAccount:${google_service_account.server.email}\"\n}\n\nlocals {\n  sql_instance = \"go-guestbook-${random_id.sql_instance.hex}\"\n  bucket_name  = \"go-guestbook-${random_id.bucket_name.hex}\"\n}\n\n# Cloud SQL\n\nresource \"google_project_service\" \"sql\" {\n  service            = \"sql-component.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_project_service\" \"sqladmin\" {\n  service            = \"sqladmin.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"random_id\" \"sql_instance\" {\n  keepers = {\n    project = var.project\n    region  = var.region\n  }\n\n  byte_length = 16\n}\n\nresource \"google_sql_database_instance\" \"guestbook\" {\n  name             = local.sql_instance\n  database_version = \"MYSQL_5_6\"\n  region           = var.region\n  project          = var.project\n\n  settings {\n    tier      = \"db-f1-micro\"\n    disk_size = 10 # GiB\n  }\n\n  depends_on = [\n    google_project_service.sql,\n    google_project_service.sqladmin,\n  ]\n}\n\nresource \"google_sql_database\" \"guestbook\" {\n  name     = \"guestbook\"\n  instance = google_sql_database_instance.guestbook.name\n\n  provisioner \"local-exec\" {\n    # TODO(light): Reuse credentials from Terraform.\n    command = \"go run '${path.module}'/provision_db/main.go -project='${google_sql_database_instance.guestbook.project}' -service_account='${google_service_account.db_access.email}' -instance='${local.sql_instance}' -database=guestbook -password='${google_sql_user.root.password}' -schema='${path.module}'/../schema.sql\"\n  }\n}\n\nresource \"random_string\" \"db_password\" {\n  keepers = {\n    project = var.project\n    db_name = local.sql_instance\n    region  = var.region\n  }\n\n  special = false\n  length  = 20\n}\n\nresource \"google_sql_user\" \"root\" {\n  name     = \"root\"\n  instance = google_sql_database_instance.guestbook.name\n  password = random_string.db_password.result\n}\n\nresource \"google_sql_user\" \"guestbook\" {\n  name     = \"guestbook\"\n  instance = google_sql_database_instance.guestbook.name\n  host     = \"cloudsqlproxy~%\"\n}\n\nresource \"google_service_account\" \"db_access\" {\n  account_id   = var.db_access_service_account_name\n  project      = var.project\n  display_name = \"Guestbook Database Access\"\n}\n\nresource \"google_project_iam_member\" \"server_cloudsql\" {\n  role   = \"roles/cloudsql.client\"\n  member = \"serviceAccount:${google_service_account.server.email}\"\n}\n\nresource \"google_project_iam_member\" \"db_access_cloudsql\" {\n  role   = \"roles/cloudsql.client\"\n  member = \"serviceAccount:${google_service_account.db_access.email}\"\n}\n\n# Runtime Configurator\n\nresource \"google_project_service\" \"runtimeconfig\" {\n  service            = \"runtimeconfig.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_runtimeconfig_config\" \"guestbook\" {\n  name    = \"guestbook\"\n  project = var.project\n\n  depends_on = [google_project_service.runtimeconfig]\n}\n\nresource \"google_runtimeconfig_variable\" \"motd\" {\n  name    = \"motd\"\n  parent  = google_runtimeconfig_config.guestbook.name\n  project = var.project\n  text    = \"ohai from GCP runtime configuration\"\n}\n\nresource \"google_project_iam_member\" \"server_runtimeconfig\" {\n  role   = \"roles/runtimeconfig.admin\"\n  member = \"serviceAccount:${google_service_account.server.email}\"\n}\n\n# Google Cloud Storage\n\nresource \"google_project_service\" \"storage\" {\n  service            = \"storage-component.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_project_service\" \"storage_api\" {\n  service            = \"storage-api.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"random_id\" \"bucket_name\" {\n  keepers = {\n    project = var.project\n    region  = var.region\n  }\n\n  byte_length = 16\n}\n\nresource \"google_storage_bucket\" \"guestbook\" {\n  name          = local.bucket_name\n  storage_class = \"REGIONAL\"\n  location      = var.region\n\n  # Set to avoid calling Compute API.\n  # See https://github.com/hashicorp/terraform/issues/13109\n  project = var.project\n\n  depends_on = [\n    google_project_service.storage,\n    google_project_service.storage_api,\n  ]\n}\n\nresource \"google_storage_bucket_iam_member\" \"guestbook_server_view\" {\n  bucket = google_storage_bucket.guestbook.name\n  role   = \"roles/storage.objectViewer\"\n  member = \"serviceAccount:${google_service_account.server.email}\"\n}\n\nresource \"google_storage_bucket_object\" \"aws\" {\n  bucket       = google_storage_bucket.guestbook.name\n  name         = \"aws.png\"\n  content_type = \"image/png\"\n  source       = \"${path.module}/../blobs/aws.png\"\n  depends_on   = [google_storage_bucket_iam_member.guestbook_server_view]\n}\n\nresource \"google_storage_bucket_object\" \"gcp\" {\n  bucket       = google_storage_bucket.guestbook.name\n  name         = \"gcp.png\"\n  content_type = \"image/png\"\n  source       = \"${path.module}/../blobs/gcp.png\"\n  depends_on   = [google_storage_bucket_iam_member.guestbook_server_view]\n}\n\nresource \"google_storage_bucket_object\" \"gophers\" {\n  bucket       = google_storage_bucket.guestbook.name\n  name         = \"gophers.jpg\"\n  content_type = \"image/jpeg\"\n  source       = \"${path.module}/../blobs/gophers.jpg\"\n  depends_on   = [google_storage_bucket_iam_member.guestbook_server_view]\n}\n\n# Kubernetes Engine\n\nresource \"google_project_service\" \"container\" {\n  service            = \"container.googleapis.com\"\n  disable_on_destroy = false\n}\n\nresource \"google_container_cluster\" \"guestbook\" {\n  name               = var.cluster_name\n  zone               = var.zone\n  initial_node_count = 3\n\n  node_config {\n    machine_type = \"n1-standard-1\"\n    disk_size_gb = 50\n\n    oauth_scopes = [\n      \"https://www.googleapis.com/auth/compute\",\n      \"https://www.googleapis.com/auth/devstorage.read_only\",\n      \"https://www.googleapis.com/auth/logging.write\",\n      \"https://www.googleapis.com/auth/monitoring\",\n    ]\n  }\n\n  # Needed for Kubernetes provider below.\n  enable_legacy_abac = true\n\n  depends_on = [google_project_service.container]\n}\n\nprovider \"kubernetes\" {\n  version = \"~> 1.1\"\n\n  host = \"https://${google_container_cluster.guestbook.endpoint}\"\n\n  client_certificate = base64decode(\n    google_container_cluster.guestbook.master_auth[0].client_certificate,\n  )\n  client_key = base64decode(google_container_cluster.guestbook.master_auth[0].client_key)\n  cluster_ca_certificate = base64decode(\n    google_container_cluster.guestbook.master_auth[0].cluster_ca_certificate,\n  )\n}\n\nresource \"kubernetes_secret\" \"guestbook_creds\" {\n  metadata {\n    name = \"guestbook-key\"\n  }\n\n  data = {\n    \"key.json\" = base64decode(google_service_account_key.server.private_key)\n  }\n}\n\n"
  },
  {
    "path": "samples/guestbook/gcp/outputs.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\noutput \"project\" {\n  value       = var.project\n  description = \"The GCP project ID.\"\n}\n\noutput \"server_service_account\" {\n  value       = google_service_account.server.email\n  description = \"The service account email that will be used for the server running inside the GKE cluster.\"\n}\n\noutput \"db_access_service_account\" {\n  value       = google_service_account.db_access.email\n  description = \"The service account email that was used for provisioning the database.\"\n}\n\noutput \"cluster_name\" {\n  value       = var.cluster_name\n  description = \"GKE cluster name.\"\n}\n\noutput \"cluster_zone\" {\n  value       = google_container_cluster.guestbook.zone\n  description = \"GCP zone that the GKE cluster is in.\"\n}\n\noutput \"bucket\" {\n  value       = local.bucket_name\n  description = \"Name of the GCS bucket created to store images.\"\n}\n\noutput \"database_instance\" {\n  value       = google_sql_database_instance.guestbook.name\n  description = \"Cloud SQL instance name.\"\n}\n\noutput \"database_root_password\" {\n  value       = random_string.db_password.result\n  sensitive   = true\n  description = \"The Cloud SQL instance password for root.\"\n}\n\noutput \"database_region\" {\n  value       = var.region\n  description = \"The Cloud SQL instance region.\"\n}\n\noutput \"motd_var_config\" {\n  value       = google_runtimeconfig_config.guestbook.name\n  description = \"The name of the Runtime Configurator config resource that contains the Message of the Day variable.\"\n}\n\noutput \"motd_var_name\" {\n  value       = google_runtimeconfig_variable.motd.name\n  description = \"The name of the Runtime Configurator variable inside the config resource that contains the Message of the Day.\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/gcp/provision_db/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// The provision_db program connects to a Cloud SQL database and initializes it\n// with SQL from a file. It's intended to be invoked from Terraform.\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\nfunc main() {\n\tlog.SetFlags(0)\n\tlog.SetPrefix(\"gcp/provision_db: \")\n\tproject := flag.String(\"project\", \"\", \"GCP project ID\")\n\tserviceAccount := flag.String(\"service_account\", \"\", \"name of service account in GCP project\")\n\tinstance := flag.String(\"instance\", \"\", \"database instance name\")\n\tdatabase := flag.String(\"database\", \"\", \"name of database to initialize\")\n\tpassword := flag.String(\"password\", \"\", \"root password for the database\")\n\tschema := flag.String(\"schema\", \"\", \"path to .sql file defining the database schema\")\n\tflag.Parse()\n\tmissing := false\n\tflag.VisitAll(func(f *flag.Flag) {\n\t\tif f.Value.String() == \"\" {\n\t\t\tlog.Printf(\"Required flag -%s is not set.\", f.Name)\n\t\t\tmissing = true\n\t\t}\n\t})\n\tif missing {\n\t\tos.Exit(64)\n\t}\n\tif err := provisionDB(*project, *serviceAccount, *instance, *database, *password, *schema); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\ntype key struct {\n\tPrivateKeyID string `json:\"private_key_id\"`\n}\n\nfunc provisionDB(projectID, serviceAccount, dbInstance, dbName, dbPassword, schemaPath string) error {\n\tlog.Printf(\"Downloading Docker images...\")\n\tconst mySQLImage = \"mysql:5.6\"\n\tcloudSQLProxyImage := \"gcr.io/cloudsql-docker/gce-proxy:1.11\"\n\timages := []string{mySQLImage, cloudSQLProxyImage}\n\tfor _, img := range images {\n\t\tif _, err := run(\"docker\", \"pull\", img); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tlog.Printf(\"Getting connection string from database metadata...\")\n\tgcp := &gcloud{projectID}\n\tdbConnStr, err := run(gcp.cmd(\"sql\", \"instances\", \"describe\", \"--format\", \"value(connectionName)\", dbInstance)...)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting connection string: %v\", err)\n\t}\n\n\t// Create a temporary directory to hold the service account key.\n\t// We resolve all symlinks to avoid Docker on Mac issues, see\n\t// https://github.com/google/go-cloud/issues/110.\n\tserviceAccountVolDir, err := os.MkdirTemp(\"\", \"guestbook-service-acct\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"creating temp dir to hold service account key: %v\", err)\n\t}\n\tserviceAccountVolDir, err = filepath.EvalSymlinks(serviceAccountVolDir)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"evaluating any symlinks: %v\", err)\n\t}\n\tdefer os.RemoveAll(serviceAccountVolDir)\n\tlog.Printf(\"Created %v\", serviceAccountVolDir)\n\n\t// Furnish a new service account key.\n\tif _, err := run(gcp.cmd(\"iam\", \"service-accounts\", \"keys\", \"create\", \"--iam-account=\"+serviceAccount, serviceAccountVolDir+\"/key.json\")...); err != nil {\n\t\treturn fmt.Errorf(\"creating new service account key: %v\", err)\n\t}\n\tkeyJSONb, err := os.ReadFile(filepath.Join(serviceAccountVolDir, \"key.json\"))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading key.json file: %v\", err)\n\t}\n\tvar k key\n\tif err := json.Unmarshal(keyJSONb, &k); err != nil {\n\t\treturn fmt.Errorf(\"parsing key.json: %v\", err)\n\t}\n\tserviceAccountKeyID := k.PrivateKeyID\n\tdefer func() {\n\t\tif _, err := run(gcp.cmd(\"iam\", \"service-accounts\", \"keys\", \"delete\", \"--iam-account\", serviceAccount, serviceAccountKeyID)...); err != nil {\n\t\t\tlog.Printf(\"deleting service account key: %v\", err)\n\t\t}\n\t}()\n\tlog.Printf(\"Created service account key %s\", serviceAccountKeyID)\n\n\tlog.Printf(\"Starting Cloud SQL proxy...\")\n\tproxyContainerID, err := run(\"docker\", \"run\", \"--detach\", \"--rm\", \"--volume\", serviceAccountVolDir+\":/creds\", \"--publish\", \"3306\", cloudSQLProxyImage, \"/cloud_sql_proxy\", \"-instances\", dbConnStr+\"=tcp:0.0.0.0:3306\", \"-credential_file=/creds/key.json\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif _, err := run(\"docker\", \"kill\", proxyContainerID); err != nil {\n\t\t\tlog.Printf(\"failed to kill docker container for proxy: %v\", err)\n\t\t}\n\t}()\n\n\tlog.Print(\"Sending schema to database...\")\n\tmySQLCmd := fmt.Sprintf(`mysql --wait -h\"$PROXY_PORT_3306_TCP_ADDR\" -P\"$PROXY_PORT_3306_TCP_PORT\" -uroot -p'%s' '%s'`, dbPassword, dbName)\n\tconnect := exec.Command(\"docker\", \"run\", \"--rm\", \"--interactive\", \"--link\", proxyContainerID+\":proxy\", mySQLImage, \"sh\", \"-c\", mySQLCmd)\n\tschema, err := os.Open(schemaPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer schema.Close()\n\tconnect.Stdin = schema\n\tconnect.Stderr = os.Stderr\n\tif err := connect.Run(); err != nil {\n\t\treturn fmt.Errorf(\"running %v: %v\", connect.Args, err)\n\t}\n\n\treturn nil\n}\n\nfunc run(args ...string) (stdout string, err error) {\n\tcmd := exec.Command(args[0], args[1:]...)\n\tcmd.Stderr = os.Stderr\n\tcmd.Env = append(cmd.Env, os.Environ()...)\n\tstdoutb, err := cmd.Output()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"running %v: %v\", cmd.Args, err)\n\t}\n\treturn strings.TrimSpace(string(stdoutb)), nil\n}\n\ntype gcloud struct {\n\t// project ID\n\tproject string\n}\n\nfunc (gcp *gcloud) cmd(args ...string) []string {\n\treturn append([]string{\"gcloud\", \"--quiet\", \"--project\", gcp.project}, args...)\n}\n"
  },
  {
    "path": "samples/guestbook/gcp/variables.tf",
    "content": "# Copyright 2018 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nvariable \"project\" {\n  type        = string\n  description = \"Project to set up.\"\n}\n\nvariable \"region\" {\n  type        = string\n  description = \"GCP region to create database and storage in, for example 'us-central1'. See https://cloud.google.com/compute/docs/regions-zones/ for valid values.\"\n}\n\nvariable \"zone\" {\n  type        = string\n  description = \"GCP zone to create the GKE cluster in, for example 'us-central1-a'. See https://cloud.google.com/compute/docs/regions-zones/ for valid values.\"\n}\n\nvariable \"server_service_account_name\" {\n  default     = \"guestbook\"\n  description = \"The username part of the service account email that will be used for the server running inside the GKE cluster.\"\n}\n\nvariable \"db_access_service_account_name\" {\n  default     = \"guestbook-db\"\n  description = \"The username part of the service account email that will be used for provisioning the database.\"\n}\n\nvariable \"cluster_name\" {\n  default     = \"guestbook-cluster\"\n  description = \"The GKE cluster name.\"\n}\n\n"
  },
  {
    "path": "samples/guestbook/inject_aws.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build wireinject\n// +build wireinject\n\npackage main\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"net/url\"\n\n\t\"github.com/aws/aws-sdk-go-v2/service/s3\"\n\t\"github.com/aws/aws-sdk-go-v2/service/ssm\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/aws/awscloud\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/s3blob\"\n\t\"gocloud.dev/mysql/awsmysql\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/awsparamstore\"\n\t\"gocloud.dev/server\"\n)\n\n// This file wires the generic interfaces up to Amazon Web Services (AWS). It\n// won't be directly included in the final binary, since it includes a Wire\n// injector template function (setupAWS), but the declarations will be copied\n// into wire_gen.go when Wire is run.\n\n// setupAWS is a Wire injector function that sets up the application using AWS.\nfunc setupAWS(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\t// This will be filled in by Wire with providers from the provider sets in\n\t// wire.Build.\n\twire.Build(\n\t\tawscloud.AWS,\n\t\twire.Struct(new(awsmysql.URLOpener), \"CertSource\"),\n\t\tapplicationSet,\n\t\tawsBucket,\n\t\tawsMOTDVar,\n\t\topenAWSDatabase,\n\t)\n\treturn nil, nil, nil\n}\n\n// awsBucket is a Wire provider function that returns the S3 bucket based on the\n// command-line flags.\nfunc awsBucket(ctx context.Context, client *s3.Client, flags *cliFlags) (*blob.Bucket, func(), error) {\n\tb, err := s3blob.OpenBucketV2(ctx, client, flags.bucket, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn b, func() { b.Close() }, nil\n}\n\n// openAWSDatabase is a Wire provider function that connects to an AWS RDS\n// MySQL database based on the command-line flags.\nfunc openAWSDatabase(ctx context.Context, opener *awsmysql.URLOpener, flags *cliFlags) (*sql.DB, func(), error) {\n\tdb, err := opener.OpenMySQLURL(ctx, &url.URL{\n\t\tScheme: \"awsmysql\",\n\t\tUser:   url.UserPassword(flags.dbUser, flags.dbPassword),\n\t\tHost:   flags.dbHost,\n\t\tPath:   \"/\" + flags.dbName,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn db, func() { db.Close() }, nil\n}\n\n// awsMOTDVar is a Wire provider function that returns the Message of the Day\n// variable from SSM Parameter Store.\nfunc awsMOTDVar(ctx context.Context, client *ssm.Client, flags *cliFlags) (*runtimevar.Variable, error) {\n\treturn awsparamstore.OpenVariableV2(client, flags.motdVar, runtimevar.StringDecoder, &awsparamstore.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n}\n"
  },
  {
    "path": "samples/guestbook/inject_azure.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build wireinject\n// +build wireinject\n\npackage main\n\nimport (\n\t\"context\"\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/trace\"\n\n\tazcontainer \"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/azureblob\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/blobvar\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/requestlog\"\n)\n\n// This file wires the generic interfaces up to Microsoft Azure. It\n// won't be directly included in the final binary, since it includes a Wire\n// injector template function (setupAzure), but the declarations will be copied\n// into wire_gen.go when Wire is run.\n\n// setupAzure is a Wire injector function that sets up the application using\n// Azure.\nfunc setupAzure(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\t// This will be filled in by Wire with providers from the provider sets in\n\t// wire.Build.\n\twire.Build(\n\t\twire.InterfaceValue(new(requestlog.Logger), requestlog.Logger(nil)),\n\t\tazureblob.NewDefaultServiceURLOptions,\n\t\tazureblob.NewDefaultClient,\n\t\tazureblob.NewServiceURL,\n\t\tapplicationSet,\n\t\tbucketName,\n\t\tazureBucket,\n\t\tazureMOTDVar,\n\t\tserver.Set,\n\t\twire.InterfaceValue(new(propagation.TextMapPropagator), propagation.TextMapPropagator(nil)),\n\t\twire.InterfaceValue(new(trace.TracerProvider), trace.TracerProvider(nil)),\n\t\twire.InterfaceValue(new(metric.MeterProvider), metric.MeterProvider(nil)),\n\t\tdialLocalSQL,\n\t)\n\treturn nil, nil, nil\n}\n\nfunc bucketName(flags *cliFlags) azureblob.ContainerName {\n\treturn azureblob.ContainerName(flags.bucket)\n}\n\n// azureBucket is a Wire provider function that returns the Azure bucket based\n// on the command-line flags.\nfunc azureBucket(ctx context.Context, client *azcontainer.Client, flags *cliFlags) (*blob.Bucket, func(), error) {\n\tb, err := azureblob.OpenBucket(ctx, client, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn b, func() { b.Close() }, nil\n}\n\n// azureMOTDVar is a Wire provider function that returns the Message of the Day\n// variable read from a blob stored in Azure.\nfunc azureMOTDVar(ctx context.Context, b *blob.Bucket, flags *cliFlags) (*runtimevar.Variable, error) {\n\treturn blobvar.OpenVariable(b, flags.motdVar, runtimevar.StringDecoder, &blobvar.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n}\n"
  },
  {
    "path": "samples/guestbook/inject_gcp.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build wireinject\n// +build wireinject\n\npackage main\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"net/url\"\n\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/gcsblob\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/gcp/gcpcloud\"\n\t\"gocloud.dev/mysql/gcpmysql\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\t\"gocloud.dev/server\"\n\tpb \"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1\"\n)\n\n// This file wires the generic interfaces up to Google Cloud Platform (GCP). It\n// won't be directly included in the final binary, since it includes a Wire\n// injector template function (setupGCP), but the declarations will be copied\n// into wire_gen.go when Wire is run.\n\n// setupGCP is a Wire injector function that sets up the application using GCP.\nfunc setupGCP(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\t// This will be filled in by Wire with providers from the provider sets in\n\t// wire.Build.\n\twire.Build(\n\t\tgcpcloud.GCP,\n\t\twire.Struct(new(gcpmysql.URLOpener), \"CertSource\"),\n\t\tapplicationSet,\n\t\tgcpBucket,\n\t\tgcpMOTDVar,\n\t\topenGCPDatabase,\n\t)\n\treturn nil, nil, nil\n}\n\n// gcpBucket is a Wire provider function that returns the GCS bucket based on\n// the command-line flags.\nfunc gcpBucket(ctx context.Context, flags *cliFlags, client *gcp.HTTPClient) (*blob.Bucket, func(), error) {\n\tb, err := gcsblob.OpenBucket(ctx, client, flags.bucket, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn b, func() { b.Close() }, nil\n}\n\n// openGCPDatabase is a Wire provider function that connects to a GCP Cloud SQL\n// MySQL database based on the command-line flags.\nfunc openGCPDatabase(ctx context.Context, opener *gcpmysql.URLOpener, id gcp.ProjectID, flags *cliFlags) (*sql.DB, func(), error) {\n\tdb, err := opener.OpenMySQLURL(ctx, &url.URL{\n\t\tScheme: \"gcpmysql\",\n\t\tUser:   url.UserPassword(flags.dbUser, flags.dbPassword),\n\t\tHost:   string(id),\n\t\tPath:   fmt.Sprintf(\"/%s/%s/%s\", flags.cloudSQLRegion, flags.dbHost, flags.dbName),\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn db, func() { db.Close() }, nil\n}\n\n// gcpMOTDVar is a Wire provider function that returns the Message of the Day\n// variable from Runtime Configurator.\nfunc gcpMOTDVar(ctx context.Context, client pb.RuntimeConfigManagerClient, project gcp.ProjectID, flags *cliFlags) (*runtimevar.Variable, func(), error) {\n\tvariableKey := gcpruntimeconfig.VariableKey(project, flags.runtimeConfigName, flags.motdVar)\n\tv, err := gcpruntimeconfig.OpenVariable(client, variableKey, runtimevar.StringDecoder, &gcpruntimeconfig.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn v, func() { v.Close() }, nil\n}\n"
  },
  {
    "path": "samples/guestbook/inject_local.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n//go:build wireinject\n// +build wireinject\n\npackage main\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\n\t\"github.com/go-sql-driver/mysql\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/fileblob\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/filevar\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/requestlog\"\n)\n\n// This file wires the generic interfaces up to local implementations. It won't\n// be directly included in the final binary, since it includes a Wire injector\n// template function (setupLocal), but the declarations will be copied into\n// wire_gen.go when Wire is run.\n\n// setupLocal is a Wire injector function that sets up the application using\n// local implementations.\nfunc setupLocal(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\t// This will be filled in by Wire with providers from the provider sets in\n\t// wire.Build.\n\twire.Build(\n\t\twire.InterfaceValue(new(requestlog.Logger), requestlog.Logger(nil)),\n\t\tserver.Set,\n\t\tnewPropagationTextMap,\n\t\tnewTraceSampler,\n\t\tnewTraceExporter,\n\t\totelTracesProviderSet,\n\t\totelMetricsProviderSet,\n\t\tnewMetricsReader,\n\t\tapplicationSet,\n\t\tdialLocalSQL,\n\t\tlocalBucket,\n\t\tlocalRuntimeVar,\n\t)\n\treturn nil, nil, nil\n}\n\n// localBucket is a Wire provider function that returns a directory-based bucket\n// based on the command-line flags.\nfunc localBucket(flags *cliFlags) (*blob.Bucket, error) {\n\treturn fileblob.OpenBucket(flags.bucket, nil)\n}\n\n// dialLocalSQL is a Wire provider function that connects to a MySQL database\n// (usually on localhost).\nfunc dialLocalSQL(flags *cliFlags) (*sql.DB, error) {\n\tcfg := &mysql.Config{\n\t\tNet:                  \"tcp\",\n\t\tAddr:                 flags.dbHost,\n\t\tDBName:               flags.dbName,\n\t\tUser:                 flags.dbUser,\n\t\tPasswd:               flags.dbPassword,\n\t\tAllowNativePasswords: true,\n\t}\n\treturn sql.Open(\"mysql\", cfg.FormatDSN())\n}\n\n// localRuntimeVar is a Wire provider function that returns the Message of the\n// Day variable based on a local file.\nfunc localRuntimeVar(flags *cliFlags) (*runtimevar.Variable, func(), error) {\n\tv, err := filevar.OpenVariable(flags.motdVar, runtimevar.StringDecoder, &filevar.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn v, func() { v.Close() }, nil\n}\n"
  },
  {
    "path": "samples/guestbook/localdb/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/signal\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\tpipe \"gopkg.in/pipe.v2\"\n)\n\nfunc main() {\n\tguestbookDir := flag.String(\"guestbook_dir\", \".\", \"directory containing guestbook sample source code\")\n\tflag.Parse()\n\tif flag.NArg() > 1 {\n\t\tfmt.Fprintf(os.Stderr, \"usage: localdb [flags] container_name\\n\")\n\t\tos.Exit(1)\n\t}\n\tlog.SetPrefix(\"localdb: \")\n\tlog.SetFlags(0)\n\tif err := runLocalDB(flag.Arg(0), *guestbookDir); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\nfunc runLocalDB(containerName, guestbookDir string) error {\n\timage := \"mysql:5.6\"\n\n\tlog.Printf(\"Starting container running MySQL\")\n\tdockerArgs := []string{\"run\", \"--rm\"}\n\tif containerName != \"\" {\n\t\tdockerArgs = append(dockerArgs, \"--name\", containerName)\n\t}\n\tdockerArgs = append(dockerArgs,\n\t\t\"--platform\", \"linux/amd64\",\n\t\t\"--env\", \"MYSQL_DATABASE=guestbook\",\n\t\t\"--env\", \"MYSQL_ROOT_PASSWORD=password\",\n\t\t\"--detach\",\n\t\t\"--publish\", \"3306:3306\",\n\t\timage)\n\tcmd := exec.Command(\"docker\", dockerArgs...)\n\tcmd.Stderr = os.Stderr\n\tout, err := cmd.Output()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"running %v: %v: %s\", cmd.Args, err, out)\n\t}\n\tcontainerID := strings.TrimSpace(string(out))\n\tdefer func() {\n\t\tlog.Printf(\"killing %s\", containerID)\n\t\tstop := exec.Command(\"docker\", \"kill\", containerID)\n\t\tstop.Stderr = os.Stderr\n\t\tif err := stop.Run(); err != nil {\n\t\t\tlog.Printf(\"failed to kill db container: %v\", err)\n\t\t}\n\t}()\n\n\t// Stop the container on Ctrl-C.\n\tctx, cancel := context.WithCancel(context.Background())\n\tgo func() {\n\t\tc := make(chan os.Signal, 1)\n\t\t// TODO(ijt): Handle SIGTERM.\n\t\tsignal.Notify(c, os.Interrupt)\n\t\t<-c\n\t\tcancel()\n\t}()\n\n\tnap := 10 * time.Second\n\tlog.Printf(\"Waiting %v for database to come up\", nap)\n\tselect {\n\tcase <-time.After(nap):\n\t\t// ok\n\tcase <-ctx.Done():\n\t\treturn errors.New(\"interrupted while napping\")\n\t}\n\n\tlog.Printf(\"Initializing database schema and users\")\n\tschema, err := os.ReadFile(filepath.Join(guestbookDir, \"schema.sql\"))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading schema: %v\", err)\n\t}\n\troles, err := os.ReadFile(filepath.Join(guestbookDir, \"roles.sql\"))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"reading roles: %v\", err)\n\t}\n\ttooMany := 10\n\tvar i int\n\tfor i = 0; i < tooMany; i++ {\n\t\tmySQL := `mysql -h\"${MYSQL_PORT_3306_TCP_ADDR?}\" -P\"${MYSQL_PORT_3306_TCP_PORT?}\" -uroot -ppassword guestbook`\n\t\tp := pipe.Line(\n\t\t\tpipe.Read(strings.NewReader(string(schema)+string(roles))),\n\t\t\tpipe.Exec(\"docker\", \"run\", \"--rm\", \"--interactive\", \"--link\", containerID+\":mysql\", image, \"sh\", \"-c\", mySQL),\n\t\t)\n\t\tif _, stderr, err := pipe.DividedOutput(p); err != nil {\n\t\t\tlog.Printf(\"Failed to seed database: %q; retrying\", stderr)\n\t\t\tselect {\n\t\t\tcase <-time.After(time.Second):\n\t\t\t\tcontinue\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn errors.New(\"interrupted while napping in between database seeding attempts\")\n\t\t\t}\n\t\t}\n\t\tbreak\n\t}\n\tif i == tooMany {\n\t\treturn fmt.Errorf(\"gave up after %d tries to seed database\", i)\n\t}\n\n\tlog.Printf(\"Database running at localhost:3306\")\n\tattach := exec.CommandContext(ctx, \"docker\", \"attach\", containerID)\n\tattach.Stdout = os.Stdout\n\tattach.Stderr = os.Stderr\n\tif err := attach.Run(); err != nil {\n\t\treturn fmt.Errorf(\"running %v: %q\", attach.Args, err)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "samples/guestbook/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// guestbook is a sample application that records visitors' messages, displays a\n// cloud banner, and an administrative message.\npackage main\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"database/sql\"\n\t\"flag\"\n\t\"html/template\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/google/wire\"\n\t\"github.com/gorilla/mux\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/runtimevar\"\n\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/health\"\n\t\"gocloud.dev/server/health/sqlhealth\"\n)\n\ntype cliFlags struct {\n\tbucket          string\n\tdbHost          string\n\tdbName          string\n\tdbUser          string\n\tdbPassword      string\n\tmotdVar         string\n\tmotdVarWaitTime time.Duration\n\n\t// GCP only.\n\tcloudSQLRegion    string\n\truntimeConfigName string\n}\n\nvar envFlag string\n\nfunc main() {\n\t// Determine environment to set up based on flag.\n\tcf := new(cliFlags)\n\tflag.StringVar(&envFlag, \"env\", \"local\", \"environment to run under (gcp, aws, azure, or local)\")\n\taddr := flag.String(\"listen\", \":8080\", \"port to listen for HTTP on\")\n\tflag.StringVar(&cf.bucket, \"bucket\", \"\", \"bucket name\")\n\tflag.StringVar(&cf.dbHost, \"db_host\", \"\", \"database host or Cloud SQL instance name\")\n\tflag.StringVar(&cf.dbName, \"db_name\", \"guestbook\", \"database name\")\n\tflag.StringVar(&cf.dbUser, \"db_user\", \"guestbook\", \"database user\")\n\tflag.StringVar(&cf.dbPassword, \"db_password\", \"\", \"database user password\")\n\tflag.StringVar(&cf.motdVar, \"motd_var\", \"\", \"message of the day variable location\")\n\tflag.DurationVar(&cf.motdVarWaitTime, \"motd_var_wait_time\", 5*time.Second, \"polling frequency of message of the day\")\n\tflag.StringVar(&cf.cloudSQLRegion, \"cloud_sql_region\", \"\", \"region of the Cloud SQL instance (GCP only)\")\n\tflag.StringVar(&cf.runtimeConfigName, \"runtime_config\", \"\", \"Runtime Configurator config resource (GCP only)\")\n\tflag.Parse()\n\n\tctx := context.Background()\n\tvar srv *server.Server\n\tvar cleanup func()\n\tvar err error\n\tswitch envFlag {\n\tcase \"gcp\":\n\t\tsrv, cleanup, err = setupGCP(ctx, cf)\n\tcase \"aws\":\n\t\tsrv, cleanup, err = setupAWS(ctx, cf)\n\tcase \"azure\":\n\t\tif cf.dbHost == \"\" {\n\t\t\tcf.dbHost = \"localhost\"\n\t\t}\n\t\tif cf.dbPassword == \"\" {\n\t\t\tcf.dbPassword = \"xyzzy\"\n\t\t}\n\t\tsrv, cleanup, err = setupAzure(ctx, cf)\n\tcase \"local\":\n\t\t// The default MySQL instance is running on localhost\n\t\t// with this root password.\n\t\tif cf.dbHost == \"\" {\n\t\t\tcf.dbHost = \"localhost\"\n\t\t}\n\t\tif cf.dbPassword == \"\" {\n\t\t\tcf.dbPassword = \"xyzzy\"\n\t\t}\n\t\tsrv, cleanup, err = setupLocal(ctx, cf)\n\tdefault:\n\t\tlog.Fatalf(\"unknown -env=%s\", envFlag)\n\t}\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Listen and serve HTTP.\n\tlog.Printf(\"Running, connected to %q cloud\", envFlag)\n\tlog.Fatal(srv.ListenAndServe(*addr))\n}\n\n// applicationSet is the Wire provider set for the Guestbook application that\n// does not depend on the underlying platform.\nvar applicationSet = wire.NewSet(\n\tnewApplication,\n\tappHealthChecks,\n\tnewRouter,\n\twire.Bind(new(http.Handler), new(*mux.Router)),\n)\n\nfunc newRouter(app *application) *mux.Router {\n\tr := mux.NewRouter()\n\tr.HandleFunc(\"/\", app.index)\n\tr.HandleFunc(\"/sign\", app.sign)\n\tr.HandleFunc(\"/blob/{key:.+}\", app.serveBlob)\n\treturn r\n}\n\n// application is the main server struct for Guestbook. It contains the state of\n// the most recently read message of the day.\ntype application struct {\n\tdb      *sql.DB\n\tbucket  *blob.Bucket\n\tmotdVar *runtimevar.Variable\n}\n\n// newApplication creates a new application struct based on the backends and the message\n// of the day variable.\nfunc newApplication(db *sql.DB, bucket *blob.Bucket, motdVar *runtimevar.Variable) *application {\n\treturn &application{\n\t\tdb:      db,\n\t\tbucket:  bucket,\n\t\tmotdVar: motdVar,\n\t}\n}\n\n// index serves the server's landing page. It lists the 100 most recent\n// greetings, shows a cloud environment banner, and displays the message of the\n// day.\nfunc (app *application) index(w http.ResponseWriter, r *http.Request) {\n\tvar data struct {\n\t\tMOTD      string\n\t\tEnv       string\n\t\tBannerSrc string\n\t\tGreetings []greeting\n\t}\n\tsnap, err := app.motdVar.Latest(r.Context())\n\tif err != nil {\n\t\tlog.Println(\"index page error:\", err)\n\t\thttp.Error(w, \"could not load motd\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\tdata.MOTD = snap.Value.(string)\n\n\tswitch envFlag {\n\tcase \"gcp\":\n\t\tdata.Env = \"GCP\"\n\t\tdata.BannerSrc = \"/blob/gcp.png\"\n\tcase \"aws\":\n\t\tdata.Env = \"AWS\"\n\t\tdata.BannerSrc = \"/blob/aws.png\"\n\tcase \"azure\":\n\t\tdata.Env = \"Azure\"\n\t\tdata.BannerSrc = \"/blob/azure.png\"\n\tcase \"local\":\n\t\tdata.Env = \"Local\"\n\t\tdata.BannerSrc = \"/blob/gophers.jpg\"\n\t}\n\n\tconst query = \"SELECT content FROM (SELECT content, post_date FROM greetings ORDER BY post_date DESC LIMIT 100) AS recent_greetings ORDER BY post_date ASC;\"\n\tq, err := app.db.QueryContext(r.Context(), query)\n\tif err != nil {\n\t\tlog.Println(\"main page SQL error:\", err)\n\t\thttp.Error(w, \"could not load greetings\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\tdefer q.Close()\n\tfor q.Next() {\n\t\tvar g greeting\n\t\tif err := q.Scan(&g.Content); err != nil {\n\t\t\tlog.Println(\"main page SQL error:\", err)\n\t\t\thttp.Error(w, \"could not load greetings\", http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t\tdata.Greetings = append(data.Greetings, g)\n\t}\n\tif err := q.Err(); err != nil {\n\t\tlog.Println(\"main page SQL error:\", err)\n\t\thttp.Error(w, \"could not load greetings\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\tbuf := new(bytes.Buffer)\n\tif err := tmpl.Execute(buf, data); err != nil {\n\t\tlog.Println(\"template error:\", err)\n\t\thttp.Error(w, \"could not render page\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\tw.Header().Set(\"Content-Type\", \"text/html; charset=utf-8\")\n\tw.Header().Set(\"Content-Length\", strconv.Itoa(buf.Len()))\n\tif _, err := w.Write(buf.Bytes()); err != nil {\n\t\tlog.Println(\"writing response:\", err)\n\t}\n}\n\ntype greeting struct {\n\tContent string\n}\n\nvar tmpl = template.Must(template.New(\"index.html\").Parse(`<!DOCTYPE html>\n<title>Guestbook - {{.Env}}</title>\n<style type=\"text/css\">\nhtml, body {\n\tfont-family: Helvetica, sans-serif;\n}\nblockquote {\n\tfont-family: cursive, Helvetica, sans-serif;\n}\n.banner {\n\theight: 125px;\n\twidth: 250px;\n}\n.greeting {\n\tfont-size: 85%;\n}\n.motd {\n\tfont-weight: bold;\n}\n</style>\n<h1>Guestbook</h1>\n<div><img class=\"banner\" src=\"{{.BannerSrc}}\"></div>\n{{with .MOTD}}<p class=\"motd\">Admin says: {{.}}</p>{{end}}\n{{range .Greetings}}\n<div class=\"greeting\">\n\tSomeone wrote:\n\t<blockquote>{{.Content}}</blockquote>\n</div>\n{{end}}\n<form action=\"/sign\" method=\"POST\">\n\t<div><textarea name=\"content\" rows=\"3\"></textarea></div>\n\t<div><input type=\"submit\" value=\"Sign\"></div>\n</form>\n`))\n\n// sign is a form action handler for adding a greeting.\nfunc (app *application) sign(w http.ResponseWriter, r *http.Request) {\n\tif r.Method != \"POST\" {\n\t\tw.Header().Set(\"Allow\", \"POST\")\n\t\thttp.Error(w, \"Only POST allowed\", http.StatusMethodNotAllowed)\n\t\treturn\n\t}\n\tcontent := r.FormValue(\"content\")\n\tif content == \"\" {\n\t\thttp.Error(w, \"content must not be empty\", http.StatusBadRequest)\n\t\treturn\n\t}\n\tconst sqlStmt = \"INSERT INTO greetings (content) VALUES (?);\"\n\t_, err := app.db.ExecContext(r.Context(), sqlStmt, content)\n\tif err != nil {\n\t\tlog.Println(\"sign SQL error:\", err)\n\t\thttp.Error(w, \"database error\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\thttp.Redirect(w, r, \"/\", http.StatusSeeOther)\n}\n\n// serveBlob handles a request for a static asset by retrieving it from a bucket.\nfunc (app *application) serveBlob(w http.ResponseWriter, r *http.Request) {\n\tkey := mux.Vars(r)[\"key\"]\n\tblobReader, err := app.bucket.NewReader(r.Context(), key, nil)\n\tif err != nil {\n\t\tlog.Println(\"serve blob:\", err)\n\t\tif gcerrors.Code(err) == gcerrors.NotFound {\n\t\t\thttp.Error(w, \"blob not found\", http.StatusNotFound)\n\t\t} else {\n\t\t\thttp.Error(w, \"blob read error\", http.StatusInternalServerError)\n\t\t}\n\t\treturn\n\t}\n\tdefer blobReader.Close()\n\tw.Header().Set(\"Content-Type\", blobReader.ContentType())\n\tw.Header().Set(\"Content-Length\", strconv.FormatInt(blobReader.Size(), 10))\n\tif _, err = io.Copy(w, blobReader); err != nil {\n\t\tlog.Println(\"Copying blob:\", err)\n\t}\n}\n\n// appHealthChecks returns a health check for the database. This will signal\n// to Kubernetes or other orchestrators that the server should not receive\n// traffic until the server is able to connect to its database.\nfunc appHealthChecks(db *sql.DB) ([]health.Checker, func()) {\n\tdbCheck := sqlhealth.New(db)\n\tlist := []health.Checker{dbCheck}\n\treturn list, func() {\n\t\tdbCheck.Stop()\n\t}\n}\n"
  },
  {
    "path": "samples/guestbook/roles.sql",
    "content": "-- Copyright 2018 The Go Cloud Development Kit Authors\n--\n-- Licensed under the Apache License, Version 2.0 (the \"License\");\n-- you may not use this file except in compliance with the License.\n-- You may obtain a copy of the License at\n--\n--     https://www.apache.org/licenses/LICENSE-2.0\n--\n-- Unless required by applicable law or agreed to in writing, software\n-- distributed under the License is distributed on an \"AS IS\" BASIS,\n-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-- See the License for the specific language governing permissions and\n-- limitations under the License.\n\nCREATE USER 'guestbook'@'%' IDENTIFIED BY 'xyzzy';\nGRANT SELECT,INSERT,UPDATE,DELETE ON guestbook.* TO 'guestbook'@'%';\n"
  },
  {
    "path": "samples/guestbook/schema.sql",
    "content": "-- Copyright 2018 The Go Cloud Development Kit Authors\n--\n-- Licensed under the Apache License, Version 2.0 (the \"License\");\n-- you may not use this file except in compliance with the License.\n-- You may obtain a copy of the License at\n--\n--     https://www.apache.org/licenses/LICENSE-2.0\n--\n-- Unless required by applicable law or agreed to in writing, software\n-- distributed under the License is distributed on an \"AS IS\" BASIS,\n-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-- See the License for the specific language governing permissions and\n-- limitations under the License.\n\nCREATE TABLE greetings (\n    content VARCHAR(255) CHARACTER SET utf8\n        NOT NULL\n        CHECK (content <> ''),\n    post_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n);\n"
  },
  {
    "path": "samples/guestbook/telemetry.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"github.com/google/wire\"\n\t\"go.opentelemetry.io/contrib/exporters/autoexport\"\n\t\"go.opentelemetry.io/contrib/propagators/autoprop\"\n\t\"go.opentelemetry.io/otel/log\"\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\tsdklog \"go.opentelemetry.io/otel/sdk/log\"\n\tsdkmetric \"go.opentelemetry.io/otel/sdk/metric\"\n\t\"go.opentelemetry.io/otel/sdk/resource\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"go.opentelemetry.io/otel/trace\"\n)\n\n// otelTracesProviderSet is a Wire provider set that provides the open telemetry trace provider\nvar otelTracesProviderSet = wire.NewSet(\n\tNewTraceProvider,\n\twire.Bind(new(trace.TracerProvider), new(*sdktrace.TracerProvider)),\n)\n\n// otelMetricsProviderSet is a Wire provider set that provides the open telemetry metrics provider\nvar otelMetricsProviderSet = wire.NewSet(\n\tNewMeterProvider,\n\twire.Bind(new(metric.MeterProvider), new(*sdkmetric.MeterProvider)),\n)\n\n// OtelLogsSet is a Wire provider set that provides the open telemetry logs provider given the exporter\nvar OtelLogsSet = wire.NewSet(\n\tNewLogsExporter,\n\tNewLoggerProvider,\n\twire.Bind(new(log.LoggerProvider), new(*sdklog.LoggerProvider)),\n)\n\nfunc newResource() *resource.Resource {\n\treturn resource.Default()\n}\n\nfunc newPropagationTextMap() propagation.TextMapPropagator {\n\treturn autoprop.NewTextMapPropagator()\n}\n\n// newTraceExporter returns a new OpenTelemetry gcp trace exporter.\nfunc newTraceExporter(ctx context.Context) (sdktrace.SpanExporter, error) {\n\n\ttraceExporter, err := autoexport.NewSpanExporter(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn traceExporter, nil\n}\n\n// newTraceSampler returns a new OpenTelemetry trace sampler.\nfunc newTraceSampler(ctx context.Context) sdktrace.Sampler {\n\treturn sdktrace.AlwaysSample()\n}\n\n// NewTraceProvider returns a new trace provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider,\nfunc NewTraceProvider(ctx context.Context, exporter sdktrace.SpanExporter, sampler sdktrace.Sampler) (*sdktrace.TracerProvider, func()) {\n\n\tres := newResource()\n\ttp := sdktrace.NewTracerProvider(\n\t\tsdktrace.WithBatcher(exporter),\n\t\tsdktrace.WithSampler(sampler),\n\t\tsdktrace.WithResource(res),\n\t)\n\n\treturn tp, func() { _ = tp.Shutdown(ctx) }\n}\n\n// newMetricsReader returns a new OpenTelemetry gcp metrics exporter.\nfunc newMetricsReader(ctx context.Context) (sdkmetric.Reader, error) {\n\t// Create and start new OTLP metric exporter\n\tmetricReader, err := autoexport.NewMetricReader(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn metricReader, nil\n}\n\n// NewMeterProvider returns a new metric provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider,\nfunc NewMeterProvider(ctx context.Context, reader sdkmetric.Reader) (*sdkmetric.MeterProvider, func()) {\n\n\tres := newResource()\n\n\tmeterProvider := sdkmetric.NewMeterProvider(\n\t\tsdkmetric.WithResource(res),\n\t\tsdkmetric.WithReader(reader),\n\t)\n\treturn meterProvider, func() { _ = meterProvider.Shutdown(ctx) }\n}\n\n// NewLogsExporter returns a new OpenTelemetry gcp metrics exporter.\nfunc NewLogsExporter(ctx context.Context) (sdklog.Exporter, error) {\n\t// Create and start new OTLP metric exporter\n\tlogsExporter, err := autoexport.NewLogExporter(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn logsExporter, nil\n}\n\n// NewLoggerProvider returns a new logger provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider,\nfunc NewLoggerProvider(ctx context.Context, res *resource.Resource, exporter sdklog.Exporter) (*sdklog.LoggerProvider, func(), error) {\n\n\tvar err error\n\tif exporter == nil {\n\t\texporter, err = autoexport.NewLogExporter(ctx)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tprocessor := sdklog.NewBatchProcessor(exporter)\n\tlogProvider := sdklog.NewLoggerProvider(\n\t\tsdklog.WithResource(res),\n\t\tsdklog.WithProcessor(processor),\n\t)\n\treturn logProvider, func() { _ = logProvider.Shutdown(context.TODO()) }, nil\n}\n"
  },
  {
    "path": "samples/guestbook/wire_gen.go",
    "content": "// Code generated by Wire. DO NOT EDIT.\n\n//go:generate go run -mod=mod github.com/google/wire/cmd/wire\n//go:build !wireinject\n// +build !wireinject\n\npackage main\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container\"\n\t\"github.com/aws/aws-sdk-go-v2/service/s3\"\n\t\"github.com/aws/aws-sdk-go-v2/service/ssm\"\n\t\"github.com/go-sql-driver/mysql\"\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/trace\"\n\t\"gocloud.dev/aws\"\n\t\"gocloud.dev/aws/rds\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/blob/azureblob\"\n\t\"gocloud.dev/blob/fileblob\"\n\t\"gocloud.dev/blob/gcsblob\"\n\t\"gocloud.dev/blob/s3blob\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/gcp/cloudsql\"\n\t\"gocloud.dev/mysql/awsmysql\"\n\t\"gocloud.dev/mysql/gcpmysql\"\n\t\"gocloud.dev/runtimevar\"\n\t\"gocloud.dev/runtimevar/awsparamstore\"\n\t\"gocloud.dev/runtimevar/blobvar\"\n\t\"gocloud.dev/runtimevar/filevar\"\n\t\"gocloud.dev/runtimevar/gcpruntimeconfig\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/requestlog\"\n\t\"gocloud.dev/server/sdserver\"\n\t\"gocloud.dev/server/xrayserver\"\n\t\"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1\"\n\t\"net/http\"\n\t\"net/url\"\n)\n\n// Injectors from inject_aws.go:\n\n// setupAWS is a Wire injector function that sets up the application using AWS.\nfunc setupAWS(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\tclient := _wireClientValue\n\tcertFetcher := &rds.CertFetcher{\n\t\tClient: client,\n\t}\n\turlOpener := &awsmysql.URLOpener{\n\t\tCertSource: certFetcher,\n\t}\n\tdb, cleanup, err := openAWSDatabase(ctx, urlOpener, flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tconfig, err := aws.NewDefaultV2Config(ctx)\n\tif err != nil {\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\ts3Client := s3blob.Dial(config)\n\tbucket, cleanup2, err := awsBucket(ctx, s3Client, flags)\n\tif err != nil {\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tssmClient := awsparamstore.Dial(config)\n\tvariable, err := awsMOTDVar(ctx, ssmClient, flags)\n\tif err != nil {\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tmainApplication := newApplication(db, bucket, variable)\n\trouter := newRouter(mainApplication)\n\tncsaLogger := xrayserver.NewRequestLogger()\n\tv, cleanup3 := appHealthChecks(db)\n\tpropagator := xrayserver.NewTextMapPropagator()\n\tspanExporter, err := xrayserver.NewTraceExporter(ctx)\n\tif err != nil {\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tsampler := xrayserver.NewTraceSampler()\n\ttracerProvider, cleanup4, err := xrayserver.NewTraceProvider(ctx, spanExporter, sampler)\n\tif err != nil {\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\treader, err := xrayserver.NewMetricsReader(ctx)\n\tif err != nil {\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tmeterProvider, cleanup5, err := xrayserver.NewMeterProvider(ctx, reader)\n\tif err != nil {\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tdefaultDriver := _wireDefaultDriverValue\n\toptions := &server.Options{\n\t\tRequestLogger:          ncsaLogger,\n\t\tHealthChecks:           v,\n\t\tTraceTextMapPropagator: propagator,\n\t\tTraceProvider:          tracerProvider,\n\t\tMetricsProvider:        meterProvider,\n\t\tDriver:                 defaultDriver,\n\t}\n\tserverServer := server.New(router, options)\n\treturn serverServer, func() {\n\t\tcleanup5()\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t}, nil\n}\n\nvar (\n\t_wireClientValue        = http.DefaultClient\n\t_wireDefaultDriverValue = &server.DefaultDriver{}\n)\n\n// Injectors from inject_azure.go:\n\n// setupAzure is a Wire injector function that sets up the application using\n// Azure.\nfunc setupAzure(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\tdb, err := dialLocalSQL(flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tserviceURLOptions := azureblob.NewDefaultServiceURLOptions()\n\tserviceURL, err := azureblob.NewServiceURL(serviceURLOptions)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tcontainerName := bucketName(flags)\n\tclient, err := azureblob.NewDefaultClient(serviceURL, containerName)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tbucket, cleanup, err := azureBucket(ctx, client, flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tvariable, err := azureMOTDVar(ctx, bucket, flags)\n\tif err != nil {\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tmainApplication := newApplication(db, bucket, variable)\n\trouter := newRouter(mainApplication)\n\tlogger := _wireLoggerValue\n\tv, cleanup2 := appHealthChecks(db)\n\ttextMapPropagator := _wireTextMapPropagatorValue\n\ttracerProvider := _wireTracerProviderValue\n\tmeterProvider := _wireMeterProviderValue\n\tdefaultDriver := _wireDefaultDriverValue\n\toptions := &server.Options{\n\t\tRequestLogger:          logger,\n\t\tHealthChecks:           v,\n\t\tTraceTextMapPropagator: textMapPropagator,\n\t\tTraceProvider:          tracerProvider,\n\t\tMetricsProvider:        meterProvider,\n\t\tDriver:                 defaultDriver,\n\t}\n\tserverServer := server.New(router, options)\n\treturn serverServer, func() {\n\t\tcleanup2()\n\t\tcleanup()\n\t}, nil\n}\n\nvar (\n\t_wireLoggerValue            = requestlog.Logger(nil)\n\t_wireTextMapPropagatorValue = propagation.TextMapPropagator(nil)\n\t_wireTracerProviderValue    = trace.TracerProvider(nil)\n\t_wireMeterProviderValue     = metric.MeterProvider(nil)\n)\n\n// Injectors from inject_gcp.go:\n\n// setupGCP is a Wire injector function that sets up the application using GCP.\nfunc setupGCP(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\troundTripper := gcp.DefaultTransport()\n\tcredentials, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\ttokenSource := gcp.CredentialsTokenSource(credentials)\n\thttpClient, err := gcp.NewHTTPClient(roundTripper, tokenSource)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tremoteCertSource := cloudsql.NewCertSource(httpClient)\n\turlOpener := &gcpmysql.URLOpener{\n\t\tCertSource: remoteCertSource,\n\t}\n\tprojectID, err := gcp.DefaultProjectID(credentials)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdb, cleanup, err := openGCPDatabase(ctx, urlOpener, projectID, flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tbucket, cleanup2, err := gcpBucket(ctx, flags, httpClient)\n\tif err != nil {\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\truntimeConfigManagerClient, cleanup3, err := gcpruntimeconfig.Dial(ctx, tokenSource)\n\tif err != nil {\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tvariable, cleanup4, err := gcpMOTDVar(ctx, runtimeConfigManagerClient, projectID, flags)\n\tif err != nil {\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tmainApplication := newApplication(db, bucket, variable)\n\trouter := newRouter(mainApplication)\n\tstackdriverLogger := sdserver.NewRequestLogger()\n\tv, cleanup5 := appHealthChecks(db)\n\ttextMapPropagator := sdserver.NewTextMapPropagator()\n\tspanExporter, err := sdserver.NewTraceExporter(projectID)\n\tif err != nil {\n\t\tcleanup5()\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tsampler := sdserver.NewTraceSampler(ctx)\n\ttracerProvider, cleanup6, err := sdserver.NewTraceProvider(ctx, spanExporter, sampler)\n\tif err != nil {\n\t\tcleanup5()\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\treader, err := sdserver.NewMetricsReader(projectID)\n\tif err != nil {\n\t\tcleanup6()\n\t\tcleanup5()\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tmeterProvider, cleanup7, err := sdserver.NewMeterProvider(ctx, reader)\n\tif err != nil {\n\t\tcleanup6()\n\t\tcleanup5()\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tdefaultDriver := _wireDefaultDriverValue\n\toptions := &server.Options{\n\t\tRequestLogger:          stackdriverLogger,\n\t\tHealthChecks:           v,\n\t\tTraceTextMapPropagator: textMapPropagator,\n\t\tTraceProvider:          tracerProvider,\n\t\tMetricsProvider:        meterProvider,\n\t\tDriver:                 defaultDriver,\n\t}\n\tserverServer := server.New(router, options)\n\treturn serverServer, func() {\n\t\tcleanup7()\n\t\tcleanup6()\n\t\tcleanup5()\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t}, nil\n}\n\n// Injectors from inject_local.go:\n\n// setupLocal is a Wire injector function that sets up the application using\n// local implementations.\nfunc setupLocal(ctx context.Context, flags *cliFlags) (*server.Server, func(), error) {\n\tdb, err := dialLocalSQL(flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tbucket, err := localBucket(flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tvariable, cleanup, err := localRuntimeVar(flags)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tmainApplication := newApplication(db, bucket, variable)\n\trouter := newRouter(mainApplication)\n\tlogger := _wireRequestlogLoggerValue\n\tv, cleanup2 := appHealthChecks(db)\n\ttextMapPropagator := newPropagationTextMap()\n\tspanExporter, err := newTraceExporter(ctx)\n\tif err != nil {\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tsampler := newTraceSampler(ctx)\n\ttracerProvider, cleanup3 := NewTraceProvider(ctx, spanExporter, sampler)\n\treader, err := newMetricsReader(ctx)\n\tif err != nil {\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t\treturn nil, nil, err\n\t}\n\tmeterProvider, cleanup4 := NewMeterProvider(ctx, reader)\n\tdefaultDriver := _wireDefaultDriverValue\n\toptions := &server.Options{\n\t\tRequestLogger:          logger,\n\t\tHealthChecks:           v,\n\t\tTraceTextMapPropagator: textMapPropagator,\n\t\tTraceProvider:          tracerProvider,\n\t\tMetricsProvider:        meterProvider,\n\t\tDriver:                 defaultDriver,\n\t}\n\tserverServer := server.New(router, options)\n\treturn serverServer, func() {\n\t\tcleanup4()\n\t\tcleanup3()\n\t\tcleanup2()\n\t\tcleanup()\n\t}, nil\n}\n\nvar (\n\t_wireRequestlogLoggerValue = requestlog.Logger(nil)\n)\n\n// inject_aws.go:\n\n// awsBucket is a Wire provider function that returns the S3 bucket based on the\n// command-line flags.\nfunc awsBucket(ctx context.Context, client *s3.Client, flags *cliFlags) (*blob.Bucket, func(), error) {\n\tb, err := s3blob.OpenBucketV2(ctx, client, flags.bucket, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn b, func() { b.Close() }, nil\n}\n\n// openAWSDatabase is a Wire provider function that connects to an AWS RDS\n// MySQL database based on the command-line flags.\nfunc openAWSDatabase(ctx context.Context, opener *awsmysql.URLOpener, flags *cliFlags) (*sql.DB, func(), error) {\n\tdb, err := opener.OpenMySQLURL(ctx, &url.URL{\n\t\tScheme: \"awsmysql\",\n\t\tUser:   url.UserPassword(flags.dbUser, flags.dbPassword),\n\t\tHost:   flags.dbHost,\n\t\tPath:   \"/\" + flags.dbName,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn db, func() { db.Close() }, nil\n}\n\n// awsMOTDVar is a Wire provider function that returns the Message of the Day\n// variable from SSM Parameter Store.\nfunc awsMOTDVar(ctx context.Context, client *ssm.Client, flags *cliFlags) (*runtimevar.Variable, error) {\n\treturn awsparamstore.OpenVariableV2(client, flags.motdVar, runtimevar.StringDecoder, &awsparamstore.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n}\n\n// inject_azure.go:\n\nfunc bucketName(flags *cliFlags) azureblob.ContainerName {\n\treturn azureblob.ContainerName(flags.bucket)\n}\n\n// azureBucket is a Wire provider function that returns the Azure bucket based\n// on the command-line flags.\nfunc azureBucket(ctx context.Context, client *container.Client, flags *cliFlags) (*blob.Bucket, func(), error) {\n\tb, err := azureblob.OpenBucket(ctx, client, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn b, func() { b.Close() }, nil\n}\n\n// azureMOTDVar is a Wire provider function that returns the Message of the Day\n// variable read from a blob stored in Azure.\nfunc azureMOTDVar(ctx context.Context, b *blob.Bucket, flags *cliFlags) (*runtimevar.Variable, error) {\n\treturn blobvar.OpenVariable(b, flags.motdVar, runtimevar.StringDecoder, &blobvar.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n}\n\n// inject_gcp.go:\n\n// gcpBucket is a Wire provider function that returns the GCS bucket based on\n// the command-line flags.\nfunc gcpBucket(ctx context.Context, flags *cliFlags, client *gcp.HTTPClient) (*blob.Bucket, func(), error) {\n\tb, err := gcsblob.OpenBucket(ctx, client, flags.bucket, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn b, func() { b.Close() }, nil\n}\n\n// openGCPDatabase is a Wire provider function that connects to a GCP Cloud SQL\n// MySQL database based on the command-line flags.\nfunc openGCPDatabase(ctx context.Context, opener *gcpmysql.URLOpener, id gcp.ProjectID, flags *cliFlags) (*sql.DB, func(), error) {\n\tdb, err := opener.OpenMySQLURL(ctx, &url.URL{\n\t\tScheme: \"gcpmysql\",\n\t\tUser:   url.UserPassword(flags.dbUser, flags.dbPassword),\n\t\tHost:   string(id),\n\t\tPath:   fmt.Sprintf(\"/%s/%s/%s\", flags.cloudSQLRegion, flags.dbHost, flags.dbName),\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn db, func() { db.Close() }, nil\n}\n\n// gcpMOTDVar is a Wire provider function that returns the Message of the Day\n// variable from Runtime Configurator.\nfunc gcpMOTDVar(ctx context.Context, client runtimeconfig.RuntimeConfigManagerClient, project gcp.ProjectID, flags *cliFlags) (*runtimevar.Variable, func(), error) {\n\tvariableKey := gcpruntimeconfig.VariableKey(project, flags.runtimeConfigName, flags.motdVar)\n\tv, err := gcpruntimeconfig.OpenVariable(client, variableKey, runtimevar.StringDecoder, &gcpruntimeconfig.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn v, func() { v.Close() }, nil\n}\n\n// inject_local.go:\n\n// localBucket is a Wire provider function that returns a directory-based bucket\n// based on the command-line flags.\nfunc localBucket(flags *cliFlags) (*blob.Bucket, error) {\n\treturn fileblob.OpenBucket(flags.bucket, nil)\n}\n\n// dialLocalSQL is a Wire provider function that connects to a MySQL database\n// (usually on localhost).\nfunc dialLocalSQL(flags *cliFlags) (*sql.DB, error) {\n\tcfg := &mysql.Config{\n\t\tNet:                  \"tcp\",\n\t\tAddr:                 flags.dbHost,\n\t\tDBName:               flags.dbName,\n\t\tUser:                 flags.dbUser,\n\t\tPasswd:               flags.dbPassword,\n\t\tAllowNativePasswords: true,\n\t}\n\treturn sql.Open(\"mysql\", cfg.FormatDSN())\n}\n\n// localRuntimeVar is a Wire provider function that returns the Message of the\n// Day variable based on a local file.\nfunc localRuntimeVar(flags *cliFlags) (*runtimevar.Variable, func(), error) {\n\tv, err := filevar.OpenVariable(flags.motdVar, runtimevar.StringDecoder, &filevar.Options{\n\t\tWaitDuration: flags.motdVarWaitTime,\n\t})\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn v, func() { v.Close() }, nil\n}\n"
  },
  {
    "path": "samples/order/common.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"time\"\n)\n\n// Order represents an order for a single image operation.\ntype Order struct {\n\tID               string    // unique ID, randomly generated\n\tEmail            string    // email address of customer\n\tInImage          string    // name of input image\n\tOutImage         string    // name of output image; empty if there was an error\n\tCreateTime       time.Time // time the order was created\n\tFinishTime       time.Time // time the order was finished\n\tNote             string    // note to the customer from the processor, describing success or error\n\tDocstoreRevision any\n}\n\n// OrderRequest is a request for an order. It is the contents of the messages\n// sent to the requests topic.\ntype OrderRequest struct {\n\tID         string\n\tEmail      string\n\tInImage    string\n\tCreateTime time.Time\n}\n"
  },
  {
    "path": "samples/order/frontend.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gocloud.dev/blob\"\n\t_ \"gocloud.dev/blob/fileblob\"\n\t\"gocloud.dev/docstore\"\n\t_ \"gocloud.dev/docstore/memdocstore\"\n\t\"gocloud.dev/pubsub\"\n\t_ \"gocloud.dev/pubsub/mempubsub\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/requestlog\"\n)\n\n// A frontend is a web server that takes image-processing orders.\ntype frontend struct {\n\trequestTopic *pubsub.Topic\n\tbucket       *blob.Bucket\n\tcoll         *docstore.Collection\n}\n\nvar (\n\tlistTemplate      *template.Template\n\torderFormTemplate *template.Template\n)\n\nfunc init() {\n\t// Work around a bug in go test where -coverpkg=./... uses the wrong\n\t// working directory (golang.org/issue/33016).\n\tdir, err := os.Getwd()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tif filepath.Base(dir) != \"order\" {\n\t\t// The bug puts us in a sibling directory.\n\t\tlog.Printf(\"working around #33016, which put us in %s\", dir)\n\t\tdir = filepath.Join(filepath.Dir(dir), \"order\")\n\t}\n\tlistTemplate = template.Must(template.ParseFiles(filepath.Join(dir, \"list.htmlt\")))\n\torderFormTemplate = template.Must(template.ParseFiles(filepath.Join(dir, \"order-form.htmlt\")))\n}\n\n// run starts the server on port and runs it indefinitely.\nfunc (f *frontend) run(ctx context.Context, port int) error {\n\thttp.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, \"index.html\") })\n\thttp.HandleFunc(\"/style.css\", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, \"style.css\") })\n\thttp.HandleFunc(\"/orders/\", wrapHTTPError(f.listOrders))\n\thttp.HandleFunc(\"/orders/new\", wrapHTTPError(f.orderForm))\n\thttp.HandleFunc(\"/createOrder\", wrapHTTPError(f.createOrder))\n\thttp.HandleFunc(\"/show/\", wrapHTTPError(f.showImage))\n\n\trl := requestlog.NewNCSALogger(os.Stdout, func(err error) { fmt.Fprintf(os.Stderr, \"%v\\n\", err) })\n\ts := server.New(nil, &server.Options{\n\t\tRequestLogger: rl,\n\t})\n\treturn s.ListenAndServe(fmt.Sprintf(\":%d\", port))\n}\n\n// wrapHTTPError turns handlers that return error into ordinary http.Handlers,\n// by calling http.Error on non-nil errors.\nfunc wrapHTTPError(f func(http.ResponseWriter, *http.Request) error) func(http.ResponseWriter, *http.Request) {\n\treturn func(w http.ResponseWriter, r *http.Request) {\n\t\tif err := f(w, r); err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t}\n\t}\n}\n\n// orderForm serves a page that lets the user input a new order.\nfunc (*frontend) orderForm(w http.ResponseWriter, r *http.Request) error {\n\tif r.Method != \"GET\" {\n\t\thttp.Error(w, \"bad method for orderForm: want GET\", http.StatusBadRequest)\n\t\treturn nil\n\t}\n\treturn executeTemplate(orderFormTemplate, nil, w)\n}\n\n// createOrder handles a submitted order form.\nfunc (f *frontend) createOrder(w http.ResponseWriter, r *http.Request) error {\n\tif r.Method != \"POST\" {\n\t\thttp.Error(w, \"bad method for createOrder: want POST\", http.StatusBadRequest)\n\t\treturn nil\n\t}\n\temail := r.FormValue(\"email\")\n\tif email == \"\" {\n\t\thttp.Error(w, \"email missing\", http.StatusBadRequest)\n\t\treturn nil\n\t}\n\n\tfile, _, err := r.FormFile(\"file\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer file.Close()\n\tif _, err := f.doCreateOrder(r.Context(), email, file, time.Now()); err != nil {\n\t\treturn err\n\t}\n\tfmt.Fprintln(w, \"Order received. Thank you.\")\n\treturn nil\n}\n\n// doCreateOrder creates a new order.\n// It is passed the customer's email address, an io.Reader for reading the input\n// image, and the current time.\n// It creates an Order in the database and sends an OrderRequest over the pub/sub topic.\n// It returns the order ID it generates, for testing.\nfunc (f *frontend) doCreateOrder(ctx context.Context, email string, file io.Reader, now time.Time) (id string, err error) {\n\t// Assign an ID for the order here, rather than in the processor.\n\t// That allows the processor to detect duplicate pub/sub messages.\n\tid = f.newID()\n\treq := &OrderRequest{\n\t\tID:         id,\n\t\tInImage:    id + \"-in\",\n\t\tEmail:      email,\n\t\tCreateTime: now,\n\t}\n\n\t// Copy the uploaded input file to the bucket.\n\tw, err := f.bucket.NewWriter(ctx, req.InImage, nil)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = io.Copy(w, file)\n\tif err != nil {\n\t\t_ = w.Close() // ignore error\n\t\treturn \"\", err\n\t}\n\tif err := w.Close(); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tdefer func() {\n\t\t// if we can't send the request, the image will never be processed.\n\t\t// Try to delete it.\n\t\tif err != nil {\n\t\t\tif err := f.bucket.Delete(ctx, req.InImage); err != nil {\n\t\t\t\tlog.Printf(\"deleting orphan image %q: %v\", req.InImage, err)\n\t\t\t}\n\t\t}\n\t}()\n\n\t// Publish the new order.\n\tbytes, err := json.Marshal(req)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif err := f.requestTopic.Send(ctx, &pubsub.Message{Body: bytes}); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn id, nil\n}\n\n// listOrders lists all the orders in the database.\nfunc (f *frontend) listOrders(w http.ResponseWriter, r *http.Request) error {\n\tif r.Method != \"GET\" {\n\t\thttp.Error(w, \"bad method for listOrders: want GET\", http.StatusBadRequest)\n\t\treturn nil\n\t}\n\tctx := r.Context()\n\titer := f.coll.Query().Get(ctx)\n\tvar orders []*Order\n\tfor {\n\t\tvar ord Order\n\t\terr := iter.Next(ctx, &ord)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\torders = append(orders, &ord)\n\t}\n\treturn executeTemplate(listTemplate, orders, w)\n}\n\nfunc (f *frontend) showImage(w http.ResponseWriter, r *http.Request) error {\n\tobjKey := strings.TrimPrefix(r.URL.Path, \"/show/\")\n\treader, err := f.bucket.NewReader(r.Context(), objKey, nil)\n\tif err != nil {\n\t\thttp.Error(w, fmt.Sprintf(\"file %q not found\", objKey), http.StatusNotFound)\n\t\treturn nil\n\t}\n\tdefer reader.Close()\n\tif _, err := io.Copy(w, reader); err != nil {\n\t\tlog.Printf(\"copy from %q failed: %v\", objKey, err)\n\t}\n\treturn nil\n}\n\n// newID creates a new unique ID for an incoming order. It uses the current\n// second, formatted in a readable way. The resulting IDs sort nicely and are\n// easy to read, but of course are not suitable for production because there\n// could be more than one request in a second and because the clock can be\n// reset to the past, resulting in duplicates.\nfunc (f *frontend) newID() string {\n\treturn time.Now().Format(\"060102-150405\")\n}\n\n// executeTemplate executes t into a buffer using data, and if that succeeds it\n// writes the bytes to w.\nfunc executeTemplate(t *template.Template, data any, w http.ResponseWriter) error {\n\tvar buf bytes.Buffer\n\tif err := t.Execute(&buf, data); err != nil {\n\t\treturn err\n\t}\n\tif _, err := buf.WriteTo(w); err != nil {\n\t\tlog.Printf(\"write failed: %v\", err)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "samples/order/frontend_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gocloud.dev/docstore\"\n)\n\nfunc TestOrderForm(t *testing.T) {\n\tf, _, cleanup, err := setup(testConfig(\"OrderForm\"))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tw := httptest.NewRecorder()\n\tr := httptest.NewRequest(\"GET\", \"/orders/new\", nil)\n\tif err := f.orderForm(w, r); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tres := w.Result()\n\tif res.StatusCode != 200 {\n\t\tt.Fatalf(\"got %d, want 200\", res.StatusCode)\n\t}\n\twantb, err := os.ReadFile(\"order-form.htmlt\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tgotb, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tres.Body.Close()\n\tgot := string(gotb)\n\twant := string(wantb)\n\n\tif got != want {\n\t\tt.Errorf(\"got %q, want %q\", got, want)\n\t}\n}\n\nfunc TestCreateOrder(t *testing.T) {\n\tf, _, cleanup, err := setup(testConfig(\"CreateOrder\"))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tctx := context.Background()\n\tfile := strings.NewReader(\"an image\")\n\ttm := time.Date(2019, 7, 1, 0, 0, 0, 0, time.Local)\n\tid, err := f.doCreateOrder(ctx, \"pat@example.com\", file, tm)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tr, err := f.bucket.NewReader(ctx, id+\"-in\", nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer r.Close()\n\tgotb, err := io.ReadAll(r)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tgots := string(gotb)\n\twants := \"an image\"\n\tif gots != wants {\n\t\tt.Errorf(\"got %q, want %q\", gots, wants)\n\t}\n}\n\nfunc TestListOrders(t *testing.T) {\n\tf, _, cleanup, err := setup(testConfig(\"ListOrders\"))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tctx := context.Background()\n\t// Clear the collection.\n\tif err := clearCollection(ctx, f.coll); err != nil {\n\t\tt.Fatal(err)\n\t}\n\torders := []*Order{\n\t\t{\n\t\t\tID: \"a\", Email: \"pat@example.com\", InImage: \"a-in\", OutImage: \"a-out\",\n\t\t\tCreateTime: time.Now().Add(-18 * time.Second), FinishTime: time.Now(),\n\t\t},\n\t\t{ID: \"b\", Email: \"mel@example.com\", InImage: \"b-in\", CreateTime: time.Now()},\n\t}\n\tactions := f.coll.Actions()\n\tfor _, ord := range orders {\n\t\tactions.Put(ord)\n\t}\n\tif err := actions.Do(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tw := httptest.NewRecorder()\n\tr := httptest.NewRequest(\"GET\", \"/orders\", nil)\n\tif err := f.listOrders(w, r); err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tres := w.Result()\n\tif res.StatusCode != 200 {\n\t\tt.Fatalf(\"got %d, want 200\", res.StatusCode)\n\t}\n\tgotb, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tres.Body.Close()\n\tgot := string(gotb)\n\tfor _, ord := range orders {\n\t\tif !strings.Contains(got, ord.ID) {\n\t\t\tt.Errorf(\"got %q, should contain %q\", got, ord.ID)\n\t\t}\n\t\tif !strings.Contains(got, ord.Email) {\n\t\t\tt.Errorf(\"got %q, should contain %q\", got, ord.Email)\n\t\t}\n\t}\n\turl := `<a href=\"/show/a-out\">a-out</a>`\n\tif !strings.Contains(got, url) {\n\t\tt.Errorf(\"got %q, should contain %q\", got, url)\n\t}\n}\n\nfunc testConfig(name string) config {\n\treqURL := \"mem://requests-\" + name\n\treturn config{\n\t\trequestTopicURL: reqURL,\n\t\trequestSubURL:   reqURL,\n\t\tbucketURL:       \"\", // setup will use fileblob with a temporary dir\n\t\tcollectionURL:   fmt.Sprintf(\"mem://orders-%s/ID\", name),\n\t}\n}\n\nfunc clearCollection(ctx context.Context, coll *docstore.Collection) error {\n\titer := coll.Query().Get(ctx, \"ID\")\n\tdels := coll.Actions()\n\tfor {\n\t\tvar order Order\n\t\terr := iter.Next(ctx, &order)\n\t\tif err == io.EOF {\n\t\t\tbreak\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdels.Delete(&order)\n\t}\n\treturn dels.Do(ctx)\n}\n"
  },
  {
    "path": "samples/order/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n    <title>Go CDK Image Conversion Sample</title>\n    <link href=\"https://fonts.googleapis.com/css?family=Roboto:400,400i,700&display=swap\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style.css\">\n  </head>\n  <body>\n    <header id=\"PageHeader\">\n      <a href=\"/\" class=\"PageTitle-link\"><h1 id=\"PageTitle\">Go CDK Image Conversion Sample</h1></a>\n    </header>\n    <main id=\"PageContent\">\n      <div class=\"FrontPageActions\">\n        <button class=\"FrontPageActions-button\" data-href=\"/orders/new\">Convert an Image</button>\n        <button class=\"FrontPageActions-button\" data-href=\"/orders\">List Conversions</button>\n      </div>\n    </main>\n    <script type=\"text/javascript\">\n      // If an element with the attribute \"data-href\" is clicked, then redirect\n      // the browser to the value of the attribute instead of performing the\n      // default behavior.\n      document.addEventListener('click', function(e) {\n        if (e.target.dataset.href) {\n          window.location.href = e.target.dataset.href;\n          return false;\n        }\n      });\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "samples/order/list.htmlt",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n    <title>Orders - Go CDK Image Conversion Sample</title>\n    <link href=\"https://fonts.googleapis.com/css?family=Roboto:400,400i,700&display=swap\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style.css\">\n  </head>\n  <body>\n    <header id=\"PageHeader\">\n      <a href=\"/\" class=\"PageTitle-link\"><h1 id=\"PageTitle\">Go CDK Image Conversion Sample</h1></a>\n    </header>\n    <main id=\"PageContent\">\n      <h1>Orders</h1>\n      {{if .}}\n        <table id=\"OrderList\">\n          <thead>\n            <tr>\n              <th scope=\"col\" class=\"OrderList-heading\">ID</th>\n              <th scope=\"col\" class=\"OrderList-heading\">Email</th>\n              <th scope=\"col\" class=\"OrderList-heading\">In</th>\n              <th scope=\"col\" class=\"OrderList-heading\">Out</th>\n              <th scope=\"col\" class=\"OrderList-heading\">Created</th>\n              <th scope=\"col\" class=\"OrderList-heading\">Finished</th>\n              <th scope=\"col\" class=\"OrderList-heading\">Note</th>\n            </tr>\n          </thead>\n          <tbody>\n          {{- range .}}\n            <tr>\n              <td class=\"OrderList-cell\">{{.ID}}</td>\n              <td class=\"OrderList-cell\">{{.Email}}</td>\n              <td class=\"OrderList-cell\">{{.InImage}}</td>\n              <td class=\"OrderList-cell\">{{with .OutImage}}<a href=\"/show/{{.}}\">{{.}}</a>{{end}}</td>\n              <td class=\"OrderList-cell\">{{with .CreateTime}}{{.Format \"2006-01-02 03:04 AM\"}}{{end}}</td>\n              <td class=\"OrderList-cell\">{{with .FinishTime}}{{.Format \"2006-01-02 03:04 AM\"}}{{end}}</td>\n              <td class=\"OrderList-cell\">{{.Note}}</td>\n            </tr>\n          {{- end}}\n          </tbody>\n        </table>\n      {{else}}\n          <p>No orders.</p>\n      {{end}}\n    </main>\n  </body>\n</html>\n"
  },
  {
    "path": "samples/order/order-form.htmlt",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n    <title>Create Order - Go CDK Image Conversion Sample</title>\n    <link href=\"https://fonts.googleapis.com/css?family=Roboto:400,400i,700&display=swap\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"/style.css\">\n  </head>\n  <body>\n    <header id=\"PageHeader\">\n      <a href=\"/\" class=\"PageTitle-link\"><h1 id=\"PageTitle\">Go CDK Image Conversion Sample</h1></a>\n    </header>\n    <main id=\"PageContent\">\n      <h1>Submit an Image</h1>\n      <form id=\"OrderForm\" action=\"/createOrder\" method=\"post\" enctype=\"multipart/form-data\">\n        <label class=\"OrderForm-label\" for=\"OrderForm-email\">\n          Email:\n        </label>\n        <div class=\"OrderForm-widget\">\n          <input type=\"email\" name=\"email\" id=\"OrderForm-email\" class=\"OrderForm-input\">\n        </div>\n        <label class=\"OrderForm-label\" for=\"OrderForm-file\">\n          File:\n        </label>\n        <div class=\"OrderForm-widget\">\n          <input type=\"file\" name=\"file\" id=\"OrderForm-file\" class=\"OrderForm-input\">\n        </div>\n        <div class=\"OrderForm-actions\">\n          <input type=\"submit\" value=\"Submit\" class=\"OrderForm-button\">\n        </div>\n      </form>\n    </main>\n  </body>\n</html>\n"
  },
  {
    "path": "samples/order/order.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// This application processes orders for converting images to PNG format. It\n// consists of two components: a frontend, which serves web pages that people\n// can use to place and view orders; and a processor, which performs the\n// conversions. This binary can run both together in one process (the default),\n// or it can run either on its own. Either way, the two components:\n//   - communicate over a topic using the gocloud.dev/pubsub API;\n//   - write orders to a database using the gocloud.dev/docstore API;\n//   - and save image files to cloud storage using the gocloud.dev/blob API.\n//\n// This application assumes at-least-once processing. Make sure the pubsub\n// implementation you provide to it has that behavior.\npackage main\n\nimport (\n\t\"context\"\n\t\"flag\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/docstore\"\n\t\"gocloud.dev/pubsub\"\n)\n\nvar (\n\trequestTopicURL = flag.String(\"request-topic\", \"mem://requests\", \"gocloud.dev/pubsub URL for request topic\")\n\trequestSubURL   = flag.String(\"request-sub\", \"mem://requests\", \"gocloud.dev/pubsub URL for request subscription\")\n\tbucketURL       = flag.String(\"bucket\", \"\", \"gocloud.dev/blob URL for image bucket\")\n\tcollectionURL   = flag.String(\"collection\", \"mem://orders/ID\", \"gocloud.dev/docstore URL for order collection\")\n\n\tport         = flag.Int(\"port\", 10538, \"HTTP port for frontend\")\n\trunFrontend  = flag.Bool(\"frontend\", true, \"run the frontend\")\n\trunProcessor = flag.Bool(\"processor\", true, \"run the image processor\")\n)\n\nfunc main() {\n\tflag.Parse()\n\tconf := config{\n\t\trequestTopicURL: *requestTopicURL,\n\t\trequestSubURL:   *requestSubURL,\n\t\tbucketURL:       *bucketURL,\n\t\tcollectionURL:   *collectionURL,\n\t}\n\tfrontend, processor, cleanup, err := setup(conf)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\t// Run the frontend, or the processor, or both.\n\t// When we want to run both, one of them has to run in a goroutine.\n\t// So it's simpler to run both in goroutines, even if we only need\n\t// to run one.\n\terrc := make(chan error, 2)\n\tif *runFrontend {\n\t\tgo func() { errc <- frontend.run(context.Background(), *port) }()\n\t\tlog.Printf(\"listening on port %d\", *port)\n\t} else {\n\t\terrc <- nil\n\t}\n\tif *runProcessor {\n\t\tgo func() { errc <- processor.run(context.Background()) }()\n\t\tlog.Println(\"processing\")\n\t} else {\n\t\terrc <- nil\n\t}\n\t// Each of the goroutines will send once to errc, so receive two values.\n\tfor i := 0; i < 2; i++ {\n\t\tif err := <-errc; err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t}\n}\n\n// config describes the URLs for the resources used by the order application.\ntype config struct {\n\trequestTopicURL string\n\trequestSubURL   string\n\tbucketURL       string\n\tcollectionURL   string\n}\n\n// setup opens all the necessary resources for the application.\nfunc setup(conf config) (_ *frontend, _ *processor, cleanup func(), err error) {\n\taddCleanup := func(f func()) {\n\t\told := cleanup\n\t\tcleanup = func() { old(); f() }\n\t}\n\n\tdefer func() {\n\t\tif err != nil {\n\t\t\tcleanup()\n\t\t\tcleanup = nil\n\t\t}\n\t}()\n\n\tctx := context.Background()\n\tcleanup = func() {}\n\n\treqTopic, err := pubsub.OpenTopic(ctx, conf.requestTopicURL)\n\tif err != nil {\n\t\treturn nil, nil, cleanup, err\n\t}\n\taddCleanup(func() { reqTopic.Shutdown(ctx) })\n\n\treqSub, err := pubsub.OpenSubscription(ctx, conf.requestSubURL)\n\tif err != nil {\n\t\treturn nil, nil, cleanup, err\n\t}\n\taddCleanup(func() { reqSub.Shutdown(ctx) })\n\n\tburl := conf.bucketURL\n\tif burl == \"\" {\n\t\tdir, err := os.MkdirTemp(\"\", \"gocdk-order\")\n\t\tif err != nil {\n\t\t\treturn nil, nil, cleanup, err\n\t\t}\n\t\tif os.PathSeparator == '\\\\' {\n\t\t\tburl = \"file:///\" + filepath.ToSlash(dir)\n\t\t} else {\n\t\t\tburl = \"file://\" + dir\n\t\t}\n\t\taddCleanup(func() { os.Remove(dir) })\n\t}\n\tbucket, err := blob.OpenBucket(ctx, burl)\n\tif err != nil {\n\t\treturn nil, nil, cleanup, err\n\t}\n\taddCleanup(func() { bucket.Close() })\n\n\tcoll, err := docstore.OpenCollection(ctx, conf.collectionURL)\n\tif err != nil {\n\t\treturn nil, nil, cleanup, err\n\t}\n\taddCleanup(func() { coll.Close() })\n\n\tf := &frontend{\n\t\trequestTopic: reqTopic,\n\t\tbucket:       bucket,\n\t\tcoll:         coll,\n\t}\n\tp := &processor{\n\t\trequestSub: reqSub,\n\t\tbucket:     bucket,\n\t\tcoll:       coll,\n\t}\n\treturn f, p, cleanup, nil\n}\n"
  },
  {
    "path": "samples/order/processor.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// A processor processes images in orders. It receives requests by\n// subscribing to the requests topic, and writes responses to the response\n// topic.\n//\n// At present, it just encodes input images into PNG format.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"image\"\n\t_ \"image/jpeg\"\n\t\"image/png\"\n\t\"log\"\n\t\"math/rand\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gocloud.dev/blob\"\n\t_ \"gocloud.dev/blob/fileblob\"\n\t\"gocloud.dev/docstore\"\n\t_ \"gocloud.dev/docstore/memdocstore\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/pubsub\"\n\t_ \"gocloud.dev/pubsub/mempubsub\"\n)\n\n// A processor holds the state for processing images.\ntype processor struct {\n\trequestSub *pubsub.Subscription\n\tbucket     *blob.Bucket\n\tcoll       *docstore.Collection\n}\n\n// run handles requests until the context is done or there is a fatal error.\nfunc (p *processor) run(ctx context.Context) error {\n\tfor {\n\t\tif err := p.handleRequest(ctx); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n}\n\n// handleRequest handles one image-processing request.\n// A non-nil error from handleRequest will end request processing.\nfunc (p *processor) handleRequest(ctx context.Context) error {\n\tmsg, err := p.requestSub.Receive(ctx)\n\tif err != nil {\n\t\t// If we can't receive messages, we should stop processing.\n\t\treturn err\n\t}\n\n\tvar req OrderRequest\n\tif err := json.Unmarshal(msg.Body, &req); err != nil {\n\t\t// We can't unmarshal the message body. That could be due to a bug or\n\t\t// change in the frontend, or maybe some other program is sending\n\t\t// malformed messages.\n\n\t\t// Ack the message, because if we can't unmarshal it then no one else can either.\n\t\tmsg.Ack()\n\t\t// Don't terminate processing; maybe this is just one bad message.\n\t\tlog.Printf(\"unmarshaling request: %v\", err)\n\t\treturn nil\n\t}\n\tlog.Printf(\"received %+v\", req)\n\torder, err := createOrFindOrder(ctx, p.coll, &req)\n\tif err != nil {\n\t\t// There was a problem with the database, perhaps due to the network.\n\t\t// Nack the message; perhaps another processor can succeed.\n\t\tif msg.Nackable() {\n\t\t\tmsg.Nack()\n\t\t}\n\t\t// Assume the database error is permanent: terminate processing.\n\t\treturn err\n\t}\n\tif order == nil {\n\t\tlog.Printf(\"duplicate finished order %v\", req.ID)\n\t\t// We've already processed this order, so ack the message.\n\t\tmsg.Ack()\n\t\treturn nil\n\t}\n\t// At this point, order is an unfinished order in the database.\n\t// Process it.\n\terr = p.processOrder(ctx, order)\n\t// Any processing errors are saved as notes in the order.\n\tif err != nil {\n\t\torder.Note = fmt.Sprintf(\"processing failed: %v\", err)\n\t\torder.OutImage = \"\"\n\t}\n\t// Save the finished order to the database.\n\terr = p.coll.Update(ctx, order, docstore.Mods{\n\t\t\"OutImage\":   order.OutImage,\n\t\t\"Note\":       order.Note,\n\t\t\"FinishTime\": time.Now(),\n\t})\n\tif err != nil {\n\t\t// We couldn't save the order to the database.\n\t\t// Nack the message; perhaps another processor can succeed.\n\t\tif msg.Nackable() {\n\t\t\tmsg.Nack()\n\t\t}\n\t\t// Assume the database error is permanent: terminate processing.\n\t\treturn err\n\t}\n\t// We've successfully processed the image.\n\tmsg.Ack()\n\treturn nil\n}\n\n// createOrFindOrder either creates a new order from req (the usual case), or returns an\n// existing unfinished order. It returns a nil *Order if the order exists and is\n// finished, that is, this request message is a duplicate.\n// createOrFindOrder returns a non-nil error only for database problems.\nfunc createOrFindOrder(ctx context.Context, coll *docstore.Collection, req *OrderRequest) (*Order, error) {\n\t// See if there is already a document for this order.\n\torder := &Order{ID: req.ID}\n\terr := coll.Get(ctx, order)\n\tif err != nil {\n\t\tif gcerrors.Code(err) != gcerrors.NotFound {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Normal case: the order wasn't found, because it hasn't been created\n\t\t// yet. Create it.\n\t\torder = &Order{\n\t\t\tID:         req.ID,\n\t\t\tEmail:      req.Email,\n\t\t\tInImage:    req.InImage,\n\t\t\tCreateTime: req.CreateTime,\n\t\t}\n\t\tif err := coll.Create(ctx, order); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn order, nil\n\t}\n\tif order.FinishTime.IsZero() {\n\t\t// The order exists, but was not finished. Either it was abandoned by the processor that\n\t\t// was working on it (probably because the processor died), or it is in progress. Assume\n\t\t// that it was abandoned, and process it.\n\t\treturn order, nil\n\t}\n\t// The order exists and was finished. This is most likely the result of a pubsub redelivery.\n\t// We simply ignore it.\n\treturn nil, nil\n}\n\n// processOrder processes the order request.\nfunc (p *processor) processOrder(ctx context.Context, order *Order) error {\n\t// Read the input image from the bucket.\n\tr, err := p.bucket.NewReader(ctx, order.InImage, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer r.Close()\n\timg, format, err := image.Decode(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Process and write the output image.\n\torder.OutImage = fmt.Sprintf(\"%s-out.png\", strings.TrimSuffix(order.InImage, \"-in\"))\n\tw, err := p.bucket.NewWriter(ctx, order.OutImage, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := png.Encode(w, img); err != nil {\n\t\tw.Close()\n\t\treturn err\n\t}\n\tif err := w.Close(); err != nil {\n\t\treturn err\n\t}\n\n\t// Pretend that the conversion takes some time.\n\ttime.Sleep(time.Duration(rand.Intn(5)+2) * time.Second)\n\n\torder.Note = fmt.Sprintf(\"converted from %s to png\", format)\n\treturn nil\n}\n"
  },
  {
    "path": "samples/order/processor_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage main\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/blob\"\n\t\"gocloud.dev/pubsub\"\n\t_ \"gocloud.dev/pubsub/mempubsub\"\n)\n\nfunc TestHandleRequest(t *testing.T) {\n\tf, p, cleanup, err := setup(testConfig(\"ProcessorRun\"))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tctx := context.Background()\n\treq := &OrderRequest{ID: \"x\"}\n\tbytes, err := json.Marshal(req)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := f.requestTopic.Send(ctx, &pubsub.Message{Body: bytes}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := p.handleRequest(ctx); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// Just verify that there is an order \"x\" in the collection.\n\torder := &Order{ID: \"x\"}\n\tif err := p.coll.Get(ctx, order); err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n\nfunc TestProcessOrder(t *testing.T) {\n\t_, p, cleanup, err := setup(testConfig(\"ProcessOrder\"))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer cleanup()\n\n\tctx := context.Background()\n\tfor _, test := range []struct {\n\t\tfilename string\n\t\twant     *Order\n\t\twantErr  bool\n\t}{\n\t\t{\n\t\t\t\"cat1\",\n\t\t\t&Order{\n\t\t\t\tID:       \"cat1\",\n\t\t\t\tEmail:    \"joe@example.com\",\n\t\t\t\tInImage:  \"cat1\",\n\t\t\t\tOutImage: \"cat1-out.png\",\n\t\t\t\tNote:     \"converted from jpeg to png\",\n\t\t\t},\n\t\t\tfalse,\n\t\t},\n\t\t{\n\t\t\t\"bad-image\",\n\t\t\tnil,\n\t\t\ttrue,\n\t\t},\n\t} {\n\t\tif err := copyFileToBucket(\"testdata/\"+test.filename, p.bucket); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tgot := &Order{\n\t\t\tID:      test.filename,\n\t\t\tEmail:   \"joe@example.com\",\n\t\t\tInImage: test.filename,\n\t\t}\n\t\terr := p.processOrder(ctx, got)\n\t\tif err == nil && test.wantErr {\n\t\t\tt.Errorf(\"%s: got nil, want error\", test.filename)\n\t\t} else if err != nil && !test.wantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want nil\", test.filename, err)\n\t\t} else if err == nil && !cmp.Equal(got, test.want) {\n\t\t\tt.Errorf(\"%s:\\ngot  %+v\\nwant %+v\", test.filename, got, test.want)\n\t\t}\n\t}\n}\n\nfunc copyFileToBucket(filename string, bucket *blob.Bucket) (err error) {\n\tf, err := os.Open(filename)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tw, err := bucket.NewWriter(context.Background(), filepath.Base(filename), nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\terr2 := w.Close()\n\t\tif err == nil {\n\t\t\terr = err2\n\t\t}\n\t}()\n\n\t_, err = io.Copy(w, f)\n\treturn err\n}\n"
  },
  {
    "path": "samples/order/style.css",
    "content": "/*\nCopyright 2019 The Go Cloud Development Kit Authors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nhtml {\n  font: 20px/1.2 'Roboto', sans-serif;\n  margin: 0;\n  padding: 0;\n}\nbody {\n  background: #555759;\n  color: #000;\n  margin: 0;\n  padding: 0;\n}\n#PageHeader {\n  background: #00add8;\n  margin: 0;\n  padding: 0;\n}\n@media (max-width: 1024px) {\n  /* Don't use a backdrop effect on smaller screen. */\n  body {\n    background: white;\n  }\n}\n#PageHeader {\n  padding: 1rem;\n}\n#PageTitle {\n  color: white;\n  font-size: 2.5rem;\n  margin: 0 2rem;\n  padding: 0;\n}\n.PageTitle-link {\n  text-decoration: none;\n}\n#PageContent {\n  background: white;\n  border-radius: 3px;\n  box-sizing: border-box;\n  margin: 1rem auto;\n  min-height: 10rem;\n  max-width: 50rem;\n  padding: 0.5rem 2rem 1rem;\n}\n@media (max-width: 1024px) {\n  /* Don't use a backdrop effect on smaller screen. */\n  #PageContent {\n    background: none;\n    border-radius: 0;\n    margin: 0 auto 1rem;\n  }\n}\n.FrontPageActions {\n  margin-top: 2rem;\n  text-align: center;\n  vertical-align: middle;\n}\n.FrontPageActions-button {\n  font: 1.5rem 'Roboto', sans-serif;\n  padding: 0.3rem;\n  width: 15rem;\n}\ninput {\n  font: 20px/1.2 'Roboto', sans-serif;\n}\n#OrderForm {\n  width: 50%;\n}\n.OrderForm-label {\n  display: block;\n  font-weight: bold;\n  margin: 0 0 0.2rem;\n}\n.OrderForm-widget {\n  margin: 0 0 0.5rem;\n  width: 100%;\n}\n.OrderForm-input {\n  margin: 0;\n  width: 100%;\n}\n.OrderForm-actions {\n  margin: 1rem 0;\n  text-align: right;\n}\n.OrderForm-button {\n  padding: 0.25rem 1rem;\n}\n#OrderList {\n  border-collapse: collapse;\n}\n.OrderList-heading {\n  padding: 0.25rem 0.5rem;\n}\n.OrderList-cell {\n  border-bottom: 1px solid black;\n  border-top: 1px solid black;\n  padding: 0.25rem 0.5rem;\n}\n"
  },
  {
    "path": "samples/order/testdata/bad-image",
    "content": "This is not an image.\n"
  },
  {
    "path": "samples/server/main.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Command server runs a simple HTTP server with integrated Cloud Trace (OpenTelemetry)\n// and health checks.\npackage main\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go.opentelemetry.io/otel\"\n\t\"log\"\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/health\"\n\t\"gocloud.dev/server/sdserver\"\n)\n\n// GlobalMonitoredResource implements monitoredresource.Interface to provide a\n// basic global resource based on the project ID. If you're running this sample\n// on GCE or EC2, you may prefer to use monitoredresource.Autodetect() instead.\ntype GlobalMonitoredResource struct {\n\tprojectID string\n}\n\n// MonitoredResource returned the monitored resource.\nfunc (g GlobalMonitoredResource) MonitoredResource() (string, map[string]string) {\n\treturn \"global\", map[string]string{\"project_id\": g.projectID}\n}\n\nfunc helloHandler(w http.ResponseWriter, req *http.Request) {\n\tfmt.Fprintf(w, \"Hello\\n\")\n}\n\nfunc mainHandler(w http.ResponseWriter, req *http.Request) {\n\tfmt.Fprintf(w, \"Welcome to the home page!\\n\")\n}\n\n// customHealthCheck is an example health check. It implements the\n// health.Checker interface and reports the server is healthy when the healthy\n// field is set to true.\ntype customHealthCheck struct {\n\tmu      sync.RWMutex\n\thealthy bool\n}\n\nfunc (h *customHealthCheck) CheckHealth() error {\n\th.mu.RLock()\n\tdefer h.mu.RUnlock()\n\tif !h.healthy {\n\t\treturn errors.New(\"not ready yet\")\n\t}\n\treturn nil\n}\n\nfunc main() {\n\taddr := flag.String(\"listen\", \":8080\", \"HTTP port to listen on\")\n\tdoTrace := flag.Bool(\"trace\", true, \"Export traces to Stackdriver\")\n\tflag.Parse()\n\n\tctx := context.Background()\n\tcredentials, err := gcp.DefaultCredentials(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tprojectID, err := gcp.DefaultProjectID(credentials)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif *doTrace {\n\t\tfmt.Println(\"Exporting traces to Stackdriver\")\n\n\t\ttraceSampler := sdserver.NewTraceSampler(ctx)\n\n\t\tspanExporter, err0 := sdserver.NewTraceExporter(projectID)\n\t\tif err0 != nil {\n\t\t\tlog.Fatal(err0)\n\t\t}\n\t\ttp, cleanup, err0 := sdserver.NewTraceProvider(ctx, spanExporter, traceSampler)\n\t\tif err0 != nil {\n\t\t\tlog.Fatal(err0)\n\t\t}\n\t\tdefer cleanup()\n\t\totel.SetTracerProvider(tp)\n\n\t\tmetricsReader, err0 := sdserver.NewMetricsReader(projectID)\n\t\tif err0 != nil {\n\t\t\tlog.Fatal(err0)\n\t\t}\n\t\tmp, cleanup2, err0 := sdserver.NewMeterProvider(ctx, metricsReader)\n\t\tif err0 != nil {\n\t\t\tlog.Fatal(err0)\n\t\t}\n\t\tdefer cleanup2()\n\t\totel.SetMeterProvider(mp)\n\t}\n\n\tmux := http.NewServeMux()\n\tmux.HandleFunc(\"/hello\", helloHandler)\n\tmux.HandleFunc(\"/\", mainHandler)\n\n\t// healthCheck will report the server is unhealthy for 10 seconds after\n\t// startup, and as healthy henceforth. Check the /healthz/readiness\n\t// HTTP path to see readiness.\n\thealthCheck := new(customHealthCheck)\n\ttime.AfterFunc(10*time.Second, func() {\n\t\thealthCheck.mu.Lock()\n\t\tdefer healthCheck.mu.Unlock()\n\t\thealthCheck.healthy = true\n\t})\n\n\toptions := &server.Options{\n\t\tRequestLogger: sdserver.NewRequestLogger(),\n\t\tHealthChecks:  []health.Checker{healthCheck},\n\n\t\tDriver: &server.DefaultDriver{},\n\t}\n\n\ts := server.New(mux, options)\n\tfmt.Printf(\"Listening on %s\\n\", *addr)\n\n\terr = s.ListenAndServe(*addr)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "samples/tutorial/README.md",
    "content": "# Getting Started With The Go Cloud Development Kit\n\nThis is the source directory for the [command-line uploader tutorial][].\n\n[command-line uploader tutorial]: https://gocloud.dev/tutorials/cli-uploader/\n"
  },
  {
    "path": "samples/tutorial/main.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Command upload saves files to blob storage on GCP, AWS, and Azure.\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"os\"\n\n\t\"gocloud.dev/blob\"\n\n\t// Import the blob packages we want to be able to open.\n\t_ \"gocloud.dev/blob/azureblob\"\n\t_ \"gocloud.dev/blob/gcsblob\"\n\t_ \"gocloud.dev/blob/s3blob\"\n)\n\nfunc main() {\n\t// Define our input.\n\tif len(os.Args) != 3 {\n\t\tlog.Fatal(\"usage: upload BUCKET_URL FILE\")\n\t}\n\tbucketURL := os.Args[1]\n\tfile := os.Args[2]\n\n\tctx := context.Background()\n\t// Open a connection to the bucket.\n\tb, err := blob.OpenBucket(ctx, bucketURL)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to setup bucket: %s\", err)\n\t}\n\tdefer b.Close()\n\n\t// Prepare the file for upload.\n\tdata, err := os.ReadFile(file)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to read file: %s\", err)\n\t}\n\n\tw, err := b.NewWriter(ctx, file, nil)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to obtain writer: %s\", err)\n\t}\n\t_, err = w.Write(data)\n\tif err != nil {\n\t\tlog.Fatalf(\"Failed to write to bucket: %s\", err)\n\t}\n\tif err = w.Close(); err != nil {\n\t\tlog.Fatalf(\"Failed to close: %s\", err)\n\t}\n}\n"
  },
  {
    "path": "samples/wire/README.md",
    "content": "# Wire Tutorial has moved\n\nThe Wire Tutorial has moved to [the Wire repository](https://github.com/google/wire/tree/master/_tutorial).\n"
  },
  {
    "path": "secrets/awskms/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awskms_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/awskms\"\n)\n\nfunc ExampleOpenKeeper() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Establish a AWS V2 Config.\n\t// See https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/ for more info.\n\tctx := context.Background()\n\tcfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Get a client to use with the KMS API.\n\tclient, err := awskms.Dial(cfg)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *secrets.Keeper.\n\tkeeper := awskms.OpenKeeper(client, \"alias/test-secrets\", nil)\n\tdefer keeper.Close()\n}\n\nfunc Example_openFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/secrets/awskms\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Use one of the following:\n\n\t// 1. By ID.\n\tkeeperByID, err := secrets.OpenKeeper(ctx,\n\t\t\"awskms://1234abcd-12ab-34cd-56ef-1234567890ab?region=us-east-1\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeperByID.Close()\n\n\t// 2. By alias.\n\tkeeperByAlias, err := secrets.OpenKeeper(ctx,\n\t\t\"awskms://alias/ExampleAlias?region=us-east-1\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeperByAlias.Close()\n\n\t// 3. By ARN. Note that ARN may contain \":\" characters, which cannot be escaped\n\t// in the Host part of a URL, so the \"awskms:///<ARN>\" form should be used.\n\tconst arn = \"arn:aws:kms:us-east-1:111122223333:key/\" +\n\t\t\"1234abcd-12ab-34bc-56ef-1234567890ab\"\n\tkeeperByARN, err := secrets.OpenKeeper(ctx,\n\t\t\"awskms:///\"+arn+\"?region=us-east-1\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeperByARN.Close()\n}\n"
  },
  {
    "path": "secrets/awskms/kms.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package awskms provides a secrets implementation backed by AWS KMS.\n// Use OpenKeeper to construct a *secrets.Keeper.\n//\n// # URLs\n//\n// For secrets.OpenKeeper, awskms registers for the scheme \"awskms\".\n// The default URL opener will use an AWS session with the default credentials\n// and configuration.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// awskms exposes the following type for As:\n//   - Error: any error type returned by the service, notably smithy.APIError\npackage awskms // import \"gocloud.dev/secrets/awskms\"\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/kms\"\n\t\"github.com/aws/aws-sdk-go-v2/service/kms/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/wire\"\n\tgcaws \"gocloud.dev/aws\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/secrets\"\n)\n\nfunc init() {\n\tsecrets.DefaultURLMux().RegisterKeeper(Scheme, new(lazySessionOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n)\n\n// Dial gets an AWS KMS service client using the AWS SDK V2.\nfunc Dial(cfg aws.Config) (*kms.Client, error) {\n\treturn kms.NewFromConfig(cfg), nil\n}\n\nvar DialV2 = Dial\n\n// lazySessionOpener obtains the AWS session from the environment on the first\n// call to OpenKeeperURL.\ntype lazySessionOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazySessionOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\topener := &URLOpener{}\n\treturn opener.OpenKeeperURL(ctx, u)\n}\n\n// Scheme is the URL scheme awskms registers its URLOpener under on secrets.DefaultMux.\nconst Scheme = \"awskms\"\n\n// URLOpener opens AWS KMS URLs like \"awskms://keyID\" or \"awskms:///keyID\".\n//\n// The URL Host + Path are used as the key ID, which can be in the form of an\n// Amazon Resource Name (ARN), alias name, or alias ARN. See\n// https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn\n// for more details. Note that ARNs may contain \":\" characters, which cannot be\n// escaped in the Host part of a URL, so the \"awskms:///<ARN>\" form should be used.\n//\n// See https://pkg.go.dev/gocloud.dev/aws#V2ConfigFromURLParams.\n//\n// EncryptionContext key/value pairs can be provided by providing URL parameters prefixed\n// with \"context_\"; e.g., \"...&context_abc=foo&context_def=bar\" would result in\n// an EncryptionContext of {abc=foo, def=bar}.\n// See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context.\ntype URLOpener struct {\n\t// Options specifies the options to pass to OpenKeeper.\n\t// EncryptionContext parameters from the URL are merged in.\n\tOptions KeeperOptions\n}\n\n// addEncryptionContextFromURLParams merges any EncryptionContext URL parameters from\n// u into opts.EncryptionParameters.\n// It removes the processed URL parameters from u.\nfunc addEncryptionContextFromURLParams(opts *KeeperOptions, u url.Values) error {\n\tfor k, vs := range u {\n\t\tif strings.HasPrefix(k, \"context_\") {\n\t\t\tif len(vs) != 1 {\n\t\t\t\treturn fmt.Errorf(\"open keeper: EncryptionContext URL parameters %q must have exactly 1 value\", k)\n\t\t\t}\n\t\t\tu.Del(k)\n\t\t\tif opts.EncryptionContext == nil {\n\t\t\t\topts.EncryptionContext = map[string]string{}\n\t\t\t}\n\t\t\topts.EncryptionContext[k[8:]] = vs[0]\n\t\t}\n\t}\n\treturn nil\n}\n\n// OpenKeeperURL opens an AWS KMS Keeper based on u.\nfunc (o *URLOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\t// A leading \"/\" means the Host was empty; trim the slash.\n\t// This is so that awskms:///foo:bar results in \"foo:bar\" instead of\n\t// \"/foo:bar\".\n\tkeyID := strings.TrimPrefix(path.Join(u.Host, u.Path), \"/\")\n\n\tqueryParams := u.Query()\n\topts := o.Options\n\tif err := addEncryptionContextFromURLParams(&opts, queryParams); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcfg, err := gcaws.V2ConfigFromURLParams(ctx, queryParams)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open keeper %v: %v\", u, err)\n\t}\n\tclient, err := Dial(cfg)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn OpenKeeper(client, keyID, &opts), nil\n}\n\n// OpenKeeper returns a *secrets.Keeper that uses AWS KMS, using SDK v2.\n// The key ID can be in the form of an Amazon Resource Name (ARN), alias\n// name, or alias ARN. See\n// https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn\n// for more details.\n// See the package documentation for an example.\nfunc OpenKeeper(client *kms.Client, keyID string, opts *KeeperOptions) *secrets.Keeper {\n\tif opts == nil {\n\t\topts = &KeeperOptions{}\n\t}\n\treturn secrets.NewKeeper(&keeper{\n\t\tkeyID:  keyID,\n\t\tclient: client,\n\t\topts:   *opts,\n\t})\n}\n\nvar OpenKeeperV2 = OpenKeeper\n\ntype keeper struct {\n\tkeyID  string\n\topts   KeeperOptions\n\tclient *kms.Client\n}\n\n// Decrypt decrypts the ciphertext into a plaintext.\nfunc (k *keeper) Decrypt(ctx context.Context, ciphertext []byte) ([]byte, error) {\n\tresult, err := k.client.Decrypt(ctx, &kms.DecryptInput{\n\t\tCiphertextBlob:    ciphertext,\n\t\tEncryptionContext: k.opts.EncryptionContext,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.Plaintext, nil\n}\n\n// Encrypt encrypts the plaintext into a ciphertext.\nfunc (k *keeper) Encrypt(ctx context.Context, plaintext []byte) ([]byte, error) {\n\tresult, err := k.client.Encrypt(ctx, &kms.EncryptInput{\n\t\tKeyId:             aws.String(k.keyID),\n\t\tPlaintext:         plaintext,\n\t\tEncryptionContext: k.opts.EncryptionContext,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn result.CiphertextBlob, nil\n}\n\n// Close implements driver.Keeper.Close.\nfunc (k *keeper) Close() error { return nil }\n\n// ErrorAs implements driver.Keeper.ErrorAs.\nfunc (k *keeper) ErrorAs(err error, i any) bool {\n\treturn errors.As(err, i)\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (k *keeper) ErrorCode(err error) gcerrors.ErrorCode {\n\tvar ae smithy.APIError\n\tif !errors.As(err, &ae) {\n\t\treturn gcerr.Unknown\n\t}\n\tcode := ae.ErrorCode()\n\tec, ok := errorCodeMap[code]\n\tif !ok {\n\t\treturn gcerr.Unknown\n\t}\n\treturn ec\n}\n\nvar errorCodeMap = map[string]gcerrors.ErrorCode{\n\t(&types.NotFoundException{}).ErrorCode():          gcerrors.NotFound,\n\t(&types.InvalidCiphertextException{}).ErrorCode(): gcerrors.InvalidArgument,\n\t(&types.InvalidKeyUsageException{}).ErrorCode():   gcerrors.InvalidArgument,\n\t(&types.KMSInternalException{}).ErrorCode():       gcerrors.Internal,\n\t(&types.KMSInvalidStateException{}).ErrorCode():   gcerrors.FailedPrecondition,\n\t(&types.DisabledException{}).ErrorCode():          gcerrors.PermissionDenied,\n\t(&types.InvalidGrantTokenException{}).ErrorCode(): gcerrors.PermissionDenied,\n\t(&types.KeyUnavailableException{}).ErrorCode():    gcerrors.ResourceExhausted,\n\t(&types.DependencyTimeoutException{}).ErrorCode(): gcerrors.DeadlineExceeded,\n}\n\n// KeeperOptions controls Keeper behaviors.\n// It is provided for future extensibility.\ntype KeeperOptions struct {\n\t// EncryptionContext parameters.\n\t// See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context.\n\tEncryptionContext map[string]string\n}\n"
  },
  {
    "path": "secrets/awskms/kms_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage awskms\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go-v2/aws\"\n\t\"github.com/aws/aws-sdk-go-v2/service/kms\"\n\t\"github.com/aws/aws-sdk-go-v2/service/kms/types\"\n\t\"github.com/aws/smithy-go\"\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/driver\"\n\t\"gocloud.dev/secrets/drivertest\"\n)\n\nconst (\n\tkeyID1 = \"alias/test-secrets\"\n\tkeyID2 = \"alias/test-secrets2\"\n\tregion = \"us-east-2\"\n)\n\ntype harness struct {\n\tclient *kms.Client\n\tclose  func()\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Keeper, driver.Keeper, error) {\n\treturn &keeper{keyID: keyID1, client: h.client}, &keeper{keyID: keyID2, client: h.client}, nil\n}\n\nfunc (h *harness) Close() {\n\th.close()\n}\n\n// Lists all existing aliases in the account, to see if we need to create one.\nfunc listExistingAliases(ctx context.Context, client *kms.Client) (map[string]bool, error) {\n\texisting := map[string]bool{}\n\tvar nextMarker *string\n\tfor {\n\t\tresp, err := client.ListAliases(ctx, &kms.ListAliasesInput{Marker: nextMarker})\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to list aliases: %w\", err)\n\t\t}\n\t\tfor _, alias := range resp.Aliases {\n\t\t\texisting[*alias.AliasName] = true\n\t\t}\n\t\tif !resp.Truncated {\n\t\t\tbreak\n\t\t}\n\t\tnextMarker = resp.NextMarker\n\t}\n\treturn existing, nil\n}\n\nfunc createKey(ctx context.Context, client *kms.Client, keyID string) error {\n\tcreateKeyResult, err := client.CreateKey(ctx, &kms.CreateKeyInput{})\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to create key %q: %w\", keyID, err)\n\t}\n\tif _, err := client.CreateAlias(ctx, &kms.CreateAliasInput{\n\t\tAliasName:   aws.String(keyID),\n\t\tTargetKeyId: createKeyResult.KeyMetadata.KeyId,\n\t}); err != nil {\n\t\treturn fmt.Errorf(\"failed to create alias for key %q: %w\", keyID, err)\n\t}\n\treturn nil\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tcfg, _, done, _ := setup.NewAWSv2Config(ctx, t, region, false)\n\tclient := kms.NewFromConfig(cfg)\n\n\t// Create the keys we need if they don't exist.\n\texisting, err := listExistingAliases(ctx, client)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !existing[keyID1] {\n\t\tif err := createKey(ctx, client, keyID1); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif !existing[keyID2] {\n\t\tif err := createKey(ctx, client, keyID2); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &harness{\n\t\tclient: client,\n\t\tclose:  done,\n\t}, nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct {\n}\n\nfunc (v verifyAs) Name() string {\n\treturn \"verify As function\"\n}\n\nfunc (v verifyAs) ErrorCheck(k *secrets.Keeper, err error) error {\n\tvar e smithy.APIError\n\tif !k.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Keeper.ErrorAs failed\")\n\t}\n\tcode := e.ErrorCode()\n\twant := (&types.InvalidCiphertextException{}).ErrorCode()\n\tif code != want {\n\t\treturn fmt.Errorf(\"got %q, want %q\", code, want)\n\t}\n\treturn nil\n}\n\n// KMS-specific tests.\n\nfunc TestEncryptionContext(t *testing.T) {\n\ttests := []struct {\n\t\tExisting map[string]string\n\t\tURL      string\n\t\tWantErr  bool\n\t\tWant     map[string]string\n\t}{\n\t\t// None before or after.\n\t\t{nil, \"http://foo\", false, nil},\n\t\t// New parameter.\n\t\t{nil, \"http://foo?context_foo=bar\", false, map[string]string{\"foo\": \"bar\"}},\n\t\t// 2 new parameters.\n\t\t{nil, \"http://foo?context_foo=bar&context_abc=baz\", false, map[string]string{\"foo\": \"bar\", \"abc\": \"baz\"}},\n\t\t// Multiple values.\n\t\t{nil, \"http://foo?context_foo=bar&context_foo=baz\", true, nil},\n\t\t// Existing, no new.\n\t\t{map[string]string{\"foo\": \"bar\"}, \"http://foo\", false, map[string]string{\"foo\": \"bar\"}},\n\t\t// No-conflict merge.\n\t\t{map[string]string{\"foo\": \"bar\"}, \"http://foo?context_abc=baz\", false, map[string]string{\"foo\": \"bar\", \"abc\": \"baz\"}},\n\t\t// Overwrite merge.\n\t\t{map[string]string{\"foo\": \"bar\"}, \"http://foo?context_foo=baz\", false, map[string]string{\"foo\": \"baz\"}},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(fmt.Sprintf(\"existing %v URL %v\", test.Existing, test.URL), func(t *testing.T) {\n\t\t\topts := KeeperOptions{\n\t\t\t\tEncryptionContext: test.Existing,\n\t\t\t}\n\t\t\tu, err := url.Parse(test.URL)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\terr = addEncryptionContextFromURLParams(&opts, u.Query())\n\t\t\tif (err != nil) != test.WantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error? %v\", err, test.WantErr)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(opts.EncryptionContext, test.Want); diff != \"\" {\n\t\t\t\tt.Errorf(\"diff %v\", diff)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestOpenKeeper(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK, by alias.\n\t\t{\"awskms://alias/my-key\", false},\n\t\t// OK, by ARN with empty Host.\n\t\t{\"awskms:///arn:aws:kms:us-east-1:932528106278:alias/gocloud-test\", false},\n\t\t// OK, by ARN with empty Host.\n\t\t{\"awskms:///arn:aws:kms:us-east-1:932528106278:key/8be0dcc5-da0a-4164-a99f-649015e344b5\", false},\n\t\t// OK, overriding region.\n\t\t{\"awskms://alias/my-key?region=us-west1\", false},\n\t\t// OK, adding EncryptionContext.\n\t\t{\"awskms://alias/my-key?context_abc=foo&context_def=bar\", false},\n\t\t// Multiple values for an EncryptionContext.\n\t\t{\"awskms://alias/my-key?context_abc=foo&context_abc=bar\", true},\n\t\t// Unknown parameter.\n\t\t{\"awskms://alias/my-key?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tkeeper, err := secrets.OpenKeeper(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tif err = keeper.Close(); err != nil {\n\t\t\t\tt.Errorf(\"%s: got error during close: %v\", test.URL, err)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "secrets/awskms/testdata/TestConformance/TestAs/verify_As_function.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3CEUql4AAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"09787f3b438ecca3\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.ListAliases\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"e30=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"2035\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"e9a2bbb2-c971-4caa-bdd5-b9316350c573\"\n          ]\n        },\n        \"Body\": \"eyJBbGlhc0NvdW50IjoxNSwiQWxpYXNlcyI6W3siQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9keW5hbW9kYiIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9keW5hbW9kYiJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9lYnMiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZWJzIiwiQ3JlYXRpb25EYXRlIjoxLjU5MjQxMjAxODUyMUU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNTkyNDEyMDE4NTIxRTksIlRhcmdldEtleUlkIjoiZmI0NTdlOGUtNTQ2ZS00MDMzLWE1YWEtZThhZWRkYzlkODUxIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VzIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VzIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2dsdWUiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZ2x1ZSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9raW5lc2lzdmlkZW8iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mva2luZXNpc3ZpZGVvIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3JkcyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9yZHMifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnQiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvcmVkc2hpZnQifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnR0ZXN0IiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL3JlZHNoaWZ0dGVzdCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zMyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zMyJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkNyZWF0aW9uRGF0ZSI6MS43NDM0NTM4NDE2NjhFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc0MzQ1Mzg0MTY2OEU5LCJUYXJnZXRLZXlJZCI6ImY1NDQwMjcyLWEyYzktNGU3Ny05N2Y4LTdjYjE4NzA2NmViZCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zc20iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mvc3NtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3hyYXkiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MveHJheSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkFsaWFzTmFtZSI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkNyZWF0aW9uRGF0ZSI6MS43NTI4NzgxMjgwMzZFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc1Mjg3ODEyODAzNkU5LCJUYXJnZXRLZXlJZCI6IjgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJBbGlhc05hbWUiOiJhbGlhcy90ZXN0LXNlY3JldHMyIiwiQ3JlYXRpb25EYXRlIjoxLjc1Mjg3OTE3Nzc0NkU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNzUyODc5MTc3NzQ2RTksIlRhcmdldEtleUlkIjoiN2VkM2VkOTgtMDM2MS00ZWQyLWExN2EtOTE1YjBlZjJlOWJmIn1dLCJUcnVuY2F0ZWQiOmZhbHNlfQ==\"\n      }\n    },\n    {\n      \"ID\": \"2178d2eeff7ae3f2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6ImJXRnNabTl5YldWa0lHTnBjR2hsY2lCdFpYTnpZV2RsIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"118fa7c1-ac93-410f-8b8c-3b63af6ef80a\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJJbnZhbGlkQ2lwaGVydGV4dEV4Y2VwdGlvbiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/awskms/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3CIgeupQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"23360283b1e010aa\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.ListAliases\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"e30=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"2035\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f2d29d09-2c10-4b93-b733-bf5e6fb81bba\"\n          ]\n        },\n        \"Body\": \"eyJBbGlhc0NvdW50IjoxNSwiQWxpYXNlcyI6W3siQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9keW5hbW9kYiIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9keW5hbW9kYiJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9lYnMiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZWJzIiwiQ3JlYXRpb25EYXRlIjoxLjU5MjQxMjAxODUyMUU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNTkyNDEyMDE4NTIxRTksIlRhcmdldEtleUlkIjoiZmI0NTdlOGUtNTQ2ZS00MDMzLWE1YWEtZThhZWRkYzlkODUxIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VzIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VzIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2dsdWUiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZ2x1ZSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9raW5lc2lzdmlkZW8iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mva2luZXNpc3ZpZGVvIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3JkcyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9yZHMifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnQiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvcmVkc2hpZnQifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnR0ZXN0IiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL3JlZHNoaWZ0dGVzdCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zMyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zMyJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkNyZWF0aW9uRGF0ZSI6MS43NDM0NTM4NDE2NjhFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc0MzQ1Mzg0MTY2OEU5LCJUYXJnZXRLZXlJZCI6ImY1NDQwMjcyLWEyYzktNGU3Ny05N2Y4LTdjYjE4NzA2NmViZCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zc20iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mvc3NtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3hyYXkiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MveHJheSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkFsaWFzTmFtZSI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkNyZWF0aW9uRGF0ZSI6MS43NTI4NzgxMjgwMzZFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc1Mjg3ODEyODAzNkU5LCJUYXJnZXRLZXlJZCI6IjgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJBbGlhc05hbWUiOiJhbGlhcy90ZXN0LXNlY3JldHMyIiwiQ3JlYXRpb25EYXRlIjoxLjc1Mjg3OTE3Nzc0NkU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNzUyODc5MTc3NzQ2RTksIlRhcmdldEtleUlkIjoiN2VkM2VkOTgtMDM2MS00ZWQyLWExN2EtOTE1YjBlZjJlOWJmIn1dLCJUcnVuY2F0ZWQiOmZhbHNlfQ==\"\n      }\n    },\n    {\n      \"ID\": \"191e92ad204b3f98\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"53\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6ImJXRnNabTl5YldWa0lHTnBjR2hsY2lCdFpYTnpZV2RsIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f30e0822-cf4d-40ec-bf82-40cb15fff485\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJJbnZhbGlkQ2lwaGVydGV4dEV4Y2VwdGlvbiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/awskms/testdata/TestConformance/TestDecryptMalformedError.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3BL+EUjwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"c6f06e4bfdbff488\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.ListAliases\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"e30=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"2035\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a747c9b0-ccff-48bc-8da1-ab72a206c8b3\"\n          ]\n        },\n        \"Body\": \"eyJBbGlhc0NvdW50IjoxNSwiQWxpYXNlcyI6W3siQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9keW5hbW9kYiIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9keW5hbW9kYiJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9lYnMiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZWJzIiwiQ3JlYXRpb25EYXRlIjoxLjU5MjQxMjAxODUyMUU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNTkyNDEyMDE4NTIxRTksIlRhcmdldEtleUlkIjoiZmI0NTdlOGUtNTQ2ZS00MDMzLWE1YWEtZThhZWRkYzlkODUxIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VzIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VzIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2dsdWUiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZ2x1ZSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9raW5lc2lzdmlkZW8iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mva2luZXNpc3ZpZGVvIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3JkcyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9yZHMifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnQiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvcmVkc2hpZnQifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnR0ZXN0IiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL3JlZHNoaWZ0dGVzdCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zMyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zMyJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkNyZWF0aW9uRGF0ZSI6MS43NDM0NTM4NDE2NjhFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc0MzQ1Mzg0MTY2OEU5LCJUYXJnZXRLZXlJZCI6ImY1NDQwMjcyLWEyYzktNGU3Ny05N2Y4LTdjYjE4NzA2NmViZCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zc20iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mvc3NtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3hyYXkiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MveHJheSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkFsaWFzTmFtZSI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkNyZWF0aW9uRGF0ZSI6MS43NTI4NzgxMjgwMzZFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc1Mjg3ODEyODAzNkU5LCJUYXJnZXRLZXlJZCI6IjgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJBbGlhc05hbWUiOiJhbGlhcy90ZXN0LXNlY3JldHMyIiwiQ3JlYXRpb25EYXRlIjoxLjc1Mjg3OTE3Nzc0NkU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNzUyODc5MTc3NzQ2RTksIlRhcmdldEtleUlkIjoiN2VkM2VkOTgtMDM2MS00ZWQyLWExN2EtOTE1YjBlZjJlOWJmIn1dLCJUcnVuY2F0ZWQiOmZhbHNlfQ==\"\n      }\n    },\n    {\n      \"ID\": \"960d5d6c40706862\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Encrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJLZXlJZCI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"3512451e-42de-4704-a781-2281ac899bf6\"\n          ]\n        },\n        \"Body\": \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BR2VmME50VHhsdG81eFNWS1pZcFNCUUFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTThDeHZDQWF3YWlyZ2U4UWxBZ0VRZ0RBanRMd1R4cHJzTXM1Z3dKWWpHeVAzemhQMERBSjc0Yy80REk3QWo2SU1nYkE4U0ppM1VNd2RMVkFKZS95UGNEcz0iLCJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9\"\n      }\n    },\n    {\n      \"ID\": \"edeabc33f769fc47\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFnSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BR2VmME50VHhsdG81eFNWS1pZcFNCUUFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTThDeHZDQWF3YWlyZ2U4UWxBZ0VRZ0RBanRMd1R4cHJzTXM1Z3dKWWpHeVAzemhQMERBSjc0Yy80REk3QWo2SU1nYkE4U0ppM1VNd2RMVkFKZS95UGNEcz0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"b2bf1f07-3767-4ad2-8c8a-4ffdaf38c10e\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJJbnZhbGlkQ2lwaGVydGV4dEV4Y2VwdGlvbiJ9\"\n      }\n    },\n    {\n      \"ID\": \"d89de312c8c2d7c8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUFlSkUrcTk5cmdjUlAzbmVkYStpWit1eTlyWlZHVnMzTEdWS2dybDhPang2Y0FaNS9RMjFQR1cyam5GSlVwbGlsSUZBQUFBQnpNSEVHQ1NxR1NJYjNEUUVIQnFCa01HSUNBUUF3WFFZSktvWklodmNOQVFjQk1CNEdDV0NHU0FGbEF3UUJMakFSQkF6d0xHOElCckJxS3VCN3hDVUNBUkNBTUNPMHZCUEdtdXd5em1EQWxpTWJJL2ZPRS9RTUFudmh6L2dNanNDUG9neUJzRHhJbUxkUXpCMHRVQWw3L0k5d093PT0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"4cbc22da-e6c5-453b-994c-5cb7c7f534b9\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJJbnZhbGlkQ2lwaGVydGV4dEV4Y2VwdGlvbiJ9\"\n      }\n    },\n    {\n      \"ID\": \"cd593c76a4249ec9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BR2VmME50VHhsdG81eFNWS1pZcFNCUUFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTThDeHZDQWF3YWlyZ2U4UWxBZ0VRZ0RBanRMd1R4cHJzTXM1Z3dKWWpHeVAzemhQMERBSjc0Yy80REk3QWo2SU1nYkE4U0ppM1VNd2RMVkFKZS95UE9nPT0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"39\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:14 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"98a107de-ffe1-4279-817b-d70b90316aeb\"\n          ]\n        },\n        \"Body\": \"eyJfX3R5cGUiOiJJbnZhbGlkQ2lwaGVydGV4dEV4Y2VwdGlvbiJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/awskms/testdata/TestConformance/TestEncryptDecrypt.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3AFDuouwAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"fb33cd82343f72ab\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.ListAliases\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"e30=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"2035\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9e1973ab-6ebb-4657-afe7-f60cdf997918\"\n          ]\n        },\n        \"Body\": \"eyJBbGlhc0NvdW50IjoxNSwiQWxpYXNlcyI6W3siQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9keW5hbW9kYiIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9keW5hbW9kYiJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9lYnMiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZWJzIiwiQ3JlYXRpb25EYXRlIjoxLjU5MjQxMjAxODUyMUU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNTkyNDEyMDE4NTIxRTksIlRhcmdldEtleUlkIjoiZmI0NTdlOGUtNTQ2ZS00MDMzLWE1YWEtZThhZWRkYzlkODUxIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VzIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VzIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2dsdWUiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZ2x1ZSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9raW5lc2lzdmlkZW8iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mva2luZXNpc3ZpZGVvIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3JkcyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9yZHMifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnQiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvcmVkc2hpZnQifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnR0ZXN0IiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL3JlZHNoaWZ0dGVzdCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zMyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zMyJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkNyZWF0aW9uRGF0ZSI6MS43NDM0NTM4NDE2NjhFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc0MzQ1Mzg0MTY2OEU5LCJUYXJnZXRLZXlJZCI6ImY1NDQwMjcyLWEyYzktNGU3Ny05N2Y4LTdjYjE4NzA2NmViZCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zc20iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mvc3NtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3hyYXkiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MveHJheSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkFsaWFzTmFtZSI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkNyZWF0aW9uRGF0ZSI6MS43NTI4NzgxMjgwMzZFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc1Mjg3ODEyODAzNkU5LCJUYXJnZXRLZXlJZCI6IjgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJBbGlhc05hbWUiOiJhbGlhcy90ZXN0LXNlY3JldHMyIiwiQ3JlYXRpb25EYXRlIjoxLjc1Mjg3OTE3Nzc0NkU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNzUyODc5MTc3NzQ2RTksIlRhcmdldEtleUlkIjoiN2VkM2VkOTgtMDM2MS00ZWQyLWExN2EtOTE1YjBlZjJlOWJmIn1dLCJUcnVuY2F0ZWQiOmZhbHNlfQ==\"\n      }\n    },\n    {\n      \"ID\": \"9058d69d3a8a6b8e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Encrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJLZXlJZCI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2f23a3e2-6ffc-49eb-a5ee-d62e3a4cb197\"\n          ]\n        },\n        \"Body\": \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BSG9CbnZFU0pZaWFjODJvR0RGUDQ0Q0FBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVZ3TFcrRlVxL1FOd3ZQOWpBZ0VRZ0RCcFR3eTJUTTBrK21LZG5sOGNpaGNaNXJxcmtPdDlBa216UlZyNXhHZ2NBd1U2U1JBRlAzMGt6ck9qMzZiUWpJQT0iLCJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9\"\n      }\n    },\n    {\n      \"ID\": \"f9dd81d26890e873\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BSG9CbnZFU0pZaWFjODJvR0RGUDQ0Q0FBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVZ3TFcrRlVxL1FOd3ZQOWpBZ0VRZ0RCcFR3eTJUTTBrK21LZG5sOGNpaGNaNXJxcmtPdDlBa216UlZyNXhHZ2NBd1U2U1JBRlAzMGt6ck9qMzZiUWpJQT0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:12 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"08fdfbae-f2cc-4cc8-9501-b1cf63f14a09\"\n          ]\n        },\n        \"Body\": \"eyJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCIsIktleU1hdGVyaWFsSWQiOiI5MTNlYWJkZjZiODFjNDRmZGU3NzlkNmJlODk5ZmFlY2JkYWQ5NTQ2NTZjZGNiMTk1MmEwYWU1ZjBlOGYxZTljIiwiS2V5T3JpZ2luIjoiQVdTX0tNUyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/awskms/testdata/TestConformance/TestMultipleEncryptionsNotEqual.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3AMJG/gQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"0c6815c963d6c88a\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.ListAliases\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"e30=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"2035\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"1ded5300-b21b-49ab-9d60-be6b4f78867e\"\n          ]\n        },\n        \"Body\": \"eyJBbGlhc0NvdW50IjoxNSwiQWxpYXNlcyI6W3siQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9keW5hbW9kYiIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9keW5hbW9kYiJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9lYnMiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZWJzIiwiQ3JlYXRpb25EYXRlIjoxLjU5MjQxMjAxODUyMUU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNTkyNDEyMDE4NTIxRTksIlRhcmdldEtleUlkIjoiZmI0NTdlOGUtNTQ2ZS00MDMzLWE1YWEtZThhZWRkYzlkODUxIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VzIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VzIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2dsdWUiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZ2x1ZSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9raW5lc2lzdmlkZW8iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mva2luZXNpc3ZpZGVvIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3JkcyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9yZHMifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnQiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvcmVkc2hpZnQifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnR0ZXN0IiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL3JlZHNoaWZ0dGVzdCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zMyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zMyJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkNyZWF0aW9uRGF0ZSI6MS43NDM0NTM4NDE2NjhFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc0MzQ1Mzg0MTY2OEU5LCJUYXJnZXRLZXlJZCI6ImY1NDQwMjcyLWEyYzktNGU3Ny05N2Y4LTdjYjE4NzA2NmViZCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zc20iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mvc3NtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3hyYXkiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MveHJheSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkFsaWFzTmFtZSI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkNyZWF0aW9uRGF0ZSI6MS43NTI4NzgxMjgwMzZFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc1Mjg3ODEyODAzNkU5LCJUYXJnZXRLZXlJZCI6IjgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJBbGlhc05hbWUiOiJhbGlhcy90ZXN0LXNlY3JldHMyIiwiQ3JlYXRpb25EYXRlIjoxLjc1Mjg3OTE3Nzc0NkU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNzUyODc5MTc3NzQ2RTksIlRhcmdldEtleUlkIjoiN2VkM2VkOTgtMDM2MS00ZWQyLWExN2EtOTE1YjBlZjJlOWJmIn1dLCJUcnVuY2F0ZWQiOmZhbHNlfQ==\"\n      }\n    },\n    {\n      \"ID\": \"25a50916bc27bda2\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Encrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJLZXlJZCI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"35cd6029-3df2-4c12-8d6c-5b5ddcce47bc\"\n          ]\n        },\n        \"Body\": \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BRVExa2thWm4zdWlrR09QbC8za2kwTUFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVVMaG9OWG5UU3RLZ3Y0V2pBZ0VRZ0RCenVFOFBqakJwM3dXd3U0anBDQUY3ZXVnNVdyb1VxZlNCVlBOY1JLeEt0bFJ0a0I5WWtBZHFEWEwxa0YxdG1YZz0iLCJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9\"\n      }\n    },\n    {\n      \"ID\": \"4e5a2e5084f5a253\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Encrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJLZXlJZCI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"77807f3a-f4f4-4969-8fb4-84fc810b792f\"\n          ]\n        },\n        \"Body\": \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BSDRyeWl5REptTFZFWWVVdFlKNU5JR0FBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVBRTHVneFd5cWFKNDhOcVlBZ0VRZ0RCZzB0Vzc1dVU2aCsvWXhWcWNoelVTZUVlOEtLYjV1M2tGNVRCQStyWWNzVHV2NjQyd0p2NmJabTBlbHlRTHdVOD0iLCJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9\"\n      }\n    },\n    {\n      \"ID\": \"00998ecfc23b7cd9\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BRVExa2thWm4zdWlrR09QbC8za2kwTUFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVVMaG9OWG5UU3RLZ3Y0V2pBZ0VRZ0RCenVFOFBqakJwM3dXd3U0anBDQUY3ZXVnNVdyb1VxZlNCVlBOY1JLeEt0bFJ0a0I5WWtBZHFEWEwxa0YxdG1YZz0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"9eab563f-fae8-4ead-b5c2-3eb69a03dba2\"\n          ]\n        },\n        \"Body\": \"eyJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCIsIktleU1hdGVyaWFsSWQiOiI5MTNlYWJkZjZiODFjNDRmZGU3NzlkNmJlODk5ZmFlY2JkYWQ5NTQ2NTZjZGNiMTk1MmEwYWU1ZjBlOGYxZTljIiwiS2V5T3JpZ2luIjoiQVdTX0tNUyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n      }\n    },\n    {\n      \"ID\": \"d7d987f42b9d80a6\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BSDRyeWl5REptTFZFWWVVdFlKNU5JR0FBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVBRTHVneFd5cWFKNDhOcVlBZ0VRZ0RCZzB0Vzc1dVU2aCsvWXhWcWNoelVTZUVlOEtLYjV1M2tGNVRCQStyWWNzVHV2NjQyd0p2NmJabTBlbHlRTHdVOD0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"f3b85122-07b6-44f9-a9ae-9a7af9828abe\"\n          ]\n        },\n        \"Body\": \"eyJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCIsIktleU1hdGVyaWFsSWQiOiI5MTNlYWJkZjZiODFjNDRmZGU3NzlkNmJlODk5ZmFlY2JkYWQ5NTQ2NTZjZGNiMTk1MmEwYWU1ZjBlOGYxZTljIiwiS2V5T3JpZ2luIjoiQVdTX0tNUyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/awskms/testdata/TestConformance/TestMultipleKeys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7hTg3BEk0fQAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": [\n      \"MessageAttributes.*\"\n    ],\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^Amz-Sdk-Invocation-Id$\",\n      \"^X-Amz-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\",\n      \"^Authorization$\",\n      \"^Duration$\",\n      \"^X-Amz-Security-Token$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": [\n      \"^X-Amz-Date$\"\n    ],\n    \"RemoveParams\": [\n      \"^X-Amz-Credential$\",\n      \"^X-Amz-Signature$\",\n      \"^X-Amz-Security-Token$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"6286df3ce203ee8c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"2\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.ListAliases\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"e30=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"2035\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2bd2a7d5-55c9-4f15-ab88-b173e4b9f175\"\n          ]\n        },\n        \"Body\": \"eyJBbGlhc0NvdW50IjoxNSwiQWxpYXNlcyI6W3siQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9keW5hbW9kYiIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9keW5hbW9kYiJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9lYnMiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZWJzIiwiQ3JlYXRpb25EYXRlIjoxLjU5MjQxMjAxODUyMUU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNTkyNDEyMDE4NTIxRTksIlRhcmdldEtleUlkIjoiZmI0NTdlOGUtNTQ2ZS00MDMzLWE1YWEtZThhZWRkYzlkODUxIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VsYXN0aWNmaWxlc3lzdGVtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2VzIiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL2VzIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL2dsdWUiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvZ2x1ZSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9raW5lc2lzdmlkZW8iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mva2luZXNpc3ZpZGVvIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3JkcyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9yZHMifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnQiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MvcmVkc2hpZnQifSx7IkFsaWFzQXJuIjoiYXJuOmF3czprbXM6dXMtZWFzdC0yOjQ1Njc1MjY2NTU3NjphbGlhcy9hd3MvcmVkc2hpZnR0ZXN0IiwiQWxpYXNOYW1lIjoiYWxpYXMvYXdzL3JlZHNoaWZ0dGVzdCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zMyIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zMyJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkFsaWFzTmFtZSI6ImFsaWFzL2F3cy9zZWNyZXRzbWFuYWdlciIsIkNyZWF0aW9uRGF0ZSI6MS43NDM0NTM4NDE2NjhFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc0MzQ1Mzg0MTY2OEU5LCJUYXJnZXRLZXlJZCI6ImY1NDQwMjcyLWEyYzktNGU3Ny05N2Y4LTdjYjE4NzA2NmViZCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL2F3cy9zc20iLCJBbGlhc05hbWUiOiJhbGlhcy9hd3Mvc3NtIn0seyJBbGlhc0FybiI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6YWxpYXMvYXdzL3hyYXkiLCJBbGlhc05hbWUiOiJhbGlhcy9hd3MveHJheSJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkFsaWFzTmFtZSI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIkNyZWF0aW9uRGF0ZSI6MS43NTI4NzgxMjgwMzZFOSwiTGFzdFVwZGF0ZWREYXRlIjoxLjc1Mjg3ODEyODAzNkU5LCJUYXJnZXRLZXlJZCI6IjgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9LHsiQWxpYXNBcm4iOiJhcm46YXdzOmttczp1cy1lYXN0LTI6NDU2NzUyNjY1NTc2OmFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJBbGlhc05hbWUiOiJhbGlhcy90ZXN0LXNlY3JldHMyIiwiQ3JlYXRpb25EYXRlIjoxLjc1Mjg3OTE3Nzc0NkU5LCJMYXN0VXBkYXRlZERhdGUiOjEuNzUyODc5MTc3NzQ2RTksIlRhcmdldEtleUlkIjoiN2VkM2VkOTgtMDM2MS00ZWQyLWExN2EtOTE1YjBlZjJlOWJmIn1dLCJUcnVuY2F0ZWQiOmZhbHNlfQ==\"\n      }\n    },\n    {\n      \"ID\": \"af91b52a7f98ce1b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"73\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Encrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJLZXlJZCI6ImFsaWFzL3Rlc3Qtc2VjcmV0cyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"85d71702-c8bb-414e-b91e-d8205a1d2ce5\"\n          ]\n        },\n        \"Body\": \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BRjZDNS92ZW5aSU4rNVFNNTBTQzFMWEFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTXo2WDFnUkJCUHVtZlVEZFNBZ0VRZ0RBK2hHYWhzcXNsY1ZCZ2lzdThrMFM3d3R6dWczSk5VcG5PY0FmYnIzVE4ycnRwWWc5SXU5SXA1TDcxMzM2V0F5ND0iLCJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCJ9\"\n      }\n    },\n    {\n      \"ID\": \"7420a3589e3b7c92\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"74\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Encrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJLZXlJZCI6ImFsaWFzL3Rlc3Qtc2VjcmV0czIiLCJQbGFpbnRleHQiOiJTU2R0SUdFZ2MyVmpjbVYwSUcxbGMzTmhaMlVoIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"381\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"a3ee27d9-1795-496d-b911-b603b16c52eb\"\n          ]\n        },\n        \"Body\": \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGcvbmJCVWlrTjYyREZrMzlDcDUxVW1jaVhXbXJVNlB5d3JQck5lU2k4b0xBRXYyNEhkZFdlNEFYdWFvMHpqbEVwTkFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTUMvZFV6cFFrUS9qY2hiZVVBZ0VRZ0RDTkxkOCszMlF4VGsvSFRNTEE0ZEdYYThYbGtHaFhoVVEwYVFRZDJtdDRDYTdldldWUGVmSWV3cnlrNFBHVEFjST0iLCJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzdlZDNlZDk4LTAzNjEtNGVkMi1hMTdhLTkxNWIwZWYyZTliZiJ9\"\n      }\n    },\n    {\n      \"ID\": \"7483652a76b5cf5d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGlSUHF2ZmE0SEVUOTUzbld2b21mcnN2YTJWUmxiTnl4bFNvSzVmRG84ZW5BRjZDNS92ZW5aSU4rNVFNNTBTQzFMWEFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTXo2WDFnUkJCUHVtZlVEZFNBZ0VRZ0RBK2hHYWhzcXNsY1ZCZ2lzdThrMFM3d3R6dWczSk5VcG5PY0FmYnIzVE4ycnRwWWc5SXU5SXA1TDcxMzM2V0F5ND0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"2432f920-dcce-4983-9bb2-73829fb6c6ac\"\n          ]\n        },\n        \"Body\": \"eyJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzgxOThmNTM2LTI2YjEtNDU3MS1hNDE1LTAxYzA0NTBlNmMxNCIsIktleU1hdGVyaWFsSWQiOiI5MTNlYWJkZjZiODFjNDRmZGU3NzlkNmJlODk5ZmFlY2JkYWQ5NTQ2NTZjZGNiMTk1MmEwYWU1ZjBlOGYxZTljIiwiS2V5T3JpZ2luIjoiQVdTX0tNUyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n      }\n    },\n    {\n      \"ID\": \"d9db04ea3df3311f\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://kms.us-east-2.amazonaws.com/\",\n        \"Header\": {\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Amz-Sdk-Invocation-Id\": [\n            \"CLEARED\"\n          ],\n          \"Amz-Sdk-Request\": [\n            \"attempt=1; max=1\"\n          ],\n          \"Content-Length\": [\n            \"253\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Date\": [\n            \"CLEARED\"\n          ],\n          \"X-Amz-Target\": [\n            \"TrentService.Decrypt\"\n          ]\n        },\n        \"MediaType\": \"application/x-amz-json-1.1\",\n        \"BodyParts\": [\n          \"eyJDaXBoZXJ0ZXh0QmxvYiI6IkFRSUNBSGcvbmJCVWlrTjYyREZrMzlDcDUxVW1jaVhXbXJVNlB5d3JQck5lU2k4b0xBRXYyNEhkZFdlNEFYdWFvMHpqbEVwTkFBQUFjekJ4QmdrcWhraUc5dzBCQndhZ1pEQmlBZ0VBTUYwR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTUMvZFV6cFFrUS9qY2hiZVVBZ0VRZ0RDTkxkOCszMlF4VGsvSFRNTEE0ZEdYYThYbGtHaFhoVVEwYVFRZDJtdDRDYTdldldWUGVmSWV3cnlrNFBHVEFjST0ifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache, no-store, must-revalidate, private\"\n          ],\n          \"Content-Length\": [\n            \"277\"\n          ],\n          \"Content-Type\": [\n            \"application/x-amz-json-1.1\"\n          ],\n          \"Date\": [\n            \"Thu, 19 Mar 2026 15:31:13 GMT\"\n          ],\n          \"Expires\": [\n            \"0\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"X-Amzn-Requestid\": [\n            \"c7fe0796-d824-488e-994f-98de2cf4bac2\"\n          ]\n        },\n        \"Body\": \"eyJFbmNyeXB0aW9uQWxnb3JpdGhtIjoiU1lNTUVUUklDX0RFRkFVTFQiLCJLZXlJZCI6ImFybjphd3M6a21zOnVzLWVhc3QtMjo0NTY3NTI2NjU1NzY6a2V5LzdlZDNlZDk4LTAzNjEtNGVkMi1hMTdhLTkxNWIwZWYyZTliZiIsIktleU1hdGVyaWFsSWQiOiIzZjlkYjA1NDhhNDM3YWQ4MzE2NGRmZDBhOWU3NTUyNjcyMjVkNjlhYjUzYTNmMmMyYjNlYjM1ZTRhMmYyODJjIiwiS2V5T3JpZ2luIjoiQVdTX0tNUyIsIlBsYWludGV4dCI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/azurekeyvault/akv.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package azurekeyvault provides a secrets implementation backed by Azure KeyVault.\n// See https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis for more information.\n// Use OpenKeeper to construct a *secrets.Keeper.\n//\n// # URLs\n//\n// For secrets.OpenKeeper, azurekeyvault registers for the scheme \"azurekeyvault\".\n// The default URL opener will use azidentity.DefaultAzureCredential to get credentials.\n//\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// azurekeyvault exposes the following type for As:\n// - Error: *azcore.ResponseError.\npackage azurekeyvault\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azidentity\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"gocloud.dev/secrets\"\n)\n\n// Map of HTTP Status Code to go-cloud ErrorCode\nvar errorCodeMap = map[int]gcerrors.ErrorCode{\n\t200: gcerrors.OK,\n\t400: gcerrors.InvalidArgument,\n\t401: gcerrors.PermissionDenied,\n\t403: gcerrors.PermissionDenied,\n\t404: gcerrors.NotFound,\n\t408: gcerrors.DeadlineExceeded,\n\t429: gcerrors.ResourceExhausted,\n\t500: gcerrors.Internal,\n\t501: gcerrors.Unimplemented,\n}\n\nfunc init() {\n\tsecrets.DefaultURLMux().RegisterKeeper(Scheme, new(defaultDialer))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDefaultClientMaker,\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\n// ClientMakerT is the type of a function used to generate a Client.\ntype ClientMakerT func(keyVaultURI string) (*azkeys.Client, error)\n\n// defaultDialer dials Azure KeyVault using DefaultClientMaker.\ntype defaultDialer struct{}\n\nfunc (o *defaultDialer) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\topener := &URLOpener{ClientMaker: DefaultClientMaker}\n\treturn opener.OpenKeeperURL(ctx, u)\n}\n\n// Scheme is the URL scheme azurekeyvault registers its URLOpener under on secrets.DefaultMux.\nconst Scheme = \"azurekeyvault\"\n\n// URLOpener opens Azure KeyVault URLs like\n// \"azurekeyvault://{keyvault-name}.vault.azure.net/keys/{key-name}/{key-version}?algorithm=RSA-OAEP-256\".\n//\n// The \"azurekeyvault\" URL scheme is replaced with \"https\" to construct an Azure\n// Key Vault keyID, as described in https://docs.microsoft.com/en-us/azure/key-vault/about-keys-secrets-and-certificates.\n// The \"/{key-version}\"\" suffix is optional; it defaults to the latest version.\n//\n// The \"algorithm\" query parameter sets the algorithm to use; see\n// https://docs.microsoft.com/en-us/rest/api/keyvault/encrypt/encrypt#jsonwebkeyencryptionalgorithm\n// for supported algorithms. It defaults to \"RSA-OAEP-256\".\n//\n// No other query parameters are supported.\ntype URLOpener struct {\n\t// ClientMaker defaults to DefaultClientMaker.\n\tClientMaker ClientMakerT\n\n\t// Options specifies the options to pass to OpenKeeper.\n\tOptions KeeperOptions\n}\n\n// OpenKeeperURL opens an Azure KeyVault Keeper based on u.\nfunc (o *URLOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\tq := u.Query()\n\talgorithm := q.Get(\"algorithm\")\n\tif algorithm != \"\" {\n\t\to.Options.Algorithm = azkeys.JSONWebKeyEncryptionAlgorithm(algorithm)\n\t\tq.Del(\"algorithm\")\n\t}\n\tfor param := range q {\n\t\treturn nil, fmt.Errorf(\"open keeper %v: invalid query parameter %q\", u, param)\n\t}\n\tkeyID := \"https://\" + path.Join(u.Host, u.Path)\n\treturn OpenKeeper(o.ClientMaker, keyID, &o.Options)\n}\n\ntype keeper struct {\n\tclient      *azkeys.Client\n\tkeyVaultURI string // unused, but for validation in tests\n\tkeyName     string\n\tkeyVersion  string\n\toptions     *KeeperOptions\n}\n\n// KeeperOptions provides configuration options for encryption/decryption operations.\ntype KeeperOptions struct {\n\t// Algorithm sets the encryption algorithm used.\n\t// Defaults to \"RSA-OAEP-256\".\n\t// See https://docs.microsoft.com/en-us/rest/api/keyvault/encrypt/encrypt#jsonwebkeyencryptionalgorithm\n\t// for more details.\n\tAlgorithm azkeys.JSONWebKeyEncryptionAlgorithm\n\n\t// EncryptOptions are passed through to Encrypt.\n\tEncryptOptions *azkeys.EncryptOptions\n\n\t// DecryptOptions are passed through to Decrypt.\n\tDecryptOptions *azkeys.DecryptOptions\n}\n\n// DefaultClientMaker returns a function that constructs a KeyVault Client.\n// By default it uses credentials from the environment;\n// See https://docs.microsoft.com/en-us/go/azure/azure-sdk-go-authorization#use-environment-based-authentication.\n// If the environment variable AZURE_KEYVAULT_AUTH_VIA_CLI is set to a truthy value, it\n// uses credentials from the Azure CLI instead.\nfunc DefaultClientMaker(keyVaultURI string) (*azkeys.Client, error) {\n\tcreds, err := azidentity.NewDefaultAzureCredential(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn azkeys.NewClient(keyVaultURI, creds, &azkeys.ClientOptions{\n\t\tClientOptions: policy.ClientOptions{\n\t\t\tTelemetry: policy.TelemetryOptions{\n\t\t\t\tApplicationID: useragent.AzureUserAgentPrefix(\"secrets\"),\n\t\t\t},\n\t\t},\n\t})\n}\n\n// Note that the last binding may be just a key, or key/version.\nvar keyIDRE = regexp.MustCompile(`^(https://.+\\.vault\\.(?:[a-z\\d-.]+)/)keys/(.+)$`)\n\n// OpenKeeper returns a *secrets.Keeper that uses Azure keyVault.\n//\n// clientMaker is used to construct an azkeys.Client.\n//\n// keyID is a Azure Key Vault key identifier like \"https://{keyvault-name}.vault.azure.net/keys/{key-name}/{key-version}\".\n// The \"/{key-version}\" suffix is optional; it defaults to the latest version.\n// See https://docs.microsoft.com/en-us/azure/key-vault/about-keys-secrets-and-certificates\n// for more details.\nfunc OpenKeeper(clientMaker ClientMakerT, keyID string, opts *KeeperOptions) (*secrets.Keeper, error) {\n\tdrv, err := openKeeper(clientMaker, keyID, opts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn secrets.NewKeeper(drv), nil\n}\n\nfunc openKeeper(clientMaker ClientMakerT, keyID string, opts *KeeperOptions) (*keeper, error) {\n\tif opts == nil {\n\t\topts = &KeeperOptions{}\n\t}\n\tif opts.Algorithm == \"\" {\n\t\topts.Algorithm = azkeys.JSONWebKeyEncryptionAlgorithmRSAOAEP256\n\t}\n\tmatches := keyIDRE.FindStringSubmatch(keyID)\n\tif len(matches) != 3 {\n\t\treturn nil, fmt.Errorf(\"invalid keyID %q; must match %v %v\", keyID, keyIDRE, matches)\n\t}\n\t// matches[0] is the whole keyID, [1] is the keyVaultURI, and [2] is the key or the key/version.\n\tkeyVaultURI := matches[1]\n\tparts := strings.SplitN(matches[2], \"/\", 2)\n\tkeyName := parts[0]\n\tvar keyVersion string\n\tif len(parts) > 1 {\n\t\tkeyVersion = parts[1]\n\t}\n\tclient, err := clientMaker(keyVaultURI)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &keeper{\n\t\tclient:      client,\n\t\tkeyVaultURI: keyVaultURI,\n\t\tkeyName:     keyName,\n\t\tkeyVersion:  keyVersion,\n\t\toptions:     opts,\n\t}, nil\n}\n\n// Encrypt encrypts the plaintext into a ciphertext.\nfunc (k *keeper) Encrypt(ctx context.Context, plaintext []byte) ([]byte, error) {\n\tkeyOpsResult, err := k.client.Encrypt(ctx, k.keyName, k.keyVersion, azkeys.KeyOperationsParameters{\n\t\tAlgorithm: &k.options.Algorithm,\n\t\tValue:     plaintext,\n\t}, k.options.EncryptOptions)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn keyOpsResult.Result, nil\n}\n\n// Decrypt decrypts the ciphertext into a plaintext.\nfunc (k *keeper) Decrypt(ctx context.Context, ciphertext []byte) ([]byte, error) {\n\tkeyOpsResult, err := k.client.Decrypt(ctx, k.keyName, k.keyVersion, azkeys.KeyOperationsParameters{\n\t\tAlgorithm: &k.options.Algorithm,\n\t\tValue:     ciphertext,\n\t}, k.options.DecryptOptions)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn keyOpsResult.Result, nil\n}\n\n// Close implements driver.Keeper.Close.\nfunc (k *keeper) Close() error { return nil }\n\n// ErrorAs implements driver.Keeper.ErrorAs.\nfunc (k *keeper) ErrorAs(err error, i any) bool {\n\treturn errors.As(err, i)\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (k *keeper) ErrorCode(err error) gcerrors.ErrorCode {\n\tre, ok := err.(*azcore.ResponseError)\n\tif !ok {\n\t\treturn gcerr.Unknown\n\t}\n\tec, ok := errorCodeMap[re.StatusCode]\n\tif !ok {\n\t\treturn gcerr.Unknown\n\t}\n\treturn ec\n}\n"
  },
  {
    "path": "secrets/azurekeyvault/akv_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage azurekeyvault\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"log\"\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/azidentity\"\n\t\"github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/driver\"\n\t\"gocloud.dev/secrets/drivertest\"\n)\n\n// Prerequisites for --record mode\n//\n// 1. Sign-in to your Azure Subscription at http://portal.azure.com.\n//\n// 2. Create a KeyVault, see\n// https://docs.microsoft.com/en-us/azure/key-vault/quick-create-portal.\n//\n// 3. Choose an authentication model. This test uses Service Principal, see\n// https://docs.microsoft.com/en-us/rest/api/azure/index#register-your-client-application-with-azure-ad.\n// For documentation on acceptable auth models, see\n// https://docs.microsoft.com/en-us/azure/key-vault/key-vault-whatis.\n//\n// 4. Set your environment variables depending on the auth model selection.\n// Modify helper initEnv() as needed.\n// For Service Principal, please set the following, see\n// https://docs.microsoft.com/en-us/go/azure/azure-sdk-go-authorization.\n//\n// - AZURE_TENANT_ID: Go to \"Azure Active Directory\", then \"Properties\". The\n//     \"Directory ID\" property is your AZURE_TENANT_ID.\n// - AZURE_CLIENT_ID: Go to \"Azure Active Directory\", then \"App Registrations\",\n//     then \"View all applications\". The \"Application ID\" column shows your\n//     AZURE_CLIENT_ID.\n// - AZURE_CLIENT_SECRET: Click on the application from the previous step,\n//     then \"Settings\" and then \"Keys\". Create a key and use it as your\n//     AZURE_CLIENT_SECRET. Make sure to save the value as it's hidden after\n//     the initial creation.\n// - AZURE_ENVIRONMENT: (optional).\n// - AZURE_AD_RESOURCE: (optional).\n//\n// 5. Create/Import a Key. This can be done in the Azure Portal under \"Key vaults\".\n//\n// 6. Update constants below to match your Azure KeyVault settings.\n\nconst (\n\tkeyID1 = \"https://go-cdk.vault.azure.net/keys/test1\"\n\tkeyID2 = \"https://go-cdk.vault.azure.net/keys/test2\"\n)\n\ntype harness struct {\n\tclientMaker ClientMakerT\n\tclose       func()\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Keeper, driver.Keeper, error) {\n\tkeeper1, err := openKeeper(h.clientMaker, keyID1, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tkeeper2, err := openKeeper(h.clientMaker, keyID2, nil)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn keeper1, keeper2, nil\n}\n\nfunc (h *harness) Close() {\n\th.close()\n}\n\ntype dummyToken struct{}\n\nfunc (*dummyToken) GetToken(ctx context.Context, opts policy.TokenRequestOptions) (azcore.AccessToken, error) {\n\treturn azcore.AccessToken{}, nil\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\thttpClient, done := setup.NewAzureKeyVaultTestClient(ctx, t)\n\tclientMaker := func(keyVaultURI string) (*azkeys.Client, error) {\n\t\tvar creds azcore.TokenCredential\n\t\tvar err error\n\t\tif *setup.Record {\n\t\t\tinitEnv()\n\t\t\tcreds, err = azidentity.NewEnvironmentCredential(nil)\n\t\t} else {\n\t\t\tcreds = &dummyToken{}\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn azkeys.NewClient(keyVaultURI, creds, &azkeys.ClientOptions{\n\t\t\tClientOptions: policy.ClientOptions{\n\t\t\t\tTransport: httpClient,\n\t\t\t\tTelemetry: policy.TelemetryOptions{\n\t\t\t\t\tApplicationID: useragent.AzureUserAgentPrefix(\"secrets\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n\treturn &harness{\n\t\tclientMaker: clientMaker,\n\t\tclose:       done,\n\t}, nil\n}\n\nfunc initEnv() {\n\t// For Client Credentials authorization, set AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET\n\t// For Client Certificate and Azure Managed Service Identity, see doc below for help\n\t// https://github.com/Azure/azure-sdk-for-go\n\tif os.Getenv(\"AZURE_TENANT_ID\") == \"\" ||\n\t\tos.Getenv(\"AZURE_CLIENT_ID\") == \"\" ||\n\t\tos.Getenv(\"AZURE_CLIENT_SECRET\") == \"\" {\n\t\tlog.Fatal(\"Missing environment for recording tests, set AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET\")\n\t}\n\tos.Setenv(\"AZURE_ENVIRONMENT\", \"AzurePublicCloud\")\n\tos.Setenv(\"AZURE_AD_RESOURCE\", \"https://vault.azure.net\")\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (v verifyAs) Name() string {\n\treturn \"verify As function\"\n}\n\nfunc (v verifyAs) ErrorCheck(k *secrets.Keeper, err error) error {\n\tvar e *azcore.ResponseError\n\tif !k.ErrorAs(err, &e) {\n\t\treturn errors.New(\"Keeper.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\n// Key Vault-specific tests.\n\nfunc dummyClientMaker(s string) (*azkeys.Client, error) {\n\treturn &azkeys.Client{}, nil\n}\n\nfunc TestOpenKeeper(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"azurekeyvaultdummy://mykeyvault.vault.azure.net/keys/mykey/myversion\", false},\n\t\t// No version -> OK.\n\t\t{\"azurekeyvaultdummy://mykeyvault.vault.azure.net/keys/mykey\", false},\n\t\t// Setting algorithm query param -> OK.\n\t\t{\"azurekeyvaultdummy://mykeyvault.vault.azure.net/keys/mykey/myversion?algorithm=RSA-OAEP\", false},\n\t\t// Invalid query parameter.\n\t\t{\"azurekeyvaultdummy://mykeyvault.vault.azure.net/keys/mykey/myversion?param=value\", true},\n\t\t// Missing key vault name.\n\t\t{\"azurekeyvaultdummy:///vault.azure.net/keys/mykey/myversion\", true},\n\t\t// Missing \"keys\".\n\t\t{\"azurekeyvaultdummy://mykeyvault.vault.azure.net/mykey/myversion\", true},\n\t}\n\n\tsecrets.DefaultURLMux().RegisterKeeper(Scheme+\"dummy\", &URLOpener{ClientMaker: dummyClientMaker})\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tkeeper, err := secrets.OpenKeeper(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tif err = keeper.Close(); err != nil {\n\t\t\t\tt.Errorf(\"%s: got error during close: %v\", test.URL, err)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestKeyIDRE(t *testing.T) {\n\ttestCases := []struct {\n\t\t// input\n\t\tkeyID string\n\n\t\t// output\n\t\tkeyVaultURI string\n\t\tkeyName     string\n\t\tkeyVersion  string\n\t}{\n\t\t{\n\t\t\tkeyID:       keyID1,\n\t\t\tkeyVaultURI: \"https://go-cdk.vault.azure.net/\",\n\t\t\tkeyName:     \"test1\",\n\t\t},\n\t\t{\n\t\t\tkeyID:       keyID2,\n\t\t\tkeyVaultURI: \"https://go-cdk.vault.azure.net/\",\n\t\t\tkeyName:     \"test2\",\n\t\t},\n\t\t{\n\t\t\tkeyID:       \"https://mykeyvault.vault.azure.net/keys/mykey/myversion\",\n\t\t\tkeyVaultURI: \"https://mykeyvault.vault.azure.net/\",\n\t\t\tkeyName:     \"mykey\",\n\t\t\tkeyVersion:  \"myversion\",\n\t\t},\n\t\t{\n\t\t\tkeyID:       \"https://mykeyvault.vault.usgovcloudapi.net/keys/mykey/myversion\",\n\t\t\tkeyVaultURI: \"https://mykeyvault.vault.usgovcloudapi.net/\",\n\t\t\tkeyName:     \"mykey\",\n\t\t\tkeyVersion:  \"myversion\",\n\t\t},\n\t\t{\n\t\t\tkeyID:       \"https://mykeyvault.vault.region01.external.com/keys/mykey/myversion\",\n\t\t\tkeyVaultURI: \"https://mykeyvault.vault.region01.external.com/\",\n\t\t\tkeyName:     \"mykey\",\n\t\t\tkeyVersion:  \"myversion\",\n\t\t},\n\t}\n\tfor _, testCase := range testCases {\n\t\tt.Run(testCase.keyID, func(t *testing.T) {\n\t\t\tk, err := openKeeper(dummyClientMaker, testCase.keyID, nil)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tdefer k.Close()\n\n\t\t\tif k.keyVaultURI != testCase.keyVaultURI {\n\t\t\t\tt.Errorf(\"got key vault URI %s, want key vault URI %s\", k.keyVaultURI, testCase.keyVaultURI)\n\t\t\t}\n\n\t\t\tif k.keyName != testCase.keyName {\n\t\t\t\tt.Errorf(\"got key name %s, want key name %s\", k.keyName, testCase.keyName)\n\t\t\t}\n\n\t\t\tif k.keyVersion != testCase.keyVersion {\n\t\t\t\tt.Errorf(\"got key version %s, want key version %s\", k.keyVersion, testCase.keyVersion)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "secrets/azurekeyvault/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage azurekeyvault_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/azurekeyvault\"\n)\n\nfunc ExampleOpenKeeper() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Makes a client to use with the Azure KeyVault API, using default\n\t// authorization from the environment.\n\tclientMaker := azurekeyvault.DefaultClientMaker\n\n\t// Construct a *secrets.Keeper.\n\tkeeper, err := azurekeyvault.OpenKeeper(clientMaker, \"https://mykeyvaultname.vault.azure.net/keys/mykeyname\", nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeper.Close()\n}\n\nfunc Example_openFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/secrets/azurekeyvault\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// The \"azurekeyvault\" URL scheme is replaced with \"https\" to construct an Azure\n\t// Key Vault keyID, as described in https://docs.microsoft.com/en-us/azure/key-vault/about-keys-secrets-and-certificates.\n\t// You can add an optional \"/{key-version}\" to the path to use a specific\n\t// version of the key; it defaults to the latest version.\n\tkeeper, err := secrets.OpenKeeper(ctx, \"azurekeyvault://mykeyvaultname.vault.azure.net/keys/mykeyname\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeper.Close()\n}\n"
  },
  {
    "path": "secrets/azurekeyvault/testdata/TestConformance/TestAs/verify_As_function.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMEbCwTv+wAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": null,\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"58fd13a457084159\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:59 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9199ed18-249b-4b1d-9bf4-bf5325597cc5\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"daaa1dffe23cbf74\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6ImJXRnNabTl5YldWa0lHTnBjR2hsY2lCdFpYTnpZV2RsIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:59 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"17e84fbb-bf5d-4938-b791-7b6db9f054ce\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiQmFkUGFyYW1ldGVyIiwibWVzc2FnZSI6IlRoZSBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LlxyXG4ifX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/azurekeyvault/testdata/TestConformance/TestAs/verify_As_returns_false_when_passed_nil.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMEbM63tVgAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": null,\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4058cc12804ced9d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:59 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"dcc99886-c4e7-4b3f-aa9c-d4b9a697ca73\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"245836b218a7f2f0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"65\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6ImJXRnNabTl5YldWa0lHTnBjR2hsY2lCdFpYTnpZV2RsIn0=\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:09:00 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"f60eed33-6ebd-4096-8693-52221073c614\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiQmFkUGFyYW1ldGVyIiwibWVzc2FnZSI6IlRoZSBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LlxyXG4ifX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/azurekeyvault/testdata/TestConformance/TestDecryptMalformedError.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMEaFcsrgQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": null,\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"d7ee2ce4ed097975\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:57 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"80fd7f85-dbd3-4324-b2a7-9f18da51ca71\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"929b5a4aac22a498\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:58 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"1da28445-d926-47ed-9b22-f5c6e223408c\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiUlNOSjdlMGpvVjNiMkQwSXBUdVEzTERZUnYxQW5tVFFHa2E3NXR0emp4QXVqLURXSlFkSVNnVnhiMTZtYzYxZ1RwYVdLaFlfZWxGaGdJNkRjR0pzVXpCN20wYmpHR1pzbG5veG1oci0wV1Qtc1RZN3JCY1JNRGNwc3gybFdfZVpmZVh1YkNGbkN0Ym16TUlCNzczZlRMekJxT1JQbHRVX3IzVmEtM2liWW1Xdl9QNjNmdUpXUl9kMzQ0MGtjTmN6ZDFobk1YYkZjMks0MjdZU1Z3Sm52aXh0a1cwVnF3WnJZLXJLdkgwc2cyQ2xPWVlSOGlLTXlLb3JvSk9OUENnWXlMRVhiMzR4ZjJxNVBVNWlYQ2F4MUVIei1uQlhBQkFGb3p1R1JGVWl2TnlzU3RxOTk3R1pjWXphbUJjam1CeER6Q0w0OUNieFdfQUZqR2FHd2R3Y213In0=\"\n      }\n    },\n    {\n      \"ID\": \"e27b45f1d82345a0\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlJpTko3ZTBqb1YzYjJEMElwVHVRM0xEWVJ2MUFubVRRR2thNzV0dHpqeEF1ai1EV0pRZElTZ1Z4YjE2bWM2MWdUcGFXS2hZX2VsRmhnSTZEY0dKc1V6QjdtMGJqR0dac2xub3htaHItMFdULXNUWTdyQmNSTURjcHN4MmxXX2VaZmVYdWJDRm5DdGJtek1JQjc3M2ZUTHpCcU9SUGx0VV9yM1ZhLTNpYlltV3ZfUDYzZnVKV1JfZDM0NDBrY05jemQxaG5NWGJGYzJLNDI3WVNWd0pudml4dGtXMFZxd1pyWS1yS3ZIMHNnMkNsT1lZUjhpS015S29yb0pPTlBDZ1l5TEVYYjM0eGYycTVQVTVpWENheDFFSHotbkJYQUJBRm96dUdSRlVpdk55c1N0cTk5N0daY1l6YW1CY2ptQnhEekNMNDlDYnhXX0FGakdhR3dkd2NtdyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:58 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"d1dc95e0-b0ba-445d-b206-51b66a946688\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiQmFkUGFyYW1ldGVyIiwibWVzc2FnZSI6IlRoZSBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LlxyXG4ifX0=\"\n      }\n    },\n    {\n      \"ID\": \"eaca3d529096aec8\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"373\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlJVbnQ3U09oWGR2WVBRaWxPNURjc05oR19VQ2VaTkFhUnJ2bTIzT1BFQzZQNE5ZbEIwaEtCWEZ2WHFaenJXQk9scFlxRmo5NlVXR0Fqb053WW14VE1IdWJSdU1ZWm15V2VqR2FHdjdSWlA2eE5qdXNGeEV3TnltekhhVmI5NWw5NWU1c0lXY0sxdWJNd2dIdnZkOU12TUdvNUUtVzFULXZkVnI3ZUp0aVphXzhfcmQtNGxaSDkzZmpqU1J3MXpOM1dHY3hkc1Z6WXJqYnRoSlhBbWUtTEcyUmJSV3JCbXRqNnNxOGZTeURZS1U1aGhIeUlveklxaXVnazQwOEtCaklzUmR2ZmpGX2FyazlUbUpjSnJIVVFmUDZjRmNBRUFXak80WkVWU0s4M0t4SzJyMzNzWmx4ak5xWUZ5T1lIRVBNSXZqMEp2RmI4QVdNWm9iQjNCeWIifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:58 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"07916469-dbeb-4cfb-829b-4f7a8c14b74d\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiQmFkUGFyYW1ldGVyIiwibWVzc2FnZSI6IlRoZSBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LlxyXG4ifX0=\"\n      }\n    },\n    {\n      \"ID\": \"b4a4e6b6b5166004\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"373\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlJTTko3ZTBqb1YzYjJEMElwVHVRM0xEWVJ2MUFubVRRR2thNzV0dHpqeEF1ai1EV0pRZElTZ1Z4YjE2bWM2MWdUcGFXS2hZX2VsRmhnSTZEY0dKc1V6QjdtMGJqR0dac2xub3htaHItMFdULXNUWTdyQmNSTURjcHN4MmxXX2VaZmVYdWJDRm5DdGJtek1JQjc3M2ZUTHpCcU9SUGx0VV9yM1ZhLTNpYlltV3ZfUDYzZnVKV1JfZDM0NDBrY05jemQxaG5NWGJGYzJLNDI3WVNWd0pudml4dGtXMFZxd1pyWS1yS3ZIMHNnMkNsT1lZUjhpS015S29yb0pPTlBDZ1l5TEVYYjM0eGYycTVQVTVpWENheDFFSHotbkJYQUJBRm96dUdSRlVpdk55c1N0cTk5N0daY1l6YW1CY2ptQnhEekNMNDlDYnhXX0FGakdhR3dkeWEifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 400,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"77\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:58 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"cbaae157-d70e-456e-a0ff-e28ef920417d\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiQmFkUGFyYW1ldGVyIiwibWVzc2FnZSI6IlRoZSBwYXJhbWV0ZXIgaXMgaW5jb3JyZWN0LlxyXG4ifX0=\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/azurekeyvault/testdata/TestConformance/TestEncryptDecrypt.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMEWMy+KVQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": null,\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"4a0fc5db318bcea5\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:55 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e00ef750-5277-4136-b0d8-c1056ada6a49\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"7b07511562d59aa4\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:55 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"30d1805f-2f50-4365-b90f-917a30072462\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiTG41dVZ5VHY1dHhmdF9wWE80cFJKbklBQXJ5eVZYazF2N21jUzdoSkpvTW0wTGg0NEg2UnREczVXcDZvazQzTXpRdW1DbEhDZnJQSGhqQ0xIZEIyWVl5X2tPWFhNRUdMTDVGdEJCOWJEeThZN0RZVkZsUzhTUnJKTVZ0YjJYTm5TMjZyZEF6d1dWVU1rQ2V0VDIzamNxZ1NhRHUxSHZwV1BYZUhRLUZMWW5ubHlpd0lheldoQkU5b2FoNjVLRUROaDFFclBZQXpETzA1bWtucVJsUVRJaE5faFVKRFRyMFZ1Ukl2cWJVeWp1Z3dwNi1tSjdNd0R4dDBjVDExcHk2WkJwdk1BMTZxV09PTV8yZWFjTi1pM3E1NlRsdElQQ2FMVFZvUTUxcXdTSTd4TzZWTnAxTTl4d1hRN282M0tsQzIyZWpUNl9XTTdEQ1ZlR09rbFVGalN3In0=\"\n      }\n    },\n    {\n      \"ID\": \"0e4fac0d75eabb41\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IkxuNXVWeVR2NXR4ZnRfcFhPNHBSSm5JQUFyeXlWWGsxdjdtY1M3aEpKb01tMExoNDRINlJ0RHM1V3A2b2s0M016UXVtQ2xIQ2ZyUEhoakNMSGRCMllZeV9rT1hYTUVHTEw1RnRCQjliRHk4WTdEWVZGbFM4U1JySk1WdGIyWE5uUzI2cmRBendXVlVNa0NldFQyM2pjcWdTYUR1MUh2cFdQWGVIUS1GTFlubmx5aXdJYXpXaEJFOW9haDY1S0VETmgxRXJQWUF6RE8wNW1rbnFSbFFUSWhOX2hVSkRUcjBWdVJJdnFiVXlqdWd3cDYtbUo3TXdEeHQwY1QxMXB5NlpCcHZNQTE2cVdPT01fMmVhY04taTNxNTZUbHRJUENhTFRWb1E1MXF3U0k3eE82Vk5wMU05eHdYUTdvNjNLbEMyMmVqVDZfV003RENWZUdPa2xVRmpTdyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:55 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"c9a6d604-8e08-4626-a5fb-81fa1e501ae0\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiU1NkdElHRWdjMlZqY21WMElHMWxjM05oWjJVaCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/azurekeyvault/testdata/TestConformance/TestMultipleEncryptionsNotEqual.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMEYB0xRvAAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": null,\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"87cfa126e83fba4c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:55 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"5c7b2556-617c-467c-bfd1-ec29f132c664\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"595c75ecf07ca8fe\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"7cdc50ec-abcb-4714-86e1-f7e4f7cb6f81\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiSkNlZEhqVGtQNXl3aUgzTk1tNGZ6M1ljX25sdEtyTzlTOFI3eEl2OUU1blJvOWg0a21vR09QQ3FoMEVlT1ZhMGNVa1VfOTZtVVg0U3hjQnR5OWQ1SHBCNUJydHo3cnNpaTVMVEpfanhkMEdIWVhZbXotVnVvcDRzdUZ3eTI2NjF4N0xfX1E1eURVTWpQUGtna1dkRGFzZUJCLWxjRHcyN0poY1pCUFRicHhtRUVaS21kbzdkcDVRVVkzeV9LVEJkR3hycEJyRDBMaE1xNWU0ZEVYZWhDVzRoa21kSTdrZktQTTRzLTA3RThPRXNPbUwwUlZNZTFCNFRqOW5Nemp1NVNKMzVIWl9hUXAxWlBGOWlGMzFNM2dUbFZFOUtINmF5U3B2QTZhWHZTZ0JtQWhFeXZKbklVbGU2Y1d4VXUyVzVnZDVvSW5tT0VUVFVQbXA2NzlHOGVBIn0=\"\n      }\n    },\n    {\n      \"ID\": \"ff577dc86a621d92\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e9384d4a-16b6-4ba9-b135-9ccb9af324c3\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiVXBVTmZFbV83VVNEdGNWMW96ZDNkemhfT2hwQ0VuRXpsZ3p6SVo0Z0dIVHd5MWNkWEt1MHRLc2cxYncySDFfSDIyR3llLTd6dW9aTWlRbEZyRnFBUFpBZ3BIUlFZMzFzRENqU01uN1NKdXRVczFqcjc3WERtdWZoS3IzY2tzMUd0UjRfbjhvbF94OGpxZnAwc3ZkczFuMzBDWVduSVV0YlFXY1AzVWRXZmhRMzBZNTJ3WU1kN3NHdmxucU0wNUo1b0M1cUNtX1h1dklCQ09pVTNkYUV0R1VfbzNaT1pHbnZjREdfOW9HaC1sOHBoUWpMRUkydjc1bGtscDg2ajJsMjZ3MnNZLXc2M3p6UGR0MFBvS2lmdGVJRGU5Y1BlYXdLV2gxTkhjb2lWQXhGWFUxUkpKbUplNjlZLTdXNklJTGg1SjFfMzVTR2h5emVHVThiNVl5QnlRIn0=\"\n      }\n    },\n    {\n      \"ID\": \"f888049dd84a6e09\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IkpDZWRIalRrUDV5d2lIM05NbTRmejNZY19ubHRLck85UzhSN3hJdjlFNW5SbzloNGttb0dPUENxaDBFZU9WYTBjVWtVXzk2bVVYNFN4Y0J0eTlkNUhwQjVCcnR6N3JzaWk1TFRKX2p4ZDBHSFlYWW16LVZ1b3A0c3VGd3kyNjYxeDdMX19RNXlEVU1qUFBrZ2tXZERhc2VCQi1sY0R3MjdKaGNaQlBUYnB4bUVFWkttZG83ZHA1UVVZM3lfS1RCZEd4cnBCckQwTGhNcTVlNGRFWGVoQ1c0aGttZEk3a2ZLUE00cy0wN0U4T0VzT21MMFJWTWUxQjRUajluTXpqdTVTSjM1SFpfYVFwMVpQRjlpRjMxTTNnVGxWRTlLSDZheVNwdkE2YVh2U2dCbUFoRXl2Sm5JVWxlNmNXeFV1Mlc1Z2Q1b0lubU9FVFRVUG1wNjc5RzhlQSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"0c05d67a-d0ad-4f77-bcc8-dfacdb1fd02c\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiU1NkdElHRWdjMlZqY21WMElHMWxjM05oWjJVaCJ9\"\n      }\n    },\n    {\n      \"ID\": \"172910236683587b\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlVwVU5mRW1fN1VTRHRjVjFvemQzZHpoX09ocENFbkV6bGd6eklaNGdHSFR3eTFjZFhLdTB0S3NnMWJ3MkgxX0gyMkd5ZS03enVvWk1pUWxGckZxQVBaQWdwSFJRWTMxc0RDalNNbjdTSnV0VXMxanI3N1hEbXVmaEtyM2NrczFHdFI0X244b2xfeDhqcWZwMHN2ZHMxbjMwQ1lXbklVdGJRV2NQM1VkV2ZoUTMwWTUyd1lNZDdzR3ZsbnFNMDVKNW9DNXFDbV9YdXZJQkNPaVUzZGFFdEdVX28zWk9aR252Y0RHXzlvR2gtbDhwaFFqTEVJMnY3NWxrbHA4NmoybDI2dzJzWS13NjN6elBkdDBQb0tpZnRlSURlOWNQZWF3S1doMU5IY29pVkF4RlhVMVJKSm1KZTY5WS03VzZJSUxoNUoxXzM1U0doeXplR1U4YjVZeUJ5USJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3134cd8b-3b02-44c9-a9d0-848d32fbe3ba\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiU1NkdElHRWdjMlZqY21WMElHMWxjM05oWjJVaCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/azurekeyvault/testdata/TestConformance/TestMultipleKeys.replay",
    "content": "{\n  \"Initial\": \"AQAAAA7dVMEZA4bkdQAA\",\n  \"Version\": \"0.2\",\n  \"Converter\": {\n    \"ScrubBody\": null,\n    \"ClearHeaders\": [\n      \"^X-Goog-.*Encryption-Key$\",\n      \"^X-Ms-Date$\",\n      \"^User-Agent$\"\n    ],\n    \"RemoveRequestHeaders\": [\n      \"^Authorization$\",\n      \"^Proxy-Authorization$\",\n      \"^Connection$\",\n      \"^Content-Type$\",\n      \"^Date$\",\n      \"^Host$\",\n      \"^Transfer-Encoding$\",\n      \"^Via$\",\n      \"^X-Forwarded-.*$\",\n      \"^X-Cloud-Trace-Context$\",\n      \"^X-Goog-Api-Client$\",\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"RemoveResponseHeaders\": [\n      \"^X-Google-.*$\",\n      \"^X-Gfe-.*$\"\n    ],\n    \"ClearParams\": null,\n    \"RemoveParams\": [\n      \"^se$\",\n      \"^sig$\",\n      \"^X-Ms-Date$\"\n    ]\n  },\n  \"Entries\": [\n    {\n      \"ID\": \"2a2bedfe2e265a6c\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"ac6b5a19-0c4f-4571-b782-8cfe5771dcc1\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"80675cb8a4aabf46\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"7fed2c8f-2c9b-4449-b157-578c1fd73408\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiRWZWeFBXU1VFMGZuWTg1aXBsak5NT3I0eHJDLXUtbDFtUzFpMk9zNVU4eHdHTDBLOVNjakM5YUs0T0JXdXFiVVJnOVZwNnZpTXVUcWM2cUlGTFZILXFiUkQ4SE80d3F6eXBfNjlacW1aSWdKREF2NGd3a290b2phWWJCT3RTdnF1S1Bma1NRN05pR2UycXlxRjRYVkR5SWl2ODlxY2dlTmtPcnhMam9yVlN4ZU5ZZnBpNXlvdFRiRFh2Sk1IMGpUMXljaWlSZ1pEUDdqMXI1MHhmODIxdUc4aUlxcmtYRzJPTUxDNE04Sy1wUW9tSTVxa24xVF8wRjc2ckdXTzBuR3lFdXZhcE1qZEkwNEw0d29OS0VENDdzRVBiVUxQQUNmY0g2bVFwWno1YmlvUFNGMXpFN0FZc194blFJNmRmSlJMNmZ4bTQ4LU53VlJ5QlRqajZiUmt3In0=\"\n      }\n    },\n    {\n      \"ID\": \"bb023a17c51d046d\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test2/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"0\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"\",\n        \"BodyParts\": [\n          \"\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 401,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"97\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:56 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"Www-Authenticate\": [\n            \"Bearer authorization=\\\"https://login.microsoftonline.com/db44ed8f-85f7-4f22-b378-3bb9fa3d62ff\\\", resource=\\\"https://vault.azure.net\\\"\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"9988f05d-9995-4eaf-ae5f-bb97a28ba9d9\"\n          ]\n        },\n        \"Body\": \"eyJlcnJvciI6eyJjb2RlIjoiVW5hdXRob3JpemVkIiwibWVzc2FnZSI6IkFLVjEwMDAwOiBSZXF1ZXN0IGlzIG1pc3NpbmcgYSBCZWFyZXIgb3IgUG9QIHRva2VuLiJ9fQ==\"\n      }\n    },\n    {\n      \"ID\": \"e98f74283d9dac54\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test2/encrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"61\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IlNTZHRJR0VnYzJWamNtVjBJRzFsYzNOaFoyVWgifQ==\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"437\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:57 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3ea39fde-30c8-4d06-b48c-f891b372e9d7\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0Mi9mNDFiOWI4ZDU4NmU0MGI5YjFhNDVjZTZiN2VjN2Q2YyIsInZhbHVlIjoiRURpYmJzQ2pVOUtTYXpYU2M3RTlRa0F6RUtmajdkQ0Y4R0JWRjg4R01LMDRZRmJwVW5ObzdtSU9YaU5zYy1lbTZIYWh4ZDJMcDJaMlVKTWszcVVqSmREZDlYZFk0TUNpdFNyX3NPSjFncHVCNjNSM0ZhM3N2WEpnaFltdFp4UFU4U2c1RFRuV2hlMWRXSkVtRExqMDBqTDZCZURjY2dZNkFJNlFwS2d4Y01VbFVxQTlPQ2dsamh2Q1dEaW5QVVB6R2pXYkFleE5CZFgyZkhuRzBwYm8zWFA4RVYzcUI3N05QUnVSZjdjMmJ1cFZ4aUI5OGtHY1ZCSjljRWNBQ1VrYm9Jc3hONm96SlRFYkxHSWxfU2ZBN0Flb3k1b0RQM2NiN21GZHRvZXhLVi0zSDJ5emFRd0JHTWJkSWtzVlctTHNVQm1jclpydTVGMlZNMUhLSEFDRHFBIn0=\"\n      }\n    },\n    {\n      \"ID\": \"81c335517a88fdea\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test1/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IkVmVnhQV1NVRTBmblk4NWlwbGpOTU9yNHhyQy11LWwxbVMxaTJPczVVOHh3R0wwSzlTY2pDOWFLNE9CV3VxYlVSZzlWcDZ2aU11VHFjNnFJRkxWSC1xYlJEOEhPNHdxenlwXzY5WnFtWklnSkRBdjRnd2tvdG9qYVliQk90U3ZxdUtQZmtTUTdOaUdlMnF5cUY0WFZEeUlpdjg5cWNnZU5rT3J4TGpvclZTeGVOWWZwaTV5b3RUYkRYdkpNSDBqVDF5Y2lpUmdaRFA3ajFyNTB4ZjgyMXVHOGlJcXJrWEcyT01MQzRNOEstcFFvbUk1cWtuMVRfMEY3NnJHV08wbkd5RXV2YXBNamRJMDRMNHdvTktFRDQ3c0VQYlVMUEFDZmNINm1RcFp6NWJpb1BTRjF6RTdBWXNfeG5RSTZkZkpSTDZmeG00OC1Od1ZSeUJUamo2YlJrdyJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:57 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"3798e708-9f81-484a-a71f-ed5ee78358ad\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0MS9iM2IzMWYyOTIyNjI0ZTFkYTdhNDJlNGQwNGQ0NDExMCIsInZhbHVlIjoiU1NkdElHRWdjMlZqY21WMElHMWxjM05oWjJVaCJ9\"\n      }\n    },\n    {\n      \"ID\": \"914b2c2d27098f6e\",\n      \"Request\": {\n        \"Method\": \"POST\",\n        \"URL\": \"https://go-cdk.vault.azure.net/keys/test2/decrypt?api-version=7.4\",\n        \"Header\": {\n          \"Accept\": [\n            \"application/json\"\n          ],\n          \"Accept-Encoding\": [\n            \"gzip\"\n          ],\n          \"Content-Length\": [\n            \"375\"\n          ],\n          \"User-Agent\": [\n            \"CLEARED\"\n          ]\n        },\n        \"MediaType\": \"application/json\",\n        \"BodyParts\": [\n          \"eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJ2YWx1ZSI6IkVEaWJic0NqVTlLU2F6WFNjN0U5UWtBekVLZmo3ZENGOEdCVkY4OEdNSzA0WUZicFVuTm83bUlPWGlOc2MtZW02SGFoeGQyTHAyWjJVSk1rM3FVakpkRGQ5WGRZNE1DaXRTcl9zT0oxZ3B1QjYzUjNGYTNzdlhKZ2hZbXRaeFBVOFNnNURUbldoZTFkV0pFbURMajAwakw2QmVEY2NnWTZBSTZRcEtneGNNVWxVcUE5T0NnbGpodkNXRGluUFVQekdqV2JBZXhOQmRYMmZIbkcwcGJvM1hQOEVWM3FCNzdOUFJ1UmY3YzJidXBWeGlCOThrR2NWQko5Y0VjQUNVa2JvSXN4TjZvekpURWJMR0lsX1NmQTdBZW95NW9EUDNjYjdtRmR0b2V4S1YtM0gyeXphUXdCR01iZElrc1ZXLUxzVUJtY3JacnU1RjJWTTFIS0hBQ0RxQSJ9\"\n        ]\n      },\n      \"Response\": {\n        \"StatusCode\": 200,\n        \"Proto\": \"HTTP/1.1\",\n        \"ProtoMajor\": 1,\n        \"ProtoMinor\": 1,\n        \"Header\": {\n          \"Cache-Control\": [\n            \"no-cache\"\n          ],\n          \"Content-Length\": [\n            \"123\"\n          ],\n          \"Content-Type\": [\n            \"application/json; charset=utf-8\"\n          ],\n          \"Date\": [\n            \"Wed, 07 Feb 2024 00:08:57 GMT\"\n          ],\n          \"Expires\": [\n            \"-1\"\n          ],\n          \"Pragma\": [\n            \"no-cache\"\n          ],\n          \"Strict-Transport-Security\": [\n            \"max-age=31536000;includeSubDomains\"\n          ],\n          \"X-Content-Type-Options\": [\n            \"nosniff\"\n          ],\n          \"X-Ms-Keyvault-Network-Info\": [\n            \"conn_type=Ipv4;addr=34.125.120.109;act_addr_fam=InterNetwork;\"\n          ],\n          \"X-Ms-Keyvault-Region\": [\n            \"centralus\"\n          ],\n          \"X-Ms-Keyvault-Service-Version\": [\n            \"1.9.1222.3\"\n          ],\n          \"X-Ms-Request-Id\": [\n            \"e11f07cc-0e34-4353-8f22-89c168368eb5\"\n          ]\n        },\n        \"Body\": \"eyJraWQiOiJodHRwczovL2dvLWNkay52YXVsdC5henVyZS5uZXQva2V5cy90ZXN0Mi9mNDFiOWI4ZDU4NmU0MGI5YjFhNDVjZTZiN2VjN2Q2YyIsInZhbHVlIjoiU1NkdElHRWdjMlZqY21WMElHMWxjM05oWjJVaCJ9\"\n      }\n    }\n  ]\n}"
  },
  {
    "path": "secrets/driver/driver.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package driver defines interfaces to be implemented by secrets drivers, which\n// will be used by the secrets package to interact with the underlying services.\n// Application code should use package secrets.\npackage driver // import \"gocloud.dev/secrets/driver\"\n\nimport (\n\t\"context\"\n\n\t\"gocloud.dev/gcerrors\"\n)\n\n// Keeper holds the key information to encrypt a plain text message into a\n// cipher message, as well as decrypt a cipher message into a plain text\n// message.\ntype Keeper interface {\n\t// Decrypt decrypts the ciphertext and returns the plaintext or an error.\n\t// Decrypt *may* decrypt ciphertexts that were encrypted using a different\n\t// key than the one provided to Keeper; some drivers encode the key used\n\t// in the ciphertext.\n\tDecrypt(ctx context.Context, ciphertext []byte) ([]byte, error)\n\n\t// Encrypt encrypts the plaintext using the key, and returns the ciphertext.\n\tEncrypt(ctx context.Context, plaintext []byte) ([]byte, error)\n\n\t// Close releases any resources used for the Keeper.\n\tClose() error\n\n\t// ErrorAs allows drivers to expose driver-specific types for returned\n\t// errors.\n\t//\n\t// See https://gocloud.dev/concepts/as/ for background information.\n\tErrorAs(err error, i any) bool\n\n\t// ErrorCode should return a code that describes the error, which was returned\n\t// by one of the other methods in this interface.\n\tErrorCode(error) gcerrors.ErrorCode\n}\n"
  },
  {
    "path": "secrets/drivertest/drivertest.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package drivertest provides a conformance test for implementations of\n// the secrets driver.\npackage drivertest // import \"gocloud.dev/secrets/drivertest\"\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/driver\"\n)\n\n// Harness descibes the functionality test harnesses must provide to run\n// conformance tests.\ntype Harness interface {\n\t// MakeDriver returns a pair of driver.Keeper, each backed by a different key.\n\tMakeDriver(ctx context.Context) (driver.Keeper, driver.Keeper, error)\n\n\t// Close is called when the test is complete.\n\tClose()\n}\n\n// HarnessMaker describes functions that construct a harness for running tests.\n// It is called exactly once per test.\ntype HarnessMaker func(ctx context.Context, t *testing.T) (Harness, error)\n\n// AsTest represents a test of As functionality.\n// The conformance test:\n// 1. Tries to decrypt malformed message, and calls ErrorCheck with the error.\ntype AsTest interface {\n\t// Name returns a descriptive name for the test.\n\tName() string\n\t// ErrorCheck is called to allow verification of Keeper.ErrorAs.\n\tErrorCheck(k *secrets.Keeper, err error) error\n}\n\ntype verifyAsFailsOnNil struct{}\n\nfunc (v verifyAsFailsOnNil) Name() string {\n\treturn \"verify As returns false when passed nil\"\n}\n\nfunc (v verifyAsFailsOnNil) ErrorCheck(k *secrets.Keeper, err error) (ret error) {\n\tdefer func() {\n\t\tif recover() == nil {\n\t\t\tret = errors.New(\"want ErrorAs to panic when passed nil\")\n\t\t}\n\t}()\n\tk.ErrorAs(err, nil)\n\treturn nil\n}\n\n// RunConformanceTests runs conformance tests for driver implementations of secret management.\nfunc RunConformanceTests(t *testing.T, newHarness HarnessMaker, asTests []AsTest) {\n\tt.Helper()\n\n\tt.Run(\"TestEncryptDecrypt\", func(t *testing.T) {\n\t\ttestEncryptDecrypt(t, newHarness)\n\t})\n\tt.Run(\"TestMultipleEncryptionsNotEqual\", func(t *testing.T) {\n\t\ttestMultipleEncryptionsNotEqual(t, newHarness)\n\t})\n\tt.Run(\"TestMultipleKeys\", func(t *testing.T) {\n\t\ttestMultipleKeys(t, newHarness)\n\t})\n\tt.Run(\"TestDecryptMalformedError\", func(t *testing.T) {\n\t\ttestDecryptMalformedError(t, newHarness)\n\t})\n\tasTests = append(asTests, verifyAsFailsOnNil{})\n\tt.Run(\"TestAs\", func(t *testing.T) {\n\t\tfor _, tc := range asTests {\n\t\t\tif tc.Name() == \"\" {\n\t\t\t\tt.Fatal(\"AsTest.Name is required\")\n\t\t\t}\n\t\t\tt.Run(tc.Name(), func(t *testing.T) {\n\t\t\t\ttestAs(t, newHarness, tc)\n\t\t\t})\n\t\t}\n\t})\n}\n\n// testEncryptDecrypt tests the functionality of encryption and decryption\nfunc testEncryptDecrypt(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tharness, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer harness.Close()\n\n\tdrv, _, err := harness.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper := secrets.NewKeeper(drv)\n\tdefer keeper.Close()\n\n\tmsg := []byte(\"I'm a secret message!\")\n\tencryptedMsg, err := keeper.Encrypt(ctx, msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif cmp.Equal(msg, encryptedMsg) {\n\t\tt.Errorf(\"Got encrypted message %v, want it to differ from original message %v\", string(msg), string(encryptedMsg))\n\t}\n\tdecryptedMsg, err := keeper.Decrypt(ctx, encryptedMsg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !cmp.Equal(msg, decryptedMsg) {\n\t\tt.Errorf(\"Got decrypted message %v, want it to match original message %v\", string(msg), string(decryptedMsg))\n\t}\n}\n\n// testMultipleEncryptionsNotEqual tests that encrypting a plaintext multiple\n// times with the same key works, and that the encrypted bytes are different.\nfunc testMultipleEncryptionsNotEqual(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tharness, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer harness.Close()\n\n\tdrv, _, err := harness.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper := secrets.NewKeeper(drv)\n\tdefer keeper.Close()\n\n\tmsg := []byte(\"I'm a secret message!\")\n\tencryptedMsg1, err := keeper.Encrypt(ctx, msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tencryptedMsg2, err := keeper.Encrypt(ctx, msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif cmp.Equal(encryptedMsg1, encryptedMsg2) {\n\t\tt.Errorf(\"Got same encrypted messages from multiple encryptions %v, want them to be different\", string(encryptedMsg1))\n\t}\n\tdecryptedMsg, err := keeper.Decrypt(ctx, encryptedMsg1)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !bytes.Equal(decryptedMsg, msg) {\n\t\tt.Errorf(\"got decrypted %q want %q\", string(decryptedMsg), string(msg))\n\t}\n\tdecryptedMsg, err = keeper.Decrypt(ctx, encryptedMsg2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !bytes.Equal(decryptedMsg, msg) {\n\t\tt.Errorf(\"got decrypted %q want %q\", string(decryptedMsg), string(msg))\n\t}\n}\n\n// testMultipleKeys tests that encrypting the same text with different\n// keys works, and that the encrypted bytes are different.\nfunc testMultipleKeys(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tharness, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer harness.Close()\n\n\tdrv1, drv2, err := harness.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper1 := secrets.NewKeeper(drv1)\n\tdefer keeper1.Close()\n\tkeeper2 := secrets.NewKeeper(drv2)\n\tdefer keeper2.Close()\n\n\tmsg := []byte(\"I'm a secret message!\")\n\tencryptedMsg1, err := keeper1.Encrypt(ctx, msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tencryptedMsg2, err := keeper2.Encrypt(ctx, msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif cmp.Equal(encryptedMsg1, encryptedMsg2) {\n\t\tt.Errorf(\"Got same encrypted messages from multiple encryptions %v, want them to be different\", string(encryptedMsg1))\n\t}\n\n\t// We cannot assert that decrypting encryptedMsg1 with keeper2 fails,\n\t// or that decrypting encryptedMsg2 with keeper1 fails, as Decrypt is allowed\n\t// to decrypt using a different key than the one given to Keeper.\n\n\tdecryptedMsg, err := keeper1.Decrypt(ctx, encryptedMsg1)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !bytes.Equal(decryptedMsg, msg) {\n\t\tt.Errorf(\"got decrypted %q want %q\", string(decryptedMsg), string(msg))\n\t}\n\n\tdecryptedMsg, err = keeper2.Decrypt(ctx, encryptedMsg2)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !bytes.Equal(decryptedMsg, msg) {\n\t\tt.Errorf(\"got decrypted %q want %q\", string(decryptedMsg), string(msg))\n\t}\n}\n\n// testDecryptMalformedError tests decryption returns an error when the\n// ciphertext is malformed.\nfunc testDecryptMalformedError(t *testing.T, newHarness HarnessMaker) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tharness, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer harness.Close()\n\n\tdrv, _, err := harness.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper := secrets.NewKeeper(drv)\n\tdefer keeper.Close()\n\n\tmsg := []byte(\"I'm a secret message!\")\n\tencryptedMsg, err := keeper.Encrypt(ctx, msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tcopyEncryptedMsg := func() []byte {\n\t\treturn append([]byte{}, encryptedMsg...)\n\t}\n\n\tl := len(encryptedMsg)\n\tfor _, tc := range []struct {\n\t\tname      string\n\t\tmalformed []byte\n\t}{\n\t\t{\n\t\t\tname:      \"wrong first byte\",\n\t\t\tmalformed: append([]byte{encryptedMsg[0] + 1}, encryptedMsg[1:]...),\n\t\t},\n\t\t{\n\t\t\tname:      \"missing second byte\",\n\t\t\tmalformed: append(copyEncryptedMsg()[:1], encryptedMsg[2:]...),\n\t\t},\n\t\t{\n\t\t\tname:      \"wrong last byte\",\n\t\t\tmalformed: append(copyEncryptedMsg()[:l-2], encryptedMsg[l-1]-1),\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tif _, err := keeper.Decrypt(ctx, []byte(tc.malformed)); err == nil {\n\t\t\t\tt.Error(\"Got nil, want decrypt error\")\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc testAs(t *testing.T, newHarness HarnessMaker, tc AsTest) {\n\tt.Helper()\n\n\tctx := context.Background()\n\tharness, err := newHarness(ctx, t)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer harness.Close()\n\n\tdrv, _, err := harness.MakeDriver(ctx)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper := secrets.NewKeeper(drv)\n\tdefer keeper.Close()\n\n\t_, gotErr := keeper.Decrypt(ctx, []byte(\"malformed cipher message\"))\n\tif gotErr == nil {\n\t\tt.Error(\"Got nil, want decrypt error\")\n\t}\n\tif err := tc.ErrorCheck(keeper, gotErr); err != nil {\n\t\tt.Error(err)\n\t}\n}\n"
  },
  {
    "path": "secrets/example_openkeeper_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage secrets_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/secrets\"\n\t_ \"gocloud.dev/secrets/localsecrets\"\n)\n\nfunc Example_openFromURL() {\n\tctx := context.Background()\n\n\t// Create a Keeper using a URL.\n\t// This example uses \"localsecrets\", the in-memory implementation.\n\t// We need to add a blank import line to register the localsecrets driver's\n\t// URLOpener, which implements secrets.KeeperURLOpener:\n\t// import _ \"gocloud.dev/secrets/localsecrets\"\n\t// localsecrets registers for the \"base64key\" scheme.\n\t// All secrets.OpenKeeper URLs also work with \"secrets+\" or \"secrets+keeper+\" prefixes,\n\t// e.g., \"secrets+base64key://...\" or \"secrets+variable+base64key://...\".\n\t// All secrets URLs also work with the \"secrets+\" prefix, e.g., \"secrets+base64key://\".\n\tk, err := secrets.OpenKeeper(ctx, \"base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer k.Close()\n\n\t// Now we can use k to encrypt/decrypt.\n\tplaintext := []byte(\"Go CDK Secrets\")\n\tciphertext, err := k.Encrypt(ctx, plaintext)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdecrypted, err := k.Decrypt(ctx, ciphertext)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(decrypted))\n\n\t// Output:\n\t// Go CDK Secrets\n}\n"
  },
  {
    "path": "secrets/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage secrets_test\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"gocloud.dev/secrets\"\n\t_ \"gocloud.dev/secrets/gcpkms\"\n\t\"gocloud.dev/secrets/localsecrets\"\n\t\"google.golang.org/grpc/status\"\n)\n\nfunc Example() {\n\tctx := context.Background()\n\n\t// Construct a *secrets.Keeper from one of the secrets subpackages.\n\t// This example uses localsecrets.\n\tsk, err := localsecrets.NewRandomKey()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tkeeper := localsecrets.NewKeeper(sk)\n\tdefer keeper.Close()\n\n\t// Now we can use keeper to Encrypt.\n\tplaintext := []byte(\"Go CDK Secrets\")\n\tciphertext, err := keeper.Encrypt(ctx, plaintext)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// And/or Decrypt.\n\tdecrypted, err := keeper.Decrypt(ctx, ciphertext)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(string(decrypted))\n\n\t// Output:\n\t// Go CDK Secrets\n}\n\nfunc Example_errorAs() {\n\t// This example is specific to the gcpkms implementation; it\n\t// demonstrates access to the underlying google.golang.org/grpc/status.Status\n\t// type.\n\t// The types exposed for As by gcpkms are documented in\n\t// https://godoc.org/gocloud.dev/secrets/gcpkms#hdr-As\n\tctx := context.Background()\n\n\tconst url = \"gcpkms://projects/proj/locations/global/keyRings/test/ring/wrongkey\"\n\tkeeper, err := secrets.OpenKeeper(ctx, url)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeper.Close()\n\n\tplaintext := []byte(\"Go CDK secrets\")\n\t_, err = keeper.Encrypt(ctx, plaintext)\n\tif err != nil {\n\t\tvar s *status.Status\n\t\tif keeper.ErrorAs(err, &s) {\n\t\t\tfmt.Println(s.Code())\n\t\t}\n\t}\n}\n\nfunc ExampleKeeper_Encrypt() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar keeper *secrets.Keeper\n\n\tplainText := []byte(\"Secrets secrets...\")\n\tcipherText, err := keeper.Encrypt(ctx, plainText)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\t_ = cipherText\n}\n\nfunc ExampleKeeper_Decrypt() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\tvar keeper *secrets.Keeper\n\n\tvar cipherText []byte // obtained from elsewhere and random-looking\n\tplainText, err := keeper.Decrypt(ctx, cipherText)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// PRAGMA: On gocloud.dev, hide the rest of the function.\n\t_ = plainText\n}\n"
  },
  {
    "path": "secrets/gcpkms/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpkms_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/gcpkms\"\n)\n\nfunc ExampleOpenKeeper() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Get a client to use with the KMS API.\n\tclient, done, err := gcpkms.Dial(ctx, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// Close the connection when done.\n\tdefer done()\n\n\t// You can also use gcpkms.KeyResourceID to construct this string.\n\tconst keyID = \"projects/MYPROJECT/\" +\n\t\t\"locations/MYLOCATION/\" +\n\t\t\"keyRings/MYKEYRING/\" +\n\t\t\"cryptoKeys/MYKEY\"\n\n\t// Construct a *secrets.Keeper.\n\tkeeper := gcpkms.OpenKeeper(client, keyID, nil)\n\tdefer keeper.Close()\n}\n\nfunc Example_openFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/secrets/gcpkms\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tkeeper, err := secrets.OpenKeeper(ctx,\n\t\t\"gcpkms://projects/MYPROJECT/\"+\n\t\t\t\"locations/MYLOCATION/\"+\n\t\t\t\"keyRings/MYKEYRING/\"+\n\t\t\t\"cryptoKeys/MYKEY\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeper.Close()\n}\n"
  },
  {
    "path": "secrets/gcpkms/kms.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package gcpkms provides a secrets implementation backed by Google Cloud KMS.\n// Use OpenKeeper to construct a *secrets.Keeper.\n//\n// # URLs\n//\n// For secrets.OpenKeeper, gcpkms registers for the scheme \"gcpkms\".\n// The default URL opener will create a connection using use default\n// credentials from the environment, as described in\n// https://cloud.google.com/docs/authentication/production.\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// gcpkms exposes the following type for As:\n//   - Error: *google.golang.org/grpc/status.Status\npackage gcpkms // import \"gocloud.dev/secrets/gcpkms\"\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"path\"\n\t\"sync\"\n\n\tcloudkms \"cloud.google.com/go/kms/apiv1\"\n\t\"cloud.google.com/go/kms/apiv1/kmspb\"\n\t\"github.com/google/wire\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/useragent\"\n\t\"gocloud.dev/secrets\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// endPoint is the address to access Google Cloud KMS API.\nconst endPoint = \"cloudkms.googleapis.com:443\"\n\n// Dial returns a client to use with Cloud KMS and a clean-up function to close\n// the client after used.\nfunc Dial(ctx context.Context, ts gcp.TokenSource) (*cloudkms.KeyManagementClient, func(), error) {\n\tc, err := cloudkms.NewKeyManagementClient(ctx, option.WithTokenSource(ts), useragent.ClientOption(\"secrets\"))\n\treturn c, func() { c.Close() }, err\n}\n\nfunc init() {\n\tsecrets.DefaultURLMux().RegisterKeeper(Scheme, new(lazyCredsOpener))\n}\n\n// Set holds Wire providers for this package.\nvar Set = wire.NewSet(\n\tDial,\n\twire.Struct(new(URLOpener), \"Client\"),\n)\n\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// lazyCredsOpener obtains Application Default Credentials on the first call\n// to OpenKeeperURL.\ntype lazyCredsOpener struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *lazyCredsOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\to.init.Do(func() {\n\t\tcreds, err := gcp.DefaultCredentials(ctx)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\tclient, _, err := Dial(ctx, creds.TokenSource)\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open keeper %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenKeeperURL(ctx, u)\n}\n\n// Scheme is the URL scheme gcpkms registers its URLOpener under on secrets.DefaultMux.\nconst Scheme = \"gcpkms\"\n\n// URLOpener opens GCP KMS URLs like\n// \"gcpkms://projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]\".\n//\n// The URL host+path are used as the key resource ID; see\n// https://cloud.google.com/kms/docs/object-hierarchy#key for more details.\n//\n// The following query parameters are supported:\n//\n//   - additional_authenticated_data: a base64 URL encoded string of AAD provided to encrypt and\n//     decrypt calls.\ntype URLOpener struct {\n\t// Client must be non-nil and be authenticated with \"cloudkms\" scope or equivalent.\n\tClient *cloudkms.KeyManagementClient\n\n\t// Options specifies the default options to pass to OpenKeeper.\n\tOptions KeeperOptions\n}\n\n// OpenKeeperURL opens GCP KMS URLs.\nfunc (o *URLOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\tq := u.Query()\n\tfor param := range q {\n\t\tif param != \"additional_authenticated_data\" {\n\t\t\treturn nil, fmt.Errorf(\"open keeper %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\topts := o.Options\n\tif aad := q.Get(\"additional_authenticated_data\"); aad != \"\" {\n\t\tdec, err := base64.URLEncoding.DecodeString(aad)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to base64-decode \\\"additional_authenticated_data\\\": %w\", err)\n\t\t}\n\n\t\topts.AdditionalAuthenticatedData = dec\n\t}\n\treturn OpenKeeper(o.Client, path.Join(u.Host, u.Path), &opts), nil\n}\n\n// OpenKeeper returns a *secrets.Keeper that uses Google Cloud KMS.\n// You can use KeyResourceID to construct keyResourceID from its parts,\n// or provide the whole string if you have it (e.g., from the GCP console).\n// See https://cloud.google.com/kms/docs/object-hierarchy#key for more details.\n// See the package documentation for an example.\nfunc OpenKeeper(client *cloudkms.KeyManagementClient, keyResourceID string, opts *KeeperOptions) *secrets.Keeper {\n\tif opts == nil {\n\t\topts = &KeeperOptions{}\n\t}\n\treturn secrets.NewKeeper(&keeper{\n\t\tkeyResourceID: keyResourceID,\n\t\tclient:        client,\n\t\topts:          *opts,\n\t})\n}\n\n// KeyResourceID constructs a key resourceID for GCP KMS.\n// See https://cloud.google.com/kms/docs/object-hierarchy#key for more details.\nfunc KeyResourceID(projectID, location, keyRing, key string) string {\n\treturn fmt.Sprintf(\"projects/%s/locations/%s/keyRings/%s/cryptoKeys/%s\",\n\t\tprojectID, location, keyRing, key)\n}\n\n// keeper implements driver.Keeper.\ntype keeper struct {\n\tkeyResourceID string\n\tclient        *cloudkms.KeyManagementClient\n\topts          KeeperOptions\n}\n\n// Decrypt decrypts the ciphertext using the key constructed from ki.\nfunc (k *keeper) Decrypt(ctx context.Context, ciphertext []byte) ([]byte, error) {\n\treq := &kmspb.DecryptRequest{\n\t\tName:                        k.keyResourceID,\n\t\tCiphertext:                  ciphertext,\n\t\tAdditionalAuthenticatedData: k.opts.AdditionalAuthenticatedData,\n\t}\n\tresp, err := k.client.Decrypt(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.GetPlaintext(), nil\n}\n\n// Encrypt encrypts the plaintext into a ciphertext.\nfunc (k *keeper) Encrypt(ctx context.Context, plaintext []byte) ([]byte, error) {\n\treq := &kmspb.EncryptRequest{\n\t\tName:                        k.keyResourceID,\n\t\tPlaintext:                   plaintext,\n\t\tAdditionalAuthenticatedData: k.opts.AdditionalAuthenticatedData,\n\t}\n\tresp, err := k.client.Encrypt(ctx, req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn resp.GetCiphertext(), nil\n}\n\n// Close implements driver.Keeper.Close.\nfunc (k *keeper) Close() error { return nil }\n\n// ErrorAs implements driver.Keeper.ErrorAs.\nfunc (k *keeper) ErrorAs(err error, i any) bool {\n\ts, ok := status.FromError(err)\n\tif !ok {\n\t\treturn false\n\t}\n\tp, ok := i.(**status.Status)\n\tif !ok {\n\t\treturn false\n\t}\n\t*p = s\n\treturn true\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (k *keeper) ErrorCode(err error) gcerrors.ErrorCode {\n\treturn gcerr.GRPCCode(err)\n}\n\n// KeeperOptions controls Keeper behaviors.\ntype KeeperOptions struct {\n\t// AdditionalAuthenticatedData is non-secret data used as an optional integrity check which must\n\t// match between encrypt and decrypt operations. This prevents confused deputy attacks by\n\t// binding context to encrypted data without being stored in the ciphertext.\n\t// See here for more info: https://docs.cloud.google.com/kms/docs/additional-authenticated-data.\n\tAdditionalAuthenticatedData []byte\n}\n"
  },
  {
    "path": "secrets/gcpkms/kms_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage gcpkms\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"testing\"\n\n\tcloudkms \"cloud.google.com/go/kms/apiv1\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/driver\"\n\t\"gocloud.dev/secrets/drivertest\"\n\t\"golang.org/x/oauth2\"\n\t\"google.golang.org/api/option\"\n\t\"google.golang.org/grpc/status\"\n)\n\n// These constants capture values that were used during the last --record.\n// If you want to use --record mode,\n// 1. Update projectID to your GCP project name (not number!)\n// 2. Enable the Cloud KMS API.\n// 3. Create a key ring and a key, change their name below accordingly.\nconst (\n\tproject  = \"go-cloud-test-216917\"\n\tlocation = \"global\"\n\tkeyRing  = \"test\"\n\tkeyID1   = \"password\"\n\tkeyID2   = \"password2\"\n)\n\ntype harness struct {\n\tclient *cloudkms.KeyManagementClient\n\tclose  func()\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Keeper, driver.Keeper, error) {\n\treturn &keeper{KeyResourceID(project, location, keyRing, keyID1), h.client, KeeperOptions{}},\n\t\t&keeper{KeyResourceID(project, location, keyRing, keyID2), h.client, KeeperOptions{}}, nil\n}\n\nfunc (h *harness) Close() {\n\th.close()\n}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\tconn, done := setup.NewGCPgRPCConn(ctx, t, endPoint, \"secrets\")\n\tclient, err := cloudkms.NewKeyManagementClient(ctx, option.WithGRPCConn(conn))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &harness{\n\t\tclient: client,\n\t\tclose: func() {\n\t\t\tclient.Close()\n\t\t\tdone()\n\t\t},\n\t}, nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (v verifyAs) Name() string {\n\treturn \"verify As function\"\n}\n\nfunc (v verifyAs) ErrorCheck(k *secrets.Keeper, err error) error {\n\tvar s *status.Status\n\tif !k.ErrorAs(err, &s) {\n\t\treturn errors.New(\"Keeper.ErrorAs failed\")\n\t}\n\treturn nil\n}\n\n// KMS-specific tests.\n\nfunc TestNoConnectionError(t *testing.T) {\n\tctx := context.Background()\n\tclient, done, err := Dial(ctx, oauth2.StaticTokenSource(&oauth2.Token{\n\t\tAccessToken: \"fake\",\n\t}))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer done()\n\n\tkeeper := OpenKeeper(client, \"\", nil)\n\tdefer keeper.Close()\n\n\tif _, err := keeper.Encrypt(ctx, []byte(\"test\")); err == nil {\n\t\tt.Error(\"got nil, want rpc error\")\n\t}\n}\n\nfunc TestAdditionalAuthenticatedData(t *testing.T) {\n\tctx := context.Background()\n\tconn, done := setup.NewGCPgRPCConn(ctx, t, endPoint, \"secrets\")\n\tdefer done()\n\tclient, err := cloudkms.NewKeyManagementClient(ctx, option.WithGRPCConn(conn))\n\tif err != nil {\n\t\tt.Fatalf(\"failed to connect: %v\", err)\n\t}\n\n\topts := KeeperOptions{\n\t\tAdditionalAuthenticatedData: []byte(\"sample AAD\"),\n\t}\n\tk1a := OpenKeeper(client, KeyResourceID(project, location, keyRing, keyID1), &opts)\n\tdefer k1a.Close()\n\tk1b := OpenKeeper(client, KeyResourceID(project, location, keyRing, keyID1), &opts)\n\tdefer k1b.Close()\n\topts.AdditionalAuthenticatedData = []byte(\"different AAD\")\n\tk2 := OpenKeeper(client, KeyResourceID(project, location, keyRing, keyID1), &opts)\n\tdefer k2.Close()\n\n\t// Encrypt/Decrypt with an AAD should work.\n\tsecret := []byte(\"a secret\")\n\tencryptedSecret, err := k1a.Encrypt(ctx, secret)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to encrypt: %v\", err)\n\t}\n\tif got, err := k1b.Decrypt(ctx, encryptedSecret); err != nil {\n\t\tt.Fatalf(\"failed to decrypt: %v\", err)\n\t} else if string(got) != string(secret) {\n\t\tt.Errorf(\"unexpected decrypt result: %v\", string(got))\n\t}\n\n\t// Decrypting with a different AAD should fail.\n\tif _, err := k2.Decrypt(ctx, encryptedSecret); err == nil {\n\t\tt.Errorf(\"expected Decrypt with a different AAD to fail, but it did not\")\n\t}\n}\n\nfunc TestOpenKeeper(t *testing.T) {\n\tcleanup := setup.FakeGCPDefaultCredentials(t)\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"gcpkms://projects/MYPROJECT/locations/MYLOCATION/keyRings/MYKEYRING/cryptoKeys/MYKEY\", false},\n\t\t// Invalid additional_authenticated_data.\n\t\t{\"gcpkms://projects/MYPROJECT/locations/MYLOCATION/keyRings/MYKEYRING/cryptoKeys/MYKEY?additional_authenticated_data=22\", true},\n\t\t// OK, with valid additional_authenticated_data.\n\t\t{\"gcpkms://projects/MYPROJECT/locations/MYLOCATION/keyRings/MYKEYRING/cryptoKeys/MYKEY?additional_authenticated_data=SGVsbG8sIOS4lueVjA==\", false},\n\t\t// Invalid query parameter.\n\t\t{\"gcpkms://projects/MYPROJECT/locations/MYLOCATION/keyRings/MYKEYRING/cryptoKeys/MYKEY?param=val\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tkeeper, err := secrets.OpenKeeper(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tif err = keeper.Close(); err != nil {\n\t\t\t\tt.Errorf(\"%s: got error during close: %v\", test.URL, err)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "secrets/hashivault/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage hashivault_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/hashicorp/vault/api\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/hashivault\"\n)\n\nfunc ExampleOpenKeeper() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Get a client to use with the Vault API.\n\tclient, err := hashivault.Dial(ctx, &hashivault.Config{\n\t\tToken: \"CLIENT_TOKEN\",\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: \"http://127.0.0.1:8200\",\n\t\t},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Construct a *secrets.Keeper.\n\tkeeper := hashivault.OpenKeeper(client, \"my-key\", nil)\n\tdefer keeper.Close()\n}\n\nfunc Example_openFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/secrets/hashivault\"\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\tkeeper, err := secrets.OpenKeeper(ctx, \"hashivault://mykey\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer keeper.Close()\n}\n"
  },
  {
    "path": "secrets/hashivault/go.mod",
    "content": "// Copyright 2018-2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nmodule gocloud.dev/secrets/hashivault\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/hashicorp/vault/api v1.22.0\n\tgocloud.dev v0.45.0\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.18.2 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect\n\tgithub.com/aws/smithy-go v1.24.2 // indirect\n\tgithub.com/cenkalti/backoff/v4 v4.3.0 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/go-logr/logr v1.4.3 // indirect\n\tgithub.com/go-logr/stdr v1.2.2 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/google/go-cmp v0.7.0 // indirect\n\tgithub.com/google/go-replayers/grpcreplay v1.3.0 // indirect\n\tgithub.com/google/go-replayers/httpreplay v1.2.0 // indirect\n\tgithub.com/google/martian/v3 v3.3.3 // indirect\n\tgithub.com/google/s2a-go v0.1.9 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/google/wire v0.7.0 // indirect\n\tgithub.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect\n\tgithub.com/googleapis/gax-go/v2 v2.19.0 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/hashicorp/go-cleanhttp v0.5.2 // indirect\n\tgithub.com/hashicorp/go-multierror v1.1.1 // indirect\n\tgithub.com/hashicorp/go-retryablehttp v0.7.8 // indirect\n\tgithub.com/hashicorp/go-rootcerts v1.0.2 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 // indirect\n\tgithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect\n\tgithub.com/hashicorp/go-sockaddr v1.0.7 // indirect\n\tgithub.com/hashicorp/hcl v1.0.1-vault-7 // indirect\n\tgithub.com/mitchellh/go-homedir v1.1.0 // indirect\n\tgithub.com/mitchellh/mapstructure v1.5.0 // indirect\n\tgithub.com/ryanuber/go-glob v1.0.0 // indirect\n\tgo.opentelemetry.io/auto/sdk v1.2.1 // indirect\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect\n\tgo.opentelemetry.io/otel v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.42.0 // indirect\n\tgolang.org/x/crypto v0.49.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/oauth2 v0.36.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n\tgolang.org/x/text v0.35.0 // indirect\n\tgolang.org/x/time v0.15.0 // indirect\n\tgolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect\n\tgoogle.golang.org/api v0.272.0 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 // indirect\n\tgoogle.golang.org/grpc v1.79.3 // indirect\n\tgoogle.golang.org/protobuf v1.36.11 // indirect\n)\n\nreplace gocloud.dev => ../../\n"
  },
  {
    "path": "secrets/hashivault/go.sum",
    "content": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=\ncloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=\ncloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=\ncloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=\ncloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=\ncloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=\ncloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=\ncloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=\ncloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=\ncloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=\ncloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=\ncloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=\ncloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=\ncloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=\ncloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=\ncloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=\ncloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=\ncloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=\ncloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=\ncloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=\ncloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=\ncloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE=\ncloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU=\ncloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM=\ncloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M=\ncloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=\ncloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=\ncloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=\ncloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=\ncloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=\ncloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=\ncloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=\ncloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=\ncloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=\ncloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=\ncloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=\ncloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=\ncloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=\ncloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=\ncloud.google.com/go/kms v1.26.0 h1:cK9mN2cf+9V63D3H1f6koxTatWy39aTI/hCjz1I+adU=\ncloud.google.com/go/kms v1.26.0/go.mod h1:pHKOdFJm63hxBsiPkYtowZPltu9dW0MWvBa6IA4HM58=\ncloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8=\ncloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk=\ncloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=\ncloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=\ncloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=\ncloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=\ncloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=\ncloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=\ncloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=\ncloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=\ncloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=\ncloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=\ncloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=\ncloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg=\ncloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk=\ndmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=\ngithub.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=\ngithub.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 h1:DHa2U07rk8syqvCge0QIGMCE1WxGj9njT44GH7zNJLQ=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk=\ngithub.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k=\ngithub.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0=\ngithub.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8=\ngithub.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo=\ngithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc=\ngithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw=\ngithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw=\ngithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY=\ngithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y=\ngithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow=\ngithub.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o=\ngithub.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU=\ngithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU=\ngithub.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk=\ngithub.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng=\ngithub.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=\ngithub.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=\ngithub.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=\ngithub.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=\ngithub.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=\ngithub.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=\ngithub.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=\ngithub.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=\ngithub.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=\ngithub.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=\ngithub.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=\ngithub.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik=\ngithub.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=\ngithub.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=\ngithub.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=\ngithub.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ=\ngithub.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A=\ngithub.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds=\ngithub.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0=\ngithub.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=\ngithub.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=\ngithub.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=\ngithub.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=\ngithub.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=\ngithub.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=\ngithub.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=\ngithub.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=\ngithub.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=\ngithub.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=\ngithub.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=\ngithub.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=\ngithub.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=\ngithub.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=\ngithub.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=\ngithub.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=\ngithub.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=\ngithub.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=\ngithub.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=\ngithub.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=\ngithub.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=\ngithub.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=\ngithub.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=\ngithub.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=\ngithub.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=\ngithub.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=\ngithub.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=\ngithub.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=\ngithub.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=\ngithub.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=\ngithub.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=\ngithub.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=\ngithub.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=\ngithub.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=\ngithub.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=\ngithub.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-replayers/grpcreplay v1.3.0 h1:1Keyy0m1sIpqstQmgz307zhiJ1pV4uIlFds5weTmxbo=\ngithub.com/google/go-replayers/grpcreplay v1.3.0/go.mod h1:v6NgKtkijC0d3e3RW8il6Sy5sqRVUwoQa4mHOGEy8DI=\ngithub.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk=\ngithub.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg=\ngithub.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=\ngithub.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=\ngithub.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=\ngithub.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=\ngithub.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=\ngithub.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=\ngithub.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=\ngithub.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=\ngithub.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=\ngithub.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=\ngithub.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=\ngithub.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/google/wire v0.7.0 h1:JxUKI6+CVBgCO2WToKy/nQk0sS+amI9z9EjVmdaocj4=\ngithub.com/google/wire v0.7.0/go.mod h1:n6YbUQD9cPKTnHXEBN2DXlOp/mVADhVErcMFb0v3J18=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8=\ngithub.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=\ngithub.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=\ngithub.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=\ngithub.com/googleapis/gax-go/v2 v2.19.0 h1:fYQaUOiGwll0cGj7jmHT/0nPlcrZDFPrZRhTsoCr8hE=\ngithub.com/googleapis/gax-go/v2 v2.19.0/go.mod h1:w2ROXVdfGEVFXzmlciUU4EdjHgWvB5h2n6x/8XSTTJA=\ngithub.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=\ngithub.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=\ngithub.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=\ngithub.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=\ngithub.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=\ngithub.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=\ngithub.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=\ngithub.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=\ngithub.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVUrx/c8Unxc48=\ngithub.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw=\ngithub.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=\ngithub.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM=\ngithub.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=\ngithub.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=\ngithub.com/hashicorp/go-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw=\ngithub.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw=\ngithub.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=\ngithub.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I=\ngithub.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=\ngithub.com/hashicorp/vault/api v1.22.0 h1:+HYFquE35/B74fHoIeXlZIP2YADVboaPjaSicHEZiH0=\ngithub.com/hashicorp/vault/api v1.22.0/go.mod h1:IUZA2cDvr4Ok3+NtK2Oq/r+lJeXkeCrHRmqdyWfpmGM=\ngithub.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=\ngithub.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=\ngithub.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=\ngithub.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=\ngithub.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=\ngithub.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=\ngithub.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=\ngithub.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=\ngithub.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=\ngithub.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=\ngithub.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=\ngithub.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo=\ngithub.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=\ngithub.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=\ngithub.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=\ngithub.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=\ngo.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=\ngo.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=\ngo.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=\ngo.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=\ngo.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=\ngo.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=\ngo.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0 h1:kpt2PEJuOuqYkPcktfJqWWDjTEd/FNgrxcniL7kQrXQ=\ngo.opentelemetry.io/contrib/detectors/gcp v1.42.0/go.mod h1:W9zQ439utxymRrXsUOzZbFX4JhLxXU4+ZnCt8GG7yA8=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 h1:yI1/OhfEPy7J9eoa6Sj051C7n5dvpj0QX8g4sRchg04=\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0/go.mod h1:NoUCKYWK+3ecatC4HjkRktREheMeEtrXoQxrqYFeHSc=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=\ngo.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=\ngo.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=\ngo.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=\ngo.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=\ngo.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=\ngo.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=\ngo.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=\ngo.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=\ngo.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=\ngolang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=\ngolang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=\ngolang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=\ngolang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=\ngolang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=\ngolang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=\ngolang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=\ngolang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=\ngolang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=\ngolang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=\ngolang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=\ngolang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=\ngolang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=\ngolang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=\ngolang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=\ngolang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=\ngolang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=\ngolang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=\ngolang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=\ngolang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=\ngolang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=\ngolang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=\ngolang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=\ngolang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=\ngolang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=\ngolang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=\ngolang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=\ngolang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=\ngolang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=\ngolang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=\ngolang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=\ngolang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=\ngolang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=\ngolang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=\ngolang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=\ngolang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=\ngolang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=\ngolang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=\ngolang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=\ngolang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=\ngolang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0=\ngolang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw=\ngolang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=\ngolang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=\ngolang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=\ngolang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=\ngolang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=\ngolang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=\ngolang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=\ngolang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=\ngolang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=\ngolang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=\ngolang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=\ngolang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=\ngolang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=\ngolang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=\ngolang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=\ngolang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=\ngolang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=\ngolang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=\ngolang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=\ngolang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=\ngolang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=\ngolang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=\ngolang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=\ngolang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=\ngolang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=\ngolang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=\ngolang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=\ngolang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=\ngolang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=\ngolang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=\ngolang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=\ngolang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=\ngolang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=\ngolang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=\ngolang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=\ngolang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=\ngolang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=\ngolang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=\ngolang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=\ngonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=\ngonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=\ngoogle.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=\ngoogle.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=\ngoogle.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=\ngoogle.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=\ngoogle.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=\ngoogle.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=\ngoogle.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=\ngoogle.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=\ngoogle.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=\ngoogle.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=\ngoogle.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=\ngoogle.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=\ngoogle.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=\ngoogle.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=\ngoogle.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=\ngoogle.golang.org/api v0.272.0 h1:eLUQZGnAS3OHn31URRf9sAmRk3w2JjMx37d2k8AjJmA=\ngoogle.golang.org/api v0.272.0/go.mod h1:wKjowi5LNJc5qarNvDCvNQBn3rVK8nSy6jg2SwRwzIA=\ngoogle.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=\ngoogle.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=\ngoogle.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=\ngoogle.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=\ngoogle.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=\ngoogle.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=\ngoogle.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=\ngoogle.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=\ngoogle.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=\ngoogle.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=\ngoogle.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=\ngoogle.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=\ngoogle.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=\ngoogle.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=\ngoogle.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=\ngoogle.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=\ngoogle.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5 h1:JNfk58HZ8lfmXbYK2vx/UvsqIL59TzByCxPIX4TDmsE=\ngoogle.golang.org/genproto v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:x5julN69+ED4PcFk/XWayw35O0lf/nGa4aNgODCmNmw=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5 h1:CogIeEXn4qWYzzQU0QqvYBM8yDF9cFYzDq9ojSpv0Js=\ngoogle.golang.org/genproto/googleapis/api v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5 h1:aJmi6DVGGIStN9Mobk/tZOOQUBbj0BPjZjjnOdoZKts=\ngoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260316180232-0b37fe3546d5/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=\ngoogle.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=\ngoogle.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=\ngoogle.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=\ngoogle.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=\ngoogle.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=\ngoogle.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=\ngoogle.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=\ngoogle.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=\ngoogle.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=\ngoogle.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=\ngoogle.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=\ngoogle.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=\ngoogle.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=\ngoogle.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=\ngoogle.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=\ngoogle.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=\ngoogle.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=\ngoogle.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=\ngoogle.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=\ngoogle.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=\ngoogle.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=\ngoogle.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=\ngoogle.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=\ngoogle.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=\ngoogle.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=\ngoogle.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=\ngoogle.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=\ngoogle.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nhonnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=\nhonnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=\nhonnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nhonnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=\nrsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=\nrsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=\nrsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=\n"
  },
  {
    "path": "secrets/hashivault/localvault.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2019 The Go Cloud Development Kit Authors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# Starts a local Vault instance via Docker.\n\n# https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail\nset -euo pipefail\n\necho \"Starting Vault Server...\"\ndocker rm -f dev-vault &> /dev/null || :\ndocker run --cap-add=IPC_LOCK -d --name=dev-vault -e 'VAULT_DEV_ROOT_TOKEN_ID=faketoken' -p 8200:8200 vault:1.6.0 &> /dev/null\necho \"...done. Run \\\"docker rm -f dev-vault\\\" to clean up the container.\"\necho\n\n"
  },
  {
    "path": "secrets/hashivault/vault.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limtations under the License.\n\n// Package hashivault provides a secrets implementation using the Transit\n// Secrets Engine of Vault by Hashicorp.\n// Use OpenKeeper to construct a *secrets.Keeper.\n//\n// # URLs\n//\n// For secrets.OpenKeeper, hashivault registers for the scheme \"hashivault\".\n// The default URL opener will dial a Vault server using the environment variables\n// \"VAULT_SERVER_URL\" (or \"VAULT_ADDR\") and \"VAULT_SERVER_TOKEN\" (or \"VAULT_TOKEN\").\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// hashivault does not support any types for As.\npackage hashivault\n\nimport (\n\t\"context\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/url\"\n\t\"os\"\n\t\"path\"\n\t\"sync\"\n\n\t\"github.com/hashicorp/vault/api\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/secrets\"\n)\n\n// Config is the authentication configurations of the Vault server.\ntype Config struct {\n\t// Token is the access token the Vault client uses to talk to the server.\n\t// See https://www.vaultproject.io/docs/concepts/tokens.html for more\n\t// information.\n\tToken string\n\t// APIConfig is used to configure the creation of the client.\n\tAPIConfig api.Config\n}\n\n// Dial gets a Vault client.\nfunc Dial(ctx context.Context, cfg *Config) (*api.Client, error) {\n\tif cfg == nil {\n\t\treturn nil, errors.New(\"no auth Config provided\")\n\t}\n\tc, err := api.NewClient(&cfg.APIConfig)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif cfg.Token != \"\" {\n\t\tc.SetToken(cfg.Token)\n\t}\n\treturn c, nil\n}\n\nfunc init() {\n\tsecrets.DefaultURLMux().RegisterKeeper(Scheme, new(defaultDialer))\n}\n\n// getVaultURL ensures that we check both VAULT_SERVER_URL and VAULT_ADDR environment\n// variables for the API address for vault. VAULT_SERVER_URL takes precedence over VAULT_ADDR.\nfunc getVaultURL() (string, error) {\n\tserverURL := os.Getenv(\"VAULT_SERVER_URL\")\n\tif serverURL != \"\" {\n\t\treturn serverURL, nil\n\t}\n\n\tvaultAddr := os.Getenv(\"VAULT_ADDR\")\n\tif vaultAddr != \"\" {\n\t\treturn vaultAddr, nil\n\t}\n\n\treturn \"\", errors.New(\"neither VAULT_SERVER_URL nor VAULT_ADDR environment variables are set\")\n}\n\n// getVaultToken ensures that we check both VAULT_SERVER_TOKEN and VAULT_TOKEN environment\n// variables for the API token for vault. VAULT_SERVER_TOKEN takes precedence over VAULT_TOKEN.\n// If neither environment variables are found, then we return an empty string as token is not required.\nfunc getVaultToken() string {\n\tserverToken := os.Getenv(\"VAULT_SERVER_TOKEN\")\n\tif serverToken != \"\" {\n\t\treturn serverToken\n\t}\n\n\tvaultToken := os.Getenv(\"VAULT_TOKEN\")\n\tif vaultToken != \"\" {\n\t\treturn vaultToken\n\t}\n\n\treturn \"\"\n}\n\n// defaultDialer dials a default Vault server based on the environment variables\n// VAULT_SERVER_URL / VAULT_ADDR and VAULT_SERVER_TOKEN / VAULT_TOKEN\ntype defaultDialer struct {\n\tinit   sync.Once\n\topener *URLOpener\n\terr    error\n}\n\nfunc (o *defaultDialer) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\to.init.Do(func() {\n\t\tserverURL, err := getVaultURL()\n\t\tif err != nil {\n\t\t\to.err = err\n\t\t\treturn\n\t\t}\n\t\ttoken := getVaultToken()\n\t\tcfg := Config{Token: token, APIConfig: api.Config{Address: serverURL}}\n\t\tclient, err := Dial(ctx, &cfg)\n\t\tif err != nil {\n\t\t\to.err = fmt.Errorf(\"failed to Dial default Vault server at %q: %v\", serverURL, err)\n\t\t\treturn\n\t\t}\n\t\to.opener = &URLOpener{Client: client}\n\t})\n\tif o.err != nil {\n\t\treturn nil, fmt.Errorf(\"open keeper %v: %v\", u, o.err)\n\t}\n\treturn o.opener.OpenKeeperURL(ctx, u)\n}\n\n// Scheme is the URL scheme hashivault registers its URLOpener under on secrets.DefaultMux.\nconst Scheme = \"hashivault\"\n\n// URLOpener opens Vault URLs like \"hashivault://mykey\".\n//\n// The URL Host + Path are used as the keyID.\n//\n// The following query parameters are supported:\n// - engine: The secrets engine to use; defaults to \"transit\".\ntype URLOpener struct {\n\t// Client must be non-nil.\n\tClient *api.Client\n\n\t// Options specifies the options to pass to OpenKeeper.\n\tOptions KeeperOptions\n}\n\n// OpenKeeperURL opens the Keeper URL.\nfunc (o *URLOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\tfor param, vals := range u.Query() {\n\t\tswitch param {\n\t\tcase \"engine\":\n\t\t\to.Options.Engine = vals[0]\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"open keeper %v: invalid query parameter %q\", u, param)\n\t\t}\n\t}\n\treturn OpenKeeper(o.Client, path.Join(u.Host, u.Path), &o.Options), nil\n}\n\nfunc newKeeper(client *api.Client, keyID string, opts *KeeperOptions) *keeper {\n\tif opts == nil {\n\t\topts = &KeeperOptions{}\n\t}\n\tif opts.Engine == \"\" {\n\t\topts.Engine = \"transit\"\n\t}\n\treturn &keeper{\n\t\tkeyID:  keyID,\n\t\tclient: client,\n\t\topts:   *opts,\n\t}\n}\n\n// OpenKeeper returns a *secrets.Keeper that uses the Transit Secrets Engine of\n// Vault by Hashicorp.\n// See the package documentation for an example.\nfunc OpenKeeper(client *api.Client, keyID string, opts *KeeperOptions) *secrets.Keeper {\n\treturn secrets.NewKeeper(newKeeper(client, keyID, opts))\n}\n\ntype keeper struct {\n\t// keyID is an encryption key ring name used by the Vault's transit API.\n\tkeyID  string\n\tclient *api.Client\n\topts   KeeperOptions\n}\n\n// Decrypt decrypts the ciphertext into a plaintext.\nfunc (k *keeper) Decrypt(ctx context.Context, ciphertext []byte) ([]byte, error) {\n\tout, err := k.client.Logical().Write(\n\t\tpath.Join(k.opts.Engine+\"/decrypt\", k.keyID),\n\t\tmap[string]any{\n\t\t\t\"ciphertext\": string(ciphertext),\n\t\t},\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn base64.StdEncoding.DecodeString(out.Data[\"plaintext\"].(string))\n}\n\n// Encrypt encrypts a plaintext into a ciphertext.\nfunc (k *keeper) Encrypt(ctx context.Context, plaintext []byte) ([]byte, error) {\n\tsecret, err := k.client.Logical().Write(\n\t\tpath.Join(k.opts.Engine+\"/encrypt\", k.keyID),\n\t\tmap[string]any{\n\t\t\t\"plaintext\": plaintext,\n\t\t},\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn []byte(secret.Data[\"ciphertext\"].(string)), nil\n}\n\n// Close implements driver.Keeper.Close.\nfunc (k *keeper) Close() error { return nil }\n\n// ErrorAs implements driver.Keeper.ErrorAs.\nfunc (k *keeper) ErrorAs(err error, i any) bool {\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (k *keeper) ErrorCode(error) gcerrors.ErrorCode {\n\t// TODO(shantuo): try to classify vault error codes\n\treturn gcerrors.Unknown\n}\n\n// KeeperOptions controls Keeper behaviors.\n// It is provided for future extensibility.\ntype KeeperOptions struct {\n\t// Engine is the name of the secrets engine to use.\n\t// It defaults to \"transit\".\n\tEngine string\n}\n"
  },
  {
    "path": "secrets/hashivault/vault_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limtations under the License.\n\npackage hashivault\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"os\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/hashicorp/vault/api\"\n\t\"gocloud.dev/internal/testing/setup\"\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/driver\"\n\t\"gocloud.dev/secrets/drivertest\"\n)\n\n// To run these tests against a real Vault server, first run ./localvault.sh.\n// Then wait a few seconds for the server to be ready.\n\nconst (\n\tkeyID1     = \"test-secrets\"\n\tkeyID2     = \"test-secrets2\"\n\tapiAddress = \"http://127.0.0.1:8200\"\n\ttestToken  = \"faketoken\"\n)\n\n// enableTransit checks and makes sure the Transit API is enabled only once.\nvar enableTransit sync.Once\n\ntype harness struct {\n\tclient *api.Client\n\tclose  func()\n}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Keeper, driver.Keeper, error) {\n\treturn newKeeper(h.client, keyID1, nil), newKeeper(h.client, keyID2, nil), nil\n}\n\nfunc (h *harness) Close() {}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tif !setup.HasDockerTestEnvironment() {\n\t\tt.Skip(\"Skipping Vault tests since the Vault server is not available\")\n\t}\n\tc, err := Dial(ctx, &Config{\n\t\tToken: testToken,\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: apiAddress,\n\t\t},\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.SetClientTimeout(3 * time.Second)\n\t// Enable the Transit Secrets Engine to use Vault as an Encryption as a Service.\n\tenableTransit.Do(func() {\n\t\ts, err := c.Logical().Read(\"sys/mounts\")\n\t\tif err != nil {\n\t\t\tt.Fatal(err, \"; run secrets/hashivault/localvault.sh to start a dev vault container\")\n\t\t}\n\t\tif _, ok := s.Data[\"transit/\"]; !ok {\n\t\t\tif _, err := c.Logical().Write(\"sys/mounts/transit\", map[string]any{\"type\": \"transit\"}); err != nil {\n\t\t\t\tt.Fatal(err, \"; run secrets/hashivault/localvault.sh to start a dev vault container\")\n\t\t\t}\n\t\t}\n\t})\n\n\treturn &harness{\n\t\tclient: c,\n\t}, nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (v verifyAs) Name() string {\n\treturn \"verify As function\"\n}\n\nfunc (v verifyAs) ErrorCheck(k *secrets.Keeper, err error) error {\n\tvar s string\n\tif k.ErrorAs(err, &s) {\n\t\treturn errors.New(\"Keeper.ErrorAs expected to fail\")\n\t}\n\treturn nil\n}\n\n// Vault-specific tests.\n\nfunc TestNoSessionProvidedError(t *testing.T) {\n\tif _, err := Dial(context.Background(), nil); err == nil {\n\t\tt.Error(\"got nil, want no auth Config provided\")\n\t}\n}\n\nfunc TestNoConnectionError(t *testing.T) {\n\tctx := context.Background()\n\n\t// Dial calls vault's NewClient method, which doesn't make the connection. Try\n\t// doing encryption which should fail by no connection.\n\tclient, err := Dial(ctx, &Config{\n\t\tToken: \"<Client (Root) Token>\",\n\t\tAPIConfig: api.Config{\n\t\t\tAddress: apiAddress,\n\t\t},\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tkeeper := OpenKeeper(client, \"my-key\", nil)\n\tdefer keeper.Close()\n\tif _, err := keeper.Encrypt(ctx, []byte(\"test\")); err == nil {\n\t\tt.Error(\"got nil, want connection refused\")\n\t}\n}\n\nfunc fakeConnectionStringInEnv() func() {\n\toldURLVal := os.Getenv(\"VAULT_SERVER_URL\")\n\toldTokenVal := os.Getenv(\"VAULT_SERVER_TOKEN\")\n\tos.Setenv(\"VAULT_SERVER_URL\", \"http://myvaultserver\")\n\tos.Setenv(\"VAULT_SERVER_TOKEN\", \"faketoken\")\n\treturn func() {\n\t\tos.Setenv(\"VAULT_SERVER_URL\", oldURLVal)\n\t\tos.Setenv(\"VAULT_SERVER_TOKEN\", oldTokenVal)\n\t}\n}\n\nfunc alternativeConnectionStringEnvVars() func() {\n\toldURLVal := os.Getenv(\"VAULT_ADDR\")\n\toldTokenVal := os.Getenv(\"VAULT_TOKEN\")\n\tos.Setenv(\"VAULT_ADDR\", \"http://myalternativevaultserver\")\n\tos.Setenv(\"VAULT_TOKEN\", \"faketoken2\")\n\treturn func() {\n\t\tos.Setenv(\"VAULT_ADDR\", oldURLVal)\n\t\tos.Setenv(\"VAULT_TOKEN\", oldTokenVal)\n\t}\n}\n\nfunc unsetConnectionStringEnvVars() func() {\n\toldURLVal := os.Getenv(\"VAULT_ADDR\")\n\toldTokenVal := os.Getenv(\"VAULT_TOKEN\")\n\toldServerURLVal := os.Getenv(\"VAULT_SERVER_URL\")\n\toldServerTokenVal := os.Getenv(\"VAULT_SERVER_TOKEN\")\n\tos.Unsetenv(\"VAULT_ADDR\")\n\tos.Unsetenv(\"VAULT_TOKEN\")\n\tos.Unsetenv(\"VAULT_SERVER_URL\")\n\tos.Unsetenv(\"VAULT_SERVER_TOKEN\")\n\treturn func() {\n\t\tos.Setenv(\"VAULT_ADDR\", oldURLVal)\n\t\tos.Setenv(\"VAULT_SERVER_URL\", oldServerURLVal)\n\t\tos.Setenv(\"VAULT_TOKEN\", oldTokenVal)\n\t\tos.Setenv(\"VAULT_SERVER_TOKEN\", oldServerTokenVal)\n\t}\n}\n\nfunc TestOpenKeeper(t *testing.T) {\n\tcleanup := fakeConnectionStringInEnv()\n\tdefer cleanup()\n\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"hashivault://mykey\", false},\n\t\t// OK, setting engine.\n\t\t{\"hashivault://mykey?engine=foo\", false},\n\t\t// Invalid parameter.\n\t\t{\"hashivault://mykey?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tkeeper, err := secrets.OpenKeeper(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tif err = keeper.Close(); err != nil {\n\t\t\t\tt.Errorf(\"%s: got error during close: %v\", test.URL, err)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc TestGetVaultConnectionDetails(t *testing.T) {\n\tt.Run(\"Test Current Env Vars\", func(t *testing.T) {\n\t\tcleanup := fakeConnectionStringInEnv()\n\t\tdefer cleanup()\n\n\t\tserverUrl, err := getVaultURL()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"got unexpected error: %v\", err)\n\t\t}\n\t\tif serverUrl != \"http://myvaultserver\" {\n\t\t\tt.Errorf(\"expected 'http://myvaultserver': got %q\", serverUrl)\n\t\t}\n\n\t\tvaultToken := getVaultToken()\n\t\tif vaultToken != \"faketoken\" {\n\t\t\tt.Errorf(\"export 'faketoken': got %q\", vaultToken)\n\t\t}\n\t})\n\n\tt.Run(\"Test Alternative Env Vars\", func(t *testing.T) {\n\t\tcleanup := alternativeConnectionStringEnvVars()\n\t\tdefer cleanup()\n\n\t\tserverUrl, err := getVaultURL()\n\t\tif err != nil {\n\t\t\tt.Errorf(\"got unexpected error: %v\", err)\n\t\t}\n\t\tif serverUrl != \"http://myalternativevaultserver\" {\n\t\t\tt.Errorf(\"export '': got %q\", serverUrl)\n\t\t}\n\n\t\tvaultToken := getVaultToken()\n\t\tif vaultToken != \"faketoken2\" {\n\t\t\tt.Errorf(\"export 'faketoken2': got %q\", vaultToken)\n\t\t}\n\t})\n\tt.Run(\"Test Unset Env Vars Throws Error\", func(t *testing.T) {\n\t\tcleanup := unsetConnectionStringEnvVars()\n\t\tdefer cleanup()\n\n\t\tserverUrl, err := getVaultURL()\n\t\tif err == nil {\n\t\t\tt.Errorf(\"expected error but got a url: %s\", serverUrl)\n\t\t}\n\n\t\tvaultToken := getVaultToken()\n\t\tif vaultToken != \"\" {\n\t\t\tt.Errorf(\"export '': got %q\", vaultToken)\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "secrets/localsecrets/example_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage localsecrets_test\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/localsecrets\"\n)\n\nfunc ExampleNewKeeper() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\tsecretKey, err := localsecrets.NewRandomKey()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tkeeper := localsecrets.NewKeeper(secretKey)\n\tdefer keeper.Close()\n}\n\nfunc Example_openFromURL() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// PRAGMA: On gocloud.dev, add a blank import: _ \"gocloud.dev/secrets/localsecrets\"\n\n\t// PRAGMA: On gocloud.dev, hide lines until the next blank line.\n\tctx := context.Background()\n\n\t// Using \"base64key://\", a new random key will be generated.\n\trandomKeyKeeper, err := secrets.OpenKeeper(ctx, \"base64key://\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer randomKeyKeeper.Close()\n\n\t// Otherwise, the URL hostname must be a base64-encoded key, of length 32 bytes when decoded.\n\t// Note that base64.URLEncode should be used, to avoid URL-unsafe characters.\n\tsavedKeyKeeper, err := secrets.OpenKeeper(ctx, \"base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer savedKeyKeeper.Close()\n}\n"
  },
  {
    "path": "secrets/localsecrets/localsecrets.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package localsecrets provides a secrets implementation using a locally\n// provided symmetric key.\n// Use NewKeeper to construct a *secrets.Keeper.\n//\n// # URLs\n//\n// For secrets.OpenKeeper, localsecrets registers for the scheme \"base64key\".\n// To customize the URL opener, or for more details on the URL format,\n// see URLOpener.\n// See https://gocloud.dev/concepts/urls/ for background information.\n//\n// # As\n//\n// localsecrets does not support any types for As.\npackage localsecrets // import \"gocloud.dev/secrets/localsecrets\"\n\nimport (\n\t\"context\"\n\t\"crypto/rand\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/secrets\"\n\t\"golang.org/x/crypto/nacl/secretbox\"\n)\n\nfunc init() {\n\tsecrets.DefaultURLMux().RegisterKeeper(Scheme, &URLOpener{})\n}\n\n// Scheme is the URL scheme localsecrets registers its URLOpener under on\n// secrets.DefaultMux.\n// See the package documentation and/or URLOpener for details.\nconst (\n\tScheme = \"base64key\"\n)\n\n// URLOpener opens localsecrets URLs like \"base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=\".\n//\n// The URL host must be base64 encoded, and must decode to exactly 32 bytes.\n// Note that base64.URLEncoding should be used to avoid URL-unsafe character in the hostname.\n// If the URL host is empty (e.g., \"base64key://\"), a new random key is generated.\n//\n// No query parameters are supported.\ntype URLOpener struct{}\n\n// OpenKeeperURL opens Keeper URLs.\nfunc (o *URLOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*secrets.Keeper, error) {\n\tfor param := range u.Query() {\n\t\treturn nil, fmt.Errorf(\"open keeper %v: invalid query parameter %q\", u, param)\n\t}\n\tvar sk [32]byte\n\tvar err error\n\tif u.Host == \"\" {\n\t\tsk, err = NewRandomKey()\n\t} else {\n\t\tsk, err = Base64Key(u.Host)\n\t}\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open keeper %v: failed to get key: %v\", u, err)\n\t}\n\treturn NewKeeper(sk), nil\n}\n\n// keeper holds a secret for use in symmetric encryption,\n// and implements driver.Keeper.\ntype keeper struct {\n\tsecretKey [32]byte // secretbox key size\n}\n\n// NewKeeper returns a *secrets.Keeper that uses the given symmetric\n// key. See the package documentation for an example.\nfunc NewKeeper(sk [32]byte) *secrets.Keeper {\n\treturn secrets.NewKeeper(\n\t\t&keeper{secretKey: sk},\n\t)\n}\n\n// Base64KeyStd takes a secret key as a base64 string and converts it\n// to a [32]byte, erroring if the decoded data is not 32 bytes.\n// It uses base64.StdEncoding.\nfunc Base64KeyStd(base64str string) ([32]byte, error) {\n\treturn base64Key(base64str, base64.StdEncoding)\n}\n\n// Base64Key takes a secret key as a base64 string and converts it\n// to a [32]byte, erroring if the decoded data is not 32 bytes.\n// It uses base64.URLEncoding.\nfunc Base64Key(base64str string) ([32]byte, error) {\n\treturn base64Key(base64str, base64.URLEncoding)\n}\n\nfunc base64Key(base64str string, encoding *base64.Encoding) ([32]byte, error) {\n\tvar sk32 [32]byte\n\tkey, err := encoding.DecodeString(base64str)\n\tif err != nil {\n\t\treturn sk32, err\n\t}\n\tkeySize := len([]byte(key))\n\tif keySize != 32 {\n\t\treturn sk32, fmt.Errorf(\"Base64Key: secret key material is %v bytes, want 32 bytes\", keySize)\n\t}\n\tcopy(sk32[:], key)\n\treturn sk32, nil\n}\n\n// NewRandomKey will generate random secret key material suitable to be\n// used as the secret key argument to NewKeeper.\nfunc NewRandomKey() ([32]byte, error) {\n\tvar sk32 [32]byte\n\t// Read random numbers into the passed slice until it's full.\n\t_, err := rand.Read(sk32[:])\n\tif err != nil {\n\t\treturn sk32, err\n\t}\n\treturn sk32, nil\n}\n\nconst nonceSize = 24\n\n// Encrypt encrypts a message using a per-message generated nonce and\n// the secret held in the Keeper.\nfunc (k *keeper) Encrypt(ctx context.Context, message []byte) ([]byte, error) {\n\tvar nonce [nonceSize]byte\n\tif _, err := io.ReadFull(rand.Reader, nonce[:]); err != nil {\n\t\treturn nil, err\n\t}\n\t// secretbox.Seal appends the encrypted message to its first argument and returns\n\t// the result; using a slice on top of the nonce array for this \"out\" arg allows reading\n\t// the nonce out of the first nonceSize bytes when the message is decrypted.\n\treturn secretbox.Seal(nonce[:], message, &nonce, &k.secretKey), nil\n}\n\n// Decrypt decrypts a message using a nonce that is read out of the first nonceSize bytes\n// of the message and a secret held in the Keeper.\nfunc (k *keeper) Decrypt(ctx context.Context, message []byte) ([]byte, error) {\n\tif len(message) < nonceSize {\n\t\treturn nil, fmt.Errorf(\"localsecrets: invalid message length (%d, expected at least %d)\", len(message), nonceSize)\n\t}\n\tvar decryptNonce [nonceSize]byte\n\tcopy(decryptNonce[:], message[:nonceSize])\n\n\tdecrypted, ok := secretbox.Open(nil, message[nonceSize:], &decryptNonce, &k.secretKey)\n\tif !ok {\n\t\treturn nil, errors.New(\"localsecrets: Decrypt failed\")\n\t}\n\treturn decrypted, nil\n}\n\n// Close implements driver.Keeper.Close.\nfunc (k *keeper) Close() error { return nil }\n\n// ErrorAs implements driver.Keeper.ErrorAs.\nfunc (k *keeper) ErrorAs(err error, i any) bool {\n\treturn false\n}\n\n// ErrorCode implements driver.ErrorCode.\nfunc (k *keeper) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Unknown }\n"
  },
  {
    "path": "secrets/localsecrets/localsecrets_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage localsecrets\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"log\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"gocloud.dev/secrets\"\n\t\"gocloud.dev/secrets/driver\"\n\t\"gocloud.dev/secrets/drivertest\"\n)\n\ntype harness struct{}\n\nfunc (h *harness) MakeDriver(ctx context.Context) (driver.Keeper, driver.Keeper, error) {\n\tsecret1, err := NewRandomKey()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tsecret2, err := NewRandomKey()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treturn &keeper{secretKey: secret1}, &keeper{secretKey: secret2}, nil\n}\n\nfunc (h *harness) Close() {}\n\nfunc newHarness(ctx context.Context, t *testing.T) (drivertest.Harness, error) {\n\tt.Helper()\n\n\treturn &harness{}, nil\n}\n\nfunc TestConformance(t *testing.T) {\n\tdrivertest.RunConformanceTests(t, newHarness, []drivertest.AsTest{verifyAs{}})\n}\n\ntype verifyAs struct{}\n\nfunc (v verifyAs) Name() string {\n\treturn \"verify As function\"\n}\n\nfunc (v verifyAs) ErrorCheck(k *secrets.Keeper, err error) error {\n\tvar s string\n\tif k.ErrorAs(err, &s) {\n\t\treturn errors.New(\"Keeper.ErrorAs expected to fail\")\n\t}\n\treturn nil\n}\n\nfunc TestSmallData(t *testing.T) {\n\tkey, err := NewRandomKey()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tkeeper := NewKeeper(key)\n\tdefer keeper.Close()\n\n\tctx := context.Background()\n\tconst plaintext = \"hello world\"\n\tciphertext, err := keeper.Encrypt(ctx, []byte(plaintext))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttests := []struct {\n\t\tCiphertext           []byte\n\t\tWant                 string\n\t\tWantErr              bool\n\t\tWantInvalidLengthErr bool // true if we want the error to be that the ciphertext length is invalid\n\t}{\n\t\t{nil, \"\", true, true},\n\t\t{[]byte{}, \"\", true, true},\n\t\t{[]byte{0}, \"\", true, true},\n\t\t{ciphertext[:1], \"\", true, true},\n\t\t{ciphertext[:nonceSize-1], \"\", true, true},\n\t\t{ciphertext[:nonceSize], \"\", true, false}, // not invalid, but Decrypt will fail\n\t\t{ciphertext, plaintext, false, false},     // works\n\t}\n\n\tfor _, test := range tests {\n\t\tgot, err := keeper.Decrypt(ctx, test.Ciphertext)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"got err %v from Decrypt, want error? %v\", err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tif gotStr := string(got); gotStr != test.Want {\n\t\t\t\tt.Errorf(\"got %s want %s\", gotStr, test.Want)\n\t\t\t}\n\t\t} else {\n\t\t\tif gotInvalid := strings.Contains(err.Error(), \"invalid message length\"); gotInvalid != test.WantInvalidLengthErr {\n\t\t\t\tt.Errorf(\"got invalid message length error? %v want %v\", gotInvalid, test.WantInvalidLengthErr)\n\t\t\t}\n\t\t}\n\t\t// Encrypt should always work.\n\t\tif _, err := keeper.Encrypt(ctx, test.Ciphertext); err != nil {\n\t\t\tt.Errorf(\"got error %v from Encrypt, want nil\", err)\n\t\t}\n\t}\n}\n\nfunc TestOpenKeeper(t *testing.T) {\n\ttests := []struct {\n\t\tURL     string\n\t\tWantErr bool\n\t}{\n\t\t// OK.\n\t\t{\"base64key://\", false},\n\t\t// OK.\n\t\t{\"base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=\", false},\n\t\t// Valid base64, but < 32 bytes.\n\t\t{\"base64key://c2VjcmV0\", true},\n\t\t// Valid base64, but > 32 bytes.\n\t\t{\"base64key://c2VjcmV0c2VjcmV0c2VjcmV0c2VjcmV0c2VjcmV0c3NlY3JldHNlY3JldHNlY3JldHNlY3JldHNlY3JldHM=\", true},\n\t\t// Invalid base64 key.\n\t\t{\"base64key://not-valid-base64\", true},\n\t\t// Valid base64 key (but invalid if using Std encoding instead of URL encoding).\n\t\t{\"base64Key://UKcmEoZW7nKl0uPHr8yV__KJm0ANhiFz8PzDN-gYWq8=\", false},\n\t\t// Invalid parameter.\n\t\t{\"base64key://?param=value\", true},\n\t}\n\n\tctx := context.Background()\n\tfor _, test := range tests {\n\t\tkeeper, err := secrets.OpenKeeper(ctx, test.URL)\n\t\tif (err != nil) != test.WantErr {\n\t\t\tt.Errorf(\"%s: got error %v, want error %v\", test.URL, err, test.WantErr)\n\t\t}\n\t\tif err == nil {\n\t\t\tif err = keeper.Close(); err != nil {\n\t\t\t\tt.Errorf(\"%s: got error during close: %v\", test.URL, err)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "secrets/secrets.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package secrets provides an easy and portable way to encrypt and decrypt\n// messages. Subpackages contain driver implementations of\n// secrets for supported services.\n//\n// See https://gocloud.dev/howto/secrets/ for a detailed how-to guide.\n//\n// # OpenTelemetry Integration\n//\n// OpenTelemetry supports tracing and metric collection for multiple languages and\n// backend providers. See https://opentelemetry.io.\n//\n// This API collects OpenTelemetry traces and metrics for the following methods:\n//   - Encrypt\n//   - Decrypt\n//\n// All trace and metric names begin with the package import path.\n// The traces add the method name.\n// For example, \"gocloud.dev/secrets/Encrypt\".\n// The metrics are \"completed_calls\", a count of completed method calls by driver,\n// method and status (error code); and \"latency\", a distribution of method latency\n// by driver and method.\n// For example, \"gocloud.dev/secrets/latency\".\n//\n// To enable trace collection in your application, see the OpenTelemetry documentation at\n// https://opentelemetry.io/docs/instrumentation/go/getting-started/.\npackage secrets // import \"gocloud.dev/secrets\"\n\nimport (\n\t\"context\"\n\t\"net/url\"\n\t\"sync\"\n\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/openurl\"\n\tgcdkotel \"gocloud.dev/internal/otel\"\n\t\"gocloud.dev/secrets/driver\"\n)\n\n// Keeper does encryption and decryption. To create a Keeper, use constructors\n// found in driver subpackages.\ntype Keeper struct {\n\tk      driver.Keeper\n\ttracer *gcdkotel.Tracer\n\n\t// mu protects the closed variable.\n\t// Read locks are kept to allow holding a read lock for long-running calls,\n\t// and thereby prevent closing until a call finishes.\n\tmu     sync.RWMutex\n\tclosed bool\n}\n\n// NewKeeper is intended for use by drivers only. Do not use in application code.\nvar NewKeeper = newKeeper\n\n// newKeeper creates a Keeper.\nfunc newKeeper(k driver.Keeper) *Keeper {\n\treturn &Keeper{\n\t\tk:      k,\n\t\ttracer: gcdkotel.NewTracer(pkgName, gcdkotel.ProviderName(k)),\n\t}\n}\n\nconst pkgName = \"gocloud.dev/secrets\"\n\nvar (\n\n\t// OpenTelemetryViews are predefined views for OpenTelemetry metrics.\n\t// The views include counts and latency distributions for API method calls.\n\t// See the explanations at https://opentelemetry.io/docs/specs/otel/metrics/data-model/ for usage.\n\tOpenTelemetryViews = gcdkotel.Views(pkgName)\n)\n\n// Encrypt encrypts the plaintext and returns the cipher message.\nfunc (k *Keeper) Encrypt(ctx context.Context, plaintext []byte) (ciphertext []byte, err error) {\n\tctx, span := k.tracer.Start(ctx, \"Encrypt\")\n\tdefer func() { k.tracer.End(ctx, span, err) }()\n\n\tk.mu.RLock()\n\tdefer k.mu.RUnlock()\n\tif k.closed {\n\t\treturn nil, errClosed\n\t}\n\n\tb, err := k.k.Encrypt(ctx, plaintext)\n\tif err != nil {\n\t\treturn nil, wrapError(k, err)\n\t}\n\treturn b, nil\n}\n\n// Decrypt decrypts the ciphertext and returns the plaintext.\nfunc (k *Keeper) Decrypt(ctx context.Context, ciphertext []byte) (plaintext []byte, err error) {\n\tctx, span := k.tracer.Start(ctx, \"Decrypt\")\n\tdefer func() { k.tracer.End(ctx, span, err) }()\n\n\tk.mu.RLock()\n\tdefer k.mu.RUnlock()\n\tif k.closed {\n\t\treturn nil, errClosed\n\t}\n\n\tb, err := k.k.Decrypt(ctx, ciphertext)\n\tif err != nil {\n\t\treturn nil, wrapError(k, err)\n\t}\n\treturn b, nil\n}\n\nvar errClosed = gcerr.Newf(gcerr.FailedPrecondition, nil, \"secrets: Keeper has been closed\")\n\n// Close releases any resources used for the Keeper.\nfunc (k *Keeper) Close() error {\n\tk.mu.Lock()\n\tprev := k.closed\n\tk.closed = true\n\tk.mu.Unlock()\n\tif prev {\n\t\treturn errClosed\n\t}\n\treturn wrapError(k, k.k.Close())\n}\n\n// ErrorAs converts i to driver-specific types. See\n// https://gocloud.dev/concepts/as/ for background information and the\n// driver package documentation for the specific types supported for\n// that driver.\n//\n// ErrorAs panics if i is nil or not a pointer.\n// ErrorAs returns false if err == nil.\nfunc (k *Keeper) ErrorAs(err error, i any) bool {\n\treturn gcerr.ErrorAs(err, i, k.k.ErrorAs)\n}\n\nfunc wrapError(k *Keeper, err error) error {\n\tif err == nil {\n\t\treturn nil\n\t}\n\tif gcerr.DoNotWrap(err) {\n\t\treturn err\n\t}\n\treturn gcerr.New(k.k.ErrorCode(err), err, 2, \"secrets\")\n}\n\n// KeeperURLOpener represents types that can open Keepers based on a URL.\n// The opener must not modify the URL argument. OpenKeeperURL must be safe to\n// call from multiple goroutines.\n//\n// This interface is generally implemented by types in driver packages.\ntype KeeperURLOpener interface {\n\tOpenKeeperURL(ctx context.Context, u *url.URL) (*Keeper, error)\n}\n\n// URLMux is a URL opener multiplexer. It matches the scheme of the URLs\n// against a set of registered schemes and calls the opener that matches the\n// URL's scheme.\n// See https://gocloud.dev/concepts/urls/ for more information.\n//\n// The zero value is a multiplexer with no registered schemes.\ntype URLMux struct {\n\tschemes openurl.SchemeMap\n}\n\n// KeeperSchemes returns a sorted slice of the registered Keeper schemes.\nfunc (mux *URLMux) KeeperSchemes() []string { return mux.schemes.Schemes() }\n\n// ValidKeeperScheme returns true iff scheme has been registered for Keepers.\nfunc (mux *URLMux) ValidKeeperScheme(scheme string) bool { return mux.schemes.ValidScheme(scheme) }\n\n// RegisterKeeper registers the opener with the given scheme. If an opener\n// already exists for the scheme, RegisterKeeper panics.\nfunc (mux *URLMux) RegisterKeeper(scheme string, opener KeeperURLOpener) {\n\tmux.schemes.Register(\"secrets\", \"Keeper\", scheme, opener)\n}\n\n// OpenKeeper calls OpenKeeperURL with the URL parsed from urlstr.\n// OpenKeeper is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenKeeper(ctx context.Context, urlstr string) (*Keeper, error) {\n\topener, u, err := mux.schemes.FromString(\"Keeper\", urlstr)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(KeeperURLOpener).OpenKeeperURL(ctx, u)\n}\n\n// OpenKeeperURL dispatches the URL to the opener that is registered with the\n// URL's scheme. OpenKeeperURL is safe to call from multiple goroutines.\nfunc (mux *URLMux) OpenKeeperURL(ctx context.Context, u *url.URL) (*Keeper, error) {\n\topener, err := mux.schemes.FromURL(\"Keeper\", u)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn opener.(KeeperURLOpener).OpenKeeperURL(ctx, u)\n}\n\nvar defaultURLMux = new(URLMux)\n\n// DefaultURLMux returns the URLMux used by OpenKeeper.\n//\n// Driver packages can use this to register their KeeperURLOpener on the mux.\nfunc DefaultURLMux() *URLMux {\n\treturn defaultURLMux\n}\n\n// OpenKeeper opens the Keeper identified by the URL given.\n// See the URLOpener documentation in driver subpackages for\n// details on supported URL formats, and https://gocloud.dev/concepts/urls\n// for more information.\nfunc OpenKeeper(ctx context.Context, urlstr string) (*Keeper, error) {\n\treturn defaultURLMux.OpenKeeper(ctx, urlstr)\n}\n"
  },
  {
    "path": "secrets/secrets_test.go",
    "content": "// Copyright 2019-2025 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage secrets\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/url\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"gocloud.dev/gcerrors\"\n\t\"gocloud.dev/internal/gcerr\"\n\t\"gocloud.dev/internal/testing/oteltest\"\n\t\"gocloud.dev/secrets/driver\"\n)\n\nvar errFake = errors.New(\"fake\")\n\ntype erroringKeeper struct {\n\tdriver.Keeper\n}\n\nfunc (k *erroringKeeper) Decrypt(ctx context.Context, b []byte) ([]byte, error) {\n\treturn nil, errFake\n}\n\nfunc (k *erroringKeeper) Encrypt(ctx context.Context, b []byte) ([]byte, error) {\n\treturn nil, errFake\n}\n\nfunc (k *erroringKeeper) Close() error                       { return errFake }\nfunc (k *erroringKeeper) ErrorCode(error) gcerrors.ErrorCode { return gcerrors.Internal }\n\nfunc TestErrorsAreWrapped(t *testing.T) {\n\tctx := context.Background()\n\tk := NewKeeper(&erroringKeeper{})\n\n\t// verifyWrap ensures that err is wrapped exactly once.\n\tverifyWrap := func(description string, err error) {\n\t\tif err == nil {\n\t\t\tt.Errorf(\"%s: got nil error, wanted non-nil\", description)\n\t\t} else if unwrapped, ok := err.(*gcerr.Error); !ok {\n\t\t\tt.Errorf(\"%s: not wrapped: %v\", description, err)\n\t\t} else if du, ok := unwrapped.Unwrap().(*gcerr.Error); ok {\n\t\t\tt.Errorf(\"%s: double wrapped: %v\", description, du)\n\t\t}\n\t\tif s := err.Error(); !strings.HasPrefix(s, \"secrets \") {\n\t\t\tt.Errorf(\"%s: Error() for wrapped error doesn't start with secrets: prefix: %s\", description, s)\n\t\t}\n\t}\n\n\t_, err := k.Decrypt(ctx, nil)\n\tverifyWrap(\"Decrypt\", err)\n\n\t_, err = k.Encrypt(ctx, nil)\n\tverifyWrap(\"Encrypt\", err)\n\n\terr = k.Close()\n\tverifyWrap(\"Close\", err)\n}\n\n// TestKeeperIsClosed tests that Keeper functions return an error when the\n// Keeper is closed.\nfunc TestKeeperIsClosed(t *testing.T) {\n\tctx := context.Background()\n\tk := NewKeeper(&erroringKeeper{})\n\tk.Close()\n\n\tif _, err := k.Decrypt(ctx, nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif _, err := k.Encrypt(ctx, nil); err != errClosed {\n\t\tt.Error(err)\n\t}\n\tif err := k.Close(); err != errClosed {\n\t\tt.Error(err)\n\t}\n}\n\nfunc TestOpenTelemetry(t *testing.T) {\n\n\tctx := context.Background()\n\n\tte := oteltest.NewTestExporter(t, OpenTelemetryViews)\n\n\tk := NewKeeper(&erroringKeeper{})\n\tdefer k.Close()\n\t_, _ = k.Encrypt(ctx, nil)\n\n\t_, _ = k.Decrypt(ctx, nil)\n\t_, _ = k.Decrypt(ctx, nil)\n\n\t// Check collected spans.\n\tspanStubs := te.GetSpans()\n\tmetrics := te.GetMetrics(ctx)\n\tdiff := oteltest.Diff(spanStubs.Snapshots(), metrics, pkgName, \"gocloud.dev/secrets\", []oteltest.Call{\n\t\t{Method: \"Encrypt\", Code: gcerrors.Internal},\n\t\t{Method: \"Decrypt\", Code: gcerrors.Internal},\n\t\t{Method: \"Decrypt\", Code: gcerrors.Internal},\n\t})\n\tif diff != \"\" {\n\t\tt.Error(diff)\n\t}\n\n\tif err := te.Shutdown(ctx); err != nil {\n\t\t// Just log and continue - not failing the test on shutdown errors.\n\t\tt.Logf(\"OpenTelemetry shutdown error (non-fatal): %v\", err)\n\t}\n\n}\n\nfunc TestURLMux(t *testing.T) {\n\tctx := context.Background()\n\n\tmux := new(URLMux)\n\tfake := &fakeOpener{}\n\tmux.RegisterKeeper(\"foo\", fake)\n\tmux.RegisterKeeper(\"err\", fake)\n\n\tif diff := cmp.Diff(mux.KeeperSchemes(), []string{\"err\", \"foo\"}); diff != \"\" {\n\t\tt.Errorf(\"Schemes: %s\", diff)\n\t}\n\tif !mux.ValidKeeperScheme(\"foo\") || !mux.ValidKeeperScheme(\"err\") {\n\t\tt.Errorf(\"ValidKeeperScheme didn't return true for valid scheme\")\n\t}\n\tif mux.ValidKeeperScheme(\"foo2\") || mux.ValidKeeperScheme(\"http\") {\n\t\tt.Errorf(\"ValidKeeperScheme didn't return false for invalid scheme\")\n\t}\n\n\tfor _, tc := range []struct {\n\t\tname    string\n\t\turl     string\n\t\twantErr bool\n\t}{\n\t\t{\n\t\t\tname:    \"empty URL\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL\",\n\t\t\turl:     \":foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"invalid URL no scheme\",\n\t\t\turl:     \"foo\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"unregistered scheme\",\n\t\t\turl:     \"bar://mykeeper\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname:    \"func returns error\",\n\t\t\turl:     \"err://mykeeper\",\n\t\t\twantErr: true,\n\t\t},\n\t\t{\n\t\t\tname: \"no query options\",\n\t\t\turl:  \"foo://mykeeper\",\n\t\t},\n\t\t{\n\t\t\tname: \"empty query options\",\n\t\t\turl:  \"foo://mykeeper?\",\n\t\t},\n\t\t{\n\t\t\tname: \"query options\",\n\t\t\turl:  \"foo://mykeeper?aAa=bBb&cCc=dDd\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple query options\",\n\t\t\turl:  \"foo://mykeeper?x=a&x=b&x=c\",\n\t\t},\n\t\t{\n\t\t\tname: \"fancy keeper name\",\n\t\t\turl:  \"foo:///foo/bar/baz\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api scheme prefix\",\n\t\t\turl:  \"secrets+foo://mykeeper\",\n\t\t},\n\t\t{\n\t\t\tname: \"using api+type scheme prefix\",\n\t\t\turl:  \"secrets+keeper+foo://mykeeper\",\n\t\t},\n\t} {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\tkeeper, gotErr := mux.OpenKeeper(ctx, tc.url)\n\t\t\tif (gotErr != nil) != tc.wantErr {\n\t\t\t\tt.Fatalf(\"got err %v, want error %v\", gotErr, tc.wantErr)\n\t\t\t}\n\t\t\tif gotErr != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer keeper.Close()\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t\t// Repeat with OpenKeeperURL.\n\t\t\tparsed, err := url.Parse(tc.url)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatal(err)\n\t\t\t}\n\t\t\tkeeper, gotErr = mux.OpenKeeperURL(ctx, parsed)\n\t\t\tif gotErr != nil {\n\t\t\t\tt.Fatalf(\"got err %v, want nil\", gotErr)\n\t\t\t}\n\t\t\tdefer keeper.Close()\n\t\t\tif got := fake.u.String(); got != tc.url {\n\t\t\t\tt.Errorf(\"got %q want %q\", got, tc.url)\n\t\t\t}\n\t\t})\n\t}\n}\n\ntype fakeOpener struct {\n\tu *url.URL // last url passed to OpenKeeperURL.\n}\n\nfunc (o *fakeOpener) OpenKeeperURL(ctx context.Context, u *url.URL) (*Keeper, error) {\n\tif u.Scheme == \"err\" {\n\t\treturn nil, errors.New(\"fail\")\n\t}\n\to.u = u\n\treturn NewKeeper(&erroringKeeper{}), nil\n}\n"
  },
  {
    "path": "server/driver/driver.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package driver defines an interface for custom HTTP listeners.\n// Application code should use package server.\npackage driver // import \"gocloud.dev/server/driver\"\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\n// Server dispatches requests to an http.Handler.\ntype Server interface {\n\t// ListenAndServe listens on the TCP network address addr and then\n\t// calls Serve with handler to handle requests on incoming connections.\n\t// The addr argument will be a non-empty string specifying \"host:port\".\n\t// The http.Handler will always be non-nil.\n\t// Drivers must block until serving is done (or\n\t// return an error if serving can't occur for some reason), serve\n\t// requests to the given http.Handler, and be interruptable by Shutdown.\n\t// Drivers should use the given address if they serve using TCP directly.\n\tListenAndServe(addr string, h http.Handler) error\n\n\t// Shutdown gracefully shuts down the server without interrupting\n\t// any active connections. If the provided context expires before\n\t// the shutdown is complete, Shutdown returns the context's error,\n\t// otherwise it returns any error returned from closing the Server's\n\t// underlying Listener(s).\n\tShutdown(ctx context.Context) error\n}\n\n// TLSServer is an optional interface for Server drivers, that adds support\n// for serving TLS.\ntype TLSServer interface {\n\t// ListenAndServeTLS is similar to Server.ListenAndServe, but should\n\t// serve using TLS.\n\t// See http://go/godoc/net/http/#Server.ListenAndServeTLS.\n\tListenAndServeTLS(addr, certFile, keyFile string, h http.Handler) error\n}\n"
  },
  {
    "path": "server/example_test.go",
    "content": "// Copyright 2019 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage server_test\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/signal\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gocloud.dev/server\"\n\n\t\"gocloud.dev/server/health\"\n\t\"gocloud.dev/server/requestlog\"\n)\n\nfunc ExampleServer() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Use the constructor function to create the server.\n\tsrv := server.New(http.DefaultServeMux, nil)\n\n\t// Register a route.\n\thttp.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n\t\tfmt.Fprintln(w, \"Hello, World!\")\n\t})\n\n\t// Start the server. If ListenAndServe returns an error, print it and exit.\n\tif err := srv.ListenAndServe(\":8080\"); err != nil {\n\t\tlog.Fatalf(\"%v\", err)\n\t}\n}\n\nfunc ExampleServer_withRequestLogger() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Create a logger, and assign it to the RequestLogger field of a\n\t// server.Options struct.\n\tsrvOptions := &server.Options{\n\t\tRequestLogger: requestlog.NewNCSALogger(os.Stdout, func(error) {}),\n\t}\n\n\t// Pass the options to the Server constructor.\n\tsrv := server.New(http.DefaultServeMux, srvOptions)\n\n\t// Register a route.\n\thttp.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n\t\tfmt.Fprintln(w, \"Hello, World!\")\n\t})\n\n\t// Start the server. You will see requests logged to STDOUT.\n\tif err := srv.ListenAndServe(\":8080\"); err != nil {\n\t\tlog.Fatalf(\"%v\", err)\n\t}\n}\n\n// customHealthCheck is an example health check. It implements the\n// health.Checker interface and reports the server is healthy when the healthy\n// field is set to true.\ntype customHealthCheck struct {\n\tmu      sync.RWMutex\n\thealthy bool\n}\n\n// customHealthCheck implements the health.Checker interface because it has a\n// CheckHealth method. Because each application may have a different definition\n// of what it means to be \"healthy\", you will need to define a CheckHealth method\n// specific to your application.\nfunc (h *customHealthCheck) CheckHealth() error {\n\th.mu.RLock()\n\tdefer h.mu.RUnlock()\n\tif !h.healthy {\n\t\treturn errors.New(\"not ready yet!\")\n\t}\n\treturn nil\n}\n\nfunc ExampleServer_withHealthChecks() {\n\t// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.\n\n\t// Create a health.Checker from the type we defined for our application.\n\t// In this example, healthCheck will report the server is unhealthy for 10 seconds\n\t// after startup, and as healthy henceforth. Check the /healthz/readiness\n\t// HTTP path to see readiness.\n\thealthCheck := new(customHealthCheck)\n\ttime.AfterFunc(10*time.Second, func() {\n\t\thealthCheck.mu.Lock()\n\t\tdefer healthCheck.mu.Unlock()\n\t\thealthCheck.healthy = true\n\t})\n\n\t// The server.Options struct takes a slice of health checks, because you\n\t// may need to check several things.\n\tsrvOptions := &server.Options{\n\t\tHealthChecks: []health.Checker{healthCheck},\n\t}\n\n\t// Pass the options to the Server constructor.\n\tsrv := server.New(http.DefaultServeMux, srvOptions)\n\n\t// Register a route.\n\thttp.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n\t\tfmt.Fprintln(w, \"Hello, World!\")\n\t})\n\n\t// Start the server. You will see requests logged to STDOUT.\n\tif err := srv.ListenAndServe(\":8080\"); err != nil {\n\t\tlog.Fatalf(\"%v\", err)\n\t}\n}\n\nfunc ExampleServer_Shutdown() {\n\t// OPTIONAL: Specify a driver in the options for the constructor.\n\t// NewDefaultDriver will be used by default if it is not explicitly set, and\n\t// uses http.Server with read, write, and idle timeouts set. When Shutdown\n\t// is called on the server, it is called on the driver.\n\tsrvOptions := &server.Options{\n\t\tDriver: server.NewDefaultDriver(),\n\t}\n\n\t// Pass the options to the Server constructor.\n\tsrv := server.New(http.DefaultServeMux, srvOptions)\n\n\t// If your application will be behind a load balancer that handles graceful\n\t// shutdown of requests, you may not need to call Shutdown on the server\n\t// directly. If you need to ensure graceful shutdown directly, it is important\n\t// to have a separate goroutine, because ListenAndServe blocks indefinitely.\n\tgo func() {\n\t\tinterrupt := make(chan os.Signal, 1)\n\t\tsignal.Notify(interrupt, os.Interrupt)\n\t\t// Receive off the chanel in a loop, because the interrupt could be sent\n\t\t// before ListenAndServe starts.\n\t\tfor {\n\t\t\t<-interrupt\n\t\t\tsrv.Shutdown(context.Background())\n\t\t}\n\t}()\n\n\t// Register a route.\n\thttp.HandleFunc(\"/\", func(w http.ResponseWriter, r *http.Request) {\n\t\tfmt.Fprintln(w, \"Hello, World!\")\n\t})\n\n\t// Start the server. You will see requests logged to STDOUT.\n\t// In the absence of an error, ListenAndServe blocks forever.\n\tif err := srv.ListenAndServe(\":8080\"); err != nil {\n\t\tlog.Fatalf(\"%v\", err)\n\t}\n}\n"
  },
  {
    "path": "server/health/health.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package health provides health check handlers.\npackage health // import \"gocloud.dev/server/health\"\n\nimport (\n\t\"io\"\n\t\"net/http\"\n)\n\n// Handler is an HTTP handler that reports on the success of an\n// aggregate of Checkers.  The zero value is always healthy.\ntype Handler struct {\n\tcheckers []Checker\n}\n\n// Add adds a new check to the handler.\nfunc (h *Handler) Add(c Checker) {\n\th.checkers = append(h.checkers, c)\n}\n\n// ServeHTTP returns 200 if it is healthy, 500 otherwise.\nfunc (h *Handler) ServeHTTP(w http.ResponseWriter, _ *http.Request) {\n\tfor _, c := range h.checkers {\n\t\tif err := c.CheckHealth(); err != nil {\n\t\t\twriteUnhealthy(w)\n\t\t\treturn\n\t\t}\n\t}\n\twriteHealthy(w)\n}\n\nfunc writeHeaders(statusLen string, w http.ResponseWriter) {\n\tw.Header().Set(\"Content-Length\", statusLen)\n\tw.Header().Set(\"Content-Type\", \"text/plain; charset=utf-8\")\n\tw.Header().Set(\"X-Content-Type-Options\", \"nosniff\")\n}\n\nfunc writeUnhealthy(w http.ResponseWriter) {\n\tconst (\n\t\tstatus    = \"unhealthy\"\n\t\tstatusLen = \"9\"\n\t)\n\n\twriteHeaders(statusLen, w)\n\tw.WriteHeader(http.StatusInternalServerError)\n\tio.WriteString(w, status)\n}\n\n// HandleLive is an http.HandlerFunc that handles liveness checks by\n// immediately responding with an HTTP 200 status.\nfunc HandleLive(w http.ResponseWriter, _ *http.Request) {\n\twriteHealthy(w)\n}\n\nfunc writeHealthy(w http.ResponseWriter) {\n\tconst (\n\t\tstatus    = \"ok\"\n\t\tstatusLen = \"2\"\n\t)\n\n\twriteHeaders(statusLen, w)\n\tw.WriteHeader(http.StatusOK)\n\tio.WriteString(w, status)\n}\n\n// Checker wraps the CheckHealth method.\n//\n// CheckHealth returns nil if the resource is healthy, or a non-nil\n// error if the resource is not healthy.  CheckHealth must be safe to\n// call from multiple goroutines.\ntype Checker interface {\n\tCheckHealth() error\n}\n\n// CheckerFunc is an adapter type to allow the use of ordinary functions as\n// health checks. If f is a function with the appropriate signature,\n// CheckerFunc(f) is a Checker that calls f.\ntype CheckerFunc func() error\n\n// CheckHealth calls f().\nfunc (f CheckerFunc) CheckHealth() error {\n\treturn f()\n}\n"
  },
  {
    "path": "server/health/health_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage health\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"sync\"\n\t\"testing\"\n)\n\nfunc TestNewHandler(t *testing.T) {\n\ts := httptest.NewServer(new(Handler))\n\tdefer s.Close()\n\tcode, err := check(s)\n\tif err != nil {\n\t\tt.Fatalf(\"GET %s: %v\", s.URL, err)\n\t}\n\tif code != http.StatusOK {\n\t\tt.Errorf(\"got HTTP status %d; want %d\", code, http.StatusOK)\n\t}\n}\n\nfunc TestChecker(t *testing.T) {\n\tc1 := &checker{err: errors.New(\"checker 1 down\")}\n\tc2 := &checker{err: errors.New(\"checker 2 down\")}\n\th := new(Handler)\n\th.Add(c1)\n\th.Add(c2)\n\ts := httptest.NewServer(h)\n\tdefer s.Close()\n\n\tt.Run(\"AllUnhealthy\", func(t *testing.T) {\n\t\tcode, err := check(s)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"GET %s: %v\", s.URL, err)\n\t\t}\n\t\tif code != http.StatusInternalServerError {\n\t\t\tt.Errorf(\"got HTTP status %d; want %d\", code, http.StatusInternalServerError)\n\t\t}\n\t})\n\tc1.set(nil)\n\tt.Run(\"PartialHealthy\", func(t *testing.T) {\n\t\tcode, err := check(s)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"GET %s: %v\", s.URL, err)\n\t\t}\n\t\tif code != http.StatusInternalServerError {\n\t\t\tt.Errorf(\"got HTTP status %d; want %d\", code, http.StatusInternalServerError)\n\t\t}\n\t})\n\tc2.set(nil)\n\tt.Run(\"AllHealthy\", func(t *testing.T) {\n\t\tcode, err := check(s)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"GET %s: %v\", s.URL, err)\n\t\t}\n\t\tif code != http.StatusOK {\n\t\t\tt.Errorf(\"got HTTP status %d; want %d\", code, http.StatusOK)\n\t\t}\n\t})\n}\n\nfunc check(s *httptest.Server) (code int, err error) {\n\tresp, err := http.Get(s.URL)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresp.Body.Close()\n\treturn resp.StatusCode, nil\n}\n\ntype checker struct {\n\tmu  sync.Mutex\n\terr error\n}\n\nfunc (c *checker) CheckHealth() error {\n\tdefer c.mu.Unlock()\n\tc.mu.Lock()\n\treturn c.err\n}\n\nfunc (c *checker) set(e error) {\n\tdefer c.mu.Unlock()\n\tc.mu.Lock()\n\tc.err = e\n}\n"
  },
  {
    "path": "server/health/sqlhealth/sqlhealth.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package sqlhealth provides a health check for a SQL database connection.\npackage sqlhealth // import \"gocloud.dev/server/health/sqlhealth\"\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"errors\"\n\t\"time\"\n)\n\n// Checker checks the health of a SQL database.\ntype Checker struct {\n\tcancel context.CancelFunc\n\n\tstopped <-chan struct{}\n\thealthy bool\n}\n\n// New starts a new asynchronous ping of the SQL database. Pings will be sent\n// until one succeeds or Stop is called, whichever comes first.\nfunc New(db *sql.DB) *Checker {\n\t// We create a context here because we are detaching.\n\tctx, cancel := context.WithCancel(context.Background())\n\tstopped := make(chan struct{})\n\tc := &Checker{\n\t\tcancel:  cancel,\n\t\tstopped: stopped,\n\t}\n\tgo func() {\n\t\tvar timer *time.Timer\n\t\tdefer func() {\n\t\t\tif timer != nil {\n\t\t\t\ttimer.Stop()\n\t\t\t}\n\t\t\tclose(stopped)\n\t\t}()\n\n\t\twait := 250 * time.Millisecond\n\t\tconst maxWait = 30 * time.Second\n\t\tfor {\n\t\t\tif err := db.PingContext(ctx); err == nil {\n\t\t\t\tc.healthy = true\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif timer == nil {\n\t\t\t\ttimer = time.NewTimer(wait)\n\t\t\t} else {\n\t\t\t\t// Timer already fired, so resetting does not race.\n\t\t\t\ttimer.Reset(wait)\n\t\t\t}\n\t\t\tselect {\n\t\t\tcase <-timer.C:\n\t\t\t\tif wait < maxWait {\n\t\t\t\t\t// Back off next ping.\n\t\t\t\t\twait *= 2\n\t\t\t\t\tif wait > maxWait {\n\t\t\t\t\t\twait = maxWait\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\treturn c\n}\n\n// CheckHealth returns nil iff the ping started by New has returned\n// success.\nfunc (c *Checker) CheckHealth() error {\n\tselect {\n\tcase <-c.stopped:\n\t\tif !c.healthy {\n\t\t\treturn errors.New(\"ping stopped before becoming healthy\")\n\t\t}\n\t\treturn nil\n\tdefault:\n\t\treturn errors.New(\"still pinging database\")\n\t}\n}\n\n// Stop stops any ongoing ping of the database.\nfunc (c *Checker) Stop() {\n\tc.cancel()\n\t<-c.stopped\n}\n"
  },
  {
    "path": "server/health/sqlhealth/sqlhealth_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage sqlhealth\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"gocloud.dev/server/health\"\n)\n\nvar _ = health.Checker((*Checker)(nil))\n\nfunc TestCheck(t *testing.T) {\n\tconnector := new(stubConnector)\n\tdb := sql.OpenDB(connector)\n\tdefer db.Close()\n\n\tcheck := New(db)\n\tdefer check.Stop()\n\tif err := check.CheckHealth(); err == nil {\n\t\tt.Error(\"checker starts healthy\")\n\t}\n\tconnector.setHealthy(true)\n\n\t// Should eventually become healthy. Otherwise, stopped by test timeout.\n\tfor {\n\t\tif err := check.CheckHealth(); err == nil {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\ntype stubConnector struct {\n\tmu      sync.RWMutex\n\thealthy bool\n}\n\nfunc (c *stubConnector) setHealthy(h bool) {\n\tc.mu.Lock()\n\tc.healthy = h\n\tc.mu.Unlock()\n}\n\nfunc (c *stubConnector) Connect(ctx context.Context) (driver.Conn, error) {\n\treturn &stubConn{c}, nil\n}\n\nfunc (c *stubConnector) Driver() driver.Driver {\n\treturn nil\n}\n\ntype stubConn struct {\n\tc *stubConnector\n}\n\nfunc (conn *stubConn) Prepare(query string) (driver.Stmt, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (conn *stubConn) Close() error {\n\treturn nil\n}\n\nfunc (conn *stubConn) Begin() (driver.Tx, error) {\n\tpanic(\"not implemented\")\n}\n\nfunc (conn *stubConn) Ping(ctx context.Context) error {\n\tconn.c.mu.RLock()\n\thealthy := conn.c.healthy\n\tconn.c.mu.RUnlock()\n\tif !healthy {\n\t\treturn errors.New(\"unhealthy\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "server/requestlog/ncsa.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage requestlog\n\nimport (\n\t\"io\"\n\t\"strconv\"\n\t\"sync\"\n)\n\n// An NCSALogger writes log entries to an io.Writer in the\n// Combined Log Format.\n//\n// Details at http://httpd.apache.org/docs/current/logs.html#combined\ntype NCSALogger struct {\n\tonErr func(error)\n\n\tmu  sync.Mutex\n\tw   io.Writer\n\tbuf []byte\n}\n\n// NewNCSALogger returns a new logger that writes to w.\n// A nil onErr is treated the same as func(error) {}.\nfunc NewNCSALogger(w io.Writer, onErr func(error)) *NCSALogger {\n\treturn &NCSALogger{\n\t\tw:     w,\n\t\tonErr: onErr,\n\t}\n}\n\n// Log writes an entry line to its writer.  Multiple concurrent calls\n// will produce sequential writes to its writer.\nfunc (l *NCSALogger) Log(ent *Entry) {\n\tif err := l.log(ent); err != nil && l.onErr != nil {\n\t\tl.onErr(err)\n\t}\n}\n\nfunc (l *NCSALogger) log(ent *Entry) error {\n\tdefer l.mu.Unlock()\n\tl.mu.Lock()\n\tl.buf = formatEntry(l.buf[:0], ent)\n\t_, err := l.w.Write(l.buf)\n\treturn err\n}\n\nfunc formatEntry(b []byte, ent *Entry) []byte {\n\tconst ncsaTime = \"02/Jan/2006:15:04:05 -0700\"\n\tif ent.RemoteIP == \"\" {\n\t\tb = append(b, '-')\n\t} else {\n\t\tb = append(b, ent.RemoteIP...)\n\t}\n\tb = append(b, \" - - [\"...)\n\tb = ent.ReceivedTime.AppendFormat(b, ncsaTime)\n\tb = append(b, \"] \\\"\"...)\n\tb = append(b, ent.RequestMethod...)\n\tb = append(b, ' ')\n\tb = append(b, ent.RequestURL...)\n\tb = append(b, ' ')\n\tb = append(b, ent.Proto...)\n\tb = append(b, \"\\\" \"...)\n\tb = strconv.AppendInt(b, int64(ent.Status), 10)\n\tb = append(b, ' ')\n\tb = strconv.AppendInt(b, int64(ent.ResponseBodySize), 10)\n\tb = append(b, ' ')\n\tb = strconv.AppendQuote(b, ent.Referer)\n\tb = append(b, ' ')\n\tb = strconv.AppendQuote(b, ent.UserAgent)\n\tb = append(b, '\\n')\n\treturn b\n}\n"
  },
  {
    "path": "server/requestlog/ncsa_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage requestlog\n\nimport (\n\t\"bytes\"\n\t\"testing\"\n\t\"time\"\n)\n\nvar _ Logger = (*NCSALogger)(nil)\n\nfunc TestNCSALog(t *testing.T) {\n\tconst (\n\t\tstartTime      = 1507914000\n\t\tstartTimeNanos = 512\n\n\t\tlatencySec   = 5\n\t\tlatencyNanos = 123456789\n\n\t\tendTime      = startTime + latencySec\n\t\tendTimeNanos = startTimeNanos + latencyNanos\n\t)\n\ttests := []struct {\n\t\tname string\n\t\tent  Entry\n\t\twant string\n\t}{\n\t\t{\n\t\t\tname: \"AllFields\",\n\t\t\tent: Entry{\n\t\t\t\tReceivedTime:       time.Unix(startTime, startTimeNanos).UTC(),\n\t\t\t\tRequestMethod:      \"POST\",\n\t\t\t\tRequestURL:         \"/foo/bar\",\n\t\t\t\tRequestHeaderSize:  456,\n\t\t\t\tRequestBodySize:    123000,\n\t\t\t\tUserAgent:          \"Chrome proxied through Firefox and Edge\",\n\t\t\t\tReferer:            \"http://www.example.com/\",\n\t\t\t\tProto:              \"HTTP/1.1\",\n\t\t\t\tRemoteIP:           \"12.34.56.78\",\n\t\t\t\tServerIP:           \"127.0.0.1\",\n\t\t\t\tStatus:             404,\n\t\t\t\tResponseHeaderSize: 555,\n\t\t\t\tResponseBodySize:   789000,\n\t\t\t\tLatency:            latencySec*time.Second + latencyNanos*time.Nanosecond,\n\t\t\t},\n\t\t\twant: `12.34.56.78 - - [13/Oct/2017:17:00:00 +0000] \"POST /foo/bar HTTP/1.1\" 404 789000 \"http://www.example.com/\" \"Chrome proxied through Firefox and Edge\"` + \"\\n\",\n\t\t},\n\t\t{\n\t\t\tname: \"OnlyRequiredFields\",\n\t\t\tent: Entry{\n\t\t\t\tReceivedTime:  time.Unix(startTime, startTimeNanos).UTC(),\n\t\t\t\tRequestMethod: \"POST\",\n\t\t\t\tRequestURL:    \"/foo/bar\",\n\t\t\t\tProto:         \"HTTP/1.1\",\n\t\t\t\tStatus:        404,\n\t\t\t},\n\t\t\twant: `- - - [13/Oct/2017:17:00:00 +0000] \"POST /foo/bar HTTP/1.1\" 404 0 \"\" \"\"` + \"\\n\",\n\t\t},\n\t\t{\n\t\t\tname: \"OnlyRequiredFieldsAndUserAgent\",\n\t\t\tent: Entry{\n\t\t\t\tReceivedTime:  time.Unix(startTime, startTimeNanos).UTC(),\n\t\t\t\tRequestMethod: \"POST\",\n\t\t\t\tRequestURL:    \"/foo/bar\",\n\t\t\t\tProto:         \"HTTP/1.1\",\n\t\t\t\tStatus:        404,\n\t\t\t\tUserAgent:     \"Chrome proxied through Firefox and Edge\",\n\t\t\t},\n\t\t\twant: `- - - [13/Oct/2017:17:00:00 +0000] \"POST /foo/bar HTTP/1.1\" 404 0 \"\" \"Chrome proxied through Firefox and Edge\"` + \"\\n\",\n\t\t},\n\t\t{\n\t\t\tname: \"DoubleQuotesInUserAgent\",\n\t\t\tent: Entry{\n\t\t\t\tReceivedTime:  time.Unix(startTime, startTimeNanos).UTC(),\n\t\t\t\tRequestMethod: \"POST\",\n\t\t\t\tRequestURL:    \"/foo/bar\",\n\t\t\t\tProto:         \"HTTP/1.1\",\n\t\t\t\tStatus:        404,\n\t\t\t\tUserAgent:     \"Chrome \\\"proxied\\\" through Firefox and Edge\",\n\t\t\t},\n\t\t\twant: `- - - [13/Oct/2017:17:00:00 +0000] \"POST /foo/bar HTTP/1.1\" 404 0 \"\" \"Chrome \\\"proxied\\\" through Firefox and Edge\"` + \"\\n\",\n\t\t},\n\t}\n\tfor _, test := range tests {\n\t\tt.Run(test.name, func(t *testing.T) {\n\t\t\tbuf := new(bytes.Buffer)\n\t\t\tvar logErr error\n\t\t\tl := NewNCSALogger(buf, func(e error) { logErr = e })\n\t\t\tl.Log(&test.ent)\n\t\t\tif logErr != nil {\n\t\t\t\tt.Error(\"Logger called error callback:\", logErr)\n\t\t\t}\n\t\t\tgot := buf.String()\n\t\t\tif got != test.want {\n\t\t\t\tt.Errorf(\"Log(...) wrote %q; want %q\", got, test.want)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "server/requestlog/requestlog.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package requestlog provides an http.Handler that logs information\n// about requests.\npackage requestlog // import \"gocloud.dev/server/requestlog\"\n\nimport (\n\t\"bufio\"\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/otel/trace\"\n)\n\n// Logger wraps the Log method.  Log must be safe to call from multiple\n// goroutines.  Log must not hold onto an Entry after it returns.\ntype Logger interface {\n\tLog(*Entry)\n}\n\n// A Handler emits request information to a Logger.\ntype Handler struct {\n\tlog Logger\n\th   http.Handler\n}\n\n// NewHandler returns a handler that emits information to log and calls\n// h.ServeHTTP.\nfunc NewHandler(log Logger, h http.Handler) *Handler {\n\treturn &Handler{\n\t\tlog: log,\n\t\th:   h,\n\t}\n}\n\n// ServeHTTP calls its underlying handler's ServeHTTP method, then calls\n// Log after the handler returns.\nfunc (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {\n\tstart := time.Now()\n\tspan := trace.SpanFromContext(r.Context())\n\tsc := span.SpanContext()\n\tent := &Entry{\n\t\tRequest:           cloneRequestWithoutBody(r),\n\t\tReceivedTime:      start,\n\t\tRequestMethod:     r.Method,\n\t\tRequestURL:        r.URL.String(),\n\t\tRequestHeaderSize: headerSize(r.Header),\n\t\tUserAgent:         r.UserAgent(),\n\t\tReferer:           r.Referer(),\n\t\tProto:             r.Proto,\n\t\tRemoteIP:          ipFromHostPort(r.RemoteAddr),\n\t\tTraceID:           sc.TraceID(),\n\t\tSpanID:            sc.SpanID(),\n\t}\n\tif addr, ok := r.Context().Value(http.LocalAddrContextKey).(net.Addr); ok {\n\t\tent.ServerIP = ipFromHostPort(addr.String())\n\t}\n\tr2 := new(http.Request)\n\t*r2 = *r\n\trcc := &readCounterCloser{r: r.Body}\n\tr2.Body = rcc\n\tw2 := &responseStats{w: w}\n\n\th.h.ServeHTTP(w2, r2)\n\n\tent.Latency = time.Since(start)\n\t// The handler may or may not have read the entire body. If the request\n\t// includes a Content-Length header, use that for a more accurate\n\t// RequestBodySize.\n\tent.RequestBodySize = rcc.n\n\tif contentLengthStr := r.Header.Get(\"Content-Length\"); contentLengthStr != \"\" {\n\t\tent.RequestBodySize, _ = strconv.ParseInt(contentLengthStr, 10, 64)\n\t}\n\tent.Status = w2.code\n\tif ent.Status == 0 {\n\t\tent.Status = http.StatusOK\n\t}\n\tent.ResponseHeaderSize, ent.ResponseBodySize = w2.size()\n\th.log.Log(ent)\n}\n\nfunc cloneRequestWithoutBody(r *http.Request) *http.Request {\n\tr = r.Clone(r.Context())\n\tr.Body = nil\n\treturn r\n}\n\n// Entry records information about a completed HTTP request.\ntype Entry struct {\n\t// Request is the http request that has been completed.\n\t//\n\t// This request's Body is always nil, regardless of the actual request body.\n\tRequest *http.Request\n\n\tReceivedTime    time.Time\n\tRequestBodySize int64\n\n\tStatus             int\n\tResponseHeaderSize int64\n\tResponseBodySize   int64\n\tLatency            time.Duration\n\tTraceID            trace.TraceID\n\tSpanID             trace.SpanID\n\n\t// Deprecated. This value is available by evaluating Request.Referer().\n\tReferer string\n\t// Deprecated. This value is available directing in Request.Proto.\n\tProto string\n\t// Deprecated. This value is available directly in Request.Method.\n\tRequestMethod string\n\t// Deprecated. This value is available directly in Request.URL.\n\tRequestURL string\n\t// Deprecated. This value is available by evaluating Request.Header.\n\tRequestHeaderSize int64\n\t// Deprecated. This value is available by evaluating Request.Header.\n\tUserAgent string\n\t// Deprecated. This value is available by evaluating Request.RemoteAddr..\n\tRemoteIP string\n\t// Deprecated. This value is available by evaluating reading the\n\t// http.LocalAddrContextKey value from the context returned by Request.Context().\n\tServerIP string\n}\n\nfunc ipFromHostPort(hp string) string {\n\th, _, err := net.SplitHostPort(hp)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tif len(h) > 0 && h[0] == '[' {\n\t\treturn h[1 : len(h)-1]\n\t}\n\treturn h\n}\n\ntype readCounterCloser struct {\n\tr   io.ReadCloser\n\tn   int64\n\terr error\n}\n\nfunc (rcc *readCounterCloser) Read(p []byte) (n int, err error) {\n\tif rcc.err != nil {\n\t\treturn 0, rcc.err\n\t}\n\tn, rcc.err = rcc.r.Read(p)\n\trcc.n += int64(n)\n\treturn n, rcc.err\n}\n\nfunc (rcc *readCounterCloser) Close() error {\n\trcc.err = errors.New(\"read from closed reader\")\n\treturn rcc.r.Close()\n}\n\ntype writeCounter int64\n\nfunc (wc *writeCounter) Write(p []byte) (n int, err error) {\n\t*wc += writeCounter(len(p))\n\treturn len(p), nil\n}\n\nfunc headerSize(h http.Header) int64 {\n\tvar wc writeCounter\n\t_ = h.Write(&wc)\n\treturn int64(wc) + 2 // for CRLF\n}\n\ntype responseStats struct {\n\tw        http.ResponseWriter\n\thsize    int64\n\twc       writeCounter\n\tcode     int\n\thijacked bool\n}\n\nfunc (r *responseStats) Header() http.Header {\n\treturn r.w.Header()\n}\n\nfunc (r *responseStats) WriteHeader(statusCode int) {\n\tif r.code != 0 {\n\t\treturn\n\t}\n\tr.hsize = headerSize(r.w.Header())\n\tr.w.WriteHeader(statusCode)\n\tr.code = statusCode\n}\n\nfunc (r *responseStats) Write(p []byte) (n int, err error) {\n\tif r.code == 0 {\n\t\tr.WriteHeader(http.StatusOK)\n\t}\n\tn, err = r.w.Write(p)\n\t_, _ = r.wc.Write(p[:n])\n\treturn\n}\n\nfunc (r *responseStats) size() (hdr, body int64) {\n\tif r.code == 0 {\n\t\treturn headerSize(r.w.Header()), 0\n\t}\n\t// Use the header size from the time WriteHeader was called.\n\t// The Header map can be mutated after the call to add HTTP Trailers,\n\t// which we don't want to count.\n\treturn r.hsize, int64(r.wc)\n}\n\nfunc (r *responseStats) Hijack() (_ net.Conn, _ *bufio.ReadWriter, err error) {\n\tdefer func() {\n\t\tif err == nil {\n\t\t\tr.hijacked = true\n\t\t}\n\t}()\n\tif hj, ok := r.w.(http.Hijacker); ok {\n\t\treturn hj.Hijack()\n\t}\n\treturn nil, nil, errors.New(\"underlying ResponseWriter does not support hijacking\")\n}\n\nfunc (r *responseStats) Flush() {\n\tif fl, ok := r.w.(http.Flusher); ok {\n\t\tfl.Flush()\n\t}\n}\n"
  },
  {
    "path": "server/requestlog/requestlog_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage requestlog\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"go.opentelemetry.io/otel\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"go.opentelemetry.io/otel/trace\"\n)\n\nfunc TestHandler(t *testing.T) {\n\tconst requestMsg = \"Hello, World!\"\n\tconst responseMsg = \"I see you.\"\n\tconst userAgent = \"Request Log Test UA\"\n\tconst referer = \"http://www.example.com/\"\n\tr, err := http.NewRequest(\"POST\", \"http://localhost/foo\", strings.NewReader(requestMsg))\n\tif err != nil {\n\t\tt.Fatal(\"NewRequest:\", err)\n\t}\n\tr.Header.Set(\"User-Agent\", userAgent)\n\tr.Header.Set(\"Referer\", referer)\n\trequestHdrSize := len(fmt.Sprintf(\"User-Agent: %s\\r\\nReferer: %s\\r\\nContent-Length: %v\\r\\n\", userAgent, referer, len(requestMsg)))\n\tresponseHdrSize := len(fmt.Sprintf(\"Content-Length: %v\\r\\n\", len(responseMsg)))\n\tent, spanCtx, err := roundTrip(r, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tw.Header().Set(\"Content-Length\", fmt.Sprint(len(responseMsg)))\n\t\tw.WriteHeader(http.StatusOK)\n\t\t_, _ = io.WriteString(w, responseMsg)\n\t}))\n\tif err != nil {\n\t\tt.Fatal(\"Could not get entry:\", err)\n\t}\n\tif want := \"test-baggage\"; ent.Request.Context().Value(testContextKey) != want {\n\t\tt.Errorf(\"Request Context Value = %s; want %s\", ent.Request.Context().Value(testContextKey), want)\n\t}\n\tif want := \"/foo\"; ent.Request.URL.Path != want {\n\t\tt.Errorf(\"Request Context Value = %s; want %s\", ent.Request.Context().Value(testContextKey), want)\n\t}\n\tif want := \"POST\"; ent.RequestMethod != want {\n\t\tt.Errorf(\"RequestMethod = %q; want %q\", ent.RequestMethod, want)\n\t}\n\tif want := \"/foo\"; ent.RequestURL != want {\n\t\tt.Errorf(\"RequestURL = %q; want %q\", ent.RequestURL, want)\n\t}\n\tif ent.RequestHeaderSize < int64(requestHdrSize) {\n\t\tt.Errorf(\"RequestHeaderSize = %d; want >=%d\", ent.RequestHeaderSize, requestHdrSize)\n\t}\n\tif ent.RequestBodySize != int64(len(requestMsg)) {\n\t\tt.Errorf(\"RequestBodySize = %d; want %d\", ent.RequestBodySize, len(requestMsg))\n\t}\n\tif ent.UserAgent != userAgent {\n\t\tt.Errorf(\"UserAgent = %q; want %q\", ent.UserAgent, userAgent)\n\t}\n\tif ent.Referer != referer {\n\t\tt.Errorf(\"Referer = %q; want %q\", ent.Referer, referer)\n\t}\n\tif want := \"HTTP/1.1\"; ent.Proto != want {\n\t\tt.Errorf(\"Proto = %q; want %q\", ent.Proto, want)\n\t}\n\tif ent.Status != http.StatusOK {\n\t\tt.Errorf(\"Status = %d; want %d\", ent.Status, http.StatusOK)\n\t}\n\tif ent.ResponseHeaderSize < int64(responseHdrSize) {\n\t\tt.Errorf(\"ResponseHeaderSize = %d; want >=%d\", ent.ResponseHeaderSize, responseHdrSize)\n\t}\n\tif ent.ResponseBodySize != int64(len(responseMsg)) {\n\t\tt.Errorf(\"ResponseBodySize = %d; want %d\", ent.ResponseBodySize, len(responseMsg))\n\t}\n\tif ent.TraceID != spanCtx.TraceID() {\n\t\tt.Errorf(\"TraceID = %v; want %v\", ent.TraceID, spanCtx.TraceID())\n\t}\n\tif ent.SpanID != spanCtx.SpanID() {\n\t\tt.Errorf(\"SpanID = %v; want %v\", ent.SpanID, spanCtx.SpanID())\n\t}\n}\n\ntype testSpanHandler struct {\n\th       http.Handler\n\tspanCtx *trace.SpanContext\n}\n\nfunc (sh *testSpanHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {\n\ttracer := otel.Tracer(\"test\")\n\tctx, span := tracer.Start(r.Context(), \"test\")\n\tdefer span.End()\n\tsc := trace.SpanContextFromContext(ctx)\n\n\tsh.spanCtx = &sc\n\tr = r.WithContext(ctx)\n\n\tsh.h.ServeHTTP(w, r)\n}\n\ntype contextKey string\n\nconst testContextKey = contextKey(\"baggage\")\n\nfunc roundTrip(r *http.Request, h http.Handler) (*Entry, *trace.SpanContext, error) {\n\tcapture := new(captureLogger)\n\thh := NewHandler(capture, h)\n\thandler := &testSpanHandler{h: hh}\n\ts := httptest.NewUnstartedServer(handler)\n\ts.Config.ConnContext = func(ctx context.Context, c net.Conn) context.Context {\n\t\tctx = context.WithValue(ctx, testContextKey, \"test-baggage\")\n\t\treturn ctx\n\t}\n\ts.Start()\n\tdefer s.Close()\n\tr.URL.Host = s.URL[len(\"http://\"):]\n\tresp, err := http.DefaultClient.Do(r)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tresp.Body.Close()\n\treturn &capture.ent, handler.spanCtx, nil\n}\n\ntype captureLogger struct {\n\tent Entry\n}\n\nfunc (cl *captureLogger) Log(ent *Entry) {\n\tcl.ent = *ent\n}\n"
  },
  {
    "path": "server/requestlog/stackdriver.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage requestlog\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n)\n\n// A StackdriverLogger writes log entries in the Stackdriver forward JSON\n// format.  The record's fields are suitable for consumption by\n// Stackdriver Logging.\ntype StackdriverLogger struct {\n\tonErr func(error)\n\n\tmu  sync.Mutex\n\tw   io.Writer\n\tbuf bytes.Buffer\n\tenc *json.Encoder\n}\n\n// NewStackdriverLogger returns a new logger that writes to w.\n// A nil onErr is treated the same as func(error) {}.\nfunc NewStackdriverLogger(w io.Writer, onErr func(error)) *StackdriverLogger {\n\tl := &StackdriverLogger{\n\t\tw:     w,\n\t\tonErr: onErr,\n\t}\n\tl.enc = json.NewEncoder(&l.buf)\n\treturn l\n}\n\n// Log writes a record to its writer.  Multiple concurrent calls will\n// produce sequential writes to its writer.\nfunc (l *StackdriverLogger) Log(ent *Entry) {\n\tif err := l.log(ent); err != nil && l.onErr != nil {\n\t\tl.onErr(err)\n\t}\n}\n\nfunc (l *StackdriverLogger) log(ent *Entry) error {\n\tdefer l.mu.Unlock()\n\tl.mu.Lock()\n\n\tl.buf.Reset()\n\t// r represents the fluent-plugin-google-cloud format\n\t// See https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud/blob/f93046d92f7722db2794a042c3f2dde5df91a90b/lib/fluent/plugin/out_google_cloud.rb#L145\n\t// to check json tags\n\tvar r struct {\n\t\tHTTPRequest struct {\n\t\t\tRequestMethod string `json:\"requestMethod\"`\n\t\t\tRequestURL    string `json:\"requestUrl\"`\n\t\t\tRequestSize   int64  `json:\"requestSize,string\"`\n\t\t\tStatus        int    `json:\"status\"`\n\t\t\tResponseSize  int64  `json:\"responseSize,string\"`\n\t\t\tUserAgent     string `json:\"userAgent\"`\n\t\t\tRemoteIP      string `json:\"remoteIp\"`\n\t\t\tReferer       string `json:\"referer\"`\n\t\t\tLatency       string `json:\"latency\"`\n\t\t} `json:\"httpRequest\"`\n\t\tTimestamp struct {\n\t\t\tSeconds int64 `json:\"seconds\"`\n\t\t\tNanos   int   `json:\"nanos\"`\n\t\t} `json:\"timestamp\"`\n\t\tTraceID string `json:\"logging.googleapis.com/trace\"`\n\t\tSpanID  string `json:\"logging.googleapis.com/spanId\"`\n\t}\n\tr.HTTPRequest.RequestMethod = ent.RequestMethod\n\tr.HTTPRequest.RequestURL = ent.RequestURL\n\t// TODO(light): determine whether this is the formula LogEntry expects.\n\tr.HTTPRequest.RequestSize = ent.RequestHeaderSize + ent.RequestBodySize\n\tr.HTTPRequest.Status = ent.Status\n\t// TODO(light): determine whether this is the formula LogEntry expects.\n\tr.HTTPRequest.ResponseSize = ent.ResponseHeaderSize + ent.ResponseBodySize\n\tr.HTTPRequest.UserAgent = ent.UserAgent\n\tr.HTTPRequest.RemoteIP = ent.RemoteIP\n\tr.HTTPRequest.Referer = ent.Referer\n\tr.HTTPRequest.Latency = string(appendLatency(nil, ent.Latency))\n\n\tt := ent.ReceivedTime.Add(ent.Latency)\n\tr.Timestamp.Seconds = t.Unix()\n\tr.Timestamp.Nanos = t.Nanosecond()\n\tr.TraceID = ent.TraceID.String()\n\tr.SpanID = ent.SpanID.String()\n\tif err := l.enc.Encode(r); err != nil {\n\t\treturn err\n\t}\n\t_, err := l.w.Write(l.buf.Bytes())\n\n\treturn err\n}\n\nfunc appendLatency(b []byte, d time.Duration) []byte {\n\t// Parses format understood by google-fluentd (which is looser than the documented LogEntry format).\n\t// See the comment at https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud/blob/e2f60cdd1d97e79ffe4e91bdbf6bd84837f27fa5/lib/fluent/plugin/out_google_cloud.rb#L1539\n\tb = strconv.AppendFloat(b, d.Seconds(), 'f', 9, 64)\n\tb = append(b, 's')\n\treturn b\n}\n"
  },
  {
    "path": "server/requestlog/stackdriver_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage requestlog\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/trace\"\n)\n\nfunc TestStackdriverLog(t *testing.T) {\n\tconst (\n\t\tstartTime      = 1507914000\n\t\tstartTimeNanos = 512\n\n\t\tlatencySec   = 5\n\t\tlatencyNanos = 123456789\n\n\t\tendTime      = startTime + latencySec\n\t\tendTimeNanos = startTimeNanos + latencyNanos\n\t)\n\ttracer := otel.Tracer(\"test\")\n\tctx, span := tracer.Start(context.Background(), \"test\")\n\tdefer span.End()\n\tsc := trace.SpanContextFromContext(ctx)\n\tbuf := new(bytes.Buffer)\n\tvar logErr error\n\tl := NewStackdriverLogger(buf, func(e error) { logErr = e })\n\twant := &Entry{\n\t\tReceivedTime:       time.Unix(startTime, startTimeNanos),\n\t\tRequestMethod:      \"POST\",\n\t\tRequestURL:         \"/foo/bar\",\n\t\tRequestHeaderSize:  456,\n\t\tRequestBodySize:    123000,\n\t\tUserAgent:          \"Chrome proxied through Firefox and Edge\",\n\t\tReferer:            \"http://www.example.com/\",\n\t\tProto:              \"HTTP/1.1\",\n\t\tRemoteIP:           \"12.34.56.78\",\n\t\tServerIP:           \"127.0.0.1\",\n\t\tStatus:             404,\n\t\tResponseHeaderSize: 555,\n\t\tResponseBodySize:   789000,\n\t\tLatency:            latencySec*time.Second + latencyNanos*time.Nanosecond,\n\t\tTraceID:            sc.TraceID(),\n\t\tSpanID:             sc.SpanID(),\n\t}\n\tent := *want // copy in case Log accidentally mutates\n\tl.Log(&ent)\n\tif logErr != nil {\n\t\tt.Error(\"Logger called error callback:\", logErr)\n\t}\n\n\tvar got json.RawMessage\n\tif err := json.Unmarshal(buf.Bytes(), &got); err != nil {\n\t\tt.Fatal(\"Unmarshal:\", err)\n\t}\n\n\tvar r map[string]any\n\tif err := json.Unmarshal(got, &r); err != nil {\n\t\tt.Error(\"Unmarshal record:\", err)\n\t} else {\n\t\trr, _ := r[\"httpRequest\"].(map[string]any)\n\t\tif rr == nil {\n\t\t\tt.Error(\"httpRequest does not exist in record or is not a JSON object\")\n\t\t}\n\t\tif got, want := jsonString(rr, \"requestMethod\"), ent.RequestMethod; got != want {\n\t\t\tt.Errorf(\"httpRequest.requestMethod = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(rr, \"requestUrl\"), ent.RequestURL; got != want {\n\t\t\tt.Errorf(\"httpRequest.requestUrl = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(rr, \"requestSize\"), \"123456\"; got != want {\n\t\t\tt.Errorf(\"httpRequest.requestSize = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonNumber(rr, \"status\"), float64(ent.Status); got != want {\n\t\t\tt.Errorf(\"httpRequest.status = %d; want %d\", int64(got), int64(want))\n\t\t}\n\t\tif got, want := jsonString(rr, \"responseSize\"), \"789555\"; got != want {\n\t\t\tt.Errorf(\"httpRequest.responseSize = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(rr, \"userAgent\"), ent.UserAgent; got != want {\n\t\t\tt.Errorf(\"httpRequest.userAgent = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(rr, \"remoteIp\"), ent.RemoteIP; got != want {\n\t\t\tt.Errorf(\"httpRequest.remoteIp = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(rr, \"referer\"), ent.Referer; got != want {\n\t\t\tt.Errorf(\"httpRequest.referer = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(rr, \"latency\"), \"5.123456789\"; parseLatency(got) != want {\n\t\t\tt.Errorf(\"httpRequest.latency = %q; want %q\", got, want+\"s\")\n\t\t}\n\t\tts, _ := r[\"timestamp\"].(map[string]any)\n\t\tif ts == nil {\n\t\t\tt.Error(\"timestamp does not exist in record or is not a JSON object\")\n\t\t}\n\t\tif got, want := jsonNumber(ts, \"seconds\"), float64(endTime); got != want {\n\t\t\tt.Errorf(\"timestamp.seconds = %g; want %g\", got, want)\n\t\t}\n\t\tif got, want := jsonNumber(ts, \"nanos\"), float64(endTimeNanos); got != want {\n\t\t\tt.Errorf(\"timestamp.nanos = %g; want %g\", got, want)\n\t\t}\n\t\tif got, want := jsonString(r, \"logging.googleapis.com/trace\"), ent.TraceID.String(); got != want {\n\t\t\tt.Errorf(\"traceID = %q; want %q\", got, want)\n\t\t}\n\t\tif got, want := jsonString(r, \"logging.googleapis.com/spanId\"), ent.SpanID.String(); got != want {\n\t\t\tt.Errorf(\"spanID = %q; want %q\", got, want)\n\t\t}\n\t}\n}\n\nfunc parseLatency(s string) string {\n\ts = strings.TrimSpace(s)\n\tif !strings.HasSuffix(s, \"s\") {\n\t\treturn \"\"\n\t}\n\ts = strings.TrimSpace(s[:len(s)-1])\n\tfor _, c := range s {\n\t\tif !(c >= '0' && c <= '9') && c != '.' {\n\t\t\treturn \"\"\n\t\t}\n\t}\n\treturn s\n}\n\nfunc jsonString(obj map[string]any, k string) string {\n\tv, _ := obj[k].(string)\n\treturn v\n}\n\nfunc jsonNumber(obj map[string]any, k string) float64 {\n\tv, _ := obj[k].(float64)\n\treturn v\n}\n\nfunc BenchmarkStackdriverLog(b *testing.B) {\n\tent := &Entry{\n\t\tReceivedTime:       time.Date(2017, time.October, 13, 17, 0, 0, 512, time.UTC),\n\t\tRequestMethod:      \"POST\",\n\t\tRequestURL:         \"/foo/bar\",\n\t\tRequestHeaderSize:  456,\n\t\tRequestBodySize:    123000,\n\t\tUserAgent:          \"Chrome proxied through Firefox and Edge\",\n\t\tReferer:            \"http://www.example.com/\",\n\t\tProto:              \"HTTP/1.1\",\n\t\tRemoteIP:           \"12.34.56.78\",\n\t\tServerIP:           \"127.0.0.1\",\n\t\tStatus:             404,\n\t\tResponseHeaderSize: 555,\n\t\tResponseBodySize:   789000,\n\t\tLatency:            5 * time.Second,\n\t}\n\tvar buf bytes.Buffer\n\tl := NewStackdriverLogger(&buf, func(error) {})\n\tl.Log(ent)\n\tb.ReportAllocs()\n\tb.SetBytes(int64(buf.Len()))\n\tbuf.Reset()\n\tb.ResetTimer()\n\n\tl = NewStackdriverLogger(io.Discard, func(error) {})\n\tfor i := 0; i < b.N; i++ {\n\t\tl.Log(ent)\n\t}\n}\n\nfunc BenchmarkE2E(b *testing.B) {\n\trun := func(b *testing.B, handler http.Handler) {\n\t\tb.Helper()\n\n\t\ts := httptest.NewServer(handler)\n\t\tdefer s.Close()\n\t\tb.ReportAllocs()\n\t\tfor i := 0; i < b.N; i++ {\n\t\t\tresp, err := http.Get(s.URL)\n\t\t\tif err != nil {\n\t\t\t\tb.Fatal(err)\n\t\t\t}\n\t\t\t_, _ = io.Copy(io.Discard, resp.Body)\n\t\t\t_ = resp.Body.Close()\n\t\t}\n\t}\n\tb.Run(\"Baseline\", func(b *testing.B) {\n\t\trun(b, http.HandlerFunc(benchHandler))\n\t})\n\tb.Run(\"WithLog\", func(b *testing.B) {\n\t\tl := NewStackdriverLogger(io.Discard, func(error) {})\n\t\trun(b, NewHandler(l, http.HandlerFunc(benchHandler)))\n\t})\n}\n\nfunc benchHandler(w http.ResponseWriter, r *http.Request) {\n\tconst msg = \"Hello, World!\"\n\tw.Header().Set(\"Content-Length\", fmt.Sprint(len(msg)))\n\t_, _ = io.WriteString(w, msg)\n}\n"
  },
  {
    "path": "server/sdserver/server.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package sdserver provides the diagnostic hooks for a server using\n// Stackdriver.\npackage sdserver // import \"gocloud.dev/server/sdserver\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/sdk/resource\"\n\t\"go.opentelemetry.io/otel/trace\"\n\t\"gocloud.dev/server\"\n\t\"os\"\n\n\tgcpmex \"github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric\"\n\tgcptex \"github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace\"\n\tgcppropagator \"github.com/GoogleCloudPlatform/opentelemetry-operations-go/propagator\"\n\t\"github.com/google/wire\"\n\tgcpres \"go.opentelemetry.io/contrib/detectors/gcp\"\n\tsdkmetric \"go.opentelemetry.io/otel/sdk/metric\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"gocloud.dev/gcp\"\n\t\"gocloud.dev/server/requestlog\"\n)\n\n// Set is a Wire provider set that provides the diagnostic hooks for\n// *server.Server given a GCP token source and a GCP project ID.\nvar Set = wire.NewSet(\n\tserver.Set,\n\tNewTextMapPropagator,\n\tNewTraceSampler,\n\tNewTraceExporter,\n\tNewTraceProvider,\n\twire.Bind(new(trace.TracerProvider), new(*sdktrace.TracerProvider)),\n\tNewMetricsReader,\n\tNewMeterProvider,\n\twire.Bind(new(metric.MeterProvider), new(*sdkmetric.MeterProvider)),\n\n\tNewRequestLogger,\n\twire.Bind(new(requestlog.Logger), new(*requestlog.StackdriverLogger)),\n)\n\nfunc NewResource(ctx context.Context) (*resource.Resource, error) {\n\n\tres, err := resource.New(ctx,\n\t\tresource.WithDetectors(gcpres.NewDetector()),\n\t\tresource.WithTelemetrySDK(),\n\t\tresource.WithProcess(),\n\t\tresource.WithOS(),\n\t\tresource.WithContainer(),\n\t\tresource.WithHost(),\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn resource.Merge(resource.Default(), res)\n}\n\nfunc NewTextMapPropagator() propagation.TextMapPropagator {\n\treturn propagation.NewCompositeTextMapPropagator(\n\t\tgcppropagator.CloudTraceOneWayPropagator{},\n\t\tpropagation.TraceContext{},\n\t\tpropagation.Baggage{},\n\t)\n}\n\n// NewTraceSampler returns a new OpenTelemetry trace sampler.\nfunc NewTraceSampler(ctx context.Context) sdktrace.Sampler {\n\treturn sdktrace.AlwaysSample()\n}\n\n// NewTraceExporter returns a new OpenTelemetry gcp trace exporter.\nfunc NewTraceExporter(projectID gcp.ProjectID) (sdktrace.SpanExporter, error) {\n\texporter, err := gcptex.New(gcptex.WithProjectID(string(projectID)))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn exporter, nil\n}\n\n// NewTraceProvider returns a new trace provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider,\nfunc NewTraceProvider(ctx context.Context, exporter sdktrace.SpanExporter, sampler sdktrace.Sampler) (*sdktrace.TracerProvider, func(), error) {\n\n\tres, err := NewResource(ctx)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\ttp := sdktrace.NewTracerProvider(\n\t\tsdktrace.WithBatcher(exporter),\n\t\tsdktrace.WithSampler(sampler),\n\t\tsdktrace.WithResource(res),\n\t)\n\n\treturn tp, func() { _ = tp.Shutdown(ctx) }, nil\n}\n\n// NewMetricsReader returns a new OpenTelemetry gcp metrics reader and exporter.\nfunc NewMetricsReader(projectID gcp.ProjectID) (sdkmetric.Reader, error) {\n\tmetricExporter, err := gcpmex.New(gcpmex.WithProjectID(string(projectID)))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sdkmetric.NewPeriodicReader(metricExporter), nil\n}\n\n// NewMeterProvider returns a new metric provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider.\nfunc NewMeterProvider(ctx context.Context, reader sdkmetric.Reader) (*sdkmetric.MeterProvider, func(), error) {\n\n\tres, err := NewResource(ctx)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tmeterProvider := sdkmetric.NewMeterProvider(\n\t\tsdkmetric.WithResource(res),\n\t\tsdkmetric.WithReader(reader),\n\t)\n\treturn meterProvider, func() { _ = meterProvider.Shutdown(ctx) }, nil\n}\n\n// NewRequestLogger returns a request logger that sends entries to stdout.\nfunc NewRequestLogger() *requestlog.StackdriverLogger {\n\t// For now, request logs are written to stdout and get picked up by fluentd.\n\t// This also works when running locally.\n\treturn requestlog.NewStackdriverLogger(os.Stdout, func(e error) { fmt.Println(e) })\n}\n"
  },
  {
    "path": "server/server.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package server provides a preconfigured HTTP server with diagnostic hooks.\npackage server // import \"gocloud.dev/server\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/google/wire\"\n\t\"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\"\n\t\"go.opentelemetry.io/otel\"\n\t\"go.opentelemetry.io/otel/metric\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/trace\"\n\n\t\"gocloud.dev/server/driver\"\n\t\"gocloud.dev/server/health\"\n\t\"gocloud.dev/server/requestlog\"\n)\n\n// Set is a Wire provider set that produces a *Server given the fields of\n// Options.\nvar Set = wire.NewSet(\n\tNew,\n\twire.Struct(new(Options), \"RequestLogger\", \"HealthChecks\",\n\t\t\"TraceTextMapPropagator\", \"TraceProvider\", \"MetricsProvider\", \"Driver\"),\n\twire.Value(&DefaultDriver{}),\n\twire.Bind(new(driver.Server), new(*DefaultDriver)),\n)\n\n// Server is a preconfigured HTTP server with diagnostic hooks.\n// The zero value is a server with the default options.\ntype Server struct {\n\treqlog            requestlog.Logger\n\thandler           http.Handler\n\twrappedHandler    http.Handler\n\thealthHandler     health.Handler\n\ttextMapPropagator propagation.TextMapPropagator\n\ttraceProvider     trace.TracerProvider\n\tmeterProvider     metric.MeterProvider\n\tonce              sync.Once\n\tdriver            driver.Server\n}\n\n// Options is the set of optional parameters.\ntype Options struct {\n\t// RequestLogger specifies the logger that will be used to log requests.\n\tRequestLogger requestlog.Logger\n\n\t// HealthChecks specifies the health checks to be run when the\n\t// /healthz/readiness endpoint is requested.\n\tHealthChecks []health.Checker\n\n\t// TraceTextMapPropagator decides the format of trace text propagated.\n\tTraceTextMapPropagator propagation.TextMapPropagator\n\n\t// TraceProvider handles sampled trace spans.\n\tTraceProvider trace.TracerProvider\n\n\t// MetricsProvider handles application metrics.\n\tMetricsProvider metric.MeterProvider\n\n\t// Driver serves HTTP requests.\n\tDriver driver.Server\n}\n\n// New creates a new server. New(nil, nil) is the same as new(Server).\nfunc New(h http.Handler, opts *Options) *Server {\n\tsrv := &Server{handler: h}\n\tif opts != nil {\n\t\tsrv.reqlog = opts.RequestLogger\n\t\tsrv.textMapPropagator = opts.TraceTextMapPropagator\n\t\tsrv.traceProvider = opts.TraceProvider\n\t\tsrv.meterProvider = opts.MetricsProvider\n\t\tfor _, c := range opts.HealthChecks {\n\t\t\tsrv.healthHandler.Add(c)\n\t\t}\n\t\tsrv.driver = opts.Driver\n\t}\n\treturn srv\n}\n\nfunc (srv *Server) init() {\n\tsrv.once.Do(func() {\n\n\t\tif srv.textMapPropagator != nil {\n\t\t\totel.SetTextMapPropagator(srv.textMapPropagator)\n\t\t}\n\n\t\tif srv.traceProvider != nil {\n\t\t\totel.SetTracerProvider(srv.traceProvider)\n\t\t}\n\n\t\tif srv.meterProvider != nil {\n\t\t\totel.SetMeterProvider(srv.meterProvider)\n\t\t}\n\n\t\tif srv.driver == nil {\n\t\t\tsrv.driver = NewDefaultDriver()\n\t\t}\n\t\tif srv.handler == nil {\n\t\t\tsrv.handler = http.DefaultServeMux\n\t\t}\n\t\t// Setup health checks, /healthz route is taken by health checks by default.\n\t\t// Note: App Engine Flex uses /_ah/health by default, which can be changed\n\t\t// in app.yaml. We may want to do an auto-detection for flex in future.\n\t\tconst healthPrefix = \"/healthz/\"\n\n\t\tmux := http.NewServeMux()\n\t\tmux.HandleFunc(healthPrefix+\"liveness\", health.HandleLive)\n\t\tmux.Handle(healthPrefix+\"readiness\", &srv.healthHandler)\n\t\th := srv.handler\n\t\tif srv.reqlog != nil {\n\t\t\th = requestlog.NewHandler(srv.reqlog, h)\n\t\t}\n\t\t// Wrap with OpenTelemetry HTTP handler.\n\t\th = otelhttp.NewHandler(h, \"\", otelhttp.WithPublicEndpointFn(func(*http.Request) bool { return true }))\n\t\tmux.Handle(\"/\", h)\n\t\tsrv.wrappedHandler = mux\n\t})\n}\n\n// ListenAndServe is a wrapper to use wherever http.ListenAndServe is used.\n// It wraps the http.Handler provided to New with a handler that handles tracing and\n// request logging. If the handler is nil, then http.DefaultServeMux will be used.\n// A configured Requestlogger will log all requests except HealthChecks.\nfunc (srv *Server) ListenAndServe(addr string) error {\n\tsrv.init()\n\treturn srv.driver.ListenAndServe(addr, srv.wrappedHandler)\n}\n\n// ListenAndServeTLS is a wrapper to use wherever http.ListenAndServeTLS is used.\n// It wraps the http.Handler provided to New with a handler that handles tracing and\n// request logging. If the handler is nil, then http.DefaultServeMux will be used.\n// A configured Requestlogger will log all requests except HealthChecks.\nfunc (srv *Server) ListenAndServeTLS(addr, certFile, keyFile string) error {\n\t// Check if the driver implements the optional interface.\n\ttlsDriver, ok := srv.driver.(driver.TLSServer)\n\tif !ok {\n\t\treturn fmt.Errorf(\"driver %T does not support ListenAndServeTLS\", srv.driver)\n\t}\n\tsrv.init()\n\treturn tlsDriver.ListenAndServeTLS(addr, certFile, keyFile, srv.wrappedHandler)\n}\n\n// Shutdown gracefully shuts down the server without interrupting any active connections.\nfunc (srv *Server) Shutdown(ctx context.Context) error {\n\tif srv.driver == nil {\n\t\treturn nil\n\t}\n\treturn srv.driver.Shutdown(ctx)\n}\n\n// DefaultDriver implements the driver.Server interface. The zero value is a valid http.Server.\ntype DefaultDriver struct {\n\tServer http.Server\n}\n\n// NewDefaultDriver creates a driver with an http.Server with default timeouts.\nfunc NewDefaultDriver() *DefaultDriver {\n\treturn &DefaultDriver{\n\t\tServer: http.Server{\n\t\t\tReadTimeout:  30 * time.Second,\n\t\t\tWriteTimeout: 30 * time.Second,\n\t\t\tIdleTimeout:  120 * time.Second,\n\t\t},\n\t}\n}\n\n// ListenAndServe sets the address and handler on DefaultDriver's http.Server,\n// then calls ListenAndServe on it.\nfunc (dd *DefaultDriver) ListenAndServe(addr string, h http.Handler) error {\n\tdd.Server.Addr = addr\n\tdd.Server.Handler = h\n\treturn dd.Server.ListenAndServe()\n}\n\n// ListenAndServeTLS sets the address and handler on DefaultDriver's http.Server,\n// then calls ListenAndServeTLS on it.\n//\n// DefaultDriver.Server.TLSConfig may be set to configure additional TLS settings.\nfunc (dd *DefaultDriver) ListenAndServeTLS(addr, certFile, keyFile string, h http.Handler) error {\n\tdd.Server.Addr = addr\n\tdd.Server.Handler = h\n\treturn dd.Server.ListenAndServeTLS(certFile, keyFile)\n}\n\n// Shutdown gracefully shuts down the server without interrupting any active connections,\n// by calling Shutdown on DefaultDriver's http.Server\nfunc (dd *DefaultDriver) Shutdown(ctx context.Context) error {\n\treturn dd.Server.Shutdown(ctx)\n}\n"
  },
  {
    "path": "server/server_test.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npackage server\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\n\t\"gocloud.dev/server/requestlog\"\n)\n\nconst (\n\tcertFile = \"my-cert\"\n\tkeyFile  = \"my-key\"\n)\n\nfunc TestListenAndServe(t *testing.T) {\n\ttd := new(testDriver)\n\ts := New(http.NotFoundHandler(), &Options{Driver: td})\n\terr := s.ListenAndServe(\":8080\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !td.listenAndServeCalled {\n\t\tt.Error(\"ListenAndServe was not called from the supplied driver\")\n\t}\n\tif td.certFile != \"\" || td.keyFile != \"\" {\n\t\tt.Errorf(\"ListenAndServe got non-empty certFile or keyFile (%q, %q), wanted empty\", td.certFile, td.keyFile)\n\t}\n\tif td.handler == nil {\n\t\tt.Error(\"testDriver must set handler, got nil\")\n\t}\n}\n\nfunc TestListenAndServeTLSNoSupported(t *testing.T) {\n\ttd := new(testDriverNoTLS)\n\ts := New(http.NotFoundHandler(), &Options{Driver: td})\n\terr := s.ListenAndServeTLS(\":8080\", certFile, keyFile)\n\tif err == nil {\n\t\tt.Fatal(\"expected TLS not supported error\")\n\t}\n}\n\nfunc TestListenAndServeTLS(t *testing.T) {\n\ttd := new(testDriver)\n\ts := New(http.NotFoundHandler(), &Options{Driver: td})\n\terr := s.ListenAndServeTLS(\":8080\", certFile, keyFile)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif !td.listenAndServeCalled {\n\t\tt.Error(\"ListenAndServe was not called from the supplied driver\")\n\t}\n\tif td.certFile != certFile {\n\t\tt.Errorf(\"ListenAndServe got certFile %q, want %q\", td.certFile, certFile)\n\t}\n\tif td.keyFile != keyFile {\n\t\tt.Errorf(\"ListenAndServe got keyFile %q, want %q\", td.keyFile, keyFile)\n\t}\n\tif td.handler == nil {\n\t\tt.Error(\"testDriver must set handler, got nil\")\n\t}\n}\n\nfunc TestMiddleware(t *testing.T) {\n\tonLogCalled := 0\n\n\ttl := &testLogger{\n\t\tonLog: func(ent *requestlog.Entry) {\n\t\t\tonLogCalled++\n\t\t\tif ent.TraceID.String() == \"\" {\n\t\t\t\tt.Error(\"TraceID is empty\")\n\t\t\t}\n\t\t\tif ent.SpanID.String() == \"\" {\n\t\t\t\tt.Error(\"SpanID is empty\")\n\t\t\t}\n\t\t},\n\t}\n\n\ttd := new(testDriver)\n\ts := New(http.NotFoundHandler(), &Options{Driver: td, RequestLogger: tl})\n\terr := s.ListenAndServe(\":8080\")\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\treq, err := http.NewRequest(\"GET\", \"/\", nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\trr := httptest.NewRecorder()\n\ttd.handler.ServeHTTP(rr, req)\n\tif onLogCalled != 1 {\n\t\tt.Fatal(\"logging middleware was not called\")\n\t}\n\n\t// Repeat with TLS.\n\terr = s.ListenAndServeTLS(\":8081\", certFile, keyFile)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\treq, err = http.NewRequest(\"GET\", \"/\", nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\ttd.handler.ServeHTTP(rr, req)\n\tif onLogCalled != 2 {\n\t\tt.Fatal(\"logging middleware was not called for TLS\")\n\t}\n}\n\ntype testDriverNoTLS string\n\nfunc (td *testDriverNoTLS) ListenAndServe(addr string, h http.Handler) error {\n\treturn errors.New(\"this is a method for satisfying the interface\")\n}\n\nfunc (td *testDriverNoTLS) Shutdown(ctx context.Context) error {\n\treturn errors.New(\"this is a method for satisfying the interface\")\n}\n\ntype testDriver struct {\n\tlistenAndServeCalled bool\n\tcertFile, keyFile    string\n\thandler              http.Handler\n}\n\nfunc (td *testDriver) ListenAndServe(addr string, h http.Handler) error {\n\ttd.listenAndServeCalled = true\n\ttd.handler = h\n\treturn nil\n}\n\nfunc (td *testDriver) ListenAndServeTLS(addr, certFile, keyFile string, h http.Handler) error {\n\ttd.listenAndServeCalled = true\n\ttd.certFile = certFile\n\ttd.keyFile = keyFile\n\ttd.handler = h\n\treturn nil\n}\n\nfunc (td *testDriver) Shutdown(ctx context.Context) error {\n\treturn errors.New(\"this is a method for satisfying the interface\")\n}\n\ntype testLogger struct {\n\tonLog func(ent *requestlog.Entry)\n}\n\nfunc (tl *testLogger) Log(ent *requestlog.Entry) {\n\ttl.onLog(ent)\n}\n"
  },
  {
    "path": "server/xrayserver/server.go",
    "content": "// Copyright 2018 The Go Cloud Development Kit Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     https://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Package xrayserver provides the diagnostic hooks for a server using\n// ADOT collector.\npackage xrayserver // import \"gocloud.dev/server/xrayserver\"\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\tec2res \"go.opentelemetry.io/contrib/detectors/aws/ec2\"\n\t\"go.opentelemetry.io/contrib/propagators/aws/xray\"\n\t\"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc\"\n\t\"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc\"\n\t\"go.opentelemetry.io/otel/propagation\"\n\t\"go.opentelemetry.io/otel/sdk/resource\"\n\t\"gocloud.dev/server\"\n\t\"gocloud.dev/server/requestlog\"\n\t\"google.golang.org/grpc\"\n\t\"os\"\n\n\t\"github.com/google/wire\"\n\t\"go.opentelemetry.io/otel/metric\"\n\tsdkmetric \"go.opentelemetry.io/otel/sdk/metric\"\n\tsdktrace \"go.opentelemetry.io/otel/sdk/trace\"\n\t\"go.opentelemetry.io/otel/trace\"\n)\n\n// Set is a Wire provider set that provides the diagnostic hooks for\n// *server.Server using aws specific formats outlined here\n// https://aws-otel.github.io/docs/getting-started/go-sdk/manual-instr.\nvar Set = wire.NewSet(\n\tserver.Set,\n\tTracesSet,\n\tMetricsSet,\n\n\tNewRequestLogger,\n\twire.Bind(new(requestlog.Logger), new(*requestlog.NCSALogger)),\n)\n\n// TracesSet is a Wire provider set that provides the open telemetry trace provider given the exporter.\nvar TracesSet = wire.NewSet(\n\tNewTextMapPropagator,\n\twire.Bind(new(propagation.TextMapPropagator), new(*xray.Propagator)),\n\tNewTraceSampler,\n\tNewTraceExporter,\n\tNewTraceProvider,\n\twire.Bind(new(trace.TracerProvider), new(*sdktrace.TracerProvider)),\n)\n\n// MetricsSet is a Wire provider set that provides the open telemetry metrics provider given the exporter.\nvar MetricsSet = wire.NewSet(\n\tNewMetricsReader,\n\tNewMeterProvider,\n\twire.Bind(new(metric.MeterProvider), new(*sdkmetric.MeterProvider)),\n)\n\nfunc NewResource(ctx context.Context) (*resource.Resource, error) {\n\n\tres, err := resource.New(ctx,\n\t\tresource.WithDetectors(ec2res.NewResourceDetector()),\n\t\tresource.WithTelemetrySDK(),\n\t\tresource.WithProcess(),\n\t\tresource.WithOS(),\n\t\tresource.WithContainer(),\n\t\tresource.WithHost(),\n\t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn resource.Merge(resource.Default(), res)\n}\n\nfunc NewTextMapPropagator() *xray.Propagator {\n\treturn &xray.Propagator{}\n}\n\n// NewTraceSampler returns a new OpenTelemetry trace sampler.\nfunc NewTraceSampler() sdktrace.Sampler {\n\treturn sdktrace.AlwaysSample()\n}\n\nfunc NewTraceExporter(ctx context.Context) (sdktrace.SpanExporter, error) {\n\ttraceExporter, err := otlptracegrpc.New(ctx, otlptracegrpc.WithInsecure(), otlptracegrpc.WithEndpoint(\"0.0.0.0:4317\"), otlptracegrpc.WithDialOption(grpc.WithBlock()))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn traceExporter, nil\n}\n\n// NewTraceProvider returns a new trace provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider.\nfunc NewTraceProvider(ctx context.Context, exp sdktrace.SpanExporter, sampler sdktrace.Sampler) (*sdktrace.TracerProvider, func(), error) {\n\n\tres, err := NewResource(ctx)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tidg := xray.NewIDGenerator()\n\n\ttp := sdktrace.NewTracerProvider(\n\t\tsdktrace.WithBatcher(exp),\n\t\tsdktrace.WithResource(res),\n\t\tsdktrace.WithSampler(sampler),\n\t\tsdktrace.WithIDGenerator(idg),\n\t)\n\n\treturn tp, func() { _ = tp.Shutdown(ctx) }, nil\n}\n\nfunc NewMetricsReader(ctx context.Context) (sdkmetric.Reader, error) {\n\n\t// Create and start new OTLP metric exporter\n\tmetricExporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithInsecure(), otlpmetricgrpc.WithEndpoint(\"0.0.0.0:4317\"), otlpmetricgrpc.WithDialOption(grpc.WithBlock()))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sdkmetric.NewPeriodicReader(metricExporter), nil\n}\n\n// NewMeterProvider returns a new metric provider for our service to utilise.\n//\n// The second return value is a Wire cleanup function that calls Close on the provider.\nfunc NewMeterProvider(ctx context.Context, reader sdkmetric.Reader) (*sdkmetric.MeterProvider, func(), error) {\n\n\tres, err := NewResource(ctx)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tmeterProvider := sdkmetric.NewMeterProvider(\n\t\tsdkmetric.WithResource(res),\n\t\tsdkmetric.WithReader(reader),\n\t)\n\treturn meterProvider, func() { _ = meterProvider.Shutdown(ctx) }, nil\n}\n\n// NewRequestLogger returns a request logger that sends entries to stdout.\nfunc NewRequestLogger() *requestlog.NCSALogger {\n\treturn requestlog.NewNCSALogger(os.Stdout, func(e error) { _, _ = fmt.Fprintln(os.Stderr, e) })\n}\n"
  },
  {
    "path": "wire/README.md",
    "content": "# Wire has moved!\n\nWire has moved to its own repository: [github.com/google/wire](https://github.com/google/wire)\n\nRead the [announcement][] for more details.\n\n[announcement]: https://groups.google.com/d/msg/go-cloud/4HuWfjDAkOY/Y2tUQdB_BQAJ\n"
  }
]